package gui.menu; import game.Player; import gui.SudokuSelector; import imgui.ImGui; import network.client.Client; import network.server.Server; import sudoku.structure.MultiDoku; public class MultiPlayerView extends BaseView { private final Client client; private final Server server; private final SudokuSelector selector; private MultiDoku doku = null; public MultiPlayerView(StateMachine stateMachine, Client client, Server server) { super(stateMachine); this.client = client; this.server = server; this.selector = new SudokuSelector(false, "Sélectionner le sudoku"); this.selector.onSelect.connect(this::onSelected); this.client.onDisconnect.connect(this::onDisconnect); this.client.onGameStarted .connect(() -> this.stateMachine.pushState(new MultiPlayerDokuView(stateMachine, client, server))); } @Override public void closeMenu() { this.client.forceDisconnect(); super.closeMenu(); } public void onDisconnect() { this.stateMachine.popState(); } private void onSelected(MultiDoku doku) { this.doku = doku; } public void renderGameStatus() { if (this.server == null) { ImGui.text("En attente de l'administrateur du serveur ..."); } else { if (this.doku == null) ImGui.beginDisabled(); if (ImGui.button("Démarrer")) { this.server.startGame(this.doku); } if (this.doku == null) ImGui.endDisabled(); selector.render(); } } @Override public void render() { ImGui.text("Joueurs :"); { for (Player player : this.client.getGame().getPlayers().values()) { ImGui.bulletText(player.getPseudo()); } } renderGameStatus(); } }