public object CaptureState() { var dto = new CombatMapDto { Terrain = new List <object>() }; for (var x = 0; x < Width; x++) { for (var y = 0; y < Height; y++) { var coord = new Coord(x, y); var floor = GetTerrain <Floor>(coord); if (floor != null) { dto.Terrain.Add(floor.CaptureState()); continue; } var wall = GetTerrain <Wall>(coord); if (wall != null) { dto.Terrain.Add(wall.CaptureState()); } } } return(dto); }
public void RestoreState(object state) { CombatMapDto combatMapDto = (CombatMapDto)state; foreach (var tile in combatMapDto.Terrain) { var tileDto = (Tile.TileDto)tile; Tile restoredTile; if (tileDto.IsFloor) { restoredTile = new Floor(); ((Floor)restoredTile).RestoreState(tileDto); ((Floor)restoredTile).SetApCost(); } else { restoredTile = new Wall(); ((Wall)restoredTile).RestoreState(tileDto); } restoredTile.Texture = tileDto.Texture; SetTerrain(restoredTile); } PlaceEntitiesFromSave(); }