void Start()
        {
            wm = GameObject.FindObjectOfType <WorldMover>();
            bg = GetComponent <BaseBuildingGroup>();

            if (wm != null)
            {
                transform.position -= wm.currentMove;
            }
        }
示例#2
0
        GameObject LoadSpecificData(BuildingSaveData building)
        {
            GameObject buildingPrefab = PrefabDB.instance.GetGO(building.prefabID);

            if (buildingPrefab != null)
            {
                GameObject   go             = GameObject.Instantiate(buildingPrefab);
                BaseBuilding buildingScript = go.GetComponent <BaseBuilding>();

                if (instanceGroup == null)
                {
                    instanceGroup = BaseBuildingGroup.CreateGroup((Vector3)building.pos, buildingScript.buildingGroupType);
                }

                buildingScript.buildingGroup = instanceGroup;

                go.transform.position = (Vector3)building.pos;
                go.transform.rotation = (Quaternion)building.rot;

                buildingScript.health = building.health;
                buildingScript.uid    = building.uniqueID;

                BaseBuilding currentBuilding;
                BaseSocket   snappedTo;

                for (int i = 0; i < instanceGroup.buildings.Count; i++)
                {
                    currentBuilding = instanceGroup.buildings[i];

                    if (currentBuilding.uid == building.placedOnUID)
                    {
                        snappedTo = currentBuilding.ReturnSocket((Vector3)building.pos, buildingScript.buildingType);

                        buildingScript.SnappedTo = snappedTo;
                        buildingScript.placedOn  = currentBuilding;

                        break;
                    }
                }

                buildingScript.PlaceBuilding();

                for (int i = 0; i < instanceGroup.buildings.Count; i++) // handle occoupied sockets to make sure there's no sockets on each other.
                {
                    currentBuilding = instanceGroup.buildings[i];
                    instanceGroup.HandleOccupiedSockets(currentBuilding);
                }

                CallOnLoad(buildingScript);

                return(go);
            }

            return(null);
        }
示例#3
0
        /// <summary>
        /// Add the target to our list
        /// </summary>
        protected override void OnEnable()
        {
            buildingGroup = GetComponent <BaseBuildingGroup>();

            if (buildingGroup != null)
            {
                buildingGroup.OnBuildingAddedEvent   += GroupBuildingAdded;
                buildingGroup.OnBuildingRemovedEvent += GroupBuildingRemoved;
            }

            base.OnEnable();
        }
示例#4
0
        /// <summary>
        /// Handle the AOI results
        /// </summary>
        /// <param name="finder">the finder that our results got changed of</param>
        /// <param name="_inRange">are we in range of the finder?</param>
        public override void HandleAOI(BaseAOIFinder finder, bool _inRange)
        {
            base.HandleAOI(finder, _inRange);

            if (buildingGroup == null)
            {
                buildingGroup = GetComponent <BaseBuildingGroup>();
            }

            if (buildingGroup != null)
            {
                buildingGroup.AOIGroup(_inRange, finder.aoiPosition, finder.radius);
            }
        }