Example #1
0
        public AIArchitect(AIController aiController)
        {
            defences = new Queue<BuildingTypes>();
            avaliablePositions = new Dictionary<StructureType, List<Vector3>>();
            avaliablePositions.Add(StructureType.MILITARY_BUILDING, new List<Vector3>());
            avaliablePositions.Add(StructureType.RESOURCE_BUILDING, new List<Vector3>());
            avaliablePositions.Add(StructureType.TOWER, new List<Vector3>());
            avaliablePositions.Add(StructureType.HORIZONTALL_WALL, new List<Vector3>());
            avaliablePositions.Add(StructureType.VERTICALL_WALL, new List<Vector3>());
            avaliablePositions.Add(StructureType.CORNER_WALL, new List<Vector3>());
            avaliablePositions.Add(StructureType.DEFENCE_ZONE, new List<Vector3>());
            constructionGrid = GameObject.Find("GameController").GetComponent<ConstructionGrid>();
            buildingsPlaced = 0;
            ai = aiController;

            baseCriticPoints = new List<Vector3>();
            constructionGrid.reservePositionForStronghold(ai.rootBasePosition);

            if(constructionGrid.mode == AIController.AIMode.BATTLE)
            {
                planifyBuildingsAccordingToDifficulty();
                readMapData();
            }
            else
            {
                buildingPrefs = new List<BuildingTypes>();
            }
        }
Example #2
0
        public AIArchitect(AIController aiController)
        {
            defences           = new Queue <BuildingTypes>();
            avaliablePositions = new Dictionary <StructureType, List <Vector3> >();
            avaliablePositions.Add(StructureType.MILITARY_BUILDING, new List <Vector3>());
            avaliablePositions.Add(StructureType.RESOURCE_BUILDING, new List <Vector3>());
            avaliablePositions.Add(StructureType.TOWER, new List <Vector3>());
            avaliablePositions.Add(StructureType.HORIZONTALL_WALL, new List <Vector3>());
            avaliablePositions.Add(StructureType.VERTICALL_WALL, new List <Vector3>());
            avaliablePositions.Add(StructureType.CORNER_WALL, new List <Vector3>());
            avaliablePositions.Add(StructureType.DEFENCE_ZONE, new List <Vector3>());
            constructionGrid = GameObject.Find("GameController").GetComponent <ConstructionGrid>();
            buildingsPlaced  = 0;
            ai = aiController;

            baseCriticPoints = new List <Vector3>();
            constructionGrid.reservePositionForStronghold(ai.rootBasePosition);

            if (constructionGrid.mode == AIController.AIMode.BATTLE)
            {
                planifyBuildingsAccordingToDifficulty();
                readMapData();
            }
            else
            {
                buildingPrefs = new List <BuildingTypes>();
            }
        }
Example #3
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);
        }