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'
 | 
			
		||||