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(); } } }
public override string ToString() { return(RoboField.EncodeField(FieldType).ToString()); }