First commit
							
								
								
									
										14
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					*.iml
 | 
				
			||||||
 | 
					.gradle
 | 
				
			||||||
 | 
					/local.properties
 | 
				
			||||||
 | 
					/.idea/caches
 | 
				
			||||||
 | 
					/.idea/libraries
 | 
				
			||||||
 | 
					/.idea/modules.xml
 | 
				
			||||||
 | 
					/.idea/workspace.xml
 | 
				
			||||||
 | 
					/.idea/navEditor.xml
 | 
				
			||||||
 | 
					/.idea/assetWizardSettings.xml
 | 
				
			||||||
 | 
					.DS_Store
 | 
				
			||||||
 | 
					/build
 | 
				
			||||||
 | 
					/captures
 | 
				
			||||||
 | 
					.externalNativeBuild
 | 
				
			||||||
 | 
					.cxx
 | 
				
			||||||
							
								
								
									
										1
									
								
								.idea/.name
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					Tarot ENS
 | 
				
			||||||
							
								
								
									
										116
									
								
								.idea/codeStyles/Project.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,116 @@
 | 
				
			|||||||
 | 
					<component name="ProjectCodeStyleConfiguration">
 | 
				
			||||||
 | 
					  <code_scheme name="Project" version="173">
 | 
				
			||||||
 | 
					    <codeStyleSettings language="XML">
 | 
				
			||||||
 | 
					      <indentOptions>
 | 
				
			||||||
 | 
					        <option name="CONTINUATION_INDENT_SIZE" value="4" />
 | 
				
			||||||
 | 
					      </indentOptions>
 | 
				
			||||||
 | 
					      <arrangement>
 | 
				
			||||||
 | 
					        <rules>
 | 
				
			||||||
 | 
					          <section>
 | 
				
			||||||
 | 
					            <rule>
 | 
				
			||||||
 | 
					              <match>
 | 
				
			||||||
 | 
					                <AND>
 | 
				
			||||||
 | 
					                  <NAME>xmlns:android</NAME>
 | 
				
			||||||
 | 
					                  <XML_ATTRIBUTE />
 | 
				
			||||||
 | 
					                  <XML_NAMESPACE>^$</XML_NAMESPACE>
 | 
				
			||||||
 | 
					                </AND>
 | 
				
			||||||
 | 
					              </match>
 | 
				
			||||||
 | 
					            </rule>
 | 
				
			||||||
 | 
					          </section>
 | 
				
			||||||
 | 
					          <section>
 | 
				
			||||||
 | 
					            <rule>
 | 
				
			||||||
 | 
					              <match>
 | 
				
			||||||
 | 
					                <AND>
 | 
				
			||||||
 | 
					                  <NAME>xmlns:.*</NAME>
 | 
				
			||||||
 | 
					                  <XML_ATTRIBUTE />
 | 
				
			||||||
 | 
					                  <XML_NAMESPACE>^$</XML_NAMESPACE>
 | 
				
			||||||
 | 
					                </AND>
 | 
				
			||||||
 | 
					              </match>
 | 
				
			||||||
 | 
					              <order>BY_NAME</order>
 | 
				
			||||||
 | 
					            </rule>
 | 
				
			||||||
 | 
					          </section>
 | 
				
			||||||
 | 
					          <section>
 | 
				
			||||||
 | 
					            <rule>
 | 
				
			||||||
 | 
					              <match>
 | 
				
			||||||
 | 
					                <AND>
 | 
				
			||||||
 | 
					                  <NAME>.*:id</NAME>
 | 
				
			||||||
 | 
					                  <XML_ATTRIBUTE />
 | 
				
			||||||
 | 
					                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
 | 
				
			||||||
 | 
					                </AND>
 | 
				
			||||||
 | 
					              </match>
 | 
				
			||||||
 | 
					            </rule>
 | 
				
			||||||
 | 
					          </section>
 | 
				
			||||||
 | 
					          <section>
 | 
				
			||||||
 | 
					            <rule>
 | 
				
			||||||
 | 
					              <match>
 | 
				
			||||||
 | 
					                <AND>
 | 
				
			||||||
 | 
					                  <NAME>.*:name</NAME>
 | 
				
			||||||
 | 
					                  <XML_ATTRIBUTE />
 | 
				
			||||||
 | 
					                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
 | 
				
			||||||
 | 
					                </AND>
 | 
				
			||||||
 | 
					              </match>
 | 
				
			||||||
 | 
					            </rule>
 | 
				
			||||||
 | 
					          </section>
 | 
				
			||||||
 | 
					          <section>
 | 
				
			||||||
 | 
					            <rule>
 | 
				
			||||||
 | 
					              <match>
 | 
				
			||||||
 | 
					                <AND>
 | 
				
			||||||
 | 
					                  <NAME>name</NAME>
 | 
				
			||||||
 | 
					                  <XML_ATTRIBUTE />
 | 
				
			||||||
 | 
					                  <XML_NAMESPACE>^$</XML_NAMESPACE>
 | 
				
			||||||
 | 
					                </AND>
 | 
				
			||||||
 | 
					              </match>
 | 
				
			||||||
 | 
					            </rule>
 | 
				
			||||||
 | 
					          </section>
 | 
				
			||||||
 | 
					          <section>
 | 
				
			||||||
 | 
					            <rule>
 | 
				
			||||||
 | 
					              <match>
 | 
				
			||||||
 | 
					                <AND>
 | 
				
			||||||
 | 
					                  <NAME>style</NAME>
 | 
				
			||||||
 | 
					                  <XML_ATTRIBUTE />
 | 
				
			||||||
 | 
					                  <XML_NAMESPACE>^$</XML_NAMESPACE>
 | 
				
			||||||
 | 
					                </AND>
 | 
				
			||||||
 | 
					              </match>
 | 
				
			||||||
 | 
					            </rule>
 | 
				
			||||||
 | 
					          </section>
 | 
				
			||||||
 | 
					          <section>
 | 
				
			||||||
 | 
					            <rule>
 | 
				
			||||||
 | 
					              <match>
 | 
				
			||||||
 | 
					                <AND>
 | 
				
			||||||
 | 
					                  <NAME>.*</NAME>
 | 
				
			||||||
 | 
					                  <XML_ATTRIBUTE />
 | 
				
			||||||
 | 
					                  <XML_NAMESPACE>^$</XML_NAMESPACE>
 | 
				
			||||||
 | 
					                </AND>
 | 
				
			||||||
 | 
					              </match>
 | 
				
			||||||
 | 
					              <order>BY_NAME</order>
 | 
				
			||||||
 | 
					            </rule>
 | 
				
			||||||
 | 
					          </section>
 | 
				
			||||||
 | 
					          <section>
 | 
				
			||||||
 | 
					            <rule>
 | 
				
			||||||
 | 
					              <match>
 | 
				
			||||||
 | 
					                <AND>
 | 
				
			||||||
 | 
					                  <NAME>.*</NAME>
 | 
				
			||||||
 | 
					                  <XML_ATTRIBUTE />
 | 
				
			||||||
 | 
					                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
 | 
				
			||||||
 | 
					                </AND>
 | 
				
			||||||
 | 
					              </match>
 | 
				
			||||||
 | 
					              <order>ANDROID_ATTRIBUTE_ORDER</order>
 | 
				
			||||||
 | 
					            </rule>
 | 
				
			||||||
 | 
					          </section>
 | 
				
			||||||
 | 
					          <section>
 | 
				
			||||||
 | 
					            <rule>
 | 
				
			||||||
 | 
					              <match>
 | 
				
			||||||
 | 
					                <AND>
 | 
				
			||||||
 | 
					                  <NAME>.*</NAME>
 | 
				
			||||||
 | 
					                  <XML_ATTRIBUTE />
 | 
				
			||||||
 | 
					                  <XML_NAMESPACE>.*</XML_NAMESPACE>
 | 
				
			||||||
 | 
					                </AND>
 | 
				
			||||||
 | 
					              </match>
 | 
				
			||||||
 | 
					              <order>BY_NAME</order>
 | 
				
			||||||
 | 
					            </rule>
 | 
				
			||||||
 | 
					          </section>
 | 
				
			||||||
 | 
					        </rules>
 | 
				
			||||||
 | 
					      </arrangement>
 | 
				
			||||||
 | 
					    </codeStyleSettings>
 | 
				
			||||||
 | 
					  </code_scheme>
 | 
				
			||||||
 | 
					</component>
 | 
				
			||||||
							
								
								
									
										5
									
								
								.idea/codeStyles/codeStyleConfig.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					<component name="ProjectCodeStyleConfiguration">
 | 
				
			||||||
 | 
					  <state>
 | 
				
			||||||
 | 
					    <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
 | 
				
			||||||
 | 
					  </state>
 | 
				
			||||||
 | 
					</component>
 | 
				
			||||||
							
								
								
									
										16
									
								
								.idea/gradle.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="GradleSettings">
 | 
				
			||||||
 | 
					    <option name="linkedExternalProjectsSettings">
 | 
				
			||||||
 | 
					      <GradleProjectSettings>
 | 
				
			||||||
 | 
					        <compositeConfiguration>
 | 
				
			||||||
 | 
					          <compositeBuild compositeDefinitionSource="SCRIPT" />
 | 
				
			||||||
 | 
					        </compositeConfiguration>
 | 
				
			||||||
 | 
					        <option name="distributionType" value="DEFAULT_WRAPPED" />
 | 
				
			||||||
 | 
					        <option name="externalProjectPath" value="$PROJECT_DIR$" />
 | 
				
			||||||
 | 
					        <option name="resolveModulePerSourceSet" value="false" />
 | 
				
			||||||
 | 
					        <option name="testRunner" value="PLATFORM" />
 | 
				
			||||||
 | 
					      </GradleProjectSettings>
 | 
				
			||||||
 | 
					    </option>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										9
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
 | 
				
			||||||
 | 
					    <output url="file://$PROJECT_DIR$/build/classes" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					  <component name="ProjectType">
 | 
				
			||||||
 | 
					    <option name="id" value="Android" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										12
									
								
								.idea/runConfigurations.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="RunConfigurationProducerService">
 | 
				
			||||||
 | 
					    <option name="ignoredProducers">
 | 
				
			||||||
 | 
					      <set>
 | 
				
			||||||
 | 
					        <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
 | 
				
			||||||
 | 
					        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
 | 
				
			||||||
 | 
					        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
 | 
				
			||||||
 | 
					      </set>
 | 
				
			||||||
 | 
					    </option>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										6
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="VcsDirectoryMappings">
 | 
				
			||||||
 | 
					    <mapping directory="$PROJECT_DIR$" vcs="Git" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										1
									
								
								app/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/build
 | 
				
			||||||
							
								
								
									
										36
									
								
								app/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					apply plugin: 'com.android.application'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					android {
 | 
				
			||||||
 | 
					    compileSdkVersion 29
 | 
				
			||||||
 | 
					    buildToolsVersion "29.0.2"
 | 
				
			||||||
 | 
					    defaultConfig {
 | 
				
			||||||
 | 
					        applicationId "fr.ynerant.tarot"
 | 
				
			||||||
 | 
					        minSdkVersion 24
 | 
				
			||||||
 | 
					        targetSdkVersion 29
 | 
				
			||||||
 | 
					        versionCode 1
 | 
				
			||||||
 | 
					        versionName "1.0"
 | 
				
			||||||
 | 
					        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    buildTypes {
 | 
				
			||||||
 | 
					        release {
 | 
				
			||||||
 | 
					            minifyEnabled false
 | 
				
			||||||
 | 
					            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dependencies {
 | 
				
			||||||
 | 
					    implementation fileTree(dir: 'libs', include: ['*.jar'])
 | 
				
			||||||
 | 
					    implementation 'androidx.appcompat:appcompat:1.1.0'
 | 
				
			||||||
 | 
					    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
 | 
				
			||||||
 | 
					    implementation 'com.google.android.material:material:1.0.0'
 | 
				
			||||||
 | 
					    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
 | 
				
			||||||
 | 
					    implementation 'androidx.navigation:navigation-fragment:2.1.0'
 | 
				
			||||||
 | 
					    implementation 'androidx.navigation:navigation-ui:2.1.0'
 | 
				
			||||||
 | 
					    implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
 | 
				
			||||||
 | 
					    testImplementation 'junit:junit:4.12'
 | 
				
			||||||
 | 
					    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
 | 
				
			||||||
 | 
					    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
 | 
				
			||||||
 | 
					    implementation 'com.google.code.gson:gson:2.8.6'
 | 
				
			||||||
 | 
					    implementation 'commons-io:commons-io:2.6'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										21
									
								
								app/proguard-rules.pro
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -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
 | 
				
			||||||
@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					package fr.ynerant.tarot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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("fr.ynerant.tarot", appContext.getPackageName());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										28
									
								
								app/src/main/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    package="fr.ynerant.tarot">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <uses-permission android:name="android.permission.INTERNET"/>
 | 
				
			||||||
 | 
					    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <application
 | 
				
			||||||
 | 
					        android:allowBackup="true"
 | 
				
			||||||
 | 
					        android:usesCleartextTraffic="true"
 | 
				
			||||||
 | 
					        android:icon="@mipmap/ic_launcher"
 | 
				
			||||||
 | 
					        android:label="@string/app_name"
 | 
				
			||||||
 | 
					        android:roundIcon="@mipmap/ic_launcher_round"
 | 
				
			||||||
 | 
					        android:supportsRtl="true"
 | 
				
			||||||
 | 
					        android:theme="@style/AppTheme">
 | 
				
			||||||
 | 
					        <activity
 | 
				
			||||||
 | 
					            android:name=".MainActivity"
 | 
				
			||||||
 | 
					            android:label="@string/app_name"
 | 
				
			||||||
 | 
					            android:theme="@style/AppTheme.NoActionBar">
 | 
				
			||||||
 | 
					            <intent-filter>
 | 
				
			||||||
 | 
					                <action android:name="android.intent.action.MAIN" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <category android:name="android.intent.category.LAUNCHER" />
 | 
				
			||||||
 | 
					            </intent-filter>
 | 
				
			||||||
 | 
					        </activity>
 | 
				
			||||||
 | 
					    </application>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</manifest>
 | 
				
			||||||
							
								
								
									
										185
									
								
								app/src/main/java/fr/ynerant/tarot/Game.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,185 @@
 | 
				
			|||||||
 | 
					package fr.ynerant.tarot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.preference.PreferenceManager;
 | 
				
			||||||
 | 
					import android.util.SparseArray;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.gson.Gson;
 | 
				
			||||||
 | 
					import com.google.gson.reflect.TypeToken;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStreamReader;
 | 
				
			||||||
 | 
					import java.net.HttpURLConnection;
 | 
				
			||||||
 | 
					import java.net.URL;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					import java.util.concurrent.Executors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class Game {
 | 
				
			||||||
 | 
						private static final SparseArray<Game> GAMES = new SparseArray<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public int id;
 | 
				
			||||||
 | 
						public GameType type;
 | 
				
			||||||
 | 
						public Set<Player> players;
 | 
				
			||||||
 | 
						public Bet bet;
 | 
				
			||||||
 | 
						public Player attacker;
 | 
				
			||||||
 | 
						public Player follower;
 | 
				
			||||||
 | 
						public int attackScore;
 | 
				
			||||||
 | 
					//	public boolean little, twenty_one, excuse;
 | 
				
			||||||
 | 
						public int ends;
 | 
				
			||||||
 | 
						public int handle;
 | 
				
			||||||
 | 
						public Map<Player, Boolean> miseries;
 | 
				
			||||||
 | 
						public boolean littleForAttacker, littleForDefenser;
 | 
				
			||||||
 | 
						public boolean chelemAnnounced, chelemRealized;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public int getId() {
 | 
				
			||||||
 | 
							return id;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public GameType getType() {
 | 
				
			||||||
 | 
							return type;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public Set<Player> getPlayers() {
 | 
				
			||||||
 | 
							return players;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public Bet getBet() {
 | 
				
			||||||
 | 
							return bet;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public Player getAttacker() {
 | 
				
			||||||
 | 
							return attacker;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public Player getFollower() {
 | 
				
			||||||
 | 
							return follower;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public int getAttackScore() {
 | 
				
			||||||
 | 
							return attackScore;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public int getEnds() {
 | 
				
			||||||
 | 
							return ends;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public int getHandle() {
 | 
				
			||||||
 | 
							return handle;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public Map<Player, Boolean> getMiseries() {
 | 
				
			||||||
 | 
							return miseries;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public boolean isLittleForAttacker() {
 | 
				
			||||||
 | 
							return littleForAttacker;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public boolean isLittleForDefenser() {
 | 
				
			||||||
 | 
							return littleForDefenser;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public boolean isChelemAnnounced() {
 | 
				
			||||||
 | 
							return chelemAnnounced;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public boolean isChelemRealized() {
 | 
				
			||||||
 | 
							return chelemRealized;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public int calculateScore() {
 | 
				
			||||||
 | 
						//	int ends = (little ? 1 : 0) + (twenty_one ? 1 : 0) + (excuse ? 1 : 0);
 | 
				
			||||||
 | 
							int bound = ends == 0 ? 56 : ends == 1 ? 51 : ends == 2 ? 41 : 36;
 | 
				
			||||||
 | 
							boolean win = attackScore >= bound;
 | 
				
			||||||
 | 
							int gain = Math.abs(attackScore - bound);
 | 
				
			||||||
 | 
							int score = 25;
 | 
				
			||||||
 | 
							score += gain;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							score *= bet.getMultiplier();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (handle != 0)
 | 
				
			||||||
 | 
								score += 10 * (Math.abs(handle) + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (!win)
 | 
				
			||||||
 | 
								score = -score;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (littleForAttacker)
 | 
				
			||||||
 | 
								score += 10;
 | 
				
			||||||
 | 
							else if (littleForDefenser)
 | 
				
			||||||
 | 
								score -= 10;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (chelemAnnounced) {
 | 
				
			||||||
 | 
								if (chelemRealized)
 | 
				
			||||||
 | 
									score += 400;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									score -= 200;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else if (chelemRealized)
 | 
				
			||||||
 | 
								score += 200;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return score;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public enum GameType {
 | 
				
			||||||
 | 
							THREE_PLAYERS, FOUR_PLAYERS, FIVE_PLAYERS, SIX_PLAYERS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public int getNbPlayers() {
 | 
				
			||||||
 | 
								return ordinal() + 3;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static GameType getGameType(int players) {
 | 
				
			||||||
 | 
								switch (players) {
 | 
				
			||||||
 | 
									case 3:
 | 
				
			||||||
 | 
										return THREE_PLAYERS;
 | 
				
			||||||
 | 
									case 4:
 | 
				
			||||||
 | 
										return FOUR_PLAYERS;
 | 
				
			||||||
 | 
									case 5:
 | 
				
			||||||
 | 
										return FIVE_PLAYERS;
 | 
				
			||||||
 | 
									case 6:
 | 
				
			||||||
 | 
										return SIX_PLAYERS;
 | 
				
			||||||
 | 
									default:
 | 
				
			||||||
 | 
										throw new IllegalArgumentException("A game must have between 3 and 6 players");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public enum Bet {
 | 
				
			||||||
 | 
							SMALL(1), GUARD(2), GUARD_WITHOUT(4), GUARD_AGAINST(6);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							private final int multiplier;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Bet(int multiplier) {
 | 
				
			||||||
 | 
								this.multiplier = multiplier;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public int getMultiplier() {
 | 
				
			||||||
 | 
								return multiplier;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static void updateGames() {
 | 
				
			||||||
 | 
							Executors.newSingleThreadExecutor().execute(new Runnable() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void run() {
 | 
				
			||||||
 | 
									try {
 | 
				
			||||||
 | 
										URL url = new URL("http://galaxyoyo.com/tarot/game.php");
 | 
				
			||||||
 | 
										final HttpURLConnection co = (HttpURLConnection) url.openConnection();
 | 
				
			||||||
 | 
										co.setRequestMethod("POST");
 | 
				
			||||||
 | 
										co.setRequestProperty("token", PreferenceManager.getDefaultSharedPreferences(MainActivity.INSTANCE).getString("token", null));
 | 
				
			||||||
 | 
										co.connect();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										final List<Game> games = new Gson().fromJson(new InputStreamReader(co.getInputStream()), new TypeToken<ArrayList<Game>>(){}.getType());
 | 
				
			||||||
 | 
										GAMES.clear();
 | 
				
			||||||
 | 
										for (Game g : games) {
 | 
				
			||||||
 | 
											GAMES.put(g.getId(), g);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									catch (IOException ex) {
 | 
				
			||||||
 | 
										ex.printStackTrace();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										62
									
								
								app/src/main/java/fr/ynerant/tarot/MainActivity.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					package fr.ynerant.tarot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.content.Context;
 | 
				
			||||||
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.navigation.NavController;
 | 
				
			||||||
 | 
					import androidx.navigation.Navigation;
 | 
				
			||||||
 | 
					import androidx.navigation.ui.AppBarConfiguration;
 | 
				
			||||||
 | 
					import androidx.navigation.ui.NavigationUI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.android.material.navigation.NavigationView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.drawerlayout.widget.DrawerLayout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.appcompat.app.AppCompatActivity;
 | 
				
			||||||
 | 
					import androidx.appcompat.widget.Toolbar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.view.Menu;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class MainActivity extends AppCompatActivity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static MainActivity INSTANCE;
 | 
				
			||||||
 | 
					    private AppBarConfiguration mAppBarConfiguration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    protected void onCreate(Bundle savedInstanceState) {
 | 
				
			||||||
 | 
					        super.onCreate(savedInstanceState);
 | 
				
			||||||
 | 
					        INSTANCE = this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Player.updatePlayers();
 | 
				
			||||||
 | 
					        Game.updateGames();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        setContentView(R.layout.activity_main);
 | 
				
			||||||
 | 
					        Toolbar toolbar = findViewById(R.id.toolbar);
 | 
				
			||||||
 | 
					        setSupportActionBar(toolbar);
 | 
				
			||||||
 | 
					        DrawerLayout drawer = findViewById(R.id.drawer_layout);
 | 
				
			||||||
 | 
					        NavigationView navigationView = findViewById(R.id.nav_view);
 | 
				
			||||||
 | 
					        // Passing each menu ID as a set of Ids because each
 | 
				
			||||||
 | 
					        // menu should be considered as top level destinations.
 | 
				
			||||||
 | 
					        mAppBarConfiguration = new AppBarConfiguration.Builder(
 | 
				
			||||||
 | 
					                R.id.nav_new_game)
 | 
				
			||||||
 | 
					                .setDrawerLayout(drawer)
 | 
				
			||||||
 | 
					                .build();
 | 
				
			||||||
 | 
					        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
 | 
				
			||||||
 | 
					        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
 | 
				
			||||||
 | 
					        NavigationUI.setupWithNavController(navigationView, navController);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean onCreateOptionsMenu(Menu menu) {
 | 
				
			||||||
 | 
					        // Inflate the menu; this adds items to the action bar if it is present.
 | 
				
			||||||
 | 
					        getMenuInflater().inflate(R.menu.main, menu);
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean onSupportNavigateUp() {
 | 
				
			||||||
 | 
					        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
 | 
				
			||||||
 | 
					        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
 | 
				
			||||||
 | 
					                || super.onSupportNavigateUp();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										105
									
								
								app/src/main/java/fr/ynerant/tarot/Player.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,105 @@
 | 
				
			|||||||
 | 
					package fr.ynerant.tarot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.annotation.SuppressLint;
 | 
				
			||||||
 | 
					import android.preference.PreferenceManager;
 | 
				
			||||||
 | 
					import android.widget.Toast;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.gson.Gson;
 | 
				
			||||||
 | 
					import com.google.gson.reflect.TypeToken;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStreamReader;
 | 
				
			||||||
 | 
					import java.net.HttpURLConnection;
 | 
				
			||||||
 | 
					import java.net.URL;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.Collection;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.concurrent.Executors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class Player {
 | 
				
			||||||
 | 
					    @SuppressLint("UseSparseArrays")
 | 
				
			||||||
 | 
						private static final Map<Integer, Player> PLAYERS = new HashMap<>();
 | 
				
			||||||
 | 
					    public static Player THIS_PLAYER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private int id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private int score3, score4, score5, score6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private int getId() {
 | 
				
			||||||
 | 
					        return id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public String getName() {
 | 
				
			||||||
 | 
							return name;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public int getScore3() {
 | 
				
			||||||
 | 
							return score3;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public int getScore4() {
 | 
				
			||||||
 | 
							return score4;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public int getScore5() {
 | 
				
			||||||
 | 
							return score5;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public int getScore6() {
 | 
				
			||||||
 | 
							return score6;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object obj) {
 | 
				
			||||||
 | 
					        return obj instanceof Player && ((Player) obj).getId() == getId();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static void updatePlayers() {
 | 
				
			||||||
 | 
							Executors.newSingleThreadExecutor().execute(new Runnable() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void run() {
 | 
				
			||||||
 | 
									try {
 | 
				
			||||||
 | 
										URL url = new URL("http://galaxyoyo.com/tarot/player.php");
 | 
				
			||||||
 | 
										final HttpURLConnection co = (HttpURLConnection) url.openConnection();
 | 
				
			||||||
 | 
										co.setRequestMethod("POST");
 | 
				
			||||||
 | 
										co.setRequestProperty("token", PreferenceManager.getDefaultSharedPreferences(MainActivity.INSTANCE).getString("token", null));
 | 
				
			||||||
 | 
										co.connect();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										final List<Player> players = new Gson().fromJson(new InputStreamReader(co.getInputStream()), new TypeToken<ArrayList<Player>>(){}.getType());
 | 
				
			||||||
 | 
										PLAYERS.clear();
 | 
				
			||||||
 | 
										for (Player p : players) {
 | 
				
			||||||
 | 
											PLAYERS.put(p.getId(), p);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										THIS_PLAYER = PLAYERS.get(PreferenceManager.getDefaultSharedPreferences(MainActivity.INSTANCE).getInt("user_id", 0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										MainActivity.INSTANCE.runOnUiThread(new Runnable() {
 | 
				
			||||||
 | 
											@Override
 | 
				
			||||||
 | 
											public void run() {
 | 
				
			||||||
 | 
												Toast.makeText(MainActivity.INSTANCE, "Bienvenue " + THIS_PLAYER.getName() + " !", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										});
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									catch (IOException ex) {
 | 
				
			||||||
 | 
										ex.printStackTrace();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static Collection<Player> getAllPlayers() {
 | 
				
			||||||
 | 
					    	return PLAYERS.values();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@NonNull
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public String toString() {
 | 
				
			||||||
 | 
							return name;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										106
									
								
								app/src/main/java/fr/ynerant/tarot/ui/home/HomeFragment.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,106 @@
 | 
				
			|||||||
 | 
					package fr.ynerant.tarot.ui.home;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					import android.os.Looper;
 | 
				
			||||||
 | 
					import android.preference.PreferenceManager;
 | 
				
			||||||
 | 
					import android.view.LayoutInflater;
 | 
				
			||||||
 | 
					import android.view.View;
 | 
				
			||||||
 | 
					import android.view.ViewGroup;
 | 
				
			||||||
 | 
					import android.widget.Button;
 | 
				
			||||||
 | 
					import android.widget.EditText;
 | 
				
			||||||
 | 
					import android.widget.TextView;
 | 
				
			||||||
 | 
					import android.widget.Toast;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					import androidx.fragment.app.Fragment;
 | 
				
			||||||
 | 
					import androidx.lifecycle.ViewModelProviders;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.gson.Gson;
 | 
				
			||||||
 | 
					import com.google.gson.reflect.TypeToken;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.commons.io.IOUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.net.HttpURLConnection;
 | 
				
			||||||
 | 
					import java.net.URL;
 | 
				
			||||||
 | 
					import java.nio.charset.StandardCharsets;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.concurrent.Executors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import fr.ynerant.tarot.Game;
 | 
				
			||||||
 | 
					import fr.ynerant.tarot.MainActivity;
 | 
				
			||||||
 | 
					import fr.ynerant.tarot.Player;
 | 
				
			||||||
 | 
					import fr.ynerant.tarot.R;
 | 
				
			||||||
 | 
					import fr.ynerant.tarot.ui.newgame.NewGameFragment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class HomeFragment extends Fragment {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private HomeViewModel homeViewModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public View onCreateView(@NonNull LayoutInflater inflater,
 | 
				
			||||||
 | 
												 ViewGroup container, Bundle savedInstanceState) {
 | 
				
			||||||
 | 
							homeViewModel =
 | 
				
			||||||
 | 
									ViewModelProviders.of(this).get(HomeViewModel.class);
 | 
				
			||||||
 | 
							final View root = inflater.inflate(R.layout.fragment_home, container, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (PreferenceManager.getDefaultSharedPreferences(MainActivity.INSTANCE).getString("token", null) != null) {
 | 
				
			||||||
 | 
								//noinspection ConstantConditions
 | 
				
			||||||
 | 
								getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new NewGameFragment(), "Nouvelle partie").commit();
 | 
				
			||||||
 | 
								return root;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							TextView textView = root.findViewById(R.id.text_home);
 | 
				
			||||||
 | 
							textView.setText(R.string.welcome);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Button login = root.findViewById(R.id.login);
 | 
				
			||||||
 | 
							login.setOnClickListener(new View.OnClickListener() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onClick(View v) {
 | 
				
			||||||
 | 
									final EditText token = root.findViewById(R.id.token);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									Executors.newSingleThreadExecutor().execute(new Runnable() {
 | 
				
			||||||
 | 
										@Override
 | 
				
			||||||
 | 
										public void run() {
 | 
				
			||||||
 | 
											try {
 | 
				
			||||||
 | 
												Looper.prepare();
 | 
				
			||||||
 | 
												URL url = new URL("http://galaxyoyo.com/tarot/check_token.php");
 | 
				
			||||||
 | 
												final HttpURLConnection co = (HttpURLConnection) url.openConnection();
 | 
				
			||||||
 | 
												co.setRequestMethod("POST");
 | 
				
			||||||
 | 
												co.setRequestProperty("token", token.getText().toString());
 | 
				
			||||||
 | 
												co.connect();
 | 
				
			||||||
 | 
												final int resp = co.getResponseCode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												MainActivity.INSTANCE.runOnUiThread(new Runnable() {
 | 
				
			||||||
 | 
													@Override
 | 
				
			||||||
 | 
													public void run() {
 | 
				
			||||||
 | 
														try {
 | 
				
			||||||
 | 
															if (resp == 403)
 | 
				
			||||||
 | 
																Toast.makeText(root.getContext(), "Utilisateur non trouvé", Toast.LENGTH_LONG).show();
 | 
				
			||||||
 | 
															else {
 | 
				
			||||||
 | 
																String content = IOUtils.readLines(co.getInputStream(), StandardCharsets.UTF_8).get(0);
 | 
				
			||||||
 | 
																HashMap<String, Integer> map = new Gson().fromJson(content, new TypeToken<HashMap<String, Integer>>(){}.getType());
 | 
				
			||||||
 | 
																//noinspection ConstantConditions
 | 
				
			||||||
 | 
																int id = map.getOrDefault("id", 0);
 | 
				
			||||||
 | 
																PreferenceManager.getDefaultSharedPreferences(root.getContext()).edit().putString("token", token.getText().toString()).putInt("user_id", id).apply();
 | 
				
			||||||
 | 
																Player.updatePlayers();
 | 
				
			||||||
 | 
																Game.updateGames();
 | 
				
			||||||
 | 
																//noinspection ConstantConditions
 | 
				
			||||||
 | 
																getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new NewGameFragment(), "Nouvelle partie").commit();
 | 
				
			||||||
 | 
															}
 | 
				
			||||||
 | 
														} catch (IOException ex) {
 | 
				
			||||||
 | 
															ex.printStackTrace();
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												});
 | 
				
			||||||
 | 
											} catch (IOException e) {
 | 
				
			||||||
 | 
												e.printStackTrace();
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return root;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					package fr.ynerant.tarot.ui.home;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.lifecycle.ViewModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class HomeViewModel extends ViewModel {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public HomeViewModel() {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,323 @@
 | 
				
			|||||||
 | 
					package fr.ynerant.tarot.ui.newgame;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					import android.preference.PreferenceManager;
 | 
				
			||||||
 | 
					import android.view.LayoutInflater;
 | 
				
			||||||
 | 
					import android.view.View;
 | 
				
			||||||
 | 
					import android.view.ViewGroup;
 | 
				
			||||||
 | 
					import android.widget.ArrayAdapter;
 | 
				
			||||||
 | 
					import android.widget.Button;
 | 
				
			||||||
 | 
					import android.widget.LinearLayout;
 | 
				
			||||||
 | 
					import android.widget.SeekBar;
 | 
				
			||||||
 | 
					import android.widget.Spinner;
 | 
				
			||||||
 | 
					import android.widget.SpinnerAdapter;
 | 
				
			||||||
 | 
					import android.widget.Switch;
 | 
				
			||||||
 | 
					import android.widget.TextView;
 | 
				
			||||||
 | 
					import android.widget.Toast;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					import androidx.fragment.app.Fragment;
 | 
				
			||||||
 | 
					import androidx.lifecycle.ViewModelProviders;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashSet;
 | 
				
			||||||
 | 
					import java.util.Locale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import fr.ynerant.tarot.Game;
 | 
				
			||||||
 | 
					import fr.ynerant.tarot.MainActivity;
 | 
				
			||||||
 | 
					import fr.ynerant.tarot.Player;
 | 
				
			||||||
 | 
					import fr.ynerant.tarot.R;
 | 
				
			||||||
 | 
					import fr.ynerant.tarot.ui.home.HomeFragment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class NewGameFragment extends Fragment {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private NewGameViewModel newGameViewModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public View onCreateView(@NonNull LayoutInflater inflater,
 | 
				
			||||||
 | 
												 ViewGroup container, Bundle savedInstanceState) {
 | 
				
			||||||
 | 
							newGameViewModel =
 | 
				
			||||||
 | 
									ViewModelProviders.of(this).get(NewGameViewModel.class);
 | 
				
			||||||
 | 
							final View root = inflater.inflate(R.layout.fragment_new_game, container, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (PreferenceManager.getDefaultSharedPreferences(MainActivity.INSTANCE).getString("token", null) == null) {
 | 
				
			||||||
 | 
								//noinspection ConstantConditions
 | 
				
			||||||
 | 
								getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new HomeFragment(), "Se connecter").commit();
 | 
				
			||||||
 | 
								return root;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							TextView textView = root.findViewById(R.id.text_new_game);
 | 
				
			||||||
 | 
							textView.setText(R.string.menu_new_game);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							final SeekBar nb_players = root.findViewById(R.id.nb_players);
 | 
				
			||||||
 | 
							final Spinner player1 = root.findViewById(R.id.player1);
 | 
				
			||||||
 | 
							final Spinner player2 = root.findViewById(R.id.player2);
 | 
				
			||||||
 | 
							final Spinner player3 = root.findViewById(R.id.player3);
 | 
				
			||||||
 | 
							final Spinner player4 = root.findViewById(R.id.player4);
 | 
				
			||||||
 | 
							final Spinner player5 = root.findViewById(R.id.player5);
 | 
				
			||||||
 | 
							final Spinner player6 = root.findViewById(R.id.player6);
 | 
				
			||||||
 | 
							final LinearLayout player4_layout = root.findViewById(R.id.player4_layout);
 | 
				
			||||||
 | 
							final LinearLayout player5_layout = root.findViewById(R.id.player5_layout);
 | 
				
			||||||
 | 
							final LinearLayout player6_layout = root.findViewById(R.id.player6_layout);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//noinspection ConstantConditions
 | 
				
			||||||
 | 
							ArrayAdapter<Player> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, new ArrayList<>(Player.getAllPlayers()));
 | 
				
			||||||
 | 
							adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | 
				
			||||||
 | 
							player1.setAdapter(adapter);
 | 
				
			||||||
 | 
							player2.setAdapter(adapter);
 | 
				
			||||||
 | 
							player3.setAdapter(adapter);
 | 
				
			||||||
 | 
							player4.setAdapter(adapter);
 | 
				
			||||||
 | 
							player5.setAdapter(adapter);
 | 
				
			||||||
 | 
							player6.setAdapter(adapter);
 | 
				
			||||||
 | 
							final Spinner[] spinners = new Spinner[]{player1, player2, player3, player4, player5, player6};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							final SeekBar attack_points = root.findViewById(R.id.attack_score);
 | 
				
			||||||
 | 
							final SeekBar bet = root.findViewById(R.id.bet);
 | 
				
			||||||
 | 
							final SeekBar nb_ends = root.findViewById(R.id.nb_ends);
 | 
				
			||||||
 | 
							final Switch chelem_announced = root.findViewById(R.id.chelem_announced);
 | 
				
			||||||
 | 
							final Switch chelem_realized = root.findViewById(R.id.chelem_realized);
 | 
				
			||||||
 | 
							final SeekBar little_end = root.findViewById(R.id.little_end);
 | 
				
			||||||
 | 
							final SeekBar handle = root.findViewById(R.id.handle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							final Runnable updateScore = new Runnable() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void run() {
 | 
				
			||||||
 | 
									TextView textView = root.findViewById(R.id.nb_points);
 | 
				
			||||||
 | 
									Game game = new Game();
 | 
				
			||||||
 | 
									game.attackScore = attack_points.getProgress();
 | 
				
			||||||
 | 
									game.type = Game.GameType.getGameType(nb_players.getProgress() + 3);
 | 
				
			||||||
 | 
									game.players = new HashSet<>();
 | 
				
			||||||
 | 
									for (int i = 0; i < 3 + nb_players.getProgress(); ++i) {
 | 
				
			||||||
 | 
										game.players.add((Player) spinners[i].getSelectedItem());
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									game.bet = Game.Bet.values()[bet.getProgress()];
 | 
				
			||||||
 | 
									game.ends = nb_ends.getProgress();
 | 
				
			||||||
 | 
									game.chelemAnnounced = chelem_announced.isChecked();
 | 
				
			||||||
 | 
									game.chelemRealized = chelem_realized.isChecked();
 | 
				
			||||||
 | 
									game.littleForAttacker = little_end.getProgress() == 1;
 | 
				
			||||||
 | 
									game.littleForDefenser = little_end.getProgress() == 2;
 | 
				
			||||||
 | 
									game.handle = handle.getProgress();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									textView.setText(String.format(Locale.getDefault(), "%d points (hors misères)", game.calculateScore()));
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							updateScore.run();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							nb_players.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
 | 
				
			||||||
 | 
									TextView nb_players_info = root.findViewById(R.id.nb_players_info);
 | 
				
			||||||
 | 
									int resource = R.string.players4;
 | 
				
			||||||
 | 
									switch (progress) {
 | 
				
			||||||
 | 
										case 0:
 | 
				
			||||||
 | 
											resource = R.string.players3;
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 1:
 | 
				
			||||||
 | 
											resource = R.string.players4;
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 2:
 | 
				
			||||||
 | 
											resource = R.string.players5;
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 3:
 | 
				
			||||||
 | 
											resource = R.string.players6;
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									nb_players_info.setText(resource);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									player4_layout.setVisibility(View.GONE);
 | 
				
			||||||
 | 
									player5_layout.setVisibility(View.GONE);
 | 
				
			||||||
 | 
									player6_layout.setVisibility(View.GONE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									switch (progress + 3) {
 | 
				
			||||||
 | 
										case 6:
 | 
				
			||||||
 | 
											player6_layout.setVisibility(View.VISIBLE);
 | 
				
			||||||
 | 
										case 5:
 | 
				
			||||||
 | 
											player5_layout.setVisibility(View.VISIBLE);
 | 
				
			||||||
 | 
										case 4:
 | 
				
			||||||
 | 
											player4_layout.setVisibility(View.VISIBLE);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStartTrackingTouch(SeekBar seekBar) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStopTrackingTouch(SeekBar seekBar) {}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							attack_points.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
 | 
				
			||||||
 | 
									TextView attack = root.findViewById(R.id.nb_points_attack);
 | 
				
			||||||
 | 
									TextView defense = root.findViewById(R.id.nb_points_defense);
 | 
				
			||||||
 | 
									attack.setText(String.valueOf(progress));
 | 
				
			||||||
 | 
									defense.setText(String.valueOf(91 - progress));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									updateScore.run();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStartTrackingTouch(SeekBar seekBar) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStopTrackingTouch(SeekBar seekBar) {}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bet.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
 | 
				
			||||||
 | 
									TextView textView = root.findViewById(R.id.bet_info);
 | 
				
			||||||
 | 
									switch (progress) {
 | 
				
			||||||
 | 
										case 1:
 | 
				
			||||||
 | 
											textView.setText(R.string.guard);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 2:
 | 
				
			||||||
 | 
											textView.setText(R.string.guard_without);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 3:
 | 
				
			||||||
 | 
											textView.setText(R.string.guard_against);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										default:
 | 
				
			||||||
 | 
											textView.setText(R.string.little);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									updateScore.run();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStartTrackingTouch(SeekBar seekBar) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStopTrackingTouch(SeekBar seekBar) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							nb_ends.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
 | 
				
			||||||
 | 
									TextView textView = root.findViewById(R.id.nb_ends_info);
 | 
				
			||||||
 | 
									switch (progress) {
 | 
				
			||||||
 | 
										case 1:
 | 
				
			||||||
 | 
											textView.setText(R.string.one_end);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 2:
 | 
				
			||||||
 | 
											textView.setText(R.string.two_ends);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 3:
 | 
				
			||||||
 | 
											textView.setText(R.string.three_ends);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										default:
 | 
				
			||||||
 | 
											textView.setText(R.string.null_end);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									updateScore.run();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStartTrackingTouch(SeekBar seekBar) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStopTrackingTouch(SeekBar seekBar) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							chelem_announced.setOnClickListener(new View.OnClickListener() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onClick(View v) {
 | 
				
			||||||
 | 
									updateScore.run();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							chelem_realized.setOnClickListener(new View.OnClickListener() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onClick(View v) {
 | 
				
			||||||
 | 
									updateScore.run();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							little_end.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
 | 
				
			||||||
 | 
									TextView textView = root.findViewById(R.id.little_end_info);
 | 
				
			||||||
 | 
									switch (progress) {
 | 
				
			||||||
 | 
										case 1:
 | 
				
			||||||
 | 
											textView.setText(R.string.for_attacker);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 2:
 | 
				
			||||||
 | 
											textView.setText(R.string.for_defenser);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										default:
 | 
				
			||||||
 | 
											textView.setText(R.string.no);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									updateScore.run();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStartTrackingTouch(SeekBar seekBar) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStopTrackingTouch(SeekBar seekBar) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							attack_points.setProgress(46);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							handle.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
 | 
				
			||||||
 | 
									TextView textView = root.findViewById(R.id.handle_info);
 | 
				
			||||||
 | 
									switch (progress) {
 | 
				
			||||||
 | 
										case -3:
 | 
				
			||||||
 | 
											textView.setText(R.string.handle_3d);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case -2:
 | 
				
			||||||
 | 
											textView.setText(R.string.handle_2d);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case -1:
 | 
				
			||||||
 | 
											textView.setText(R.string.handle_1d);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 1:
 | 
				
			||||||
 | 
											textView.setText(R.string.handle_1a);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 2:
 | 
				
			||||||
 | 
											textView.setText(R.string.handle_2a);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										case 3:
 | 
				
			||||||
 | 
											textView.setText(R.string.handle_3a);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										default:
 | 
				
			||||||
 | 
											textView.setText(R.string.no_handle);
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									updateScore.run();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStartTrackingTouch(SeekBar seekBar) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onStopTrackingTouch(SeekBar seekBar) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							final Button btn = root.findViewById(R.id.add_game_button);
 | 
				
			||||||
 | 
							btn.setOnClickListener(new View.OnClickListener() {
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public void onClick(View v) {
 | 
				
			||||||
 | 
									Toast.makeText(getContext(), "La partie sera sauvegardée ultérieurement.", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return root;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					package fr.ynerant.tarot.ui.newgame;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.lifecycle.ViewModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class NewGameViewModel extends ViewModel {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public NewGameViewModel() {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										34
									
								
								app/src/main/res/drawable-v24/ic_launcher_foreground.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					<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:fillType="evenOdd"
 | 
				
			||||||
 | 
					        android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
 | 
				
			||||||
 | 
					        android:strokeWidth="1"
 | 
				
			||||||
 | 
					        android:strokeColor="#00000000">
 | 
				
			||||||
 | 
					        <aapt:attr name="android:fillColor">
 | 
				
			||||||
 | 
					            <gradient
 | 
				
			||||||
 | 
					                android:endX="78.5885"
 | 
				
			||||||
 | 
					                android:endY="90.9159"
 | 
				
			||||||
 | 
					                android:startX="48.7653"
 | 
				
			||||||
 | 
					                android:startY="61.0927"
 | 
				
			||||||
 | 
					                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="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
 | 
				
			||||||
 | 
					        android:strokeWidth="1"
 | 
				
			||||||
 | 
					        android:strokeColor="#00000000" />
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
							
								
								
									
										170
									
								
								app/src/main/res/drawable/ic_launcher_background.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -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="#008577"
 | 
				
			||||||
 | 
					        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>
 | 
				
			||||||
							
								
								
									
										12
									
								
								app/src/main/res/drawable/ic_menu_camera.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:width="24dp"
 | 
				
			||||||
 | 
					    android:height="24dp"
 | 
				
			||||||
 | 
					    android:viewportWidth="24.0"
 | 
				
			||||||
 | 
					    android:viewportHeight="24.0">
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF000000"
 | 
				
			||||||
 | 
					        android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0" />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF000000"
 | 
				
			||||||
 | 
					        android:pathData="M9,2L7.17,4H4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2H9zm3,15c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z" />
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
							
								
								
									
										9
									
								
								app/src/main/res/drawable/ic_menu_gallery.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:width="24dp"
 | 
				
			||||||
 | 
					    android:height="24dp"
 | 
				
			||||||
 | 
					    android:viewportWidth="24.0"
 | 
				
			||||||
 | 
					    android:viewportHeight="24.0">
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF000000"
 | 
				
			||||||
 | 
					        android:pathData="M22,16V4c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2zm-11,-4l2.03,2.71L16,11l4,5H8l3,-4zM2,6v14c0,1.1 0.9,2 2,2h14v-2H4V6H2z" />
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
							
								
								
									
										9
									
								
								app/src/main/res/drawable/ic_menu_manage.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:width="24dp"
 | 
				
			||||||
 | 
					    android:height="24dp"
 | 
				
			||||||
 | 
					    android:viewportWidth="24.0"
 | 
				
			||||||
 | 
					    android:viewportHeight="24.0">
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF000000"
 | 
				
			||||||
 | 
					        android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z" />
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
							
								
								
									
										9
									
								
								app/src/main/res/drawable/ic_menu_send.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:width="24dp"
 | 
				
			||||||
 | 
					    android:height="24dp"
 | 
				
			||||||
 | 
					    android:viewportWidth="24.0"
 | 
				
			||||||
 | 
					    android:viewportHeight="24.0">
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF000000"
 | 
				
			||||||
 | 
					        android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z" />
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
							
								
								
									
										9
									
								
								app/src/main/res/drawable/ic_menu_share.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:width="24dp"
 | 
				
			||||||
 | 
					    android:height="24dp"
 | 
				
			||||||
 | 
					    android:viewportWidth="24.0"
 | 
				
			||||||
 | 
					    android:viewportHeight="24.0">
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF000000"
 | 
				
			||||||
 | 
					        android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" />
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
							
								
								
									
										9
									
								
								app/src/main/res/drawable/ic_menu_slideshow.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:width="24dp"
 | 
				
			||||||
 | 
					    android:height="24dp"
 | 
				
			||||||
 | 
					    android:viewportWidth="24.0"
 | 
				
			||||||
 | 
					    android:viewportHeight="24.0">
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF000000"
 | 
				
			||||||
 | 
					        android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6zm16,-4H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2zm-8,12.5v-9l6,4.5 -6,4.5z" />
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
							
								
								
									
										9
									
								
								app/src/main/res/drawable/side_nav_bar.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					<shape xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:shape="rectangle">
 | 
				
			||||||
 | 
					    <gradient
 | 
				
			||||||
 | 
					        android:angle="135"
 | 
				
			||||||
 | 
					        android:centerColor="#009688"
 | 
				
			||||||
 | 
					        android:endColor="#00695C"
 | 
				
			||||||
 | 
					        android:startColor="#4DB6AC"
 | 
				
			||||||
 | 
					        android:type="linear" />
 | 
				
			||||||
 | 
					</shape>
 | 
				
			||||||
							
								
								
									
										25
									
								
								app/src/main/res/layout/activity_main.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer_layout"
 | 
				
			||||||
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					    android:layout_height="match_parent"
 | 
				
			||||||
 | 
					    android:fitsSystemWindows="true"
 | 
				
			||||||
 | 
					    tools:openDrawer="start">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <include
 | 
				
			||||||
 | 
					        layout="@layout/app_bar_main"
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="match_parent" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <com.google.android.material.navigation.NavigationView
 | 
				
			||||||
 | 
					        android:id="@+id/nav_view"
 | 
				
			||||||
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_height="match_parent"
 | 
				
			||||||
 | 
					        android:layout_gravity="start"
 | 
				
			||||||
 | 
					        android:fitsSystemWindows="true"
 | 
				
			||||||
 | 
					        app:headerLayout="@layout/nav_header_main"
 | 
				
			||||||
 | 
					        app:menu="@menu/activity_main_drawer" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</androidx.drawerlayout.widget.DrawerLayout>
 | 
				
			||||||
							
								
								
									
										25
									
								
								app/src/main/res/layout/app_bar_main.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<androidx.coordinatorlayout.widget.CoordinatorLayout 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">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <com.google.android.material.appbar.AppBarLayout
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:theme="@style/AppTheme.AppBarOverlay">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <androidx.appcompat.widget.Toolbar
 | 
				
			||||||
 | 
					            android:id="@+id/toolbar"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="?attr/actionBarSize"
 | 
				
			||||||
 | 
					            android:background="?attr/colorPrimary"
 | 
				
			||||||
 | 
					            app:popupTheme="@style/AppTheme.PopupOverlay" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </com.google.android.material.appbar.AppBarLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <include layout="@layout/content_main" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</androidx.coordinatorlayout.widget.CoordinatorLayout>
 | 
				
			||||||
							
								
								
									
										20
									
								
								app/src/main/res/layout/content_main.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<?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"
 | 
				
			||||||
 | 
					    app:layout_behavior="@string/appbar_scrolling_view_behavior"
 | 
				
			||||||
 | 
					    tools:showIn="@layout/app_bar_main">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <fragment
 | 
				
			||||||
 | 
					        android:id="@+id/nav_host_fragment"
 | 
				
			||||||
 | 
					        android:name="androidx.navigation.fragment.NavHostFragment"
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="match_parent"
 | 
				
			||||||
 | 
					        app:defaultNavHost="true"
 | 
				
			||||||
 | 
					        app:layout_constraintLeft_toLeftOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintRight_toRightOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintTop_toTopOf="parent"
 | 
				
			||||||
 | 
					        app:navGraph="@navigation/mobile_navigation" />
 | 
				
			||||||
 | 
					</androidx.constraintlayout.widget.ConstraintLayout>
 | 
				
			||||||
							
								
								
									
										25
									
								
								app/src/main/res/layout/fragment_home.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					    android:layout_height="match_parent"
 | 
				
			||||||
 | 
					    android:orientation="vertical">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <TextView
 | 
				
			||||||
 | 
					        android:id="@+id/text_home"
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:textAlignment="center"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <EditText
 | 
				
			||||||
 | 
					        android:id="@+id/token"
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:inputType="textPersonName"
 | 
				
			||||||
 | 
					        android:textAlignment="center" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <Button
 | 
				
			||||||
 | 
					        android:id="@+id/login"
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:text="@string/login"/>
 | 
				
			||||||
 | 
					</LinearLayout>
 | 
				
			||||||
							
								
								
									
										443
									
								
								app/src/main/res/layout/fragment_new_game.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,443 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<LinearLayout 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:orientation="vertical"
 | 
				
			||||||
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					    android:layout_height="match_parent">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <LinearLayout
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:orientation="vertical">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <TextView
 | 
				
			||||||
 | 
					            android:id="@+id/text_new_game"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:layout_marginStart="8dp"
 | 
				
			||||||
 | 
					            android:layout_marginTop="8dp"
 | 
				
			||||||
 | 
					            android:layout_marginEnd="8dp"
 | 
				
			||||||
 | 
					            android:textAlignment="center"
 | 
				
			||||||
 | 
					            android:textSize="20sp"
 | 
				
			||||||
 | 
					            app:layout_constraintEnd_toEndOf="parent"
 | 
				
			||||||
 | 
					            app:layout_constraintStart_toStartOf="parent"
 | 
				
			||||||
 | 
					            app:layout_constraintTop_toTopOf="parent" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="match_parent"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:id="@+id/textView4"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Nombre de joueurs :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <LinearLayout
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:orientation="vertical">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <SeekBar
 | 
				
			||||||
 | 
					                    android:id="@+id/nb_players"
 | 
				
			||||||
 | 
					                    style="@style/Widget.AppCompat.SeekBar.Discrete"
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:max="3"
 | 
				
			||||||
 | 
					                    android:progress="1" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <TextView
 | 
				
			||||||
 | 
					                    android:id="@+id/nb_players_info"
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_weight="1"
 | 
				
			||||||
 | 
					                    android:text="@string/players4"
 | 
				
			||||||
 | 
					                    android:textAlignment="center" />
 | 
				
			||||||
 | 
					            </LinearLayout>
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="match_parent"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Joueur 1 :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <Spinner
 | 
				
			||||||
 | 
					                android:id="@+id/player1"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="match_parent"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Joueur 2 :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <Spinner
 | 
				
			||||||
 | 
					                android:id="@+id/player2"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="match_parent"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Joueur 3 :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <Spinner
 | 
				
			||||||
 | 
					                android:id="@+id/player3"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:id="@+id/player4_layout"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="match_parent"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Joueur 4 :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <Spinner
 | 
				
			||||||
 | 
					                android:id="@+id/player4"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:id="@+id/player5_layout"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="match_parent"
 | 
				
			||||||
 | 
					            android:orientation="horizontal"
 | 
				
			||||||
 | 
					            android:visibility="gone">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Joueur 5 :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <Spinner
 | 
				
			||||||
 | 
					                android:id="@+id/player5"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:id="@+id/player6_layout"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="match_parent"
 | 
				
			||||||
 | 
					            android:orientation="horizontal"
 | 
				
			||||||
 | 
					            android:visibility="gone">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Joueur 6 :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <Spinner
 | 
				
			||||||
 | 
					                android:id="@+id/player6"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:id="@+id/follower_layout"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="match_parent"
 | 
				
			||||||
 | 
					            android:orientation="horizontal"
 | 
				
			||||||
 | 
					            android:visibility="gone">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Suiveur :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <Spinner
 | 
				
			||||||
 | 
					                android:id="@+id/follower"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:id="@+id/dealer_layout"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="match_parent"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Dealer :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <Spinner
 | 
				
			||||||
 | 
					                android:id="@+id/dealer"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:id="@+id/textView11"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Mise :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <LinearLayout
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:orientation="vertical">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <SeekBar
 | 
				
			||||||
 | 
					                    android:id="@+id/bet"
 | 
				
			||||||
 | 
					                    style="@style/Widget.AppCompat.SeekBar.Discrete"
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_weight="1"
 | 
				
			||||||
 | 
					                    android:max="3"
 | 
				
			||||||
 | 
					                    android:progress="1" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <TextView
 | 
				
			||||||
 | 
					                    android:id="@+id/bet_info"
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_weight="1"
 | 
				
			||||||
 | 
					                    android:text="@string/guard"
 | 
				
			||||||
 | 
					                    android:textAlignment="center" />
 | 
				
			||||||
 | 
					            </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:id="@+id/textView6"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Nombre de bouts :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <LinearLayout
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:orientation="vertical">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <SeekBar
 | 
				
			||||||
 | 
					                    android:id="@+id/nb_ends"
 | 
				
			||||||
 | 
					                    style="@style/Widget.AppCompat.SeekBar.Discrete"
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_weight="1"
 | 
				
			||||||
 | 
					                    android:max="3"
 | 
				
			||||||
 | 
					                    android:progress="1" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <TextView
 | 
				
			||||||
 | 
					                    android:id="@+id/nb_ends_info"
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_weight="1"
 | 
				
			||||||
 | 
					                    android:text="@string/one_end"
 | 
				
			||||||
 | 
					                    android:textAlignment="center" />
 | 
				
			||||||
 | 
					            </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:id="@+id/textView2"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="@string/attack_points"
 | 
				
			||||||
 | 
					                android:textAlignment="center" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:id="@+id/textView3"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="@string/defense_points"
 | 
				
			||||||
 | 
					                android:textAlignment="center" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:id="@+id/nb_points_attack"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:textAlignment="center"
 | 
				
			||||||
 | 
					                android:textSize="18sp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:id="@+id/nb_points_defense"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:textAlignment="center"
 | 
				
			||||||
 | 
					                android:textSize="18sp" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <SeekBar
 | 
				
			||||||
 | 
					            android:id="@+id/attack_score"
 | 
				
			||||||
 | 
					            style="@style/Widget.AppCompat.SeekBar"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:max="91" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <Switch
 | 
				
			||||||
 | 
					            android:id="@+id/chelem_announced"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:text="Chelem annoncé" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <Switch
 | 
				
			||||||
 | 
					            android:id="@+id/chelem_realized"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:text="Chelem réalisé" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:id="@+id/textView7"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Petit au bout :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <LinearLayout
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:orientation="vertical">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <SeekBar
 | 
				
			||||||
 | 
					                    android:id="@+id/little_end"
 | 
				
			||||||
 | 
					                    style="@style/Widget.AppCompat.SeekBar.Discrete"
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_weight="1"
 | 
				
			||||||
 | 
					                    android:max="2"
 | 
				
			||||||
 | 
					                    android:progress="0" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <TextView
 | 
				
			||||||
 | 
					                    android:id="@+id/little_end_info"
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_weight="1"
 | 
				
			||||||
 | 
					                    android:text="@string/no"
 | 
				
			||||||
 | 
					                    android:textAlignment="center" />
 | 
				
			||||||
 | 
					            </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:orientation="horizontal">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <TextView
 | 
				
			||||||
 | 
					                android:id="@+id/textView12"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:text="Poignée :" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <LinearLayout
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_weight="1"
 | 
				
			||||||
 | 
					                android:orientation="vertical">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <SeekBar
 | 
				
			||||||
 | 
					                    android:id="@+id/handle"
 | 
				
			||||||
 | 
					                    style="@style/Widget.AppCompat.SeekBar.Discrete"
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_weight="1"
 | 
				
			||||||
 | 
					                    android:max="3"
 | 
				
			||||||
 | 
					                    android:min="-3"
 | 
				
			||||||
 | 
					                    android:progress="0" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <TextView
 | 
				
			||||||
 | 
					                    android:id="@+id/handle_info"
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                    android:layout_weight="1"
 | 
				
			||||||
 | 
					                    android:text="@string/no_handle"
 | 
				
			||||||
 | 
					                    android:textAlignment="center" />
 | 
				
			||||||
 | 
					            </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <TextView
 | 
				
			||||||
 | 
					            android:id="@+id/nb_points"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:textAlignment="center"
 | 
				
			||||||
 | 
					            android:textSize="30sp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <Button
 | 
				
			||||||
 | 
					        android:id="@+id/add_game_button"
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:text="Enregistrer la partie" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</LinearLayout>
 | 
				
			||||||
							
								
								
									
										36
									
								
								app/src/main/res/layout/nav_header_main.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
				
			||||||
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					    android:layout_height="@dimen/nav_header_height"
 | 
				
			||||||
 | 
					    android:background="@drawable/side_nav_bar"
 | 
				
			||||||
 | 
					    android:gravity="bottom"
 | 
				
			||||||
 | 
					    android:orientation="vertical"
 | 
				
			||||||
 | 
					    android:paddingLeft="@dimen/activity_horizontal_margin"
 | 
				
			||||||
 | 
					    android:paddingTop="@dimen/activity_vertical_margin"
 | 
				
			||||||
 | 
					    android:paddingRight="@dimen/activity_horizontal_margin"
 | 
				
			||||||
 | 
					    android:paddingBottom="@dimen/activity_vertical_margin"
 | 
				
			||||||
 | 
					    android:theme="@style/ThemeOverlay.AppCompat.Dark">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <ImageView
 | 
				
			||||||
 | 
					        android:id="@+id/imageView"
 | 
				
			||||||
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:contentDescription="@string/nav_header_desc"
 | 
				
			||||||
 | 
					        android:paddingTop="@dimen/nav_header_vertical_spacing"
 | 
				
			||||||
 | 
					        app:srcCompat="@mipmap/ic_launcher_round" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <TextView
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:paddingTop="@dimen/nav_header_vertical_spacing"
 | 
				
			||||||
 | 
					        android:text="@string/nav_header_title"
 | 
				
			||||||
 | 
					        android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <TextView
 | 
				
			||||||
 | 
					        android:id="@+id/textView"
 | 
				
			||||||
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:text="@string/nav_header_subtitle" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</LinearLayout>
 | 
				
			||||||
							
								
								
									
										18
									
								
								app/src/main/res/menu/activity_main_drawer.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<menu xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
						xmlns:tools="http://schemas.android.com/tools"
 | 
				
			||||||
 | 
						tools:showIn="navigation_view">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<group android:checkableBehavior="single">
 | 
				
			||||||
 | 
						<!--<item
 | 
				
			||||||
 | 
									android:id="@+id/nav_home"
 | 
				
			||||||
 | 
									android:icon="@drawable/ic_launcher_foreground"
 | 
				
			||||||
 | 
									android:title="@string/menu_home" />-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							<item
 | 
				
			||||||
 | 
								android:id="@+id/nav_new_game"
 | 
				
			||||||
 | 
								android:icon="@drawable/ic_launcher_foreground"
 | 
				
			||||||
 | 
								android:title="@string/menu_new_game" />
 | 
				
			||||||
 | 
						</group>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</menu>
 | 
				
			||||||
							
								
								
									
										9
									
								
								app/src/main/res/menu/main.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<menu xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    xmlns:app="http://schemas.android.com/apk/res-auto">
 | 
				
			||||||
 | 
					    <item
 | 
				
			||||||
 | 
					        android:id="@+id/action_settings"
 | 
				
			||||||
 | 
					        android:orderInCategory="100"
 | 
				
			||||||
 | 
					        android:title="@string/action_settings"
 | 
				
			||||||
 | 
					        app:showAsAction="never" />
 | 
				
			||||||
 | 
					</menu>
 | 
				
			||||||
							
								
								
									
										5
									
								
								app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -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>
 | 
				
			||||||
							
								
								
									
										5
									
								
								app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -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>
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/mipmap-hdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.9 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/mipmap-hdpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 4.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/mipmap-mdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/mipmap-mdpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.7 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/mipmap-xhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 4.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 6.7 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/mipmap-xxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 6.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 10 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 8.9 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 15 KiB  | 
							
								
								
									
										19
									
								
								app/src/main/res/navigation/mobile_navigation.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<navigation 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:id="@+id/mobile_navigation"
 | 
				
			||||||
 | 
						app:startDestination="@+id/nav_new_game">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<fragment
 | 
				
			||||||
 | 
							android:id="@+id/nav_home"
 | 
				
			||||||
 | 
							android:name="fr.ynerant.tarot.ui.home.HomeFragment"
 | 
				
			||||||
 | 
							android:label="@string/menu_home"
 | 
				
			||||||
 | 
							tools:layout="@layout/fragment_home" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<fragment
 | 
				
			||||||
 | 
							android:id="@+id/nav_new_game"
 | 
				
			||||||
 | 
							android:name="fr.ynerant.tarot.ui.newgame.NewGameFragment"
 | 
				
			||||||
 | 
							android:label="@string/menu_new_game"
 | 
				
			||||||
 | 
							tools:layout="@layout/fragment_new_game" />
 | 
				
			||||||
 | 
					</navigation>
 | 
				
			||||||
							
								
								
									
										38
									
								
								app/src/main/res/values-fr/strings.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<resources>
 | 
				
			||||||
 | 
					    <string name="app_name">Tarot ENS Info</string>
 | 
				
			||||||
 | 
					    <string name="action_settings">Paramètres</string>
 | 
				
			||||||
 | 
					    <string name="menu_home">Accueil</string>
 | 
				
			||||||
 | 
					    <string name="nav_header_desc">En-tête de navigation</string>
 | 
				
			||||||
 | 
					    <string name="nav_header_subtitle">yohann.danello@gmail.com</string>
 | 
				
			||||||
 | 
					    <string name="nav_header_title">Tarot ENS Info</string>
 | 
				
			||||||
 | 
					    <string name="navigation_drawer_close">Fermer le menu de navigation</string>
 | 
				
			||||||
 | 
					    <string name="navigation_drawer_open">Ouvrir le menu de navigation</string>
 | 
				
			||||||
 | 
					    <string name="welcome">Veuillez vous connecter :</string>
 | 
				
			||||||
 | 
					    <string name="menu_new_game">Nouvelle partie</string>
 | 
				
			||||||
 | 
					    <string name="attack_points">Points attaquants</string>
 | 
				
			||||||
 | 
					    <string name="defense_points">Points défenseurs</string>
 | 
				
			||||||
 | 
					    <string name="no">Non</string>
 | 
				
			||||||
 | 
					    <string name="for_attacker">Pour l\'attaquant</string>
 | 
				
			||||||
 | 
					    <string name="for_defenser">Pour le défenseur</string>
 | 
				
			||||||
 | 
					    <string name="null_end">Pas de bout</string>
 | 
				
			||||||
 | 
					    <string name="one_end">Un bout</string>
 | 
				
			||||||
 | 
					    <string name="two_ends">Deux bouts</string>
 | 
				
			||||||
 | 
					    <string name="three_ends">Trois bouts</string>
 | 
				
			||||||
 | 
					    <string name="little">Petite</string>
 | 
				
			||||||
 | 
					    <string name="guard">Garde</string>
 | 
				
			||||||
 | 
					    <string name="guard_without">Garde sans</string>
 | 
				
			||||||
 | 
					    <string name="guard_against">Garde contre</string>
 | 
				
			||||||
 | 
					    <string name="no_handle">Pas de poignée</string>
 | 
				
			||||||
 | 
					    <string name="handle_1a">Petite poignée (pour l\'attaquant)</string>
 | 
				
			||||||
 | 
					    <string name="handle_2a">Moyenne poignée (pour l\'attaquant)</string>
 | 
				
			||||||
 | 
					    <string name="handle_3a">Grande poignée (pour l\'attaquant)</string>
 | 
				
			||||||
 | 
					    <string name="handle_1d">Petite poignée (pour le défenseur)</string>
 | 
				
			||||||
 | 
					    <string name="handle_2d">Moyenne poignée (pour le défenseur)</string>
 | 
				
			||||||
 | 
					    <string name="handle_3d">Grande poignée (pour le défenseur)</string>
 | 
				
			||||||
 | 
					    <string name="login">Se connecter</string>
 | 
				
			||||||
 | 
						<string name="players3">3 joueurs</string>
 | 
				
			||||||
 | 
					    <string name="players4">4 joueurs</string>
 | 
				
			||||||
 | 
					    <string name="players5">5 joueurs</string>
 | 
				
			||||||
 | 
					    <string name="players6">6 joueurs</string>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										8
									
								
								app/src/main/res/values-v21/styles.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<resources>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <style name="AppTheme.NoActionBar">
 | 
				
			||||||
 | 
					        <item name="windowActionBar">false</item>
 | 
				
			||||||
 | 
					        <item name="windowNoTitle">true</item>
 | 
				
			||||||
 | 
					        <item name="android:statusBarColor">@android:color/transparent</item>
 | 
				
			||||||
 | 
					    </style>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										6
									
								
								app/src/main/res/values/colors.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<resources>
 | 
				
			||||||
 | 
					    <color name="colorPrimary">#008577</color>
 | 
				
			||||||
 | 
					    <color name="colorPrimaryDark">#00574B</color>
 | 
				
			||||||
 | 
					    <color name="colorAccent">#D81B60</color>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										8
									
								
								app/src/main/res/values/dimens.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<resources>
 | 
				
			||||||
 | 
					    <!-- Default screen margins, per the Android Design guidelines. -->
 | 
				
			||||||
 | 
					    <dimen name="activity_horizontal_margin">16dp</dimen>
 | 
				
			||||||
 | 
					    <dimen name="activity_vertical_margin">16dp</dimen>
 | 
				
			||||||
 | 
					    <dimen name="nav_header_vertical_spacing">8dp</dimen>
 | 
				
			||||||
 | 
					    <dimen name="nav_header_height">176dp</dimen>
 | 
				
			||||||
 | 
					    <dimen name="fab_margin">16dp</dimen>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										38
									
								
								app/src/main/res/values/strings.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					<resources>
 | 
				
			||||||
 | 
					    <string name="app_name">Tarot ENS Info</string>
 | 
				
			||||||
 | 
					    <string name="navigation_drawer_open">Open navigation drawer</string>
 | 
				
			||||||
 | 
					    <string name="navigation_drawer_close">Close navigation drawer</string>
 | 
				
			||||||
 | 
					    <string name="nav_header_title">Tarot ENS Info</string>
 | 
				
			||||||
 | 
					    <string name="nav_header_subtitle">yohann.danello@gmail.com</string>
 | 
				
			||||||
 | 
					    <string name="nav_header_desc">Navigation header</string>
 | 
				
			||||||
 | 
					    <string name="action_settings">Settings</string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <string name="menu_home">Home</string>
 | 
				
			||||||
 | 
					    <string name="welcome">Please connect:</string>
 | 
				
			||||||
 | 
					    <string name="menu_new_game">New game</string>
 | 
				
			||||||
 | 
					    <string name="attack_points">Points attaquants</string>
 | 
				
			||||||
 | 
					    <string name="defense_points">Points défenseurs</string>
 | 
				
			||||||
 | 
					    <string name="no">Non</string>
 | 
				
			||||||
 | 
					    <string name="for_attacker">Pour l\'attaquant</string>
 | 
				
			||||||
 | 
					    <string name="for_defenser">Pour le défenseur</string>
 | 
				
			||||||
 | 
					    <string name="null_end">Pas de bout</string>
 | 
				
			||||||
 | 
					    <string name="one_end">Un bout</string>
 | 
				
			||||||
 | 
					    <string name="two_ends">Deux bouts</string>
 | 
				
			||||||
 | 
					    <string name="three_ends">Trois bouts</string>
 | 
				
			||||||
 | 
					    <string name="little">Petite</string>
 | 
				
			||||||
 | 
					    <string name="guard">Garde</string>
 | 
				
			||||||
 | 
					    <string name="guard_without">Garde sans</string>
 | 
				
			||||||
 | 
					    <string name="guard_against">Garde contre</string>
 | 
				
			||||||
 | 
					    <string name="no_handle">Pas de poignée</string>
 | 
				
			||||||
 | 
					    <string name="handle_1a">Petite poignée (pour l\'attaquant)</string>
 | 
				
			||||||
 | 
					    <string name="handle_2a">Moyenne poignée (pour l\'attaquant)</string>
 | 
				
			||||||
 | 
					    <string name="handle_3a">Grande poignée (pour l\'attaquant)</string>
 | 
				
			||||||
 | 
					    <string name="handle_1d">Petite poignée (pour le défenseur)</string>
 | 
				
			||||||
 | 
					    <string name="handle_2d">Moyenne poignée (pour le défenseur)</string>
 | 
				
			||||||
 | 
					    <string name="handle_3d">Grande poignée (pour le défenseur)</string>
 | 
				
			||||||
 | 
					    <string name="login">Se connecter</string>
 | 
				
			||||||
 | 
					    <string name="players3">3 joueurs</string>
 | 
				
			||||||
 | 
					    <string name="players4">4 joueurs</string>
 | 
				
			||||||
 | 
					    <string name="players5">5 joueurs</string>
 | 
				
			||||||
 | 
					    <string name="players6">6 joueurs</string>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										20
									
								
								app/src/main/res/values/styles.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<resources>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Base application theme. -->
 | 
				
			||||||
 | 
					    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
 | 
				
			||||||
 | 
					        <!-- Customize your theme here. -->
 | 
				
			||||||
 | 
					        <item name="colorPrimary">@color/colorPrimary</item>
 | 
				
			||||||
 | 
					        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
 | 
				
			||||||
 | 
					        <item name="colorAccent">@color/colorAccent</item>
 | 
				
			||||||
 | 
					    </style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <style name="AppTheme.NoActionBar">
 | 
				
			||||||
 | 
					        <item name="windowActionBar">false</item>
 | 
				
			||||||
 | 
					        <item name="windowNoTitle">true</item>
 | 
				
			||||||
 | 
					    </style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										17
									
								
								app/src/test/java/fr/ynerant/tarot/ExampleUnitTest.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					package fr.ynerant.tarot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										27
									
								
								build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					// Top-level build file where you can add configuration options common to all sub-projects/modules.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					buildscript {
 | 
				
			||||||
 | 
					    repositories {
 | 
				
			||||||
 | 
					        google()
 | 
				
			||||||
 | 
					        jcenter()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    dependencies {
 | 
				
			||||||
 | 
					        classpath 'com.android.tools.build:gradle:3.5.2'
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // NOTE: Do not place your application dependencies here; they belong
 | 
				
			||||||
 | 
					        // in the individual module build.gradle files
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					allprojects {
 | 
				
			||||||
 | 
					    repositories {
 | 
				
			||||||
 | 
					        google()
 | 
				
			||||||
 | 
					        jcenter()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					task clean(type: Delete) {
 | 
				
			||||||
 | 
					    delete rootProject.buildDir
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										20
									
								
								gradle.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					# Project-wide Gradle settings.
 | 
				
			||||||
 | 
					# IDE (e.g. Android Studio) users:
 | 
				
			||||||
 | 
					# Gradle settings configured through the IDE *will override*
 | 
				
			||||||
 | 
					# any settings specified in this file.
 | 
				
			||||||
 | 
					# For more details on how to configure your build environment visit
 | 
				
			||||||
 | 
					# http://www.gradle.org/docs/current/userguide/build_environment.html
 | 
				
			||||||
 | 
					# Specifies the JVM arguments used for the daemon process.
 | 
				
			||||||
 | 
					# The setting is particularly useful for tweaking memory settings.
 | 
				
			||||||
 | 
					org.gradle.jvmargs=-Xmx1536m
 | 
				
			||||||
 | 
					# When configured, Gradle will run in incubating parallel mode.
 | 
				
			||||||
 | 
					# This option should only be used with decoupled projects. More details, visit
 | 
				
			||||||
 | 
					# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 | 
				
			||||||
 | 
					# org.gradle.parallel=true
 | 
				
			||||||
 | 
					# AndroidX package structure to make it clearer which packages are bundled with the
 | 
				
			||||||
 | 
					# Android operating system, and which are packaged with your app's APK
 | 
				
			||||||
 | 
					# https://developer.android.com/topic/libraries/support-library/androidx-rn
 | 
				
			||||||
 | 
					android.useAndroidX=true
 | 
				
			||||||
 | 
					# Automatically convert third-party libraries to use AndroidX
 | 
				
			||||||
 | 
					android.enableJetifier=true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										6
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					#Mon Nov 25 20:35:56 CET 2019
 | 
				
			||||||
 | 
					distributionBase=GRADLE_USER_HOME
 | 
				
			||||||
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
 | 
				
			||||||
							
								
								
									
										172
									
								
								gradlew
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,172 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					##############################################################################
 | 
				
			||||||
 | 
					##
 | 
				
			||||||
 | 
					##  Gradle start up script for UN*X
 | 
				
			||||||
 | 
					##
 | 
				
			||||||
 | 
					##############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Attempt to set APP_HOME
 | 
				
			||||||
 | 
					# Resolve links: $0 may be a link
 | 
				
			||||||
 | 
					PRG="$0"
 | 
				
			||||||
 | 
					# Need this for relative symlinks.
 | 
				
			||||||
 | 
					while [ -h "$PRG" ] ; do
 | 
				
			||||||
 | 
					    ls=`ls -ld "$PRG"`
 | 
				
			||||||
 | 
					    link=`expr "$ls" : '.*-> \(.*\)$'`
 | 
				
			||||||
 | 
					    if expr "$link" : '/.*' > /dev/null; then
 | 
				
			||||||
 | 
					        PRG="$link"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        PRG=`dirname "$PRG"`"/$link"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					SAVED="`pwd`"
 | 
				
			||||||
 | 
					cd "`dirname \"$PRG\"`/" >/dev/null
 | 
				
			||||||
 | 
					APP_HOME="`pwd -P`"
 | 
				
			||||||
 | 
					cd "$SAVED" >/dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP_NAME="Gradle"
 | 
				
			||||||
 | 
					APP_BASE_NAME=`basename "$0"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
				
			||||||
 | 
					DEFAULT_JVM_OPTS=""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
				
			||||||
 | 
					MAX_FD="maximum"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					warn () {
 | 
				
			||||||
 | 
					    echo "$*"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					die () {
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "$*"
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# OS specific support (must be 'true' or 'false').
 | 
				
			||||||
 | 
					cygwin=false
 | 
				
			||||||
 | 
					msys=false
 | 
				
			||||||
 | 
					darwin=false
 | 
				
			||||||
 | 
					nonstop=false
 | 
				
			||||||
 | 
					case "`uname`" in
 | 
				
			||||||
 | 
					  CYGWIN* )
 | 
				
			||||||
 | 
					    cygwin=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  Darwin* )
 | 
				
			||||||
 | 
					    darwin=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  MINGW* )
 | 
				
			||||||
 | 
					    msys=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  NONSTOP* )
 | 
				
			||||||
 | 
					    nonstop=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Determine the Java command to use to start the JVM.
 | 
				
			||||||
 | 
					if [ -n "$JAVA_HOME" ] ; then
 | 
				
			||||||
 | 
					    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
 | 
				
			||||||
 | 
					        # IBM's JDK on AIX uses strange locations for the executables
 | 
				
			||||||
 | 
					        JAVACMD="$JAVA_HOME/jre/sh/java"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        JAVACMD="$JAVA_HOME/bin/java"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if [ ! -x "$JAVACMD" ] ; then
 | 
				
			||||||
 | 
					        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					location of your Java installation."
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    JAVACMD="java"
 | 
				
			||||||
 | 
					    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					location of your Java installation."
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Increase the maximum file descriptors if we can.
 | 
				
			||||||
 | 
					if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
 | 
				
			||||||
 | 
					    MAX_FD_LIMIT=`ulimit -H -n`
 | 
				
			||||||
 | 
					    if [ $? -eq 0 ] ; then
 | 
				
			||||||
 | 
					        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
 | 
				
			||||||
 | 
					            MAX_FD="$MAX_FD_LIMIT"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        ulimit -n $MAX_FD
 | 
				
			||||||
 | 
					        if [ $? -ne 0 ] ; then
 | 
				
			||||||
 | 
					            warn "Could not set maximum file descriptor limit: $MAX_FD"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For Darwin, add options to specify how the application appears in the dock
 | 
				
			||||||
 | 
					if $darwin; then
 | 
				
			||||||
 | 
					    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For Cygwin, switch paths to Windows format before running java
 | 
				
			||||||
 | 
					if $cygwin ; then
 | 
				
			||||||
 | 
					    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
 | 
				
			||||||
 | 
					    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
 | 
				
			||||||
 | 
					    JAVACMD=`cygpath --unix "$JAVACMD"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # We build the pattern for arguments to be converted via cygpath
 | 
				
			||||||
 | 
					    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
 | 
				
			||||||
 | 
					    SEP=""
 | 
				
			||||||
 | 
					    for dir in $ROOTDIRSRAW ; do
 | 
				
			||||||
 | 
					        ROOTDIRS="$ROOTDIRS$SEP$dir"
 | 
				
			||||||
 | 
					        SEP="|"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    OURCYGPATTERN="(^($ROOTDIRS))"
 | 
				
			||||||
 | 
					    # Add a user-defined pattern to the cygpath arguments
 | 
				
			||||||
 | 
					    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
 | 
				
			||||||
 | 
					        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    # Now convert the arguments - kludge to limit ourselves to /bin/sh
 | 
				
			||||||
 | 
					    i=0
 | 
				
			||||||
 | 
					    for arg in "$@" ; do
 | 
				
			||||||
 | 
					        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
 | 
				
			||||||
 | 
					        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
 | 
				
			||||||
 | 
					            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            eval `echo args$i`="\"$arg\""
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        i=$((i+1))
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    case $i in
 | 
				
			||||||
 | 
					        (0) set -- ;;
 | 
				
			||||||
 | 
					        (1) set -- "$args0" ;;
 | 
				
			||||||
 | 
					        (2) set -- "$args0" "$args1" ;;
 | 
				
			||||||
 | 
					        (3) set -- "$args0" "$args1" "$args2" ;;
 | 
				
			||||||
 | 
					        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
 | 
				
			||||||
 | 
					        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
 | 
				
			||||||
 | 
					        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
 | 
				
			||||||
 | 
					        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
 | 
				
			||||||
 | 
					        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
 | 
				
			||||||
 | 
					        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Escape application args
 | 
				
			||||||
 | 
					save () {
 | 
				
			||||||
 | 
					    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
 | 
				
			||||||
 | 
					    echo " "
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					APP_ARGS=$(save "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Collect all arguments for the java command, following the shell quoting and substitution rules
 | 
				
			||||||
 | 
					eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
 | 
				
			||||||
 | 
					if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
 | 
				
			||||||
 | 
					  cd "$(dirname "$0")"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exec "$JAVACMD" "$@"
 | 
				
			||||||
							
								
								
									
										84
									
								
								gradlew.bat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					@if "%DEBUG%" == "" @echo off
 | 
				
			||||||
 | 
					@rem ##########################################################################
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem  Gradle startup script for Windows
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem ##########################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@rem Set local scope for the variables with windows NT shell
 | 
				
			||||||
 | 
					if "%OS%"=="Windows_NT" setlocal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set DIRNAME=%~dp0
 | 
				
			||||||
 | 
					if "%DIRNAME%" == "" set DIRNAME=.
 | 
				
			||||||
 | 
					set APP_BASE_NAME=%~n0
 | 
				
			||||||
 | 
					set APP_HOME=%DIRNAME%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
				
			||||||
 | 
					set DEFAULT_JVM_OPTS=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@rem Find java.exe
 | 
				
			||||||
 | 
					if defined JAVA_HOME goto findJavaFromJavaHome
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set JAVA_EXE=java.exe
 | 
				
			||||||
 | 
					%JAVA_EXE% -version >NUL 2>&1
 | 
				
			||||||
 | 
					if "%ERRORLEVEL%" == "0" goto init
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					echo Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					echo location of your Java installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					goto fail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:findJavaFromJavaHome
 | 
				
			||||||
 | 
					set JAVA_HOME=%JAVA_HOME:"=%
 | 
				
			||||||
 | 
					set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if exist "%JAVA_EXE%" goto init
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					echo Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					echo location of your Java installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					goto fail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:init
 | 
				
			||||||
 | 
					@rem Get command-line arguments, handling Windows variants
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if not "%OS%" == "Windows_NT" goto win9xME_args
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:win9xME_args
 | 
				
			||||||
 | 
					@rem Slurp the command line arguments.
 | 
				
			||||||
 | 
					set CMD_LINE_ARGS=
 | 
				
			||||||
 | 
					set _SKIP=2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:win9xME_args_slurp
 | 
				
			||||||
 | 
					if "x%~1" == "x" goto execute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set CMD_LINE_ARGS=%*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:execute
 | 
				
			||||||
 | 
					@rem Setup the command line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@rem Execute Gradle
 | 
				
			||||||
 | 
					"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:end
 | 
				
			||||||
 | 
					@rem End local scope for the variables with windows NT shell
 | 
				
			||||||
 | 
					if "%ERRORLEVEL%"=="0" goto mainEnd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:fail
 | 
				
			||||||
 | 
					rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 | 
				
			||||||
 | 
					rem the _cmd.exe /c_ return code!
 | 
				
			||||||
 | 
					if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
 | 
				
			||||||
 | 
					exit /b 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:mainEnd
 | 
				
			||||||
 | 
					if "%OS%"=="Windows_NT" endlocal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:omega
 | 
				
			||||||
							
								
								
									
										2
									
								
								settings.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					include ':app'
 | 
				
			||||||
 | 
					rootProject.name='Tarot ENS'
 | 
				
			||||||