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); }
public static string GetName(SpecialSpace space) { return(GetName(space.Type)); }
public static string GetNameAbbreviation(SpecialSpace space) { return(GetNameAbbreviation(space.Type)); }
public static bool IsSpecialSpace(int position, out SpecialSpace space) { space = _specialSpaces.FirstOrDefault(s => s.Position == position); return(space != null); }