diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..440480e --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..a5f05cd --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..4700283 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..7e64286 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,55 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' +} + +android { + compileSdkVersion 30 + + defaultConfig { + applicationId "com.bentrengrove.chess" + minSdkVersion 28 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + useIR = true + } + buildFeatures { + compose true + } + composeOptions { + kotlinCompilerExtensionVersion compose_version + kotlinCompilerVersion '1.4.10' + } +} + +dependencies { + + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.2.1' + implementation "androidx.compose.ui:ui:$compose_version" + implementation "androidx.compose.material:material:$compose_version" + implementation "androidx.ui:ui-tooling:$compose_version" + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.0-alpha06' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/com/bentrengrove/chess/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/bentrengrove/chess/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..0472f56 --- /dev/null +++ b/app/src/androidTest/java/com/bentrengrove/chess/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.bentrengrove.chess + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.bentrengrove.chess", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..f3e0bc1 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/bentrengrove/chess/Board.kt b/app/src/main/java/com/bentrengrove/chess/Board.kt new file mode 100644 index 0000000..a4fe6f3 --- /dev/null +++ b/app/src/main/java/com/bentrengrove/chess/Board.kt @@ -0,0 +1,88 @@ +package com.bentrengrove.chess + +import androidx.annotation.DrawableRes + +sealed class PieceType(val value: Int) { + object Pawn: PieceType(1) + object Knight: PieceType(3) + object Bishop: PieceType(3) + object Rook: PieceType(5) + object Queen: PieceType(8) + object King: PieceType(0) +} + +sealed class PieceColor { + object White: PieceColor() + object Black: PieceColor() + + fun other(): PieceColor { + return if (this == White) Black else White + } +} + +private fun pieceTypeFromId(id: String): Pair { + val chars = id.toCharArray() + if (chars.size != 3) throw IllegalStateException("Piece id should be 3 characters") + val pieceColor = when (chars[0]) { + 'W' -> PieceColor.White + 'B' -> PieceColor.Black + else -> throw IllegalStateException("First character should be W or B") + } + val pieceType = when (chars[1]) { + 'P' -> PieceType.Pawn + 'N' -> PieceType.Knight + 'B' -> PieceType.Bishop + 'R' -> PieceType.Rook + 'Q' -> PieceType.Queen + 'K' -> PieceType.King + else -> throw IllegalStateException("Second character should be a piece type") + } + return pieceType to pieceColor +} +data class Piece(val id: String, val type: PieceType, val color: PieceColor) { + companion object { + fun pieceFromString(id: String): Piece { + val types = pieceTypeFromId(id) + return Piece(id, types.first, types.second) + } + } + + @DrawableRes + fun imageResource(): Int { + return when (type) { + PieceType.Pawn -> if (color is PieceColor.White) R.drawable.w_pawn_2x_ns else R.drawable.b_pawn_2x_ns + PieceType.Knight -> if (color is PieceColor.White) R.drawable.w_knight_2x_ns else R.drawable.b_knight_2x_ns + PieceType.Bishop -> if (color is PieceColor.White) R.drawable.w_bishop_2x_ns else R.drawable.b_bishop_2x_ns + PieceType.Rook -> if (color is PieceColor.White) R.drawable.w_rook_2x_ns else R.drawable.b_rook_2x_ns + PieceType.Queen -> if (color is PieceColor.White) R.drawable.w_queen_2x_ns else R.drawable.b_queen_2x_ns + PieceType.King -> if (color is PieceColor.White) R.drawable.w_king_2x_ns else R.drawable.b_king_2x_ns + } + } +} + +data class Delta(val x: Int, val y: Int) +data class Position(val x: Int, val y: Int) { + operator fun plus(other: Position): Delta { + return Delta(this.x + other.x, this.y + other.y) + } + + operator fun minus(other: Position): Delta { + return Delta(this.x - other.x, this.y - other.y) + } +} + +private val INITIAL_BOARD = listOf( + listOf("BR0", "BN1", "BB2", "BQ3", "BK4", "BB5", "BN6", "BR7").map { Piece.pieceFromString(it) }, + listOf("BP0", "BP1", "BP2", "BP3", "BP4", "BP5", "BP6", "BP7").map { Piece.pieceFromString(it) }, + listOf(null, null, null, null, null, null, null, null), + listOf(null, null, null, null, null, null, null, null), + listOf(null, null, null, null, null, null, null, null), + listOf(null, null, null, null, null, null, null, null), + listOf("WP0", "WP1", "WP2", "WP3", "WP4", "WP5", "WP6", "WP7").map { Piece.pieceFromString(it) }, + listOf("WR0", "WN1", "WB2", "WQ3", "WK4", "WB5", "WN6", "WR7").map { Piece.pieceFromString(it) } +) +data class Board(val pieces: List> = INITIAL_BOARD) { + fun pieceAt(position: Position): Piece? { + return pieces.getOrNull(position.y)?.getOrNull(position.x) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/bentrengrove/chess/BoardView.kt b/app/src/main/java/com/bentrengrove/chess/BoardView.kt new file mode 100644 index 0000000..bd60554 --- /dev/null +++ b/app/src/main/java/com/bentrengrove/chess/BoardView.kt @@ -0,0 +1,31 @@ +package com.bentrengrove.chess + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.imageResource +import androidx.compose.ui.unit.dp + +@Composable +fun BoardView(modifier: Modifier = Modifier, board: Board) { + Column { + for (y in 0 until 8) { + Row { + for (x in 0 until 8) { + val white = y % 2 == x % 2 + val color = if (white) Color.LightGray else Color.DarkGray + Box(modifier = Modifier.weight(1f).background(color).aspectRatio(1.0f)) { + val position = Position(x, y) + val piece = board.pieceAt(position) + if (piece != null) { + Image(imageResource(id = piece.imageResource()), modifier = Modifier.padding(4.dp).matchParentSize()) + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/bentrengrove/chess/MainActivity.kt b/app/src/main/java/com/bentrengrove/chess/MainActivity.kt new file mode 100644 index 0000000..3cb0af0 --- /dev/null +++ b/app/src/main/java/com/bentrengrove/chess/MainActivity.kt @@ -0,0 +1,35 @@ +package com.bentrengrove.chess + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.compose.foundation.Text +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Surface +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.getValue +import androidx.compose.runtime.setValue +import androidx.compose.ui.platform.setContent +import androidx.ui.tooling.preview.Preview +import com.bentrengrove.chess.ui.ChessTheme + +class MainActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + ChessTheme { + // A surface container using the 'background' color from the theme + Surface(color = MaterialTheme.colors.background) { + GameView() + } + } + } + } +} + +@Composable +fun GameView() { + val board by remember { mutableStateOf(Board())} + BoardView(board = board) +} \ No newline at end of file diff --git a/app/src/main/java/com/bentrengrove/chess/ui/Color.kt b/app/src/main/java/com/bentrengrove/chess/ui/Color.kt new file mode 100644 index 0000000..6868518 --- /dev/null +++ b/app/src/main/java/com/bentrengrove/chess/ui/Color.kt @@ -0,0 +1,8 @@ +package com.bentrengrove.chess.ui + +import androidx.compose.ui.graphics.Color + +val purple200 = Color(0xFFBB86FC) +val purple500 = Color(0xFF6200EE) +val purple700 = Color(0xFF3700B3) +val teal200 = Color(0xFF03DAC5) \ No newline at end of file diff --git a/app/src/main/java/com/bentrengrove/chess/ui/Shape.kt b/app/src/main/java/com/bentrengrove/chess/ui/Shape.kt new file mode 100644 index 0000000..eb4ac08 --- /dev/null +++ b/app/src/main/java/com/bentrengrove/chess/ui/Shape.kt @@ -0,0 +1,11 @@ +package com.bentrengrove.chess.ui + +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Shapes +import androidx.compose.ui.unit.dp + +val shapes = Shapes( + small = RoundedCornerShape(4.dp), + medium = RoundedCornerShape(4.dp), + large = RoundedCornerShape(0.dp) +) \ No newline at end of file diff --git a/app/src/main/java/com/bentrengrove/chess/ui/Theme.kt b/app/src/main/java/com/bentrengrove/chess/ui/Theme.kt new file mode 100644 index 0000000..586e387 --- /dev/null +++ b/app/src/main/java/com/bentrengrove/chess/ui/Theme.kt @@ -0,0 +1,44 @@ +package com.bentrengrove.chess.ui + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material.MaterialTheme +import androidx.compose.material.darkColors +import androidx.compose.material.lightColors +import androidx.compose.runtime.Composable + +private val DarkColorPalette = darkColors( + primary = purple200, + primaryVariant = purple700, + secondary = teal200 +) + +private val LightColorPalette = lightColors( + primary = purple500, + primaryVariant = purple700, + secondary = teal200 + + /* Other default colors to override + background = Color.White, + surface = Color.White, + onPrimary = Color.White, + onSecondary = Color.Black, + onBackground = Color.Black, + onSurface = Color.Black, + */ +) + +@Composable +fun ChessTheme(darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable() () -> Unit) { + val colors = if (darkTheme) { + DarkColorPalette + } else { + LightColorPalette + } + + MaterialTheme( + colors = colors, + typography = typography, + shapes = shapes, + content = content + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/bentrengrove/chess/ui/Type.kt b/app/src/main/java/com/bentrengrove/chess/ui/Type.kt new file mode 100644 index 0000000..1fd9b48 --- /dev/null +++ b/app/src/main/java/com/bentrengrove/chess/ui/Type.kt @@ -0,0 +1,28 @@ +package com.bentrengrove.chess.ui + +import androidx.compose.material.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val typography = Typography( + body1 = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp + ) + /* Other default text styles to override + button = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.W500, + fontSize = 14.sp + ), + caption = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 12.sp + ) + */ +) \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/b_bishop_2x_ns.png b/app/src/main/res/drawable-xhdpi/b_bishop_2x_ns.png new file mode 100644 index 0000000..17868a2 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/b_bishop_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/b_king_2x_ns.png b/app/src/main/res/drawable-xhdpi/b_king_2x_ns.png new file mode 100644 index 0000000..f77271d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/b_king_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/b_knight_2x_ns.png b/app/src/main/res/drawable-xhdpi/b_knight_2x_ns.png new file mode 100644 index 0000000..cd06896 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/b_knight_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/b_pawn_2x_ns.png b/app/src/main/res/drawable-xhdpi/b_pawn_2x_ns.png new file mode 100644 index 0000000..a25971f Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/b_pawn_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/b_queen_2x_ns.png b/app/src/main/res/drawable-xhdpi/b_queen_2x_ns.png new file mode 100644 index 0000000..6fc2866 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/b_queen_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/b_rook_2x_ns.png b/app/src/main/res/drawable-xhdpi/b_rook_2x_ns.png new file mode 100644 index 0000000..5bf024e Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/b_rook_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/w_bishop_2x_ns.png b/app/src/main/res/drawable-xhdpi/w_bishop_2x_ns.png new file mode 100644 index 0000000..05dab07 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/w_bishop_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/w_king_2x_ns.png b/app/src/main/res/drawable-xhdpi/w_king_2x_ns.png new file mode 100644 index 0000000..71ae552 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/w_king_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/w_knight_2x_ns.png b/app/src/main/res/drawable-xhdpi/w_knight_2x_ns.png new file mode 100644 index 0000000..90bf2ca Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/w_knight_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/w_pawn_2x_ns.png b/app/src/main/res/drawable-xhdpi/w_pawn_2x_ns.png new file mode 100644 index 0000000..e211d4b Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/w_pawn_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/w_queen_2x_ns.png b/app/src/main/res/drawable-xhdpi/w_queen_2x_ns.png new file mode 100644 index 0000000..3ff75d6 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/w_queen_2x_ns.png differ diff --git a/app/src/main/res/drawable-xhdpi/w_rook_2x_ns.png b/app/src/main/res/drawable-xhdpi/w_rook_2x_ns.png new file mode 100644 index 0000000..27d9034 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/w_rook_2x_ns.png differ diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..a571e60 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..61da551 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..c41dd28 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..db5080a Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..6dba46d Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..da31a87 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..15ac681 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..b216f2d Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..f25a419 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..e96783c Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..c50db29 --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..a556b5d --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Chess + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..3faa9a5 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,25 @@ + + + + + + +