예제 #1
0
        /// <summary>
        /// Determines whether a building can be constructed or upgraded in the specified building zone.
        /// </summary>
        /// <param name="buildingZone">The building zone to check.</param>
        /// <param name="buildingId">The building ID. Can be 0 if we're about to construct a new building.</param>
        /// <returns>
        ///   <c>true</c> if a building can be constructed or upgraded; otherwise, <c>false</c>.
        /// </returns>
        public bool CanBuildOrUpgrade(ItemClass.Service buildingZone, ushort buildingId = 0)
        {
            int index;

            switch (buildingZone)
            {
            case ItemClass.Service.Residential:
                index = 0;
                break;

            case ItemClass.Service.Commercial:
                index = 1;
                break;

            case ItemClass.Service.Industrial:
                index = 2;
                break;

            case ItemClass.Service.Office:
                index = 3;
                break;

            default:
                return(true);
            }

            HashSet <ushort> buildings = buildingsInConstruction[index];

            buildings.RemoveWhere(IsBuildingCompleted);

            int  allowedCount = GetAllowedConstructingUpradingCount(buildingManager.GeBuildingsCount());
            bool result       = buildings.Count < allowedCount;

            if (result && buildingId != 0)
            {
                buildings.Add(buildingId);
            }

            return(result);
        }