Example #1
0
        /// <summary>
        /// Creates a building in the given position.
        /// </summary>
        /// <returns>The building, if the position is available for
        /// construction, or <code>null</code>.</returns>
        ///
        /// <param name="position">The position of the building.</param>
        /// <param name="rotation">The rotation of the building.</param>
        /// <param name="type">The type of building.</param>
        /// <param name="race">The race this building belongs to.</param>
        public GameObject createBuilding(Vector3 position, Quaternion rotation,
                                         Storage.BuildingTypes type, Storage.Races race, bool checkFow, float yOffset = 0)
        {
            GameObject obj = null;

            position.y += yOffset;
            position    = grid.discretizeMapCoords(position);
            if (grid.isNewPositionAbleForConstrucction(position, checkFow))
            {
                position.y -= yOffset - 0.1f;
                obj         = Storage.Info.get.createBuilding(race, type, position, rotation);
                if (type == Storage.BuildingTypes.STRONGHOLD)
                {
                    grid.reservePositionForStronghold(position);
                }
                grid.reservePosition(position);
            }
            return(obj);
        }
Example #2
0
        public void buildForCampaign()
        {
            if (_placed)
            {
                return;
            }
            _placed = true;
            List <BuildingTypes> typesToPlace = new List <BuildingTypes>()
            {
                BuildingTypes.ARCHERY,
                BuildingTypes.BARRACK,
                BuildingTypes.WATCHTOWER,
                BuildingTypes.STABLE,
            };

            GameObject[] buildingsPositions = GameObject.FindGameObjectsWithTag("Campaign_building_military");
            foreach (GameObject pos in buildingsPositions)
            {
                ai.CreateBuilding(getRandomBuildingType(typesToPlace), pos.gameObject.transform.position, Quaternion.Euler(0, buildingAngle, 0), this);
                constructionGrid.reservePosition(constructionGrid.discretizeMapCoords(pos.gameObject.transform.position));
                buildingsPlaced++;
                pos.transform.localScale = Vector3.zero;
            }
        }
Example #3
0
    /// <summary>
    /// When destroyed, it's called
    /// </summary>
    public override void OnDestroy()
    {
        GameObject gridGO = GameObject.Find("GameController");

        if (gridGO != null)
        {
            ConstructionGrid grid     = gridGO.GetComponent <ConstructionGrid>();
            Vector3          disc_pos = grid.discretizeMapCoords(gameObject.transform.position);
            grid.liberatePosition(disc_pos);
        }

        ResourcesEvents.get.unregisterBuildingToEvents(this);

        base.OnDestroy();

        Assert.IsTrue(status == EntityStatus.DESTROYED);
    }