public Building.ConstructionPhase GeneratePhase()
        {
            var ret = new Building.ConstructionPhase
            {
                CapacityBonus              = this.CapacityBonus,
                ConstructionType           = this.PhaseType,
                HouseCountRequirements     = this.HouseCountRequirement,
                HousingValue               = this.HousingValue,
                MultiplyProductionPerHouse = this.MultiplyProductionPerHouse,
                RareMaterialRequirement    = new ItemQuantity(ResourcesPrefabManager.Instance.GetItemPrefab(this.RareMaterialID), 1),
                UpkeepCosts       = this.UpkeepCosts,
                UpkeepProductions = this.UpkeepProductions,
            };

            var nameLoc = $"BuildPhaseLoc_{UID.Generate()}";

            References.GENERAL_LOCALIZATION.Add(nameLoc, this.Name);
            ret.NameLocKey = nameLoc;

            var reqList = new List <Building.BuildingRequirement>();

            foreach (var req in this.BuildingRequirements)
            {
                reqList.Add(new Building.BuildingRequirement
                {
                    ReqBuilding  = ResourcesPrefabManager.Instance.GetItemPrefab(req.ReqBuildingID) as Building,
                    UpgradeIndex = req.ReqUpgradeIndex,
                });
            }
            ret.BuildingRequirements = reqList.ToArray();

            return(ret);
        }
 public static DM_ConstructionPhase SerializePhase(Building.ConstructionPhase phase)
 {
     return(new DM_ConstructionPhase
     {
         PhaseType = phase.ConstructionType,
         HouseCountRequirement = phase.HouseCountRequirements,
         ConstructionTime = phase.GetConstructionTime(),
         ConstructionCosts = (BuildingResourceValues)At.GetField(phase, "m_constructionCosts"),
         UpkeepCosts = phase.UpkeepCosts,
         UpkeepProductions = phase.UpkeepProductions,
         CapacityBonus = phase.CapacityBonus,
         MultiplyProductionPerHouse = phase.MultiplyProductionPerHouse,
         HousingValue = phase.HousingValue,
         RareMaterial = phase.RareMaterial?.Name,
         BuildingRequirements = (from req in phase.BuildingRequirements
                                 select new DM_BuildingRequirement()
         {
             ReqBuildingName = req.ReqBuilding?.Name,
             ReqUpgradeIndex = req.UpgradeIndex
         }).ToList(),
     });
 }
 public static SL_ConstructionPhase SerializePhase(Building.ConstructionPhase phase)
 {
     return(new SL_ConstructionPhase
     {
         Name = LocalizationManager.Instance.GetLoc(phase.NameLocKey),
         PhaseType = phase.ConstructionType,
         HouseCountRequirement = phase.HouseCountRequirements,
         ConstructionTime = phase.GetConstructionTime(),
         ConstructionCosts = (BuildingResourceValues)At.GetField(phase, "m_constructionCosts"),
         UpkeepCosts = phase.UpkeepCosts,
         UpkeepProductions = phase.UpkeepProductions,
         CapacityBonus = phase.CapacityBonus,
         MultiplyProductionPerHouse = phase.MultiplyProductionPerHouse,
         HousingValue = phase.HousingValue,
         RareMaterialID = phase.RareMaterial?.ItemID ?? -1,
         BuildingRequirements = (from req in phase.BuildingRequirements
                                 select new SL_BuildingRequirement()
         {
             ReqBuildingID = req.ReqBuilding?.ItemID ?? -1,
             ReqUpgradeIndex = req.UpgradeIndex
         }).ToList(),
     });
 }