/// <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); }
/// <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)); }
/// <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; }