Statistiques personnelles (points)
This commit is contained in:
		@@ -15,7 +15,11 @@ import java.io.IOException;
 | 
			
		||||
import java.io.InputStreamReader;
 | 
			
		||||
import java.net.HttpURLConnection;
 | 
			
		||||
import java.net.URL;
 | 
			
		||||
import java.text.DateFormat;
 | 
			
		||||
import java.text.ParseException;
 | 
			
		||||
import java.text.SimpleDateFormat;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
@@ -25,20 +29,25 @@ public class Game {
 | 
			
		||||
	private static final Gson GSON;
 | 
			
		||||
	private static final SparseArray<Game> GAMES = new SparseArray<>();
 | 
			
		||||
 | 
			
		||||
	public int id;
 | 
			
		||||
	public GameType gameType;
 | 
			
		||||
	public List<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 List<Boolean> miseries;
 | 
			
		||||
	public boolean littleForAttacker, littleForDefenser;
 | 
			
		||||
	public boolean chelemAnnounced, chelemRealized;
 | 
			
		||||
	public List<Integer> points;
 | 
			
		||||
	private int id;
 | 
			
		||||
	private Date date;
 | 
			
		||||
	private GameType gameType;
 | 
			
		||||
	private Player player1, player2, player3, player4, player5, player6;
 | 
			
		||||
	private List<Player> players;
 | 
			
		||||
	private int nb_players;
 | 
			
		||||
	private Bet bet;
 | 
			
		||||
	private Player attacker;
 | 
			
		||||
	private Player follower;
 | 
			
		||||
	private int attackScore;
 | 
			
		||||
//	private boolean little, twenty_one, excuse;
 | 
			
		||||
	private int ends;
 | 
			
		||||
	private int handle;
 | 
			
		||||
	private boolean misery1, misery2, misery3, misery4, misery5, misery6;
 | 
			
		||||
	private List<Boolean> miseries;
 | 
			
		||||
	private boolean littleForAttacker, littleForDefender;
 | 
			
		||||
	private boolean chelemAnnounced, chelemRealized;
 | 
			
		||||
	private int score1, score2, score3, score4, score5, score6;
 | 
			
		||||
	private List<Integer> points;
 | 
			
		||||
 | 
			
		||||
	static {
 | 
			
		||||
		GSON = new GsonBuilder().registerTypeAdapter(Player.class, new TypeAdapter<Player>() {
 | 
			
		||||
@@ -57,7 +66,12 @@ public class Game {
 | 
			
		||||
					return null;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				return Player.getPlayerById(in.nextInt());
 | 
			
		||||
				int id = in.nextInt();
 | 
			
		||||
 | 
			
		||||
				if (id == 0)
 | 
			
		||||
					return null;
 | 
			
		||||
 | 
			
		||||
				return Player.getPlayerById(id);
 | 
			
		||||
			}
 | 
			
		||||
		}).registerTypeAdapter(Game.GameType.class, new TypeAdapter<Game.GameType>() {
 | 
			
		||||
			@Override
 | 
			
		||||
@@ -77,6 +91,26 @@ public class Game {
 | 
			
		||||
 | 
			
		||||
				return Game.GameType.values()[3 + in.nextInt()];
 | 
			
		||||
			}
 | 
			
		||||
		}).registerTypeAdapter(Date.class, new TypeAdapter<Date>() {
 | 
			
		||||
			final DateFormat FORMAT = new SimpleDateFormat("yyyy-mm-dd HH:MM:ss");
 | 
			
		||||
 | 
			
		||||
			@Override
 | 
			
		||||
			public void write(JsonWriter out, Date value) throws IOException {
 | 
			
		||||
				if (value == null)
 | 
			
		||||
					out.nullValue();
 | 
			
		||||
				else
 | 
			
		||||
					out.value(FORMAT.format(value));
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			@Override
 | 
			
		||||
			public Date read(JsonReader in) throws IOException {
 | 
			
		||||
				try {
 | 
			
		||||
					return FORMAT.parse(in.nextString());
 | 
			
		||||
				} catch (ParseException e) {
 | 
			
		||||
					e.printStackTrace();
 | 
			
		||||
					return null;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}).create();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -84,58 +118,122 @@ public class Game {
 | 
			
		||||
		return id;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Date getDate() {
 | 
			
		||||
		return date;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public GameType getGameType() {
 | 
			
		||||
		return gameType;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setGameType(GameType gameType) {
 | 
			
		||||
		this.gameType = gameType;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public List<Player> getPlayers() {
 | 
			
		||||
		return players;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setPlayers(List<Player> players) {
 | 
			
		||||
		this.players = players;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Bet getBet() {
 | 
			
		||||
		return bet;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setBet(Bet bet) {
 | 
			
		||||
		this.bet = bet;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Player getAttacker() {
 | 
			
		||||
		return attacker;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setAttacker(Player attacker) {
 | 
			
		||||
		this.attacker = attacker;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Player getFollower() {
 | 
			
		||||
		return follower;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setFollower(Player follower) {
 | 
			
		||||
		this.follower = follower;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getAttackScore() {
 | 
			
		||||
		return attackScore;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setAttackScore(int attackScore) {
 | 
			
		||||
		this.attackScore = attackScore;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getEnds() {
 | 
			
		||||
		return ends;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setEnds(int ends) {
 | 
			
		||||
		this.ends = ends;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getHandle() {
 | 
			
		||||
		return handle;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setHandle(int handle) {
 | 
			
		||||
		this.handle = handle;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public List<Boolean> getMiseries() {
 | 
			
		||||
		return miseries;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setMiseries(List<Boolean> miseries) {
 | 
			
		||||
		this.miseries = miseries;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean isLittleForAttacker() {
 | 
			
		||||
		return littleForAttacker;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean isLittleForDefenser() {
 | 
			
		||||
		return littleForDefenser;
 | 
			
		||||
	public void setLittleForAttacker(boolean littleForAttacker) {
 | 
			
		||||
		this.littleForAttacker = littleForAttacker;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean isLittleForDefender() {
 | 
			
		||||
		return littleForDefender;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setLittleForDefender(boolean littleForDefender) {
 | 
			
		||||
		this.littleForDefender = littleForDefender;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean isChelemAnnounced() {
 | 
			
		||||
		return chelemAnnounced;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setChelemAnnounced(boolean chelemAnnounced) {
 | 
			
		||||
		this.chelemAnnounced = chelemAnnounced;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean isChelemRealized() {
 | 
			
		||||
		return chelemRealized;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setChelemRealized(boolean chelemRealized) {
 | 
			
		||||
		this.chelemRealized = chelemRealized;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getPoints(Player player) {
 | 
			
		||||
		return points.get(players.indexOf(player));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getPoints(int i) {
 | 
			
		||||
		return points.get(i);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void calculateScores() {
 | 
			
		||||
	//	int ends = (little ? 1 : 0) + (twenty_one ? 1 : 0) + (excuse ? 1 : 0);
 | 
			
		||||
		int bound = ends == 0 ? 56 : ends == 1 ? 51 : ends == 2 ? 41 : 36;
 | 
			
		||||
@@ -154,7 +252,7 @@ public class Game {
 | 
			
		||||
 | 
			
		||||
		if (littleForAttacker)
 | 
			
		||||
			score += 10;
 | 
			
		||||
		else if (littleForDefenser)
 | 
			
		||||
		else if (littleForDefender)
 | 
			
		||||
			score -= 10;
 | 
			
		||||
 | 
			
		||||
		if (chelemAnnounced) {
 | 
			
		||||
@@ -187,7 +285,6 @@ public class Game {
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		for (int i = 0; i < getGameType().getNbPlayers(); ++i) {
 | 
			
		||||
			System.err.println(getMiseries());
 | 
			
		||||
			if (getMiseries().get(i)) {
 | 
			
		||||
				//noinspection ConstantConditions
 | 
			
		||||
				scores.put(players.get(i), scores.get(players.get(i)) + 10 * (getGameType().getNbPlayers() - 1));
 | 
			
		||||
@@ -278,6 +375,47 @@ public class Game {
 | 
			
		||||
					GAMES.clear();
 | 
			
		||||
					for (Game g : games) {
 | 
			
		||||
						GAMES.put(g.getId(), g);
 | 
			
		||||
 | 
			
		||||
						g.setGameType(GameType.values()[g.nb_players - 3]);
 | 
			
		||||
 | 
			
		||||
						g.players = new ArrayList<>();
 | 
			
		||||
						g.getPlayers().add(g.player1);
 | 
			
		||||
						g.getPlayers().add(g.player2);
 | 
			
		||||
						g.getPlayers().add(g.player3);
 | 
			
		||||
						if (g.player4 != null)
 | 
			
		||||
							g.getPlayers().add(g.player4);
 | 
			
		||||
						if (g.player5 != null)
 | 
			
		||||
							g.getPlayers().add(g.player5);
 | 
			
		||||
						if (g.player6 != null)
 | 
			
		||||
							g.getPlayers().add(g.player6);
 | 
			
		||||
 | 
			
		||||
						g.miseries = new ArrayList<>();
 | 
			
		||||
						g.getMiseries().add(g.misery1);
 | 
			
		||||
						g.getMiseries().add(g.misery2);
 | 
			
		||||
						g.getMiseries().add(g.misery3);
 | 
			
		||||
						if (g.player4 != null)
 | 
			
		||||
							g.getMiseries().add(g.misery4);
 | 
			
		||||
						if (g.player5 != null)
 | 
			
		||||
							g.getMiseries().add(g.misery5);
 | 
			
		||||
						if (g.player6 != null)
 | 
			
		||||
							g.getMiseries().add(g.misery6);
 | 
			
		||||
 | 
			
		||||
						g.points = new ArrayList<>();
 | 
			
		||||
						g.points.add(g.score1);
 | 
			
		||||
						g.points.add(g.score2);
 | 
			
		||||
						g.points.add(g.score3);
 | 
			
		||||
						if (g.player4 != null)
 | 
			
		||||
							g.points.add(g.score4);
 | 
			
		||||
						if (g.player5 != null)
 | 
			
		||||
							g.points.add(g.score5);
 | 
			
		||||
						if (g.player6 != null)
 | 
			
		||||
							g.points.add(g.score6);
 | 
			
		||||
 | 
			
		||||
						System.out.println(g.toJson());
 | 
			
		||||
 | 
			
		||||
						for (Player p : g.getPlayers()) {
 | 
			
		||||
							p.addScore(g.getGameType(), g.getPoints(p));
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				catch (IOException ex) {
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,6 @@ public class MainActivity extends AppCompatActivity {
 | 
			
		||||
        INSTANCE = this;
 | 
			
		||||
 | 
			
		||||
        Player.updatePlayers();
 | 
			
		||||
        Game.updateGames();
 | 
			
		||||
 | 
			
		||||
        setContentView(R.layout.activity_main);
 | 
			
		||||
        Toolbar toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
@@ -38,7 +37,7 @@ public class MainActivity extends AppCompatActivity {
 | 
			
		||||
        // 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)
 | 
			
		||||
                R.id.nav_new_game, R.id.nav_personal_stats)
 | 
			
		||||
                .setDrawerLayout(drawer)
 | 
			
		||||
                .build();
 | 
			
		||||
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
 | 
			
		||||
 
 | 
			
		||||
@@ -9,8 +9,6 @@ import androidx.annotation.NonNull;
 | 
			
		||||
import com.google.gson.Gson;
 | 
			
		||||
import com.google.gson.reflect.TypeToken;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.io.IOUtils;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.InputStreamReader;
 | 
			
		||||
import java.net.HttpURLConnection;
 | 
			
		||||
@@ -41,20 +39,40 @@ public class Player {
 | 
			
		||||
		return name;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getScore3() {
 | 
			
		||||
		return score3;
 | 
			
		||||
	public int getScore(Game.GameType type) {
 | 
			
		||||
		switch (type) {
 | 
			
		||||
			case THREE_PLAYERS:
 | 
			
		||||
				return score3;
 | 
			
		||||
			case FOUR_PLAYERS:
 | 
			
		||||
				return score4;
 | 
			
		||||
			case FIVE_PLAYERS:
 | 
			
		||||
				return score5;
 | 
			
		||||
			case SIX_PLAYERS:
 | 
			
		||||
				return score6;
 | 
			
		||||
			default:
 | 
			
		||||
				return 0;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getScore4() {
 | 
			
		||||
		return score4;
 | 
			
		||||
	public void setScore(Game.GameType type, int score) {
 | 
			
		||||
		switch (type) {
 | 
			
		||||
			case THREE_PLAYERS:
 | 
			
		||||
				score3 = score;
 | 
			
		||||
				break;
 | 
			
		||||
			case FOUR_PLAYERS:
 | 
			
		||||
				score4 = score;
 | 
			
		||||
				break;
 | 
			
		||||
			case FIVE_PLAYERS:
 | 
			
		||||
				score5 = score;
 | 
			
		||||
				break;
 | 
			
		||||
			case SIX_PLAYERS:
 | 
			
		||||
				score6 = score;
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getScore5() {
 | 
			
		||||
		return score5;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getScore6() {
 | 
			
		||||
		return score6;
 | 
			
		||||
	public void addScore(Game.GameType type, int score) {
 | 
			
		||||
		setScore(type, getScore(type) + score);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -62,7 +80,8 @@ public class Player {
 | 
			
		||||
        return obj instanceof Player && ((Player) obj).getId() == getId();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void updatePlayers() {
 | 
			
		||||
	public static void updatePlayers() {
 | 
			
		||||
		System.err.println(getAllPlayers());
 | 
			
		||||
		Executors.newSingleThreadExecutor().execute(new Runnable() {
 | 
			
		||||
			@Override
 | 
			
		||||
			public void run() {
 | 
			
		||||
@@ -87,13 +106,15 @@ public class Player {
 | 
			
		||||
							Toast.makeText(MainActivity.INSTANCE, "Bienvenue " + THIS_PLAYER.getName() + " !", Toast.LENGTH_SHORT).show();
 | 
			
		||||
						}
 | 
			
		||||
					});
 | 
			
		||||
 | 
			
		||||
					Game.updateGames();
 | 
			
		||||
				}
 | 
			
		||||
				catch (IOException ex) {
 | 
			
		||||
					ex.printStackTrace();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
    }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public static Collection<Player> getAllPlayers() {
 | 
			
		||||
    	return PLAYERS.values();
 | 
			
		||||
 
 | 
			
		||||
@@ -83,7 +83,6 @@ public class HomeFragment extends Fragment {
 | 
			
		||||
											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();
 | 
			
		||||
										}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,4 @@ package fr.ynerant.tarot.ui.home;
 | 
			
		||||
import androidx.lifecycle.ViewModel;
 | 
			
		||||
 | 
			
		||||
public class HomeViewModel extends ViewModel {
 | 
			
		||||
 | 
			
		||||
    public HomeViewModel() {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -132,29 +132,29 @@ public class NewGameFragment extends Fragment {
 | 
			
		||||
				Game game = getGame();
 | 
			
		||||
 | 
			
		||||
				for (int i = 0; i < game.getGameType().getNbPlayers(); ++i) {
 | 
			
		||||
					points[i].setText(String.valueOf(game.points.get(i)));
 | 
			
		||||
					points[i].setText(String.valueOf(game.getPoints(i)));
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			public Game getGame() {
 | 
			
		||||
			Game getGame() {
 | 
			
		||||
				Game game = new Game();
 | 
			
		||||
				game.gameType = Game.GameType.getGameType(nb_players.getProgress() + 3);
 | 
			
		||||
				game.attacker = (Player) attacker.getSelectedItem();
 | 
			
		||||
				game.setGameType(Game.GameType.getGameType(nb_players.getProgress() + 3));
 | 
			
		||||
				game.setAttacker((Player) attacker.getSelectedItem());
 | 
			
		||||
				if (game.getGameType().getNbPlayers() >= 5)
 | 
			
		||||
					game.follower = (Player) follower.getSelectedItem();
 | 
			
		||||
				game.attackScore = attack_points.getProgress();
 | 
			
		||||
				game.players = players;
 | 
			
		||||
				game.bet = Game.Bet.values()[bet.getProgress()];
 | 
			
		||||
				game.ends = nb_ends.getProgress();
 | 
			
		||||
				game.handle = handle.getProgress();
 | 
			
		||||
				game.chelemAnnounced = chelem_announced.isChecked();
 | 
			
		||||
				game.chelemRealized = chelem_realized.isChecked();
 | 
			
		||||
				game.littleForAttacker = little_end.getProgress() == 1;
 | 
			
		||||
				game.littleForDefenser = little_end.getProgress() == 2;
 | 
			
		||||
					game.setFollower((Player) follower.getSelectedItem());
 | 
			
		||||
				game.setAttackScore(attack_points.getProgress());
 | 
			
		||||
				game.setPlayers(players);
 | 
			
		||||
				game.setBet(Game.Bet.values()[bet.getProgress()]);
 | 
			
		||||
				game.setEnds(nb_ends.getProgress());
 | 
			
		||||
				game.setHandle(handle.getProgress());
 | 
			
		||||
				game.setChelemAnnounced(chelem_announced.isChecked());
 | 
			
		||||
				game.setChelemRealized(chelem_realized.isChecked());
 | 
			
		||||
				game.setLittleForAttacker(little_end.getProgress() == 1);
 | 
			
		||||
				game.setLittleForDefender(little_end.getProgress() == 2);
 | 
			
		||||
				List<Boolean> miseriesList = new ArrayList<>();
 | 
			
		||||
				for (int i = 0; i < game.getGameType().getNbPlayers(); ++i)
 | 
			
		||||
					miseriesList.add(miseries[i].isChecked());
 | 
			
		||||
				game.miseries = miseriesList;
 | 
			
		||||
				game.setMiseries(miseriesList);
 | 
			
		||||
				game.calculateScores();
 | 
			
		||||
 | 
			
		||||
				return game;
 | 
			
		||||
@@ -490,9 +490,10 @@ public class NewGameFragment extends Fragment {
 | 
			
		||||
							co.setRequestProperty("token", PreferenceManager.getDefaultSharedPreferences(MainActivity.INSTANCE).getString("token", null));
 | 
			
		||||
							co.setRequestProperty("json", g.toJson());
 | 
			
		||||
							co.connect();
 | 
			
		||||
							System.out.println(g.toJson());
 | 
			
		||||
							System.err.println(IOUtils.readLines(co.getInputStream()));
 | 
			
		||||
							co.getResponseCode();
 | 
			
		||||
							co.disconnect();
 | 
			
		||||
 | 
			
		||||
							Game.updateGames();
 | 
			
		||||
						} catch (IOException ex) {
 | 
			
		||||
							ex.printStackTrace();
 | 
			
		||||
						}
 | 
			
		||||
@@ -501,25 +502,25 @@ public class NewGameFragment extends Fragment {
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			public Game getGame() {
 | 
			
		||||
			Game getGame() {
 | 
			
		||||
				Game game = new Game();
 | 
			
		||||
				game.gameType = Game.GameType.getGameType(nb_players.getProgress() + 3);
 | 
			
		||||
				game.attacker = (Player) attacker.getSelectedItem();
 | 
			
		||||
				game.setGameType(Game.GameType.getGameType(nb_players.getProgress() + 3));
 | 
			
		||||
				game.setAttacker((Player) attacker.getSelectedItem());
 | 
			
		||||
				if (game.getGameType().getNbPlayers() >= 5)
 | 
			
		||||
					game.follower = (Player) follower.getSelectedItem();
 | 
			
		||||
				game.attackScore = attack_points.getProgress();
 | 
			
		||||
				game.players = players;
 | 
			
		||||
				game.bet = Game.Bet.values()[bet.getProgress()];
 | 
			
		||||
				game.ends = nb_ends.getProgress();
 | 
			
		||||
				game.handle = handle.getProgress();
 | 
			
		||||
				game.chelemAnnounced = chelem_announced.isChecked();
 | 
			
		||||
				game.chelemRealized = chelem_realized.isChecked();
 | 
			
		||||
				game.littleForAttacker = little_end.getProgress() == 1;
 | 
			
		||||
				game.littleForDefenser = little_end.getProgress() == 2;
 | 
			
		||||
					game.setFollower((Player) follower.getSelectedItem());
 | 
			
		||||
				game.setAttackScore(attack_points.getProgress());
 | 
			
		||||
				game.setPlayers(players);
 | 
			
		||||
				game.setBet(Game.Bet.values()[bet.getProgress()]);
 | 
			
		||||
				game.setEnds(nb_ends.getProgress());
 | 
			
		||||
				game.setHandle(handle.getProgress());
 | 
			
		||||
				game.setChelemAnnounced(chelem_announced.isChecked());
 | 
			
		||||
				game.setChelemRealized(chelem_realized.isChecked());
 | 
			
		||||
				game.setLittleForAttacker(little_end.getProgress() == 1);
 | 
			
		||||
				game.setLittleForDefender(little_end.getProgress() == 2);
 | 
			
		||||
				List<Boolean> miseriesList = new ArrayList<>();
 | 
			
		||||
				for (int i = 0; i < game.getGameType().getNbPlayers(); ++i)
 | 
			
		||||
					miseriesList.add(miseries[i].isChecked());
 | 
			
		||||
				game.miseries = miseriesList;
 | 
			
		||||
				game.setMiseries(miseriesList);
 | 
			
		||||
				game.calculateScores();
 | 
			
		||||
 | 
			
		||||
				return game;
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,4 @@ package fr.ynerant.tarot.ui.newgame;
 | 
			
		||||
import androidx.lifecycle.ViewModel;
 | 
			
		||||
 | 
			
		||||
public class NewGameViewModel extends ViewModel {
 | 
			
		||||
 | 
			
		||||
    public NewGameViewModel() {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,70 @@
 | 
			
		||||
package fr.ynerant.tarot.ui.stats;
 | 
			
		||||
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.preference.PreferenceManager;
 | 
			
		||||
import android.view.LayoutInflater;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
import android.view.ViewGroup;
 | 
			
		||||
import android.widget.AdapterView;
 | 
			
		||||
import android.widget.ArrayAdapter;
 | 
			
		||||
import android.widget.Button;
 | 
			
		||||
import android.widget.CompoundButton;
 | 
			
		||||
import android.widget.LinearLayout;
 | 
			
		||||
import android.widget.ListAdapter;
 | 
			
		||||
import android.widget.ListView;
 | 
			
		||||
import android.widget.SeekBar;
 | 
			
		||||
import android.widget.Spinner;
 | 
			
		||||
import android.widget.Switch;
 | 
			
		||||
import android.widget.TextView;
 | 
			
		||||
import android.widget.Toast;
 | 
			
		||||
import android.widget.ToggleButton;
 | 
			
		||||
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
import androidx.fragment.app.Fragment;
 | 
			
		||||
import androidx.lifecycle.ViewModelProviders;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.net.HttpURLConnection;
 | 
			
		||||
import java.net.URL;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
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.home.HomeFragment;
 | 
			
		||||
 | 
			
		||||
public class PersonalStatsFragment extends Fragment {
 | 
			
		||||
 | 
			
		||||
	private PersonalStatsModel personalStatsModel;
 | 
			
		||||
 | 
			
		||||
	public View onCreateView(@NonNull LayoutInflater inflater,
 | 
			
		||||
							 ViewGroup container, final Bundle savedInstanceState) {
 | 
			
		||||
		personalStatsModel =
 | 
			
		||||
				ViewModelProviders.of(this).get(PersonalStatsModel.class);
 | 
			
		||||
		final View root = inflater.inflate(R.layout.fragment_personal_stats, 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;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		//noinspection ConstantConditions
 | 
			
		||||
		Player player = Player.getPlayerById(getArguments().getInt("playerId"));
 | 
			
		||||
 | 
			
		||||
		TextView points3 = root.findViewById(R.id.points3);
 | 
			
		||||
		TextView points4 = root.findViewById(R.id.points4);
 | 
			
		||||
		TextView points5 = root.findViewById(R.id.points5);
 | 
			
		||||
		TextView points6 = root.findViewById(R.id.points6);
 | 
			
		||||
 | 
			
		||||
		points3.setText(String.valueOf(player.getScore(Game.GameType.THREE_PLAYERS)));
 | 
			
		||||
		points4.setText(String.valueOf(player.getScore(Game.GameType.FOUR_PLAYERS)));
 | 
			
		||||
		points5.setText(String.valueOf(player.getScore(Game.GameType.FIVE_PLAYERS)));
 | 
			
		||||
		points6.setText(String.valueOf(player.getScore(Game.GameType.SIX_PLAYERS)));
 | 
			
		||||
 | 
			
		||||
		return root;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,76 @@
 | 
			
		||||
package fr.ynerant.tarot.ui.stats;
 | 
			
		||||
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.preference.PreferenceManager;
 | 
			
		||||
import android.view.LayoutInflater;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
import android.view.ViewGroup;
 | 
			
		||||
import android.widget.AdapterView;
 | 
			
		||||
import android.widget.ArrayAdapter;
 | 
			
		||||
import android.widget.Button;
 | 
			
		||||
import android.widget.CompoundButton;
 | 
			
		||||
import android.widget.LinearLayout;
 | 
			
		||||
import android.widget.ListAdapter;
 | 
			
		||||
import android.widget.ListView;
 | 
			
		||||
import android.widget.SeekBar;
 | 
			
		||||
import android.widget.Spinner;
 | 
			
		||||
import android.widget.Switch;
 | 
			
		||||
import android.widget.TextView;
 | 
			
		||||
import android.widget.Toast;
 | 
			
		||||
import android.widget.ToggleButton;
 | 
			
		||||
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
import androidx.fragment.app.Fragment;
 | 
			
		||||
import androidx.lifecycle.ViewModelProviders;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.net.HttpURLConnection;
 | 
			
		||||
import java.net.URL;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
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.home.HomeFragment;
 | 
			
		||||
 | 
			
		||||
public class PersonalStatsMenuFragment extends Fragment {
 | 
			
		||||
 | 
			
		||||
	private PersonalStatsMenuModel personalStatsMenuModel;
 | 
			
		||||
 | 
			
		||||
	public View onCreateView(@NonNull LayoutInflater inflater,
 | 
			
		||||
							 ViewGroup container, final Bundle savedInstanceState) {
 | 
			
		||||
		personalStatsMenuModel =
 | 
			
		||||
				ViewModelProviders.of(this).get(PersonalStatsMenuModel.class);
 | 
			
		||||
		final View root = inflater.inflate(R.layout.fragment_personal_stats_menu, 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;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ListView players = root.findViewById(R.id.players_stats);
 | 
			
		||||
		//noinspection ConstantConditions
 | 
			
		||||
		final ListAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_expandable_list_item_1, new ArrayList<>(Player.getAllPlayers()));
 | 
			
		||||
		players.setAdapter(adapter);
 | 
			
		||||
 | 
			
		||||
		players.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 | 
			
		||||
				Player player = (Player) adapter.getItem(position);
 | 
			
		||||
				PersonalStatsFragment fragment = new PersonalStatsFragment();
 | 
			
		||||
				Bundle bundle = new Bundle();
 | 
			
		||||
				bundle.putInt("playerId", player.getId());
 | 
			
		||||
				fragment.setArguments(bundle);
 | 
			
		||||
				//noinspection ConstantConditions
 | 
			
		||||
				getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, fragment, "Statistiques individuelles de " + player.getName())
 | 
			
		||||
						.addToBackStack("Statistiques individuelles").commit();
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		return root;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,6 @@
 | 
			
		||||
package fr.ynerant.tarot.ui.stats;
 | 
			
		||||
 | 
			
		||||
import androidx.lifecycle.ViewModel;
 | 
			
		||||
 | 
			
		||||
public class PersonalStatsMenuModel extends ViewModel {
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,6 @@
 | 
			
		||||
package fr.ynerant.tarot.ui.stats;
 | 
			
		||||
 | 
			
		||||
import androidx.lifecycle.ViewModel;
 | 
			
		||||
 | 
			
		||||
public class PersonalStatsModel extends ViewModel {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										69
									
								
								app/src/main/res/layout/fragment_personal_stats.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								app/src/main/res/layout/fragment_personal_stats.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
<?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">
 | 
			
		||||
 | 
			
		||||
    <TableLayout
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="wrap_content">
 | 
			
		||||
 | 
			
		||||
        <TableRow>
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:textSize="24sp"
 | 
			
		||||
                android:text="Points à 3 joueurs :"/>
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/points3"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:textSize="24sp"
 | 
			
		||||
                android:textAlignment="textEnd"/>
 | 
			
		||||
        </TableRow>
 | 
			
		||||
 | 
			
		||||
        <TableRow>
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:textSize="24sp"
 | 
			
		||||
                android:text="Points à 4 joueurs :" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/points4"
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:textSize="24sp"
 | 
			
		||||
                android:layout_height="wrap_content" />
 | 
			
		||||
        </TableRow>
 | 
			
		||||
 | 
			
		||||
        <TableRow>
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:textSize="24sp"
 | 
			
		||||
                android:text="Points à 5 joueurs :" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/points5"
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:textSize="24sp"
 | 
			
		||||
                android:layout_height="wrap_content" />
 | 
			
		||||
        </TableRow>
 | 
			
		||||
 | 
			
		||||
        <TableRow>
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:textSize="24sp"
 | 
			
		||||
                android:text="Points à 6 joueurs :" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/points6"
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:textSize="24sp"
 | 
			
		||||
                android:layout_height="wrap_content" />
 | 
			
		||||
        </TableRow>
 | 
			
		||||
 | 
			
		||||
    </TableLayout>
 | 
			
		||||
</LinearLayout>
 | 
			
		||||
							
								
								
									
										12
									
								
								app/src/main/res/layout/fragment_personal_stats_menu.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								app/src/main/res/layout/fragment_personal_stats_menu.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
<?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">
 | 
			
		||||
 | 
			
		||||
    <ListView
 | 
			
		||||
        android:id="@+id/players_stats"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="wrap_content" />
 | 
			
		||||
 | 
			
		||||
</LinearLayout>
 | 
			
		||||
@@ -4,15 +4,15 @@
 | 
			
		||||
	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" />
 | 
			
		||||
 | 
			
		||||
		<item
 | 
			
		||||
			android:id="@+id/nav_personal_stats"
 | 
			
		||||
			android:icon="@drawable/ic_launcher_foreground"
 | 
			
		||||
			android:title="@string/personal_stats" />
 | 
			
		||||
	</group>
 | 
			
		||||
 | 
			
		||||
</menu>
 | 
			
		||||
 
 | 
			
		||||
@@ -16,4 +16,10 @@
 | 
			
		||||
		android:name="fr.ynerant.tarot.ui.newgame.NewGameFragment"
 | 
			
		||||
		android:label="@string/menu_new_game"
 | 
			
		||||
		tools:layout="@layout/fragment_new_game" />
 | 
			
		||||
 | 
			
		||||
	<fragment
 | 
			
		||||
		android:id="@+id/nav_personal_stats"
 | 
			
		||||
		android:name="fr.ynerant.tarot.ui.stats.PersonalStatsMenuFragment"
 | 
			
		||||
		android:label="@string/personal_stats"
 | 
			
		||||
		tools:layout="@layout/fragment_personal_stats_menu" />
 | 
			
		||||
</navigation>
 | 
			
		||||
@@ -35,4 +35,5 @@
 | 
			
		||||
    <string name="players4">4 joueurs</string>
 | 
			
		||||
    <string name="players5">5 joueurs</string>
 | 
			
		||||
    <string name="players6">6 joueurs</string>
 | 
			
		||||
    <string name="personal_stats">Statistiques individuelles</string>
 | 
			
		||||
</resources>
 | 
			
		||||
@@ -35,4 +35,5 @@
 | 
			
		||||
    <string name="players4">4 joueurs</string>
 | 
			
		||||
    <string name="players5">5 joueurs</string>
 | 
			
		||||
    <string name="players6">6 joueurs</string>
 | 
			
		||||
    <string name="personal_stats">Statistiques individuelles</string>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user