public void AddStructureBySaveData(SavableComponent saveData) { GameObject structureGameObject = null; for (int i = 0; i < Structures.Length; i++) { if (Structures[i].name == saveData.name) { structureGameObject = ObjectPoolManager.Instantiate(Structures[i]); } } DisplayDelegate displayEventComponent = structureGameObject.GetComponent <DisplayDelegate>(); displayEventComponent.OnDisableEvent += OnDestroyStructure; GridNode node = grid.GetNodeByIndex(saveData.gridIndeX, saveData.gridIndeY); Structure structureComponent = structureGameObject.GetComponent <Structure>(); structureComponent.SetMainGridNode(node); List <GridNode> nodes = grid.GetBodeNeigbours(node, saveData.gridSizeX, saveData.gridSizeY); for (int i = 0; i < nodes.Count; i++) { nodes[i].userData = structureGameObject; } grid.BlockNeighbourNodes(node, saveData.gridSizeX, saveData.gridSizeY); AdjustStructureForGrid(node, structureGameObject); }
void OnGridNodeClick() { GridNode node = grid.GetCurrentNodeRespectToBorders(selectedStructureComponent.gridSizeX, selectedStructureComponent.gridSizeY); if (node != null && node.isValid && selectedStructure != null) { List <GridNode> nodes = grid.GetBodeNeigbours(node, selectedStructureComponent.gridSizeX, selectedStructureComponent.gridSizeY); for (int i = 0; i < nodes.Count; i++) { if (!nodes[i].isValid) { return; } } for (int i = 0; i < nodes.Count; i++) { nodes[i].userData = selectedStructure; grid.BlockNode(nodes[i]); } selectedStructureComponent.SetMainGridNode(node); SavableComponent saveComponent = new SavableComponent(selectedStructure); SaveLoadManager.Save(saveComponent); selectedStructure = null; selectedStructureSprite = null; selectedStructureComponent = null; grid.OnGridOverTileChanged -= OnGridTileChange; grid.OnGridNodeClick -= OnGridNodeClick; placeableMarker.SetActive(false); unplaceableMarker.SetActive(false); FillStructureList(); } }
public static void Save(SavableComponent savableGame) { saveableObjects.Add(savableGame); Save(); }