Esempio n. 1
0
        public int GetBuildingMaxPurchaseQuantity(BuildingTypeVO building, int haveReqBuildingLvl)
        {
            BuildingTypeVO buildingTypeVO = this.GetBuildingConstructionRequirement(building);

            if (buildingTypeVO == null)
            {
                return(building.MaxQuantity);
            }
            if (haveReqBuildingLvl >= buildingTypeVO.Lvl || this.HasConstructedBuilding(buildingTypeVO))
            {
                BuildingUpgradeCatalog buildingUpgradeCatalog = Service.BuildingUpgradeCatalog;
                int lvl  = buildingUpgradeCatalog.GetMinLevel(building.UpgradeGroup).Lvl;
                int lvl2 = buildingUpgradeCatalog.GetMaxLevel(building.UpgradeGroup).Lvl;
                for (int i = lvl2; i > lvl; i--)
                {
                    BuildingTypeVO byLevel = buildingUpgradeCatalog.GetByLevel(building.UpgradeGroup, i);
                    if (byLevel != null)
                    {
                        buildingTypeVO = this.GetRequiredBuilding(byLevel.BuildingRequirement);
                        if (buildingTypeVO == null || haveReqBuildingLvl >= buildingTypeVO.Lvl || this.HasConstructedBuilding(buildingTypeVO))
                        {
                            return(byLevel.MaxQuantity);
                        }
                    }
                }
                BuildingTypeVO minLevel = buildingUpgradeCatalog.GetMinLevel(building);
                return(minLevel.MaxQuantity);
            }
            if (Service.UnlockController.HasUnlockedBuildingByReward(building))
            {
                return(1);
            }
            return(0);
        }
Esempio n. 2
0
        private BuildingTypeVO GetBuildingConstructionRequirement(BuildingTypeVO building)
        {
            BuildingUpgradeCatalog buildingUpgradeCatalog = Service.BuildingUpgradeCatalog;
            BuildingTypeVO         minLevel = buildingUpgradeCatalog.GetMinLevel(building);

            return(this.GetRequiredBuilding(minLevel.BuildingRequirement));
        }
Esempio n. 3
0
        public Dictionary <BuildingTypeVO, int> GetBuildingsUnlockedBy(BuildingTypeVO reqBuilding)
        {
            Dictionary <BuildingTypeVO, int> dictionary             = new Dictionary <BuildingTypeVO, int>();
            StaticDataController             staticDataController   = Service.StaticDataController;
            BuildingUpgradeCatalog           buildingUpgradeCatalog = Service.BuildingUpgradeCatalog;

            foreach (BuildingTypeVO current in staticDataController.GetAll <BuildingTypeVO>())
            {
                if (current.BuildingRequirement == reqBuilding.Uid || current.BuildingRequirement2 == reqBuilding.Uid)
                {
                    BuildingTypeVO minLevel       = buildingUpgradeCatalog.GetMinLevel(current);
                    BuildingTypeVO buildingTypeVO = (current.Lvl <= minLevel.Lvl) ? null : buildingUpgradeCatalog.GetByLevel(current, current.Lvl - 1);
                    int            num            = (buildingTypeVO != null) ? buildingTypeVO.MaxQuantity : 0;
                    int            num2           = current.MaxQuantity - num;
                    if (num2 > 0)
                    {
                        if (dictionary.ContainsKey(minLevel))
                        {
                            Dictionary <BuildingTypeVO, int> dictionary2;
                            BuildingTypeVO key;
                            (dictionary2 = dictionary)[key = minLevel] = dictionary2[key] + num2;
                        }
                        else
                        {
                            dictionary.Add(minLevel, num2);
                        }
                    }
                }
            }
            return(dictionary);
        }
Esempio n. 4
0
 public static IGeometryVO DetermineVOForEquipment(EquipmentVO equipmentVO)
 {
     if (equipmentVO != null && !string.IsNullOrEmpty(equipmentVO.BuildingID))
     {
         BuildingUpgradeCatalog buildingUpgradeCatalog = Service.BuildingUpgradeCatalog;
         UnlockController       unlockController       = Service.UnlockController;
         BuildingTypeVO         buildingTypeVO         = buildingUpgradeCatalog.GetMinLevel(equipmentVO.BuildingID);
         int lvl = buildingUpgradeCatalog.GetMaxLevel(equipmentVO.BuildingID).Lvl;
         for (int i = buildingTypeVO.Lvl + 1; i < lvl; i++)
         {
             BuildingTypeVO byLevel = buildingUpgradeCatalog.GetByLevel(equipmentVO.BuildingID, i);
             BuildingTypeVO buildingTypeVO2;
             if (!unlockController.IsUnlocked(byLevel, 1, out buildingTypeVO2))
             {
                 break;
             }
             buildingTypeVO = byLevel;
         }
         return(buildingTypeVO);
     }
     return(equipmentVO);
 }