using System; using CIG3.ExtensionMethods; using SUISS.Core; using SUISSEngine; using UnityEngine; public class CIGSpecialBuildingsManager : MonoBehaviour { protected virtual void OnGridDeserialized() { foreach (CIGBuilding cigbuilding in SingletonMonobehaviour.Instance.AllBuildings) { if (!cigbuilding.island.IsValid() || cigbuilding.island == this.city.island) { if (cigbuilding.activatable) { GridIndex gridIndex = new GridIndex(cigbuilding.gridPositionU, cigbuilding.gridPositionV); bool flag = false; foreach (CIGBuilding cigbuilding2 in UnityEngine.Object.FindObjectsOfType()) { if (cigbuilding2.name == cigbuilding.name) { flag = true; if (!cigbuilding.movable && !cigbuilding2.tile.index.Equals(gridIndex)) { string str = string.Empty; if (!cigbuilding2.tile.size.Equals(cigbuilding.tile.size)) { str = string.Format("The building {0} has a wrong size ({1}). It should be {2}. ", cigbuilding2.name, cigbuilding2.tile.size, cigbuilding.tile.size); } for (int k = 0; k < 10; k++) { GridTile gridTile = this.grid.FindTileAt(gridIndex, cigbuilding.tile.size); if (gridTile != null && gridTile.name == cigbuilding.name) { UnityEngine.Debug.LogError(str + string.Format("There is a duplicate of {0} at position {1}.", cigbuilding.name, cigbuilding2.tile.index)); this.island.builder.DestroyTile(cigbuilding2.tile); break; } if (!(gridTile != null)) { this.grid.MoveTileFrom(cigbuilding2.tile, gridIndex, true); break; } UnityEngine.Debug.LogError(str + string.Format("The building {0} is in a wrong position ({1}), but there is something ({2}) in the way.", cigbuilding2.name, cigbuilding2.tile.index, gridTile.name)); this.island.builder.DestroyTile(gridTile); } } break; } } if (!flag) { bool flag2 = this.island.builder.BuildAt(cigbuilding.gameObject, gridIndex, false, true); if (flag2) { SingletonMonobehaviour.Instance.AddBuilding(cigbuilding.name); } } } } } } [ParentReference] public CIGExpansions expansions; [ParentReference] public IsometricIsland island; [ParentReference] public CityIsland city; [SelfReference] public IsometricGrid grid; }