mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 10:54:51 +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.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 -> {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user