GUI Classes

Scripts that contain GUI at the end of their name are monobehaviour classes that contains all the functionality needed to kick start a playable chess game scene.

GUIs Inheritence Hierachy (Inheritence Level In Ascending Order) :

PlaygroundGUI - Having the very basic of drag and drop pieces, its game logic is without game rule, basically containing the base controller features for all subsequent derived classes to be overriden.

ChessBaseGUI - game logic with chess game rule, controller now is restricted to only making legal moves, with TilesEffectManager and SoundEffectManager introduced but unused in this level. Contain all basic features needed to play a chess game including undo, redo, restart game etc.

ChessGameBaseGUI - Made for accomodate having to click start button on the UI before piece is spawned and game can be played, flipboard, save game, continue game, draw, position score, tiles effect usage, sound effect usage etc, are introduced in this level. **This is the idea class to inherit from, since it has all the absolute minimum for a quality chess game.

ChessQueueableGameGUI - This level allow controller to queue move when playing piece that's not on their turn, until opposite color finishing their turn.

ChessSinglePlayerGameGUI - Added a layer of restriction to which color the mouse can play the piece color.

ChessGameAIGUI - Included AI as opponent and feature such as draw and resign offer between both parties.

ChessGameMultiAIGUI - For the ability to switch AI midway on the game without having to quit and start the UI again.

ChessGameStrongAIGUI - The example scene for the imported Stockfish AI.

ChessGameBaseGUI => ChessGamePGNGUI - For recording move sequences that's different from the original move sequences in a chess game, having all the extra logic just for that purpose. Best used as chess game analytic tool.

ChessPuzzleBaseGUI - The base class for ChessPuzzleGUI and ChessPuzzleEditorGUI, for code reusability.

ChessPuzzleGUI - The class for playing puzzle game, having all of the puzzle validation logic from ChessGamePuzzle class, suitable UIs for playing presaved puzzle game.

ChessPuzzleBaseGUI => ChessPuzzleEditorGUI - Responsible for all puzzle editor features, including board editing with mouse action, cut move or move variants to their counterpart, instant puzzle editing mode and manage puzzle data. For your information, the data saved can used for other purpose than for puzzle game alone.

ChessQueueableGameGUI => ChessMultiControlGameGUI - Mainly design for multitouch on mobile device where when 2 player playing on a single device does not need to wait for opponent until they can drag a piece.

ChessTwoPlayerGameGUI - Empty class inherited from ChessMultiControlGameGUI, just in case, if when needed to implement any new functionality that's for two player game.

Last updated