Werkt nog niet

This commit is contained in:
2025-12-13 17:49:54 +01:00
parent 89a9cb1e55
commit c015100ebf
3 changed files with 20 additions and 11 deletions

View File

@@ -7,22 +7,26 @@ import org.toop.framework.gameFramework.model.game.TurnBasedGame;
import org.toop.framework.gameFramework.model.game.threadBehaviour.AbstractThreadBehaviour; import org.toop.framework.gameFramework.model.game.threadBehaviour.AbstractThreadBehaviour;
import org.toop.framework.gameFramework.model.player.Player; import org.toop.framework.gameFramework.model.player.Player;
import org.toop.framework.gameFramework.view.GUIEvents; import org.toop.framework.gameFramework.view.GUIEvents;
import org.toop.framework.utils.ImmutablePair;
import java.util.function.Consumer; import java.util.function.Consumer;
import static org.toop.framework.gameFramework.GameState.TURN_SKIPPED;
import static org.toop.framework.gameFramework.GameState.WIN;
public class ServerThreadBehaviour extends AbstractThreadBehaviour implements Runnable { public class ServerThreadBehaviour extends AbstractThreadBehaviour implements Runnable {
private Consumer<Integer> onPlayerMove; private Consumer<ImmutablePair<String, Integer>> onPlayerMove;
/** /**
* Creates a new base behaviour for the specified game. * Creates a new base behaviour for the specified game.
* *
* @param game the turn-based game to control * @param game the turn-based game to control
*/ */
public ServerThreadBehaviour(TurnBasedGame game, Consumer<Integer> onPlayerMove) { public ServerThreadBehaviour(TurnBasedGame game, Consumer<ImmutablePair<String, Integer>> onPlayerMove) {
super(game); super(game);
} }
private void notifyPlayerMove(int player) { private void notifyPlayerMove(ImmutablePair<String, Integer> pair) {
onPlayerMove.accept(player); onPlayerMove.accept(pair);
} }
/** Starts the game loop in a new thread. */ /** Starts the game loop in a new thread. */
@@ -47,14 +51,14 @@ public class ServerThreadBehaviour extends AbstractThreadBehaviour implements Ru
PlayResult result = game.play(move); PlayResult result = game.play(move);
GameState state = result.state(); GameState state = result.state();
if (state != TURN_SKIPPED){
notifyPlayerMove(new ImmutablePair<>(currentPlayer.getName(), Long.numberOfTrailingZeros(move)));
}
switch (state) { switch (state) {
case WIN, DRAW -> { case WIN, DRAW -> {
isRunning.set(false); isRunning.set(false);
new EventFlow().addPostEvent(
GUIEvents.GameEnded.class,
state == GameState.WIN,
result.player()
).postEvent();
} }
case NORMAL, TURN_SKIPPED -> { /* continue normally */ } case NORMAL, TURN_SKIPPED -> { /* continue normally */ }
default -> { default -> {

View File

@@ -12,10 +12,15 @@ public class Game implements OnlineGame<TurnBasedGame> {
public Game(TurnBasedGame game, User... users) { public Game(TurnBasedGame game, User... users) {
this.game = game; this.game = game;
this.gameThread = new ServerThreadBehaviour(game, null); this.gameThread = new ServerThreadBehaviour(game, (pair) -> notifyMoveMade(pair.getLeft(), pair.getRight()));
this.users = users; this.users = users;
} }
private void notifyMoveMade(String speler, int move){
users[0].sendMessage(String.format("SVR GAME MOVE {PLAYER: \"%s\", DETAILS: \"<reactie spel op zet>\", MOVE: \"%s\"}", speler, move));
users[1].sendMessage(String.format("SVR GAME MOVE {PLAYER: \"%s\", DETAILS: \"<reactie spel op zet>\", MOVE: \"%s\"}", speler, move));
}
@Override @Override
public long id() { public long id() {
return id; return id;

View File

@@ -121,7 +121,7 @@ public class ServerHandler extends SimpleChannelInboundHandler<String> {
if(hasArgs(p.args())) return; if(hasArgs(p.args())) return;
// TODO check if not number // TODO check if not number
user.serverPlayer().setMove(Integer.parseInt(p.args()[0])); user.serverPlayer().setMove(1L << Integer.parseInt(p.args()[0]));
} }
private ParsedMessage parse(String msg) { private ParsedMessage parse(String msg) {