public static RoboField DecodeField(char encoded) { if (RoboField.FIELDCODING.ContainsKey(encoded)) { return(RoboField.CreateField(RoboField.FIELDCODING[encoded])); } return(RoboField.CreateField((FieldType)((int)encoded - (int)'a'))); }
private void Clear(RoboField[,] fields, Size size) { if (size == null) { return; } for (int y = 0; y < size.Height; y++) { for (int x = 0; x < size.Width; x++) { SetField(fields, RoboField.CreateField(FieldType.Empty), x, y); } } }
public void Load(TextReader reader, Difficulty difficulty) { Difficulty = difficulty; Size = GetSize(reader.ReadLine()); for (int y = 0; y < Size.Height; y++) { for (int x = 0; x < Size.Width; x++) { RoboField field = null; if (y == 0 || x == 0 || y == Size.Height - 1 || x == Size.Width - 1) { field = (difficulty == Difficulty.Hard ? RoboField.CreateField(FieldType.Hole) : RoboField.DecodeField('p')); } else { char encoded = (char)reader.Read(); if (encoded == '\r' || encoded == '\n') { x--; continue; } field = (difficulty == Difficulty.Easy && (encoded == RoboField.EncodeField(FieldType.Hole) || encoded == RoboField.EncodeField(FieldType.Oil) || encoded == RoboField.EncodeField(FieldType.ScrapLeftRight) || encoded == RoboField.EncodeField(FieldType.ScrapUpDown))) ? RoboField.DecodeField(' ') : RoboField.DecodeField(encoded); } SetField(field, x, y); } //new line?! if (y > 0 && y < Size.Height - 1) { reader.Read(); } } }
private RoboBoard GetBoard(RoboBoard original, RoboPlayer actualPlayer, IEnumerable <RoboPlayer> players) { RoboBoard board = Board.CopyBoard(); if (Interaction == RoboPlayerInteraction.Blocked) { foreach (RoboPlayer player in players) { if (player == actualPlayer || board.GetField(player.Position).IsDestination || player.Position.IsDead) { continue; } board.Fields[player.Position.X, player.Position.Y] = RoboField.CreateField(FieldType.WallDown | FieldType.WallUp | FieldType.WallLeft | FieldType.WallRight); } } return(board); }