예제 #1
0
        /// <summary>
        /// Calculates the move (dice value) it takes to get from one position to another one
        /// </summary>
        /// <param name="a">Position to move to</param>
        /// <param name="b">Position to move from</param>
        /// <returns>Dice value required for the move</returns>
        public static NetworkBackgammonDice operator -(NetworkBackgammonPosition a, NetworkBackgammonPosition b)
        {
            NetworkBackgammonDice retVal = new NetworkBackgammonDice();

            retVal.CurrentValue = NetworkBackgammonDice.DiceValue.INVALID;

            if (a != null && b != null)
            {
                if (a > b)
                {
                    Int32 delta    = 0;
                    Int32 deltaMax = Convert.ToInt32(NetworkBackgammonDice.DiceValue.MAX);

                    switch (b.currentPosition)
                    {
                    case GameBoardPosition.BAR:
                        delta = Convert.ToInt32(a.currentPosition);
                        break;

                    // This should be impossible since a cannot be "bigger" than "offboard"
                    case GameBoardPosition.OFFBOARD:
                        break;

                    default:
                        delta = Convert.ToInt32(a.currentPosition) - Convert.ToInt32(b.currentPosition);
                        break;
                    }

                    if (delta > 0 && delta <= deltaMax)
                    {
                        retVal.CurrentValue = (NetworkBackgammonDice.DiceValue)delta;
                    }
                }
            }

            return(retVal);
        }
예제 #2
0
 /// <summary>
 /// Make a move
 /// </summary>
 /// <param name="_checkerSelected">(Selected) checker to be a move performed with</param>
 /// <param name="_moveSelected">(Selected) move to be performed</param>
 public void MakeMove(NetworkBackgammonChecker _checkerSelected, NetworkBackgammonDice _moveSelected)
 {
     Broadcast(new GameSessionMoveSelectedEvent(_checkerSelected, _moveSelected));
 }
예제 #3
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="_checkerSelected">The selected checker to be moved</param>
 /// <param name="_moveSelected">The selected move to be performed with the selected checker</param>
 public GameSessionMoveSelectedEvent(NetworkBackgammonChecker _checkerSelected, NetworkBackgammonDice _moveSelected)
 {
     checkerSelected = _checkerSelected;
     moveSelected    = _moveSelected;
 }
 /// <summary>
 /// Performs a move of this checker
 /// </summary>
 /// <param name="_move">Move (dice value) to be performed</param>
 public void MoveChecker(NetworkBackgammonDice _move)
 {
     currentPosition += _move;
 }