4 Commits

Author SHA1 Message Date
6e6a383708 Collapsed interfaces in View section 2026-01-07 13:26:43 +01:00
b7dec7798b Collapsed interfaces in Controller section 2026-01-07 13:13:32 +01:00
2caa4fc79f Fixed runtime error I forgot to fix. 2026-01-07 12:42:54 +01:00
e72d888d84 Collapsed interfaces from model portion 2026-01-07 12:41:25 +01:00
22 changed files with 35 additions and 90 deletions

View File

@@ -19,7 +19,7 @@ import org.toop.framework.networking.connection.events.NetworkEvents;
import org.toop.framework.networking.connection.types.NetworkingConnector; import org.toop.framework.networking.connection.types.NetworkingConnector;
import org.toop.framework.game.players.ArtificialPlayer; import org.toop.framework.game.players.ArtificialPlayer;
import org.toop.framework.game.players.OnlinePlayer; import org.toop.framework.game.players.OnlinePlayer;
import org.toop.framework.game.players.RandomAI; import org.toop.framework.game.players.ai.RandomAI;
import org.toop.framework.networking.server.gateway.NettyGatewayServer; import org.toop.framework.networking.server.gateway.NettyGatewayServer;
import org.toop.local.AppContext; import org.toop.local.AppContext;

View File

@@ -1,7 +1,9 @@
package org.toop.app.canvas; package org.toop.app.canvas;
import javafx.scene.canvas.Canvas; import javafx.scene.canvas.Canvas;
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
public interface GameCanvas extends GameDrawer{ public interface GameCanvas {
Canvas getCanvas(); Canvas getCanvas();
void redraw(TurnBasedGame gameCopy);
} }

View File

@@ -1,7 +0,0 @@
package org.toop.app.canvas;
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
public interface GameDrawer {
void redraw(TurnBasedGame gameCopy);
}

View File

@@ -10,7 +10,7 @@ import org.toop.app.widget.view.GameView;
import org.toop.framework.eventbus.EventFlow; import org.toop.framework.eventbus.EventFlow;
import org.toop.framework.eventbus.GlobalEventBus; import org.toop.framework.eventbus.GlobalEventBus;
import org.toop.framework.gameFramework.controller.GameController; import org.toop.framework.gameFramework.controller.GameController;
import org.toop.framework.gameFramework.model.game.SupportsOnlinePlay; import org.toop.framework.gameFramework.model.game.threadBehaviour.SupportsOnlinePlay;
import org.toop.framework.gameFramework.model.game.TurnBasedGame; import org.toop.framework.gameFramework.model.game.TurnBasedGame;
import org.toop.framework.gameFramework.model.game.threadBehaviour.ThreadBehaviour; import org.toop.framework.gameFramework.model.game.threadBehaviour.ThreadBehaviour;
import org.toop.framework.gameFramework.model.player.Player; import org.toop.framework.gameFramework.model.player.Player;

View File

@@ -6,8 +6,6 @@ import org.toop.app.gameControllers.ReversiBitController;
import org.toop.app.gameControllers.TicTacToeBitController; import org.toop.app.gameControllers.TicTacToeBitController;
import org.toop.framework.gameFramework.controller.GameController; import org.toop.framework.gameFramework.controller.GameController;
import org.toop.framework.gameFramework.model.player.Player; import org.toop.framework.gameFramework.model.player.Player;
import org.toop.framework.game.games.reversi.BitboardReversi;
import org.toop.framework.game.games.tictactoe.BitboardTicTacToe;
import org.toop.framework.game.players.ArtificialPlayer; import org.toop.framework.game.players.ArtificialPlayer;
import org.toop.framework.game.players.LocalPlayer; import org.toop.framework.game.players.LocalPlayer;
import org.toop.app.widget.Primitive; import org.toop.app.widget.Primitive;
@@ -15,8 +13,8 @@ import org.toop.app.widget.complex.PlayerInfoWidget;
import org.toop.app.widget.complex.ViewWidget; import org.toop.app.widget.complex.ViewWidget;
import org.toop.app.widget.popup.ErrorPopup; import org.toop.app.widget.popup.ErrorPopup;
import org.toop.app.widget.tutorial.*; import org.toop.app.widget.tutorial.*;
import org.toop.framework.game.players.MiniMaxAI; import org.toop.framework.game.players.ai.MiniMaxAI;
import org.toop.framework.game.players.RandomAI; import org.toop.framework.game.players.ai.RandomAI;
import org.toop.local.AppContext; import org.toop.local.AppContext;
import javafx.geometry.Pos; import javafx.geometry.Pos;

View File

@@ -4,7 +4,7 @@ import org.toop.framework.eventbus.EventFlow;
import org.toop.framework.gameFramework.model.game.threadBehaviour.AbstractThreadBehaviour; import org.toop.framework.gameFramework.model.game.threadBehaviour.AbstractThreadBehaviour;
import org.toop.framework.gameFramework.view.GUIEvents; import org.toop.framework.gameFramework.view.GUIEvents;
import org.toop.framework.gameFramework.model.game.TurnBasedGame; import org.toop.framework.gameFramework.model.game.TurnBasedGame;
import org.toop.framework.gameFramework.model.game.SupportsOnlinePlay; import org.toop.framework.gameFramework.model.game.threadBehaviour.SupportsOnlinePlay;
import org.toop.framework.gameFramework.model.player.Player; import org.toop.framework.gameFramework.model.player.Player;
import org.toop.framework.game.players.OnlinePlayer; import org.toop.framework.game.players.OnlinePlayer;

View File

@@ -1,4 +1,4 @@
package org.toop.framework.game.players; package org.toop.framework.game.players.ai;
import org.toop.framework.gameFramework.GameState; import org.toop.framework.gameFramework.GameState;
import org.toop.framework.gameFramework.model.game.PlayResult; import org.toop.framework.gameFramework.model.game.PlayResult;

View File

@@ -1,4 +1,4 @@
package org.toop.framework.game.players; package org.toop.framework.game.players.ai;
import org.toop.framework.gameFramework.model.game.TurnBasedGame; import org.toop.framework.gameFramework.model.game.TurnBasedGame;
import org.toop.framework.gameFramework.model.player.AbstractAI; import org.toop.framework.gameFramework.model.player.AbstractAI;

View File

@@ -1,9 +1,8 @@
package org.toop.framework.gameFramework.controller; package org.toop.framework.gameFramework.controller;
import org.toop.framework.gameFramework.model.game.threadBehaviour.Controllable;
import org.toop.framework.networking.connection.events.NetworkEvents; import org.toop.framework.networking.connection.events.NetworkEvents;
public interface GameController extends Controllable, UpdatesGameUI { public interface GameController {
/** Called when it is this player's turn to make a move. */ /** Called when it is this player's turn to make a move. */
void onYourTurn(NetworkEvents.YourTurnResponse event); void onYourTurn(NetworkEvents.YourTurnResponse event);
@@ -13,5 +12,12 @@ public interface GameController extends Controllable, UpdatesGameUI {
/** Called when the game has finished, with the final result. */ /** Called when the game has finished, with the final result. */
void gameFinished(NetworkEvents.GameResultResponse event); void gameFinished(NetworkEvents.GameResultResponse event);
void start();
void stop();
/** Called to refresh or update the game UI. */
void updateUI();
void sendMove(long clientId, long move); void sendMove(long clientId, long move);
} }

View File

@@ -1,10 +0,0 @@
package org.toop.framework.gameFramework.controller;
/**
* Interface for classes that can trigger a UI update.
*/
public interface UpdatesGameUI {
/** Called to refresh or update the game UI. */
void updateUI();
}

View File

@@ -1,5 +0,0 @@
package org.toop.framework.gameFramework.model.game;
public interface BoardProvider {
long[] getBoard();
}

View File

@@ -1,24 +0,0 @@
package org.toop.framework.gameFramework.model.game;
import org.toop.framework.gameFramework.GameState;
/**
* Interface for turn-based games that can be played and queried for legal moves.
*/
public interface Playable {
/**
* Returns the moves that are currently valid in the game.
*
* @return an array of integers representing legal moves
*/
long getLegalMoves();
/**
* Plays the given move and returns the resulting game state.
*
* @param move the move to apply
* @return the {@link GameState} and additional info after the move
*/
PlayResult play(long move);
}

View File

@@ -1,7 +0,0 @@
package org.toop.framework.gameFramework.model.game;
import org.toop.framework.gameFramework.model.player.Player;
public interface PlayerProvider {
Player getPlayer(int index);
}

View File

@@ -2,9 +2,13 @@ package org.toop.framework.gameFramework.model.game;
import org.toop.framework.gameFramework.model.player.Player; import org.toop.framework.gameFramework.model.player.Player;
public interface TurnBasedGame extends Playable, PlayerProvider, BoardProvider, DeepCopyable<TurnBasedGame> { public interface TurnBasedGame extends DeepCopyable<TurnBasedGame> {
void init(Player[] players); void init(Player[] players);
long[] getBoard();
int getCurrentTurn(); int getCurrentTurn();
int getPlayerCount(); int getPlayerCount();
Player getPlayer(int index);
int getWinner(); int getWinner();
long getLegalMoves();
PlayResult play(long move);
} }

View File

@@ -3,7 +3,6 @@ package org.toop.framework.gameFramework.model.game.threadBehaviour;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.toop.framework.gameFramework.LongPairConsumer; import org.toop.framework.gameFramework.LongPairConsumer;
import org.toop.framework.gameFramework.controller.GameController;
import org.toop.framework.gameFramework.model.game.TurnBasedGame; import org.toop.framework.gameFramework.model.game.TurnBasedGame;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;

View File

@@ -1,7 +0,0 @@
package org.toop.framework.gameFramework.model.game.threadBehaviour;
public interface Controllable {
void start();
void stop();
}

View File

@@ -1,4 +1,4 @@
package org.toop.framework.gameFramework.model.game; package org.toop.framework.gameFramework.model.game.threadBehaviour;
/** /**
* Interface for games that support online multiplayer play. * Interface for games that support online multiplayer play.

View File

@@ -11,8 +11,11 @@ import java.util.function.Consumer;
* <p> * <p>
* Defines how a game's execution is started, stopped, and which player is active. * Defines how a game's execution is started, stopped, and which player is active.
*/ */
public interface ThreadBehaviour extends Controllable { public interface ThreadBehaviour {
void setOnUpdateUI(Runnable onUpdateUI); void setOnUpdateUI(Runnable onUpdateUI);
void setOnSendMove(LongPairConsumer onSendMove); void setOnSendMove(LongPairConsumer onSendMove);
void start();
void stop();
} }

View File

@@ -3,5 +3,6 @@ package org.toop.framework.gameFramework.model.player;
import org.toop.framework.gameFramework.model.game.DeepCopyable; import org.toop.framework.gameFramework.model.game.DeepCopyable;
import org.toop.framework.gameFramework.model.game.TurnBasedGame; import org.toop.framework.gameFramework.model.game.TurnBasedGame;
public interface AI extends MoveProvider, DeepCopyable<AI> { public interface AI extends DeepCopyable<AI> {
long getMove(TurnBasedGame game);
} }

View File

@@ -1,7 +0,0 @@
package org.toop.framework.gameFramework.model.player;
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
public interface MoveProvider {
long getMove(TurnBasedGame game);
}

View File

@@ -1,5 +0,0 @@
package org.toop.framework.gameFramework.model.player;
public interface NameProvider {
String getName();
}

View File

@@ -1,5 +1,9 @@
package org.toop.framework.gameFramework.model.player; package org.toop.framework.gameFramework.model.player;
import org.toop.framework.gameFramework.model.game.DeepCopyable; import org.toop.framework.gameFramework.model.game.DeepCopyable;
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
public interface Player extends NameProvider, MoveProvider, DeepCopyable<Player> {} public interface Player extends DeepCopyable<Player> {
String getName();
long getMove(TurnBasedGame game);
}