|
- 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<GameObjectManager>.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<CIGBuilding>())
- {
- 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<CIGGameStats>.Instance.AddBuilding(cigbuilding.name);
- }
- }
- }
- }
- }
- }
-
- [ParentReference]
- public CIGExpansions expansions;
-
- [ParentReference]
- public IsometricIsland island;
-
- [ParentReference]
- public CityIsland city;
-
- [SelfReference]
- public IsometricGrid grid;
- }
|