aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/.gitignore1
-rw-r--r--app/build.gradle50
-rw-r--r--app/google-services.json40
-rw-r--r--app/proguard-rules.pro21
-rw-r--r--app/src/androidTest/java/com/jopek/pai_fillo_nai/ExampleInstrumentedTest.java26
-rw-r--r--app/src/main/AndroidManifest.xml33
-rw-r--r--app/src/main/bg_no_no-playstore.pngbin0 -> 332382 bytes
-rw-r--r--app/src/main/bg_o-playstore.pngbin0 -> 98776 bytes
-rw-r--r--app/src/main/bg_offline_game-playstore.pngbin0 -> 134562 bytes
-rw-r--r--app/src/main/bg_x-playstore.pngbin0 -> 82407 bytes
-rw-r--r--app/src/main/bg_you_in_army-playstore.pngbin0 -> 590715 bytes
-rw-r--r--app/src/main/emptiness-playstore.pngbin0 -> 279580 bytes
-rw-r--r--app/src/main/java/com/jopek/pai_fillo_nai/MainActivity.java38
-rw-r--r--app/src/main/java/com/jopek/pai_fillo_nai/OfflineGameActivity.java163
-rw-r--r--app/src/main/java/com/jopek/pai_fillo_nai/OnlineGameActivity.java348
-rw-r--r--app/src/main/res/drawable-v24/bg_rounded_grey.xml5
-rw-r--r--app/src/main/res/drawable-v24/ic_launcher_foreground.xml30
-rw-r--r--app/src/main/res/drawable/bg_no_no_background.xml74
-rw-r--r--app/src/main/res/drawable/bg_o_background.xml74
-rw-r--r--app/src/main/res/drawable/bg_offline_game_background.xml74
-rw-r--r--app/src/main/res/drawable/bg_rounded_blue.xml5
-rw-r--r--app/src/main/res/drawable/bg_rounded_rectangle.xml6
-rw-r--r--app/src/main/res/drawable/bg_x_background.xml74
-rw-r--r--app/src/main/res/drawable/bg_you_in_army_background.xml74
-rw-r--r--app/src/main/res/drawable/emptiness_background.xml74
-rw-r--r--app/src/main/res/drawable/ic_baseline_gamepad_24.xml5
-rw-r--r--app/src/main/res/drawable/ic_launcher_background.xml170
-rw-r--r--app/src/main/res/layout-land/activity_offline_game.xml233
-rw-r--r--app/src/main/res/layout/activity_main.xml54
-rw-r--r--app/src/main/res/layout/activity_offline_game.xml403
-rw-r--r--app/src/main/res/layout/activity_online_game.xml133
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/bg_no_no.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/bg_no_no_round.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/bg_o.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/bg_o_round.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/bg_offline_game.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/bg_offline_game_round.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/bg_x.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/bg_x_round.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/bg_you_in_army.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/bg_you_in_army_round.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/emptiness.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/emptiness_round.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml5
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/main_bg.xml4
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/main_bg_round.xml4
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_no_no.pngbin0 -> 7825 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_no_no_foreground.pngbin0 -> 40080 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_no_no_round.pngbin0 -> 9206 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_o.pngbin0 -> 3942 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_o_foreground.pngbin0 -> 16579 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_o_round.pngbin0 -> 5653 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_offline_game.pngbin0 -> 8439 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_offline_game_foreground.pngbin0 -> 44721 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_offline_game_round.pngbin0 -> 10256 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_x.pngbin0 -> 3871 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_x_foreground.pngbin0 -> 15630 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_x_round.pngbin0 -> 5771 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_you_in_army.pngbin0 -> 10392 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_you_in_army_foreground.pngbin0 -> 56160 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/bg_you_in_army_round.pngbin0 -> 12256 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/emptiness.pngbin0 -> 6217 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/emptiness_foreground.pngbin0 -> 37545 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/emptiness_round.pngbin0 -> 7200 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/ic_launcher.webpbin0 -> 1404 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/ic_launcher_round.webpbin0 -> 2898 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/main_bg.pngbin0 -> 8515 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/main_bg_foreground.pngbin0 -> 47212 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/main_bg_round.pngbin0 -> 9860 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_no_no.pngbin0 -> 4295 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_no_no_foreground.pngbin0 -> 20023 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_no_no_round.pngbin0 -> 4678 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_o.pngbin0 -> 1796 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_o_foreground.pngbin0 -> 8802 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_o_round.pngbin0 -> 2546 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_offline_game.pngbin0 -> 4411 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_offline_game_foreground.pngbin0 -> 23445 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_offline_game_round.pngbin0 -> 5118 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_x.pngbin0 -> 2523 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_x_foreground.pngbin0 -> 7697 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_x_round.pngbin0 -> 3075 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_you_in_army.pngbin0 -> 5300 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_you_in_army_foreground.pngbin0 -> 26267 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/bg_you_in_army_round.pngbin0 -> 5955 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/emptiness.pngbin0 -> 3485 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/emptiness_foreground.pngbin0 -> 17375 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/emptiness_round.pngbin0 -> 3753 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/ic_launcher.webpbin0 -> 982 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/ic_launcher_round.webpbin0 -> 1772 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/main_bg.pngbin0 -> 4549 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/main_bg_foreground.pngbin0 -> 24619 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/main_bg_round.pngbin0 -> 5134 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_no_no.pngbin0 -> 13156 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_no_no_foreground.pngbin0 -> 65831 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_no_no_round.pngbin0 -> 15108 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_o.pngbin0 -> 6684 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_o_foreground.pngbin0 -> 25436 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_o_round.pngbin0 -> 9129 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_offline_game.pngbin0 -> 14050 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_offline_game_foreground.pngbin0 -> 66965 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_offline_game_round.pngbin0 -> 16605 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_x.pngbin0 -> 6823 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_x_foreground.pngbin0 -> 23422 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_x_round.pngbin0 -> 8385 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_you_in_army.pngbin0 -> 17894 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_you_in_army_foreground.pngbin0 -> 95257 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/bg_you_in_army_round.pngbin0 -> 20761 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/emptiness.pngbin0 -> 10334 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/emptiness_foreground.pngbin0 -> 64899 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/emptiness_round.pngbin0 -> 11655 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/ic_launcher.webpbin0 -> 1900 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/ic_launcher_round.webpbin0 -> 3918 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/main_bg.pngbin0 -> 13805 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/main_bg_foreground.pngbin0 -> 73354 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/main_bg_round.pngbin0 -> 15571 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_no_no.pngbin0 -> 26421 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_no_no_foreground.pngbin0 -> 132646 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_no_no_round.pngbin0 -> 30185 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_o.pngbin0 -> 12657 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_o_foreground.pngbin0 -> 46135 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_o_round.pngbin0 -> 16731 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_offline_game.pngbin0 -> 26755 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_offline_game_foreground.pngbin0 -> 105409 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_offline_game_round.pngbin0 -> 30554 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_x.pngbin0 -> 10964 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_x_foreground.pngbin0 -> 44410 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_x_round.pngbin0 -> 14520 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_you_in_army.pngbin0 -> 37061 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_you_in_army_foreground.pngbin0 -> 200436 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/bg_you_in_army_round.pngbin0 -> 43163 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/emptiness.pngbin0 -> 20748 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/emptiness_foreground.pngbin0 -> 141419 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/emptiness_round.pngbin0 -> 23306 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/ic_launcher.webpbin0 -> 2884 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webpbin0 -> 5914 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/main_bg.pngbin0 -> 25322 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/main_bg_foreground.pngbin0 -> 139061 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/main_bg_round.pngbin0 -> 28758 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_no_no.pngbin0 -> 43280 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_no_no_foreground.pngbin0 -> 214325 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_no_no_round.pngbin0 -> 49493 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_o.pngbin0 -> 19181 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_o_foreground.pngbin0 -> 70433 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_o_round.pngbin0 -> 24922 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_offline_game.pngbin0 -> 40179 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_offline_game_foreground.pngbin0 -> 139522 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_offline_game_round.pngbin0 -> 44819 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_x.pngbin0 -> 16282 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_x_foreground.pngbin0 -> 68985 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_x_round.pngbin0 -> 21673 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_you_in_army.pngbin0 -> 63342 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_you_in_army_foreground.pngbin0 -> 336578 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/bg_you_in_army_round.pngbin0 -> 73397 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/emptiness.pngbin0 -> 34554 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/emptiness_foreground.pngbin0 -> 244241 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/emptiness_round.pngbin0 -> 38888 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/ic_launcher.webpbin0 -> 3844 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webpbin0 -> 7778 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/main_bg.pngbin0 -> 40418 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/main_bg_foreground.pngbin0 -> 208886 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/main_bg_round.pngbin0 -> 45566 bytes
-rw-r--r--app/src/main/res/values-night/themes.xml16
-rw-r--r--app/src/main/res/values/colors.xml10
-rw-r--r--app/src/main/res/values/strings.xml3
-rw-r--r--app/src/main/res/values/themes.xml16
-rw-r--r--app/src/main/res/xml/backup_rules.xml13
-rw-r--r--app/src/main/res/xml/data_extraction_rules.xml19
-rw-r--r--app/src/test/java/com/jopek/pai_fillo_nai/ExampleUnitTest.java17
169 files changed, 2380 insertions, 0 deletions
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..78c44e7
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,50 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdk 32
+
+ defaultConfig {
+ applicationId "com.jopek.pai_fillo_nai"
+ minSdk 23
+ targetSdk 32
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ debug {
+ applicationIdSuffix ".debug"
+ debuggable true
+ }
+ staging {
+ initWith debug
+ manifestPlaceholders = [hostName:"internal.example.com"]
+ applicationIdSuffix ".debugStaging"
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.4.1'
+ implementation 'com.google.android.material:material:1.6.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ implementation 'com.google.firebase:firebase-database:19.2.1'
+ implementation 'com.google.firebase:firebase-database'
+ testImplementation 'junit:junit:4.13.2'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+} \ No newline at end of file
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..3879a23
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,40 @@
+{
+ "project_info": {
+ "project_number": "689674668259",
+ "project_id": "pai-fillo-nai",
+ "storage_bucket": "pai-fillo-nai.appspot.com",
+ "firebase_url": "https://pai-fillo-nai-default-rtdb.europe-west1.firebasedatabase.app/"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:689674668259:android:9266a25c110840cd3b1dd6",
+ "android_client_info": {
+ "package_name": "com.jopek.pai_fillo_nai.debug"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "689674668259-k337s6qqt2qkbtkifan7epe9mg56krqu.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBj-bcz6LnUK0cfnSFZ8ySKbg404qjY_7M"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "689674668259-k337s6qqt2qkbtkifan7epe9mg56krqu.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+} \ 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/jopek/pai_fillo_nai/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/jopek/pai_fillo_nai/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..09cbe31
--- /dev/null
+++ b/app/src/androidTest/java/com/jopek/pai_fillo_nai/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.jopek.pai_fillo_nai;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.jopek.pai_fillo_nai", appContext.getPackageName());
+ }
+} \ 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..7d4e1a0
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.jopek.pai_fillo_nai">
+
+ <application
+ android:allowBackup="true"
+ android:dataExtractionRules="@xml/data_extraction_rules"
+ android:fullBackupContent="@xml/backup_rules"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/app_name"
+ android:roundIcon="@mipmap/ic_launcher_round"
+ android:supportsRtl="true"
+ android:theme="@style/Theme.Paifillonai"
+ tools:targetApi="31">
+ <activity
+ android:name=".OnlineGameActivity"
+ android:exported="false" />
+ <activity
+ android:name=".OfflineGameActivity"
+ android:exported="false" />
+ <activity
+ android:name=".MainActivity"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest> \ No newline at end of file
diff --git a/app/src/main/bg_no_no-playstore.png b/app/src/main/bg_no_no-playstore.png
new file mode 100644
index 0000000..2d09745
--- /dev/null
+++ b/app/src/main/bg_no_no-playstore.png
Binary files differ
diff --git a/app/src/main/bg_o-playstore.png b/app/src/main/bg_o-playstore.png
new file mode 100644
index 0000000..1e0128f
--- /dev/null
+++ b/app/src/main/bg_o-playstore.png
Binary files differ
diff --git a/app/src/main/bg_offline_game-playstore.png b/app/src/main/bg_offline_game-playstore.png
new file mode 100644
index 0000000..4ae0615
--- /dev/null
+++ b/app/src/main/bg_offline_game-playstore.png
Binary files differ
diff --git a/app/src/main/bg_x-playstore.png b/app/src/main/bg_x-playstore.png
new file mode 100644
index 0000000..b4edfd6
--- /dev/null
+++ b/app/src/main/bg_x-playstore.png
Binary files differ
diff --git a/app/src/main/bg_you_in_army-playstore.png b/app/src/main/bg_you_in_army-playstore.png
new file mode 100644
index 0000000..654c36d
--- /dev/null
+++ b/app/src/main/bg_you_in_army-playstore.png
Binary files differ
diff --git a/app/src/main/emptiness-playstore.png b/app/src/main/emptiness-playstore.png
new file mode 100644
index 0000000..b37fe64
--- /dev/null
+++ b/app/src/main/emptiness-playstore.png
Binary files differ
diff --git a/app/src/main/java/com/jopek/pai_fillo_nai/MainActivity.java b/app/src/main/java/com/jopek/pai_fillo_nai/MainActivity.java
new file mode 100644
index 0000000..99ea7b4
--- /dev/null
+++ b/app/src/main/java/com/jopek/pai_fillo_nai/MainActivity.java
@@ -0,0 +1,38 @@
+package com.jopek.pai_fillo_nai;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.WindowManager;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.FirebaseDatabase;
+import com.google.firebase.database.ValueEventListener;
+
+public class MainActivity extends AppCompatActivity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getSupportActionBar().hide();
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
+
+ setContentView(R.layout.activity_main);
+ TextView txtvOffline = findViewById(R.id.txtvOffline);
+ txtvOffline.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, OfflineGameActivity.class);
+ startActivity(intent);
+ });
+ TextView txtvOnline = findViewById(R.id.txtvOnline);
+ txtvOnline.setOnClickListener(view -> {
+ Intent intent = new Intent(MainActivity.this, OnlineGameActivity.class);
+ startActivity(intent);
+ });
+ }
+} \ No newline at end of file
diff --git a/app/src/main/java/com/jopek/pai_fillo_nai/OfflineGameActivity.java b/app/src/main/java/com/jopek/pai_fillo_nai/OfflineGameActivity.java
new file mode 100644
index 0000000..2b1d918
--- /dev/null
+++ b/app/src/main/java/com/jopek/pai_fillo_nai/OfflineGameActivity.java
@@ -0,0 +1,163 @@
+package com.jopek.pai_fillo_nai;
+
+import android.app.AlertDialog;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.PersistableBundle;
+import android.util.Log;
+import android.view.WindowManager;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.appcompat.app.AppCompatActivity;
+
+import java.util.concurrent.ThreadLocalRandom;
+
+public class OfflineGameActivity extends AppCompatActivity {
+ // 0player - O, 1player - X
+ int whoseTurn = ThreadLocalRandom.current().nextInt(0, 1 + 1);
+ int[] gameBoard = new int[]{-1, -1, -1, -1, -1, -1, -1, -1, -1};
+
+ ImageView p0Img;
+ ImageView p1Img;
+
+ TextView square0, square1, square2, square3, square4, square5, square6, square7, square8;
+
+ final String TAG = "maks";
+
+ @RequiresApi(api = Build.VERSION_CODES.N)
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getSupportActionBar().hide();
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ setContentView(R.layout.activity_offline_game);
+
+ square0 = findViewById(R.id.square0);
+ square1 = findViewById(R.id.square1);
+ square2 = findViewById(R.id.square2);
+ square3 = findViewById(R.id.square3);
+ square4 = findViewById(R.id.square4);
+ square5 = findViewById(R.id.square5);
+ square6 = findViewById(R.id.square6);
+ square7 = findViewById(R.id.square7);
+ square8 = findViewById(R.id.square8);
+
+ Log.d(TAG, "onCreate: "+ savedInstanceState);
+ if(savedInstanceState != null) {
+ int[] maybeGameBoard = savedInstanceState.getIntArray("gameBoard");
+ int maybeWhoseTurn = savedInstanceState.getInt("whoseTurn");
+ if(maybeGameBoard != null) {
+ gameBoard = maybeGameBoard;
+ whoseTurn = maybeWhoseTurn;
+ }
+ Log.d(TAG, "onCreate: "+ gameBoard);
+ Log.d(TAG, "onCreate: "+ whoseTurn);
+ }
+
+ p0Img = findViewById(R.id.p0Img);
+ p1Img = findViewById(R.id.p1Img);
+ if (whoseTurn == 0) {
+ p0Img.setImageResource(R.mipmap.bg_you_in_army_foreground);
+ p1Img.setImageResource(R.mipmap.bg_no_no_foreground);
+ } else {
+ p0Img.setImageResource(R.mipmap.bg_no_no_foreground);
+ p1Img.setImageResource(R.mipmap.bg_you_in_army_foreground);
+ }
+
+
+ int i = 0;
+ for (TextView square :
+ new TextView[]{square0, square1, square2, square3, square4, square5, square6, square7, square8}) {
+ int finalI = i;
+ square.setOnClickListener(view -> onSquareClick((TextView) view, finalI));
+ if(gameBoard[i] == -1)
+ square.setText("");
+ else
+ square.setText(gameBoard[i] == 0 ? "O" : "X");
+ i++;
+ }
+ }
+
+ @Override
+ protected void onSaveInstanceState(@NonNull Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putIntArray("gameBoard", gameBoard);
+ outState.putInt("whoseTurn", whoseTurn);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.N)
+ protected void onSquareClick(TextView square, int id) {
+ if (gameBoard[id] != -1) return;
+ gameBoard[id] = whoseTurn;
+ square.setText(whoseTurn == 0 ? "O" : "X");
+ if (checkWon()) {
+ endGame(whoseTurn);
+ return;
+ } else if (checkDraw()) {
+ endGame(-1);
+ return;
+ }
+ whoseTurn = whoseTurn == 0 ? 1 : 0;
+ if (whoseTurn == 0) {
+ p0Img.setImageResource(R.mipmap.bg_you_in_army_foreground);
+ p1Img.setImageResource(R.mipmap.bg_no_no_foreground);
+ } else {
+ p0Img.setImageResource(R.mipmap.bg_no_no_foreground);
+ p1Img.setImageResource(R.mipmap.bg_you_in_army_foreground);
+ }
+ }
+
+ protected boolean checkWon() {
+ return chkTriEqOnGB(0, 1, 2) || chkTriEqOnGB(3, 4, 5) || chkTriEqOnGB(6, 7, 8) ||
+ chkTriEqOnGB(0, 3, 6) || chkTriEqOnGB(1, 4, 7) || chkTriEqOnGB(2, 5, 8) ||
+ chkTriEqOnGB(0, 4, 8) || chkTriEqOnGB(2, 4, 6);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.N)
+ protected boolean checkDraw() {
+ return gameBoard[0] != -1 &&
+ gameBoard[1] != -1 &&
+ gameBoard[2] != -1 &&
+ gameBoard[3] != -1 &&
+ gameBoard[4] != -1 &&
+ gameBoard[5] != -1 &&
+ gameBoard[6] != -1 &&
+ gameBoard[7] != -1 &&
+ gameBoard[8] != -1;
+ }
+
+ protected void endGame(int whoWon) {
+ new AlertDialog.Builder(this)
+ .setTitle(whoWon == -1 ? "DRAW" : "Player " + (whoWon + 1) + " WON")
+ .setMessage(whoWon == -1 ? "Maybe next time" : "Congratulations to Player " + (whoWon + 1))
+ .setCancelable(false)
+ .setPositiveButton("Play again", (dialog, which) -> {
+ gameBoard = new int[]{-1, -1, -1, -1, -1, -1, -1, -1, -1};
+ square0.setText("");
+ square1.setText("");
+ square2.setText("");
+ square3.setText("");
+ square4.setText("");
+ square5.setText("");
+ square6.setText("");
+ square7.setText("");
+ square8.setText("");
+ whoseTurn = ThreadLocalRandom.current().nextInt(0, 1 + 1);
+ })
+ .setNegativeButton("Go to menu", (dialog, which) -> {
+ Intent intent = new Intent(OfflineGameActivity.this, MainActivity.class);
+ startActivity(intent);
+ })
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .show();
+ }
+
+ // CheckTripleEqualityOnGameBoard
+ protected boolean chkTriEqOnGB(int a, int b, int c) {
+ return gameBoard[a] == gameBoard[b] && gameBoard[b] == gameBoard[c] && gameBoard[a] != -1;
+ }
+} \ No newline at end of file
diff --git a/app/src/main/java/com/jopek/pai_fillo_nai/OnlineGameActivity.java b/app/src/main/java/com/jopek/pai_fillo_nai/OnlineGameActivity.java
new file mode 100644
index 0000000..d389833
--- /dev/null
+++ b/app/src/main/java/com/jopek/pai_fillo_nai/OnlineGameActivity.java
@@ -0,0 +1,348 @@
+package com.jopek.pai_fillo_nai;
+
+import android.annotation.SuppressLint;
+import android.app.AlertDialog;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Bundle;
+import android.text.InputType;
+import android.util.Log;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.RequiresApi;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.FirebaseDatabase;
+import com.google.firebase.database.ValueEventListener;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
+
+public class OnlineGameActivity extends AppCompatActivity {
+ protected boolean gameWasEnd = false;
+ // 0player - O, 1player - X
+ long whoseTurn = ThreadLocalRandom.current().nextInt(0, 1 + 1);
+ List<Long> gameBoard = new ArrayList<>(
+ Arrays.asList(-1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L)
+ );
+ List<ImageView> squares = new ArrayList<>();
+ DatabaseReference rooms;
+ DatabaseReference room;
+ // FinishGameAlert
+ AlertDialog fgAlert = null;
+ long whoami = 0;
+ boolean myTurn = false;
+ boolean revengePossible = true;
+ boolean revengeRequested = false;
+ String TAG = "maks";
+ ImageView p0Img;
+ ImageView p1Img;
+ ImageView square0, square1, square2, square3, square4, square5, square6, square7, square8;
+ TextView tvName;
+
+ @RequiresApi(api = Build.VERSION_CODES.N)
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getSupportActionBar().hide();
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ setContentView(R.layout.activity_online_game);
+
+ p0Img = findViewById(R.id.p0Img);
+ p1Img = findViewById(R.id.p1Img);
+ tvName = findViewById(R.id.onPlayerName);
+
+ square0 = findViewById(R.id.square0);
+ square1 = findViewById(R.id.square1);
+ square2 = findViewById(R.id.square2);
+ square3 = findViewById(R.id.square3);
+ square4 = findViewById(R.id.square4);
+ square5 = findViewById(R.id.square5);
+ square6 = findViewById(R.id.square6);
+ square7 = findViewById(R.id.square7);
+ square8 = findViewById(R.id.square8);
+ squares.addAll(Arrays.asList(square0, square1, square2, square3, square4, square5, square6, square7, square8));
+ int i = 0;
+ for (ImageView square : squares) {
+ int finalI = i;
+ square.setOnClickListener(view -> onSquareClick((ImageView) view, finalI));
+ i++;
+ }
+ rooms = FirebaseDatabase.getInstance("https://pai-fillo-nai-default-rtdb.europe-west1.firebasedatabase.app/").getReference("rooms");
+
+ askForRoomId(false);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.N)
+ protected void askForRoomId(boolean errorOccured) {
+ final EditText input = new EditText(this);
+ input.setInputType(InputType.TYPE_CLASS_NUMBER);
+
+ new AlertDialog.Builder(this)
+ .setTitle(errorOccured ? "Error occured, choose room again" : "Choose room")
+ .setMessage("(blank to create new)")
+ .setCancelable(false)
+ .setView(input)
+ .setPositiveButton("Join room", (dialog, which) -> {
+ getRoom(String.valueOf(input.getText()));
+ })
+ .setIcon(R.drawable.ic_baseline_gamepad_24)
+ .show();
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.N)
+ @SuppressLint("DefaultLocale")
+ protected void getRoom(String roomId) {
+ if (roomId.equals("")) {
+ Random rand = new Random();
+
+ int n = new Random().nextInt(900000) + 100000;
+
+ String rid = String.valueOf(n);
+ whoami = rand.nextInt(2);
+ tvName.setText("You're player 1 (playing as " + (whoami == 0 ? "O" : "X") + ")");
+
+ room = rooms.child(rid);
+ Map<String, Object> data = new HashMap<>();
+ data.put("started", 0);
+ data.put("player1", whoami);
+ data.put("player2", whoami == 0 ? 1 : 0);
+ data.put("whoseTurn", rand.nextInt(2));
+ data.put("board", gameBoard);
+ data.put("winner", -1);
+ data.put("revenge0", -1);
+ data.put("revenge1", -1);
+ room.setValue(data);
+
+ waitFor2Player(rid);
+ } else {
+ rooms.child(roomId).addListenerForSingleValueEvent(new ValueEventListener() {
+ @Override
+ public void onDataChange(DataSnapshot dataSnapshot) {
+ if (!(dataSnapshot.getValue() instanceof HashMap)) {
+ askForRoomId(true);
+ }
+ HashMap data = (HashMap) dataSnapshot.getValue();
+ if ((long) data.get("started") == 1) {
+ askForRoomId(true);
+ }
+ whoami = (long) data.get("player2");
+ whoseTurn = (long) data.get("whoseTurn");
+ tvName.setText("You're player 1 (playing as " + (whoami == 0 ? "O" : "X") + ")");
+ room = rooms.child(roomId);
+ startGame(true);
+ }
+
+ @Override
+ public void onCancelled(DatabaseError databaseError) {
+ askForRoomId(true);
+ }
+ });
+ }
+ }
+
+ protected void waitFor2Player(String roomId) {
+ AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this)
+ .setTitle("Waiting for 2nd player")
+ .setMessage("Your room id = " + roomId)
+ .setCancelable(false)
+ .setIcon(R.drawable.ic_baseline_gamepad_24);
+ AlertDialog alert = alertBuilder.create();
+ alert.show();
+ alert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+
+ room.addValueEventListener(new ValueEventListener() {
+ @Override
+ public void onDataChange(DataSnapshot dataSnapshot) {
+ HashMap data = (HashMap) dataSnapshot.getValue();
+ if ((long) data.get("started") == 1) {
+ room.removeEventListener(this);
+ alert.dismiss();
+ startGame(false);
+ }
+ }
+
+ @Override
+ public void onCancelled(DatabaseError databaseError) {
+ Log.d(TAG, "onCancelled: Waiter Value Event Listener");
+ }
+ });
+ }
+
+ protected void startGame(boolean markStarted) {
+ if (markStarted) {
+ room.child("started").setValue(1);
+ }
+ room.addValueEventListener(new ValueEventListener() {
+ @Override
+ public void onDataChange(DataSnapshot dataSnapshot) {
+ HashMap data = (HashMap) dataSnapshot.getValue();
+ if (data == null) {
+ room.removeEventListener(this);
+ return;
+ }
+
+ Log.d(TAG, "onDataChange: " + Arrays.toString(data.entrySet().toArray()));
+ gameBoard = (List) data.get("board");
+ Log.d(TAG, "onDataChange: " + Arrays.toString(gameBoard.toArray()));
+ whoseTurn = (long) data.get("whoseTurn");
+ myTurn = whoseTurn == whoami;
+ playTurn();
+ long winner = (long) data.get("winner");
+ long opRevenge = (long) data.get("revenge" + (whoami == 0 ? 1 : 0));
+ revengePossible = opRevenge != 0;
+ if (revengeRequested && winner == -1) {
+ myTurn = whoami == (long) data.get("whoseTurn");
+ revengePossible = true;
+ revengeRequested = false;
+ gameWasEnd = false;
+ playTurn();
+ } else if (!revengePossible && revengeRequested) {
+ fgAlert.dismiss();
+ new AlertDialog.Builder(OnlineGameActivity.this)
+ .setTitle("Sad info")
+ .setMessage("Second player don't want to play with ya :(")
+ .setCancelable(false)
+ .setNegativeButton("Go to menu without friend", (dialog, which) -> {
+ room.removeValue();
+ Intent intent = new Intent(OnlineGameActivity.this, MainActivity.class);
+ startActivity(intent);
+ })
+ .setIcon(R.drawable.ic_baseline_gamepad_24)
+ .show();
+ } else if (opRevenge == 1 && revengeRequested) {
+ Map<String, Object> data2 = new HashMap<>();
+ gameBoard = new ArrayList<>(Arrays.asList(-1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L));
+ data2.put("started", 1);
+ data2.put("player1", whoami);
+ data2.put("player2", whoami == 0 ? 1L : 0L);
+ data2.put("whoseTurn", new Long(ThreadLocalRandom.current().nextInt(0, 1 + 1)));
+ data2.put("board", gameBoard);
+ data2.put("winner", -1L);
+ data2.put("revenge0", -1L);
+ data2.put("revenge1", -1L);
+ myTurn = whoami == (long) data2.get("whoseTurn");
+ room.setValue(data2);
+ playTurn();
+ }
+
+ if (winner != -1) {
+ endGame(winner);
+ }
+ }
+
+ @Override
+ public void onCancelled(DatabaseError databaseError) {
+ Log.d(TAG, "onCancelled: Main Value Event Listener");
+ }
+ });
+ }
+
+ protected void playTurn() {
+ int i = 0;
+ for (ImageView square : squares) {
+ if (gameBoard.get(i) == -1) {
+ square.setImageResource(R.mipmap.emptiness_foreground);
+ } else if (gameBoard.get(i) == 0) {
+ square.setImageResource(R.mipmap.bg_o_foreground);
+ } else if (gameBoard.get(i) == 1) {
+ square.setImageResource(R.mipmap.bg_x_foreground);
+ }
+ i++;
+ }
+ if (myTurn) {
+ p0Img.setImageResource(R.mipmap.bg_you_in_army_foreground);
+ } else {
+ p0Img.setImageResource(R.mipmap.bg_no_no_foreground);
+ }
+ }
+
+ protected void finishTurn() {
+ room.child("whoseTurn").setValue(whoseTurn);
+ room.child("board").setValue(gameBoard);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.N)
+ protected void onSquareClick(ImageView square, int id) {
+ if (gameBoard.get(id) != -1 || !myTurn) return;
+ gameBoard.set(id, whoseTurn);
+ square.setImageResource(whoseTurn == 0 ? R.mipmap.bg_o_foreground : R.mipmap.bg_x_foreground);
+ if (checkWon()) {
+ endGame(whoseTurn);
+ return;
+ } else if (checkDraw()) {
+ endGame(2);
+ return;
+ }
+ whoseTurn = whoseTurn == 0 ? 1 : 0;
+ if (whoseTurn == whoami) {
+ p0Img.setImageResource(R.mipmap.bg_you_in_army_foreground);
+ } else {
+ p0Img.setImageResource(R.mipmap.bg_no_no_foreground);
+ }
+ finishTurn();
+ }
+
+ protected boolean checkWon() {
+ return chkTriEqOnGB(0, 1, 2) || chkTriEqOnGB(3, 4, 5) || chkTriEqOnGB(6, 7, 8) ||
+ chkTriEqOnGB(0, 3, 6) || chkTriEqOnGB(1, 4, 7) || chkTriEqOnGB(2, 5, 8) ||
+ chkTriEqOnGB(0, 4, 8) || chkTriEqOnGB(2, 4, 6);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.N)
+ protected boolean checkDraw() {
+ return gameBoard.get(0) != -1 &&
+ gameBoard.get(1) != -1 &&
+ gameBoard.get(2) != -1 &&
+ gameBoard.get(3) != -1 &&
+ gameBoard.get(4) != -1 &&
+ gameBoard.get(5) != -1 &&
+ gameBoard.get(6) != -1 &&
+ gameBoard.get(7) != -1 &&
+ gameBoard.get(8) != -1;
+ }
+
+ protected void endGame(long whoWon) {
+ if (gameWasEnd) return;
+ gameWasEnd = true;
+
+ finishTurn();
+ room.child("winner").setValue(whoWon);
+ AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this)
+ .setTitle(whoWon == 2 ? "DRAW" : "Player " + (whoWon + 1) + " WON")
+ .setMessage(whoWon == 2 ? "Maybe next time" : "Congratulations to Player " + (whoWon + 1))
+ .setCancelable(false)
+ .setPositiveButton("Request revenge", (dialog, which) -> {
+ revengeRequested = true;
+ room.child("revenge" + whoami).setValue(1);
+ })
+ .setNegativeButton("Go to menu", (dialog, which) -> {
+ room.child("revenge" + whoami).setValue(0);
+ if (!revengePossible) {
+ room.removeValue();
+ }
+ Intent intent = new Intent(OnlineGameActivity.this, MainActivity.class);
+ startActivity(intent);
+ })
+ .setIcon(R.drawable.ic_baseline_gamepad_24);
+ fgAlert = alertBuilder.create();
+ fgAlert.show();
+ }
+
+ // CheckTripleEqualityOnGameBoard
+ protected boolean chkTriEqOnGB(int a, int b, int c) {
+ return Objects.equals(gameBoard.get(a), gameBoard.get(b)) && gameBoard.get(b).equals(gameBoard.get(c)) && gameBoard.get(a) != -1;
+ }
+} \ No newline at end of file
diff --git a/app/src/main/res/drawable-v24/bg_rounded_grey.xml b/app/src/main/res/drawable-v24/bg_rounded_grey.xml
new file mode 100644
index 0000000..b128841
--- /dev/null
+++ b/app/src/main/res/drawable-v24/bg_rounded_grey.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <solid android:color="#283035" />
+ <corners android:radius="32dp" />
+</shape>
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 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
+ <aapt:attr name="android:fillColor">
+ <gradient
+ android:endX="85.84757"
+ android:endY="92.4963"
+ android:startX="42.9492"
+ android:startY="49.59793"
+ android:type="linear">
+ <item
+ android:color="#44000000"
+ android:offset="0.0" />
+ <item
+ android:color="#00000000"
+ android:offset="1.0" />
+ </gradient>
+ </aapt:attr>
+ </path>
+ <path
+ android:fillColor="#FFFFFF"
+ android:fillType="nonZero"
+ android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
+ android:strokeWidth="1"
+ android:strokeColor="#00000000" />
+</vector> \ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_no_no_background.xml b/app/src/main/res/drawable/bg_no_no_background.xml
new file mode 100644
index 0000000..ca3826a
--- /dev/null
+++ b/app/src/main/res/drawable/bg_no_no_background.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector
+ android:height="108dp"
+ android:width="108dp"
+ android:viewportHeight="108"
+ android:viewportWidth="108"
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#3DDC84"
+ android:pathData="M0,0h108v108h-108z"/>
+ <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+</vector>
diff --git a/app/src/main/res/drawable/bg_o_background.xml b/app/src/main/res/drawable/bg_o_background.xml
new file mode 100644
index 0000000..ca3826a
--- /dev/null
+++ b/app/src/main/res/drawable/bg_o_background.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector
+ android:height="108dp"
+ android:width="108dp"
+ android:viewportHeight="108"
+ android:viewportWidth="108"
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#3DDC84"
+ android:pathData="M0,0h108v108h-108z"/>
+ <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+</vector>
diff --git a/app/src/main/res/drawable/bg_offline_game_background.xml b/app/src/main/res/drawable/bg_offline_game_background.xml
new file mode 100644
index 0000000..ca3826a
--- /dev/null
+++ b/app/src/main/res/drawable/bg_offline_game_background.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector
+ android:height="108dp"
+ android:width="108dp"
+ android:viewportHeight="108"
+ android:viewportWidth="108"
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#3DDC84"
+ android:pathData="M0,0h108v108h-108z"/>
+ <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+</vector>
diff --git a/app/src/main/res/drawable/bg_rounded_blue.xml b/app/src/main/res/drawable/bg_rounded_blue.xml
new file mode 100644
index 0000000..244796f
--- /dev/null
+++ b/app/src/main/res/drawable/bg_rounded_blue.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <solid android:color="#01335A" />
+ <corners android:radius="32dp" />
+</shape>
diff --git a/app/src/main/res/drawable/bg_rounded_rectangle.xml b/app/src/main/res/drawable/bg_rounded_rectangle.xml
new file mode 100644
index 0000000..fc07bcd
--- /dev/null
+++ b/app/src/main/res/drawable/bg_rounded_rectangle.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+ <solid android:color="#00FFFFFF" />
+ <stroke android:width="6dip" android:color="#000000"/>
+ <corners android:radius="32dp" />
+</shape> \ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_x_background.xml b/app/src/main/res/drawable/bg_x_background.xml
new file mode 100644
index 0000000..ca3826a
--- /dev/null
+++ b/app/src/main/res/drawable/bg_x_background.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector
+ android:height="108dp"
+ android:width="108dp"
+ android:viewportHeight="108"
+ android:viewportWidth="108"
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#3DDC84"
+ android:pathData="M0,0h108v108h-108z"/>
+ <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+</vector>
diff --git a/app/src/main/res/drawable/bg_you_in_army_background.xml b/app/src/main/res/drawable/bg_you_in_army_background.xml
new file mode 100644
index 0000000..ca3826a
--- /dev/null
+++ b/app/src/main/res/drawable/bg_you_in_army_background.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector
+ android:height="108dp"
+ android:width="108dp"
+ android:viewportHeight="108"
+ android:viewportWidth="108"
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#3DDC84"
+ android:pathData="M0,0h108v108h-108z"/>
+ <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+</vector>
diff --git a/app/src/main/res/drawable/emptiness_background.xml b/app/src/main/res/drawable/emptiness_background.xml
new file mode 100644
index 0000000..ca3826a
--- /dev/null
+++ b/app/src/main/res/drawable/emptiness_background.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector
+ android:height="108dp"
+ android:width="108dp"
+ android:viewportHeight="108"
+ android:viewportWidth="108"
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#3DDC84"
+ android:pathData="M0,0h108v108h-108z"/>
+ <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+ <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
+ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_baseline_gamepad_24.xml b/app/src/main/res/drawable/ic_baseline_gamepad_24.xml
new file mode 100644
index 0000000..c1d8616
--- /dev/null
+++ b/app/src/main/res/drawable/ic_baseline_gamepad_24.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#000000"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M15,7.5V2H9v5.5l3,3 3,-3zM7.5,9H2v6h5.5l3,-3 -3,-3zM9,16.5V22h6v-5.5l-3,-3 -3,3zM16.5,9l-3,3 3,3H22V9h-5.5z"/>
+</vector>
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 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <path
+ android:fillColor="#3DDC84"
+ android:pathData="M0,0h108v108h-108z" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M9,0L9,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,0L19,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M29,0L29,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M39,0L39,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M49,0L49,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M59,0L59,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M69,0L69,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M79,0L79,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M89,0L89,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M99,0L99,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,9L108,9"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,19L108,19"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,29L108,29"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,39L108,39"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,49L108,49"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,59L108,59"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,69L108,69"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,79L108,79"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,89L108,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,99L108,99"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,29L89,29"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,39L89,39"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,49L89,49"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,59L89,59"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,69L89,69"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,79L89,79"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M29,19L29,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M39,19L39,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M49,19L49,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M59,19L59,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M69,19L69,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M79,19L79,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+</vector>
diff --git a/app/src/main/res/layout-land/activity_offline_game.xml b/app/src/main/res/layout-land/activity_offline_game.xml
new file mode 100644
index 0000000..71bb421
--- /dev/null
+++ b/app/src/main/res/layout-land/activity_offline_game.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:background="@mipmap/bg_offline_game_foreground"
+ tools:context=".OfflineGameActivity">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_weight="2">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="2"
+ android:layout_marginStart="10dp"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp"
+ android:layout_marginEnd="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:textSize="19sp"
+ android:textColor="@color/white"
+ android:gravity="center"
+ android:textAlignment="center"
+ android:text="First\nPlayer (O)" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/p0Img"
+ android:src="@mipmap/bg_you_in_army"
+ android:layout_weight="1" />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="2"
+ android:layout_marginStart="10dp"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp"
+ android:layout_marginEnd="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:orientation="horizontal">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:textSize="19sp"
+ android:textColor="@color/white"
+ android:gravity="center"
+ android:textAlignment="center"
+ android:text="Second\nPlayer (X)" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/p1Img"
+ android:src="@mipmap/bg_no_no"
+ android:layout_weight="1" />
+ </LinearLayout>
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:background="@drawable/bg_rounded_grey"
+ android:layout_margin="5dp"
+ android:paddingStart="40dp"
+ android:layout_weight="1">
+<!-- android:paddingEnd="10dp"-->
+<!-- android:paddingTop="10dp"-->
+<!-- android:paddingBottom="10dp"-->
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:padding="10dp">
+ <TextView
+ android:id="@+id/square0"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_margin="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square1"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_marginTop="5dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="70dp"
+ android:layout_marginEnd="70dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square2"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_margin="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square0"-->
+<!-- android:layout_marginTop="10dp"-->
+<!-- android:layout_marginStart="10dp"-->
+<!-- android:layout_marginEnd="10dp"-->
+<!-- android:layout_marginBottom="5dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square1"-->
+<!-- android:layout_marginTop="10dp"-->
+<!-- android:layout_marginStart="10dp"-->
+<!-- android:layout_marginEnd="10dp"-->
+<!-- android:layout_marginBottom="5dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square2"-->
+<!-- android:layout_marginTop="10dp"-->
+<!-- android:layout_marginStart="10dp"-->
+<!-- android:layout_marginEnd="10dp"-->
+<!-- android:layout_marginBottom="5dp"-->
+<!-- android:layout_weight="1" />-->
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:padding="10dp">
+ <TextView
+ android:id="@+id/square3"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_margin="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square4"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_marginTop="5dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="70dp"
+ android:layout_marginEnd="70dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square5"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_margin="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:padding="10dp">
+ <TextView
+ android:id="@+id/square6"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_margin="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square7"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_marginTop="5dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="70dp"
+ android:layout_marginEnd="70dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square8"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_margin="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ </LinearLayout>
+ </LinearLayout>
+ </LinearLayout>
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..c0b4598
--- /dev/null
+++ b/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".MainActivity">
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:background="@mipmap/main_bg_foreground"
+ >
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:gravity="center"
+ android:text="Pai Fillo Nai"
+ android:textColor="@color/white"
+ android:textSize="60sp"/>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="2"
+ android:padding="20dp"
+ >
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:maxHeight="10dp"
+ android:layout_weight="1"
+ android:gravity="center"
+ android:text="ONLINE"
+ android:id="@+id/txtvOnline"
+ android:layout_margin="20dp"
+ android:textColor="#03A9F4"
+ android:background="@drawable/bg_rounded_rectangle"
+ android:textSize="30sp"/>
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:maxHeight="10dp"
+ android:layout_weight="1"
+ android:gravity="center"
+ android:text="OFFLINE"
+ android:layout_margin="20dp"
+ android:textColor="#AAAAAA"
+ android:id="@+id/txtvOffline"
+ android:background="@drawable/bg_rounded_rectangle"
+ android:textSize="30sp"/>
+ </LinearLayout>
+</LinearLayout>
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/activity_offline_game.xml b/app/src/main/res/layout/activity_offline_game.xml
new file mode 100644
index 0000000..5fbae8b
--- /dev/null
+++ b/app/src/main/res/layout/activity_offline_game.xml
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:background="@mipmap/bg_offline_game_foreground"
+ tools:context=".OfflineGameActivity">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal"
+ android:layout_weight="2">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="2"
+ android:layout_marginStart="10dp"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp"
+ android:layout_marginEnd="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:orientation="vertical">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:textSize="19sp"
+ android:textColor="@color/white"
+ android:gravity="center"
+ android:textAlignment="center"
+ android:text="First\nPlayer (O)" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/p0Img"
+ android:src="@mipmap/bg_you_in_army"
+ android:layout_weight="1" />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="2"
+ android:layout_marginStart="10dp"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp"
+ android:layout_marginEnd="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:orientation="vertical">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:textSize="19sp"
+ android:textColor="@color/white"
+ android:gravity="center"
+ android:textAlignment="center"
+ android:text="Second\nPlayer (X)" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/p1Img"
+ android:src="@mipmap/bg_no_no"
+ android:layout_weight="1" />
+ </LinearLayout>
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:background="@drawable/bg_rounded_grey"
+ android:layout_margin="5dp"
+ android:layout_weight="1">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:padding="10dp">
+ <TextView
+ android:id="@+id/square0"
+ android:layout_width="120dp"
+ android:layout_height="120dp"
+ android:layout_marginTop="15dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="-5dp"
+ android:layout_marginEnd="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square1"
+ android:layout_width="120dp"
+ android:layout_height="120dp"
+ android:layout_marginTop="15dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square2"
+ android:layout_width="120dp"
+ android:layout_height="120dp"
+ android:layout_marginTop="15dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="5dp"
+ android:layout_marginEnd="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <!-- <ImageView-->
+ <!-- android:layout_width="match_parent"-->
+ <!-- android:layout_height="match_parent"-->
+ <!-- android:src="@mipmap/emptiness_foreground"-->
+ <!-- android:id="@+id/square0"-->
+ <!-- android:layout_marginTop="10dp"-->
+ <!-- android:layout_marginStart="10dp"-->
+ <!-- android:layout_marginEnd="10dp"-->
+ <!-- android:layout_marginBottom="5dp"-->
+ <!-- android:layout_weight="1" />-->
+ <!-- <ImageView-->
+ <!-- android:layout_width="match_parent"-->
+ <!-- android:layout_height="match_parent"-->
+ <!-- android:src="@mipmap/emptiness_foreground"-->
+ <!-- android:id="@+id/square1"-->
+ <!-- android:layout_marginTop="10dp"-->
+ <!-- android:layout_marginStart="10dp"-->
+ <!-- android:layout_marginEnd="10dp"-->
+ <!-- android:layout_marginBottom="5dp"-->
+ <!-- android:layout_weight="1" />-->
+ <!-- <ImageView-->
+ <!-- android:layout_width="match_parent"-->
+ <!-- android:layout_height="match_parent"-->
+ <!-- android:src="@mipmap/emptiness_foreground"-->
+ <!-- android:id="@+id/square2"-->
+ <!-- android:layout_marginTop="10dp"-->
+ <!-- android:layout_marginStart="10dp"-->
+ <!-- android:layout_marginEnd="10dp"-->
+ <!-- android:layout_marginBottom="5dp"-->
+ <!-- android:layout_weight="1" />-->
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:padding="10dp">
+ <TextView
+ android:id="@+id/square3"
+ android:layout_width="120dp"
+ android:layout_height="120dp"
+ android:layout_marginTop="15dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="-5dp"
+ android:layout_marginEnd="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square4"
+ android:layout_width="120dp"
+ android:layout_height="120dp"
+ android:layout_marginTop="15dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square5"
+ android:layout_width="120dp"
+ android:layout_height="120dp"
+ android:layout_marginTop="15dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="5dp"
+ android:layout_marginEnd="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:padding="10dp">
+ <TextView
+ android:id="@+id/square6"
+ android:layout_width="120dp"
+ android:layout_height="120dp"
+ android:layout_marginTop="15dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="-5dp"
+ android:layout_marginEnd="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square7"
+ android:layout_width="120dp"
+ android:layout_height="120dp"
+ android:layout_marginTop="15dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ <TextView
+ android:id="@+id/square8"
+ android:layout_width="120dp"
+ android:layout_height="120dp"
+ android:layout_marginTop="15dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="5dp"
+ android:layout_marginEnd="5dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:gravity="center"
+ android:text="X"
+ android:textAlignment="center"
+ android:textSize="60sp" />
+ </LinearLayout>
+ </LinearLayout>
+ </LinearLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
+
+ <!--<?xml version="1.0" encoding="utf-8"?>-->
+<!--<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"-->
+<!-- xmlns:tools="http://schemas.android.com/tools"-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:background="@mipmap/bg_offline_game_foreground"-->
+<!-- tools:context=".OfflineGameActivity">-->
+
+<!-- <LinearLayout-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:orientation="vertical">-->
+
+<!-- <LinearLayout-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:layout_weight="2">-->
+<!-- <LinearLayout-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:layout_weight="2"-->
+<!-- android:layout_margin="20dp"-->
+<!-- android:background="@drawable/bg_rounded_blue"-->
+<!-- android:orientation="vertical">-->
+<!-- <TextView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:layout_weight="1"-->
+<!-- android:textSize="30sp"-->
+<!-- android:textColor="@color/white"-->
+<!-- android:gravity="center"-->
+<!-- android:textAlignment="center"-->
+<!-- android:text="First\nPlayer (O)" />-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:id="@+id/p0Img"-->
+<!-- android:src="@mipmap/bg_you_in_army"-->
+<!-- android:layout_weight="1" />-->
+<!-- </LinearLayout>-->
+<!-- <LinearLayout-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:layout_weight="2"-->
+<!-- android:layout_margin="20dp"-->
+<!-- android:background="@drawable/bg_rounded_blue"-->
+<!-- android:orientation="vertical">-->
+<!-- <TextView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:layout_weight="1"-->
+<!-- android:textSize="30sp"-->
+<!-- android:textColor="@color/white"-->
+<!-- android:gravity="center"-->
+<!-- android:textAlignment="center"-->
+<!-- android:text="Second Player (X)" />-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:id="@+id/p1Img"-->
+<!-- android:src="@mipmap/bg_no_no_foreground"-->
+<!-- android:layout_weight="1" />-->
+<!-- </LinearLayout>-->
+<!-- </LinearLayout>-->
+<!-- <LinearLayout-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:orientation="vertical"-->
+<!-- android:background="@drawable/bg_rounded_grey"-->
+<!-- android:layout_margin="5dp"-->
+<!-- android:layout_weight="1">-->
+<!-- <LinearLayout-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:layout_weight="1"-->
+<!-- android:padding="10dp">-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square0"-->
+<!-- android:layout_margin="10dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square1"-->
+<!-- android:layout_margin="10dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square2"-->
+<!-- android:layout_margin="10dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- </LinearLayout>-->
+<!-- <LinearLayout-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:layout_weight="1"-->
+<!-- android:padding="10dp">-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square3"-->
+<!-- android:layout_margin="10dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square4"-->
+<!-- android:layout_margin="10dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square5"-->
+<!-- android:layout_margin="10dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- </LinearLayout>-->
+<!-- <LinearLayout-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:layout_weight="1"-->
+<!-- android:padding="10dp">-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square6"-->
+<!-- android:layout_margin="10dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square7"-->
+<!-- android:layout_margin="10dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- <ImageView-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="match_parent"-->
+<!-- android:src="@mipmap/emptiness_foreground"-->
+<!-- android:id="@+id/square8"-->
+<!-- android:layout_margin="10dp"-->
+<!-- android:layout_weight="1" />-->
+<!-- </LinearLayout>-->
+<!-- </LinearLayout>-->
+<!-- </LinearLayout>-->
+<!--</androidx.constraintlayout.widget.ConstraintLayout>--> \ No newline at end of file
diff --git a/app/src/main/res/layout/activity_online_game.xml b/app/src/main/res/layout/activity_online_game.xml
new file mode 100644
index 0000000..d9ccef3
--- /dev/null
+++ b/app/src/main/res/layout/activity_online_game.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@mipmap/bg_offline_game_foreground"
+ tools:context=".OfflineGameActivity">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="2">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="2"
+ android:layout_margin="20dp"
+ android:background="@drawable/bg_rounded_blue"
+ android:orientation="vertical">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:textSize="30sp"
+ android:textColor="@color/white"
+ android:gravity="center"
+ android:id="@+id/onPlayerName"
+ android:textAlignment="center"
+ android:text="Second Player (X)" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/p0Img"
+ android:src="@mipmap/bg_no_no_foreground"
+ android:layout_weight="1" />
+ </LinearLayout>
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:background="@drawable/bg_rounded_grey"
+ android:layout_margin="5dp"
+ android:layout_weight="1">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:padding="10dp">
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:src="@mipmap/emptiness_foreground"
+ android:id="@+id/square0"
+ android:layout_margin="10dp"
+ android:layout_weight="1" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:src="@mipmap/emptiness_foreground"
+ android:id="@+id/square1"
+ android:layout_margin="10dp"
+ android:layout_weight="1" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:src="@mipmap/emptiness_foreground"
+ android:id="@+id/square2"
+ android:layout_margin="10dp"
+ android:layout_weight="1" />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:padding="10dp">
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:src="@mipmap/emptiness_foreground"
+ android:id="@+id/square3"
+ android:layout_margin="10dp"
+ android:layout_weight="1" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:src="@mipmap/emptiness_foreground"
+ android:id="@+id/square4"
+ android:layout_margin="10dp"
+ android:layout_weight="1" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:src="@mipmap/emptiness_foreground"
+ android:id="@+id/square5"
+ android:layout_margin="10dp"
+ android:layout_weight="1" />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:padding="10dp">
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:src="@mipmap/emptiness_foreground"
+ android:id="@+id/square6"
+ android:layout_margin="10dp"
+ android:layout_weight="1" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:src="@mipmap/emptiness_foreground"
+ android:id="@+id/square7"
+ android:layout_margin="10dp"
+ android:layout_weight="1" />
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:src="@mipmap/emptiness_foreground"
+ android:id="@+id/square8"
+ android:layout_margin="10dp"
+ android:layout_weight="1" />
+ </LinearLayout>
+ </LinearLayout>
+ </LinearLayout>
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/bg_no_no.xml b/app/src/main/res/mipmap-anydpi-v26/bg_no_no.xml
new file mode 100644
index 0000000..f42b8ee
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/bg_no_no.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/bg_no_no_background"/>
+ <foreground android:drawable="@mipmap/bg_no_no_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/bg_no_no_round.xml b/app/src/main/res/mipmap-anydpi-v26/bg_no_no_round.xml
new file mode 100644
index 0000000..f42b8ee
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/bg_no_no_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/bg_no_no_background"/>
+ <foreground android:drawable="@mipmap/bg_no_no_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/bg_o.xml b/app/src/main/res/mipmap-anydpi-v26/bg_o.xml
new file mode 100644
index 0000000..fce39bd
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/bg_o.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/bg_o_background"/>
+ <foreground android:drawable="@mipmap/bg_o_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/bg_o_round.xml b/app/src/main/res/mipmap-anydpi-v26/bg_o_round.xml
new file mode 100644
index 0000000..fce39bd
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/bg_o_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/bg_o_background"/>
+ <foreground android:drawable="@mipmap/bg_o_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/bg_offline_game.xml b/app/src/main/res/mipmap-anydpi-v26/bg_offline_game.xml
new file mode 100644
index 0000000..b2ebef3
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/bg_offline_game.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/bg_offline_game_background"/>
+ <foreground android:drawable="@mipmap/bg_offline_game_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/bg_offline_game_round.xml b/app/src/main/res/mipmap-anydpi-v26/bg_offline_game_round.xml
new file mode 100644
index 0000000..b2ebef3
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/bg_offline_game_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/bg_offline_game_background"/>
+ <foreground android:drawable="@mipmap/bg_offline_game_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/bg_x.xml b/app/src/main/res/mipmap-anydpi-v26/bg_x.xml
new file mode 100644
index 0000000..4925312
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/bg_x.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/bg_x_background"/>
+ <foreground android:drawable="@mipmap/bg_x_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/bg_x_round.xml b/app/src/main/res/mipmap-anydpi-v26/bg_x_round.xml
new file mode 100644
index 0000000..4925312
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/bg_x_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/bg_x_background"/>
+ <foreground android:drawable="@mipmap/bg_x_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/bg_you_in_army.xml b/app/src/main/res/mipmap-anydpi-v26/bg_you_in_army.xml
new file mode 100644
index 0000000..7151719
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/bg_you_in_army.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/bg_you_in_army_background"/>
+ <foreground android:drawable="@mipmap/bg_you_in_army_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/bg_you_in_army_round.xml b/app/src/main/res/mipmap-anydpi-v26/bg_you_in_army_round.xml
new file mode 100644
index 0000000..7151719
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/bg_you_in_army_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/bg_you_in_army_background"/>
+ <foreground android:drawable="@mipmap/bg_you_in_army_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/emptiness.xml b/app/src/main/res/mipmap-anydpi-v26/emptiness.xml
new file mode 100644
index 0000000..1c51bee
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/emptiness.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/emptiness_background"/>
+ <foreground android:drawable="@mipmap/emptiness_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/emptiness_round.xml b/app/src/main/res/mipmap-anydpi-v26/emptiness_round.xml
new file mode 100644
index 0000000..1c51bee
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/emptiness_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/emptiness_background"/>
+ <foreground android:drawable="@mipmap/emptiness_foreground"/>
+</adaptive-icon> \ No newline at end of file
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 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/ic_launcher_background" />
+ <foreground android:drawable="@drawable/ic_launcher_foreground" />
+</adaptive-icon> \ 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 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/ic_launcher_background" />
+ <foreground android:drawable="@drawable/ic_launcher_foreground" />
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/main_bg.xml b/app/src/main/res/mipmap-anydpi-v26/main_bg.xml
new file mode 100644
index 0000000..1462c9b
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/main_bg.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <foreground android:drawable="@mipmap/main_bg_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/main_bg_round.xml b/app/src/main/res/mipmap-anydpi-v26/main_bg_round.xml
new file mode 100644
index 0000000..1462c9b
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/main_bg_round.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <foreground android:drawable="@mipmap/main_bg_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/bg_no_no.png b/app/src/main/res/mipmap-hdpi/bg_no_no.png
new file mode 100644
index 0000000..79ab5a4
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_no_no.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_no_no_foreground.png b/app/src/main/res/mipmap-hdpi/bg_no_no_foreground.png
new file mode 100644
index 0000000..350624c
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_no_no_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_no_no_round.png b/app/src/main/res/mipmap-hdpi/bg_no_no_round.png
new file mode 100644
index 0000000..199e1f8
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_no_no_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_o.png b/app/src/main/res/mipmap-hdpi/bg_o.png
new file mode 100644
index 0000000..e99760f
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_o.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_o_foreground.png b/app/src/main/res/mipmap-hdpi/bg_o_foreground.png
new file mode 100644
index 0000000..aaf3f9a
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_o_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_o_round.png b/app/src/main/res/mipmap-hdpi/bg_o_round.png
new file mode 100644
index 0000000..4110a5d
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_o_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_offline_game.png b/app/src/main/res/mipmap-hdpi/bg_offline_game.png
new file mode 100644
index 0000000..c62c2cf
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_offline_game.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_offline_game_foreground.png b/app/src/main/res/mipmap-hdpi/bg_offline_game_foreground.png
new file mode 100644
index 0000000..23f9fc7
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_offline_game_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_offline_game_round.png b/app/src/main/res/mipmap-hdpi/bg_offline_game_round.png
new file mode 100644
index 0000000..dbbbb73
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_offline_game_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_x.png b/app/src/main/res/mipmap-hdpi/bg_x.png
new file mode 100644
index 0000000..9e330b5
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_x.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_x_foreground.png b/app/src/main/res/mipmap-hdpi/bg_x_foreground.png
new file mode 100644
index 0000000..35780ec
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_x_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_x_round.png b/app/src/main/res/mipmap-hdpi/bg_x_round.png
new file mode 100644
index 0000000..9b5ccde
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_x_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_you_in_army.png b/app/src/main/res/mipmap-hdpi/bg_you_in_army.png
new file mode 100644
index 0000000..a8bc626
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_you_in_army.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_you_in_army_foreground.png b/app/src/main/res/mipmap-hdpi/bg_you_in_army_foreground.png
new file mode 100644
index 0000000..9f2e56f
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_you_in_army_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/bg_you_in_army_round.png b/app/src/main/res/mipmap-hdpi/bg_you_in_army_round.png
new file mode 100644
index 0000000..c867ca8
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/bg_you_in_army_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/emptiness.png b/app/src/main/res/mipmap-hdpi/emptiness.png
new file mode 100644
index 0000000..326cded
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/emptiness.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/emptiness_foreground.png b/app/src/main/res/mipmap-hdpi/emptiness_foreground.png
new file mode 100644
index 0000000..8393cf5
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/emptiness_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/emptiness_round.png b/app/src/main/res/mipmap-hdpi/emptiness_round.png
new file mode 100644
index 0000000..ae644da
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/emptiness_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 0000000..c209e78
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/ic_launcher.webp
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..b2dfe3d
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/main_bg.png b/app/src/main/res/mipmap-hdpi/main_bg.png
new file mode 100644
index 0000000..0497ac6
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/main_bg.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/main_bg_foreground.png b/app/src/main/res/mipmap-hdpi/main_bg_foreground.png
new file mode 100644
index 0000000..714d325
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/main_bg_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/main_bg_round.png b/app/src/main/res/mipmap-hdpi/main_bg_round.png
new file mode 100644
index 0000000..a18e140
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/main_bg_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_no_no.png b/app/src/main/res/mipmap-mdpi/bg_no_no.png
new file mode 100644
index 0000000..fa47207
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_no_no.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_no_no_foreground.png b/app/src/main/res/mipmap-mdpi/bg_no_no_foreground.png
new file mode 100644
index 0000000..770254d
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_no_no_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_no_no_round.png b/app/src/main/res/mipmap-mdpi/bg_no_no_round.png
new file mode 100644
index 0000000..4bac57b
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_no_no_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_o.png b/app/src/main/res/mipmap-mdpi/bg_o.png
new file mode 100644
index 0000000..8b46cd2
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_o.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_o_foreground.png b/app/src/main/res/mipmap-mdpi/bg_o_foreground.png
new file mode 100644
index 0000000..8e74541
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_o_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_o_round.png b/app/src/main/res/mipmap-mdpi/bg_o_round.png
new file mode 100644
index 0000000..922ff29
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_o_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_offline_game.png b/app/src/main/res/mipmap-mdpi/bg_offline_game.png
new file mode 100644
index 0000000..842a3b5
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_offline_game.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_offline_game_foreground.png b/app/src/main/res/mipmap-mdpi/bg_offline_game_foreground.png
new file mode 100644
index 0000000..b6e3f13
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_offline_game_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_offline_game_round.png b/app/src/main/res/mipmap-mdpi/bg_offline_game_round.png
new file mode 100644
index 0000000..d917fd6
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_offline_game_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_x.png b/app/src/main/res/mipmap-mdpi/bg_x.png
new file mode 100644
index 0000000..0645e13
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_x.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_x_foreground.png b/app/src/main/res/mipmap-mdpi/bg_x_foreground.png
new file mode 100644
index 0000000..a6c6320
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_x_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_x_round.png b/app/src/main/res/mipmap-mdpi/bg_x_round.png
new file mode 100644
index 0000000..7d0c8f4
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_x_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_you_in_army.png b/app/src/main/res/mipmap-mdpi/bg_you_in_army.png
new file mode 100644
index 0000000..7ebc64e
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_you_in_army.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_you_in_army_foreground.png b/app/src/main/res/mipmap-mdpi/bg_you_in_army_foreground.png
new file mode 100644
index 0000000..8e57300
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_you_in_army_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/bg_you_in_army_round.png b/app/src/main/res/mipmap-mdpi/bg_you_in_army_round.png
new file mode 100644
index 0000000..907dbd4
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/bg_you_in_army_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/emptiness.png b/app/src/main/res/mipmap-mdpi/emptiness.png
new file mode 100644
index 0000000..da607ff
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/emptiness.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/emptiness_foreground.png b/app/src/main/res/mipmap-mdpi/emptiness_foreground.png
new file mode 100644
index 0000000..8b088ae
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/emptiness_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/emptiness_round.png b/app/src/main/res/mipmap-mdpi/emptiness_round.png
new file mode 100644
index 0000000..87f35c4
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/emptiness_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 0000000..4f0f1d6
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/ic_launcher.webp
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..62b611d
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/main_bg.png b/app/src/main/res/mipmap-mdpi/main_bg.png
new file mode 100644
index 0000000..0dbe6da
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/main_bg.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/main_bg_foreground.png b/app/src/main/res/mipmap-mdpi/main_bg_foreground.png
new file mode 100644
index 0000000..ad8bcad
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/main_bg_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/main_bg_round.png b/app/src/main/res/mipmap-mdpi/main_bg_round.png
new file mode 100644
index 0000000..a4cdb69
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/main_bg_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_no_no.png b/app/src/main/res/mipmap-xhdpi/bg_no_no.png
new file mode 100644
index 0000000..3ddf89a
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_no_no.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_no_no_foreground.png b/app/src/main/res/mipmap-xhdpi/bg_no_no_foreground.png
new file mode 100644
index 0000000..7e52ba2
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_no_no_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_no_no_round.png b/app/src/main/res/mipmap-xhdpi/bg_no_no_round.png
new file mode 100644
index 0000000..fbf6395
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_no_no_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_o.png b/app/src/main/res/mipmap-xhdpi/bg_o.png
new file mode 100644
index 0000000..29ebc88
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_o.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_o_foreground.png b/app/src/main/res/mipmap-xhdpi/bg_o_foreground.png
new file mode 100644
index 0000000..8faebd1
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_o_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_o_round.png b/app/src/main/res/mipmap-xhdpi/bg_o_round.png
new file mode 100644
index 0000000..5de4eff
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_o_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_offline_game.png b/app/src/main/res/mipmap-xhdpi/bg_offline_game.png
new file mode 100644
index 0000000..6fb03d4
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_offline_game.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_offline_game_foreground.png b/app/src/main/res/mipmap-xhdpi/bg_offline_game_foreground.png
new file mode 100644
index 0000000..18639dd
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_offline_game_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_offline_game_round.png b/app/src/main/res/mipmap-xhdpi/bg_offline_game_round.png
new file mode 100644
index 0000000..4cb145e
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_offline_game_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_x.png b/app/src/main/res/mipmap-xhdpi/bg_x.png
new file mode 100644
index 0000000..5d8b914
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_x.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_x_foreground.png b/app/src/main/res/mipmap-xhdpi/bg_x_foreground.png
new file mode 100644
index 0000000..963ac42
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_x_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_x_round.png b/app/src/main/res/mipmap-xhdpi/bg_x_round.png
new file mode 100644
index 0000000..780c147
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_x_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_you_in_army.png b/app/src/main/res/mipmap-xhdpi/bg_you_in_army.png
new file mode 100644
index 0000000..3661013
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_you_in_army.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_you_in_army_foreground.png b/app/src/main/res/mipmap-xhdpi/bg_you_in_army_foreground.png
new file mode 100644
index 0000000..3c23a9c
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_you_in_army_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/bg_you_in_army_round.png b/app/src/main/res/mipmap-xhdpi/bg_you_in_army_round.png
new file mode 100644
index 0000000..841c89a
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/bg_you_in_army_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/emptiness.png b/app/src/main/res/mipmap-xhdpi/emptiness.png
new file mode 100644
index 0000000..e3aa8be
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/emptiness.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/emptiness_foreground.png b/app/src/main/res/mipmap-xhdpi/emptiness_foreground.png
new file mode 100644
index 0000000..01a3bfb
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/emptiness_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/emptiness_round.png b/app/src/main/res/mipmap-xhdpi/emptiness_round.png
new file mode 100644
index 0000000..11bfe2d
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/emptiness_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 0000000..948a307
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..1b9a695
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/main_bg.png b/app/src/main/res/mipmap-xhdpi/main_bg.png
new file mode 100644
index 0000000..0a66717
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/main_bg.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/main_bg_foreground.png b/app/src/main/res/mipmap-xhdpi/main_bg_foreground.png
new file mode 100644
index 0000000..9d36776
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/main_bg_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/main_bg_round.png b/app/src/main/res/mipmap-xhdpi/main_bg_round.png
new file mode 100644
index 0000000..2b704fb
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/main_bg_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_no_no.png b/app/src/main/res/mipmap-xxhdpi/bg_no_no.png
new file mode 100644
index 0000000..ebae1c6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_no_no.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_no_no_foreground.png b/app/src/main/res/mipmap-xxhdpi/bg_no_no_foreground.png
new file mode 100644
index 0000000..9155447
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_no_no_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_no_no_round.png b/app/src/main/res/mipmap-xxhdpi/bg_no_no_round.png
new file mode 100644
index 0000000..7834c1c
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_no_no_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_o.png b/app/src/main/res/mipmap-xxhdpi/bg_o.png
new file mode 100644
index 0000000..e612d93
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_o.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_o_foreground.png b/app/src/main/res/mipmap-xxhdpi/bg_o_foreground.png
new file mode 100644
index 0000000..f72d436
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_o_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_o_round.png b/app/src/main/res/mipmap-xxhdpi/bg_o_round.png
new file mode 100644
index 0000000..83083c7
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_o_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_offline_game.png b/app/src/main/res/mipmap-xxhdpi/bg_offline_game.png
new file mode 100644
index 0000000..5ae8026
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_offline_game.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_offline_game_foreground.png b/app/src/main/res/mipmap-xxhdpi/bg_offline_game_foreground.png
new file mode 100644
index 0000000..f09f3c5
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_offline_game_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_offline_game_round.png b/app/src/main/res/mipmap-xxhdpi/bg_offline_game_round.png
new file mode 100644
index 0000000..25e69d5
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_offline_game_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_x.png b/app/src/main/res/mipmap-xxhdpi/bg_x.png
new file mode 100644
index 0000000..6280bcb
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_x.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_x_foreground.png b/app/src/main/res/mipmap-xxhdpi/bg_x_foreground.png
new file mode 100644
index 0000000..ecd3712
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_x_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_x_round.png b/app/src/main/res/mipmap-xxhdpi/bg_x_round.png
new file mode 100644
index 0000000..7d27f60
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_x_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_you_in_army.png b/app/src/main/res/mipmap-xxhdpi/bg_you_in_army.png
new file mode 100644
index 0000000..299ce5b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_you_in_army.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_you_in_army_foreground.png b/app/src/main/res/mipmap-xxhdpi/bg_you_in_army_foreground.png
new file mode 100644
index 0000000..a781765
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_you_in_army_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_you_in_army_round.png b/app/src/main/res/mipmap-xxhdpi/bg_you_in_army_round.png
new file mode 100644
index 0000000..f275030
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/bg_you_in_army_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/emptiness.png b/app/src/main/res/mipmap-xxhdpi/emptiness.png
new file mode 100644
index 0000000..543cc12
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/emptiness.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/emptiness_foreground.png b/app/src/main/res/mipmap-xxhdpi/emptiness_foreground.png
new file mode 100644
index 0000000..40905b8
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/emptiness_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/emptiness_round.png b/app/src/main/res/mipmap-xxhdpi/emptiness_round.png
new file mode 100644
index 0000000..f55c361
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/emptiness_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..28d4b77
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..9287f50
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/main_bg.png b/app/src/main/res/mipmap-xxhdpi/main_bg.png
new file mode 100644
index 0000000..00402c8
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/main_bg.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/main_bg_foreground.png b/app/src/main/res/mipmap-xxhdpi/main_bg_foreground.png
new file mode 100644
index 0000000..b08095b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/main_bg_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/main_bg_round.png b/app/src/main/res/mipmap-xxhdpi/main_bg_round.png
new file mode 100644
index 0000000..2cb4efc
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/main_bg_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_no_no.png b/app/src/main/res/mipmap-xxxhdpi/bg_no_no.png
new file mode 100644
index 0000000..2ddd961
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_no_no.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_no_no_foreground.png b/app/src/main/res/mipmap-xxxhdpi/bg_no_no_foreground.png
new file mode 100644
index 0000000..bce5ba4
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_no_no_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_no_no_round.png b/app/src/main/res/mipmap-xxxhdpi/bg_no_no_round.png
new file mode 100644
index 0000000..c29b315
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_no_no_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_o.png b/app/src/main/res/mipmap-xxxhdpi/bg_o.png
new file mode 100644
index 0000000..557fb58
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_o.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_o_foreground.png b/app/src/main/res/mipmap-xxxhdpi/bg_o_foreground.png
new file mode 100644
index 0000000..ed05b41
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_o_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_o_round.png b/app/src/main/res/mipmap-xxxhdpi/bg_o_round.png
new file mode 100644
index 0000000..4a5945f
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_o_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_offline_game.png b/app/src/main/res/mipmap-xxxhdpi/bg_offline_game.png
new file mode 100644
index 0000000..08225e1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_offline_game.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_offline_game_foreground.png b/app/src/main/res/mipmap-xxxhdpi/bg_offline_game_foreground.png
new file mode 100644
index 0000000..6920681
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_offline_game_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_offline_game_round.png b/app/src/main/res/mipmap-xxxhdpi/bg_offline_game_round.png
new file mode 100644
index 0000000..3ee6ff8
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_offline_game_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_x.png b/app/src/main/res/mipmap-xxxhdpi/bg_x.png
new file mode 100644
index 0000000..18e6cd8
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_x.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_x_foreground.png b/app/src/main/res/mipmap-xxxhdpi/bg_x_foreground.png
new file mode 100644
index 0000000..8a0554e
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_x_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_x_round.png b/app/src/main/res/mipmap-xxxhdpi/bg_x_round.png
new file mode 100644
index 0000000..ceb7441
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_x_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_you_in_army.png b/app/src/main/res/mipmap-xxxhdpi/bg_you_in_army.png
new file mode 100644
index 0000000..de06765
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_you_in_army.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_you_in_army_foreground.png b/app/src/main/res/mipmap-xxxhdpi/bg_you_in_army_foreground.png
new file mode 100644
index 0000000..75dea8c
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_you_in_army_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_you_in_army_round.png b/app/src/main/res/mipmap-xxxhdpi/bg_you_in_army_round.png
new file mode 100644
index 0000000..57ce6a9
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/bg_you_in_army_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/emptiness.png b/app/src/main/res/mipmap-xxxhdpi/emptiness.png
new file mode 100644
index 0000000..871b052
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/emptiness.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/emptiness_foreground.png b/app/src/main/res/mipmap-xxxhdpi/emptiness_foreground.png
new file mode 100644
index 0000000..b6ca9a5
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/emptiness_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/emptiness_round.png b/app/src/main/res/mipmap-xxxhdpi/emptiness_round.png
new file mode 100644
index 0000000..154ccd2
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/emptiness_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..aa7d642
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..9126ae3
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/main_bg.png b/app/src/main/res/mipmap-xxxhdpi/main_bg.png
new file mode 100644
index 0000000..35c83a6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/main_bg.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/main_bg_foreground.png b/app/src/main/res/mipmap-xxxhdpi/main_bg_foreground.png
new file mode 100644
index 0000000..143db1c
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/main_bg_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/main_bg_round.png b/app/src/main/res/mipmap-xxxhdpi/main_bg_round.png
new file mode 100644
index 0000000..2aa59b4
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/main_bg_round.png
Binary files 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..3bf7040
--- /dev/null
+++ b/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+<resources xmlns:tools="http://schemas.android.com/tools">
+ <!-- Base application theme. -->
+ <style name="Theme.Paifillonai" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
+ <!-- Primary brand color. -->
+ <item name="colorPrimary">@color/purple_200</item>
+ <item name="colorPrimaryVariant">@color/purple_700</item>
+ <item name="colorOnPrimary">@color/black</item>
+ <!-- Secondary brand color. -->
+ <item name="colorSecondary">@color/teal_200</item>
+ <item name="colorSecondaryVariant">@color/teal_200</item>
+ <item name="colorOnSecondary">@color/black</item>
+ <!-- Status bar color. -->
+ <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
+ <!-- Customize your theme here. -->
+ </style>
+</resources> \ 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 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="purple_200">#FFBB86FC</color>
+ <color name="purple_500">#FF6200EE</color>
+ <color name="purple_700">#FF3700B3</color>
+ <color name="teal_200">#FF03DAC5</color>
+ <color name="teal_700">#FF018786</color>
+ <color name="black">#FF000000</color>
+ <color name="white">#FFFFFFFF</color>
+</resources> \ 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..474e42e
--- /dev/null
+++ b/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+<resources>
+ <string name="app_name">Pai-fillo-nai</string>
+</resources> \ 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..3a4f05c
--- /dev/null
+++ b/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+<resources xmlns:tools="http://schemas.android.com/tools">
+ <!-- Base application theme. -->
+ <style name="Theme.Paifillonai" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
+ <!-- Primary brand color. -->
+ <item name="colorPrimary">@color/purple_500</item>
+ <item name="colorPrimaryVariant">@color/purple_700</item>
+ <item name="colorOnPrimary">@color/white</item>
+ <!-- Secondary brand color. -->
+ <item name="colorSecondary">@color/teal_200</item>
+ <item name="colorSecondaryVariant">@color/teal_700</item>
+ <item name="colorOnSecondary">@color/black</item>
+ <!-- Status bar color. -->
+ <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
+ <!-- Customize your theme here. -->
+ </style>
+</resources> \ No newline at end of file
diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 0000000..fa0f996
--- /dev/null
+++ b/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ Sample backup rules file; uncomment and customize as necessary.
+ See https://developer.android.com/guide/topics/data/autobackup
+ for details.
+ Note: This file is ignored for devices older that API 31
+ See https://developer.android.com/about/versions/12/backup-restore
+-->
+<full-backup-content>
+ <!--
+ <include domain="sharedpref" path="."/>
+ <exclude domain="sharedpref" path="device.xml"/>
+-->
+</full-backup-content> \ No newline at end of file
diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 0000000..9ee9997
--- /dev/null
+++ b/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ Sample data extraction rules file; uncomment and customize as necessary.
+ See https://developer.android.com/about/versions/12/backup-restore#xml-changes
+ for details.
+-->
+<data-extraction-rules>
+ <cloud-backup>
+ <!-- TODO: Use <include> and <exclude> to control what is backed up.
+ <include .../>
+ <exclude .../>
+ -->
+ </cloud-backup>
+ <!--
+ <device-transfer>
+ <include .../>
+ <exclude .../>
+ </device-transfer>
+ -->
+</data-extraction-rules> \ No newline at end of file
diff --git a/app/src/test/java/com/jopek/pai_fillo_nai/ExampleUnitTest.java b/app/src/test/java/com/jopek/pai_fillo_nai/ExampleUnitTest.java
new file mode 100644
index 0000000..d6c5292
--- /dev/null
+++ b/app/src/test/java/com/jopek/pai_fillo_nai/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.jopek.pai_fillo_nai;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+} \ No newline at end of file