示例#1
0
        private void CalculateMoves(Turn turn)
        {
            int position = turn.StartPosition;

            if (turn.Missed)
            {
                return;
            }
            if (Util.IsColor(turn.Card.Type))
            {
                position = GetPositionOfNext(turn.Card.Type, position);
                if (turn.Card.IsDouble)
                {
                    position = GetPositionOfNext(turn.Card.Type, position);
                }
                turn.Moves.Add(new Move(GetColorSpaceTypeName(turn.Card.Type, turn.Card.IsDouble), position, false));
            }
            else
            {
                foreach (SpecialSpace specialSpace in _specialSpaces)
                {
                    if (specialSpace.Type == turn.Card.Type)
                    {
                        SpecialSpace space = _specialSpaces.FirstOrDefault(s => s.Type == turn.Card.Type);
                        if (space != null)
                        {
                            position = space.Position;
                            turn.Moves.Add(new Move(GetSpecialSpaceTypeName(turn.Card.Type), position, true));
                        }
                    }
                }
            }
            if (HasPass(position, out Pass pass))
            {
                position = pass.EndPosition;
                turn.Moves.Add(new Move(pass.Name, pass.EndPosition, true));
            }
            SetPlayerPosition(turn.Player, position);
        }
示例#2
0
 public static string GetName(SpecialSpace space)
 {
     return(GetName(space.Type));
 }
示例#3
0
 public static string GetNameAbbreviation(SpecialSpace space)
 {
     return(GetNameAbbreviation(space.Type));
 }
示例#4
0
 public static bool IsSpecialSpace(int position, out SpecialSpace space)
 {
     space = _specialSpaces.FirstOrDefault(s => s.Position == position);
     return(space != null);
 }