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); }
private BuildingTypeVO GetBuildingConstructionRequirement(BuildingTypeVO building) { BuildingUpgradeCatalog buildingUpgradeCatalog = Service.BuildingUpgradeCatalog; BuildingTypeVO minLevel = buildingUpgradeCatalog.GetMinLevel(building); return(this.GetRequiredBuilding(minLevel.BuildingRequirement)); }
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); }
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); }