public LayerTileSaveData(Layer layer) { Tiles = new Dictionary<TileSaveData, TilePositionCloud>(); HashSet<TileSaveData> tilesProcessedSoFar = new HashSet<TileSaveData>(); var tileGrid = layer.Tiles; foreach (var gridCellWithTile in tileGrid.EnumerateItemsWithGridCells()) { TileSaveData saveData = new TileSaveData(gridCellWithTile.Item3); saveData.TileSaveID = id; if (!Tiles.ContainsKey(saveData)) { Tiles.Add(saveData, new TilePositionCloud() { TileSaveID = id }); id++; } Vector2 storedPosition = new Vector2(gridCellWithTile.Item1 * GameServices.GameObjectSize.X, gridCellWithTile.Item2 * GameServices.GameObjectSize.Y); if (gridCellWithTile.Item3.Position != storedPosition) { System.Diagnostics.Debugger.Break(); } Tiles[saveData].CellNumbers.Add(new Point(x: gridCellWithTile.Item1, y: gridCellWithTile.Item2)); } }
internal List<TileSaveData> DeserializeTileSaveData(JArray tileSaveObjects) { var result = new List<TileSaveData>(); foreach (var entry in tileSaveObjects) { TileSaveData saveData = new TileSaveData(); saveData.TileSaveID = (int)entry["id"]; saveData.TypeName = (string)entry["typeName"]; saveData.SolidSides = (int)entry["solidSides"]; saveData.Name = (string)entry["name"]; saveData.GraphicsResourceName = (string)entry["graphicsResource"]; saveData.InitialState = (string)entry["state"]; saveData.CustomData = entry["customData"]; result.Add(saveData); } return result; }