mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 02:44:50 +00:00
Werkt nog niet
This commit is contained in:
@@ -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.player.Player;
|
||||
import org.toop.framework.gameFramework.view.GUIEvents;
|
||||
import org.toop.framework.utils.ImmutablePair;
|
||||
|
||||
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 {
|
||||
private Consumer<Integer> onPlayerMove;
|
||||
private Consumer<ImmutablePair<String, Integer>> onPlayerMove;
|
||||
/**
|
||||
* Creates a new base behaviour for the specified game.
|
||||
*
|
||||
* @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);
|
||||
}
|
||||
|
||||
private void notifyPlayerMove(int player) {
|
||||
onPlayerMove.accept(player);
|
||||
private void notifyPlayerMove(ImmutablePair<String, Integer> pair) {
|
||||
onPlayerMove.accept(pair);
|
||||
}
|
||||
|
||||
/** Starts the game loop in a new thread. */
|
||||
@@ -47,14 +51,14 @@ public class ServerThreadBehaviour extends AbstractThreadBehaviour implements Ru
|
||||
PlayResult result = game.play(move);
|
||||
|
||||
GameState state = result.state();
|
||||
|
||||
if (state != TURN_SKIPPED){
|
||||
notifyPlayerMove(new ImmutablePair<>(currentPlayer.getName(), Long.numberOfTrailingZeros(move)));
|
||||
}
|
||||
|
||||
switch (state) {
|
||||
case WIN, DRAW -> {
|
||||
isRunning.set(false);
|
||||
new EventFlow().addPostEvent(
|
||||
GUIEvents.GameEnded.class,
|
||||
state == GameState.WIN,
|
||||
result.player()
|
||||
).postEvent();
|
||||
}
|
||||
case NORMAL, TURN_SKIPPED -> { /* continue normally */ }
|
||||
default -> {
|
||||
|
||||
@@ -12,10 +12,15 @@ public class Game implements OnlineGame<TurnBasedGame> {
|
||||
|
||||
public Game(TurnBasedGame game, User... users) {
|
||||
this.game = game;
|
||||
this.gameThread = new ServerThreadBehaviour(game, null);
|
||||
this.gameThread = new ServerThreadBehaviour(game, (pair) -> notifyMoveMade(pair.getLeft(), pair.getRight()));
|
||||
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
|
||||
public long id() {
|
||||
return id;
|
||||
|
||||
@@ -121,7 +121,7 @@ public class ServerHandler extends SimpleChannelInboundHandler<String> {
|
||||
if(hasArgs(p.args())) return;
|
||||
|
||||
// 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) {
|
||||
|
||||
Reference in New Issue
Block a user