Exemplo n.º 1
0
        /// <summary>
        /// Constructor to resume a saved game
        /// </summary>
        /// <param name="data">Game to resume</param>
        public GameFlowHandler(GameData data)
        {
            Game = data;
            _boardStates = Game.BoardStates;

            GameHasStarted = true;
            LastTurnWasMill = false;
            LegimateTurns = 0;
            GameEventPlayer1 = GameEvent.NoEvent;
            GameEventPlayer2 = GameEvent.NoEvent;
            _lastBoardState = null;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Constructor to start a new game
        /// </summary>
        /// <param name="gameType">Type of the game</param>
        public GameFlowHandler(GameType gameType)
        {
            Game = new GameData(gameType);
            _boardStates = Game.BoardStates;

            _boardStates.Add(new BoardState());

            CurrentPlayer = PlaystoneState.Player1;
            ModelHelpFunctions.InitializePlaystoneStates(CurrentPlaystones, PlaystoneState.Selectable);

            GameHasStarted = false;
            LastTurnWasMill = false;
            LegimateTurns = 0;
            GameEventPlayer1 = GameEvent.NoEvent;
            GameEventPlayer2 = GameEvent.NoEvent;
            _lastBoardState = null;
        }
Exemplo n.º 3
0
        /// <summary>
        /// Clones the actual BoardState object
        /// </summary>
        /// <returns>New instance</returns>
        public BoardState Clone()
        {
            BoardState newState = new BoardState();

            for (int i = 0; i <= 6; i++)
            {
                for (int j = 0; j <= 6; j++)
                {
                    newState.Playstones[i, j] = Playstones[i, j];
                }
            }
            newState.ActivePlayer = ActivePlayer;
            newState.PlaystonesPlayer1 = PlaystonesPlayer1;
            newState.PlaystonesPlayer2 = PlaystonesPlayer2;

            return newState;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Withdraws the last turn
        /// </summary>
        public void UndoLastTurn()
        {
            if (!GameHasStarted || _boardStates.Count < 2 || Game.GameIsOver)
                return;
            if (Game.MoveIsActive || LastTurnWasMill)
            {
                CurrentPlayerEvent = GameEvent.FinishTurn;
                return;
            }
            if (_boardStates[_boardStates.Count - 1].BeforeLastTurnWasMill)
            {
                CurrentPlayerEvent = GameEvent.CannotUndoMill;
                return;
            }

            _lastBoardState = _boardStates[_boardStates.Count - 1];
            _boardStates.RemoveAt(_boardStates.Count - 1);
            LastTurnWasMill = false;
        }
Exemplo n.º 5
0
        /// <summary>
        /// Repeats the last turn, if possible
        /// </summary>
        public void RedoLastTurn()
        {
            // Checks for various exeptions
            if (_lastBoardState == null)
                return;
            if (Game.MoveIsActive || LastTurnWasMill)
            {
                CurrentPlayerEvent = GameEvent.FinishTurn;
                return;
            }

            _boardStates.RemoveAt(_boardStates.Count - 1);
            _boardStates.Add(_lastBoardState);
            LastTurnWasMill = _beforeLastTurnWasMill;

            _lastBoardState = null;
            _beforeLastTurnWasMill = false;
        }