コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }