public StarbaseCategory GenerateCmdCategory(BaseComposition unitComposition) { int elementCount = UnitComposition.GetTotalElementsCount(); D.Log("{0}'s known elements count = {1}.", FullName, elementCount); if (elementCount >= 8) { return StarbaseCategory.TerritorialBase; } if (elementCount >= 6) { return StarbaseCategory.RegionalBase; } if (elementCount >= 4) { return StarbaseCategory.DistrictBase; } if (elementCount >= 2) { return StarbaseCategory.LocalBase; } if (elementCount >= 1) { return StarbaseCategory.Outpost; } return StarbaseCategory.None; }
protected override void RefreshComposition() { var elementCategories = _elementsData.Cast<FacilityData>().Select(fd => fd.HullCategory); UnitComposition = new BaseComposition(elementCategories); }
protected override void AssignValues(AItemData data) { var sbData = data as StarbaseCmdData; var accessCntlr = sbData.InfoAccessCntlr; if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.AlertStatus)) { AlertStatus = sbData.AlertStatus; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.UnitDefense)) { UnitDefensiveStrength = sbData.UnitDefensiveStrength; } else { UnitDefensiveStrength = CalcPartialUnitDefensiveStrength(GetElementsData(sbData)); } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.UnitOffense)) { UnitOffensiveStrength = sbData.UnitOffensiveStrength; } else { UnitOffensiveStrength = CalcPartialUnitOffensiveStrength(GetElementsData(sbData)); } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.UnitMaxHitPts)) { UnitMaxHitPoints = sbData.UnitMaxHitPoints; } else { UnitMaxHitPoints = CalcPartialUnitMaxHitPoints(GetElementsData(sbData)); } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.UnitCurrentHitPts)) { UnitCurrentHitPoints = sbData.UnitCurrentHitPoints; } else { UnitCurrentHitPoints = CalcPartialUnitCurrentHitPoints(GetElementsData(sbData)); } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.UnitHealth)) { UnitHealth = sbData.UnitHealth; } else { // Calculate HitPts before attempting calculation of partial unit health UnitHealth = CalcPartialUnitHealth(UnitCurrentHitPoints, UnitMaxHitPoints); } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.UnitScience)) { UnitScience = sbData.UnitScience; } else { UnitScience = CalcPartialUnitScience(GetElementsData(sbData)); } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.UnitCulture)) { UnitCulture = sbData.UnitCulture; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.UnitNetIncome)) { UnitIncome = sbData.UnitIncome; UnitExpense = sbData.UnitExpense; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.Name)) { Name = sbData.Name; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.ParentName)) { ParentName = sbData.ParentName; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.Position)) { Position = sbData.Position; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.Owner)) { Owner = sbData.Owner; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.CurrentCmdEffectiveness)) { CurrentCmdEffectiveness = sbData.CurrentCmdEffectiveness; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.UnitSensorRange)) { UnitSensorRange = sbData.UnitSensorRange; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.UnitWeaponsRange)) { UnitWeaponsRange = sbData.UnitWeaponsRange; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.SectorID)) { SectorID = sbData.SectorID; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.Formation)) { UnitFormation = sbData.UnitFormation; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.Capacity)) { Capacity = sbData.Capacity; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.Resources)) { Resources = sbData.Resources; } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.Composition)) { // must precede Category UnitComposition = sbData.UnitComposition; } else { UnitComposition = CalcPartialUnitComposition(sbData); } if (accessCntlr.HasAccessToInfo(Player, ItemInfoID.Category)) { Category = sbData.Category; } else { Category = CalcPartialCmdCategory(sbData); } }
public SettlementCategory GenerateCmdCategory(BaseComposition unitComposition) { int elementCount = unitComposition.GetTotalElementsCount(); //D.Log(ShowDebugLog, "{0}'s known elements count = {1}.", DebugName, elementCount); if (elementCount >= 8) { return SettlementCategory.Territory; } if (elementCount >= 6) { return SettlementCategory.Province; } if (elementCount >= 4) { return SettlementCategory.CityState; } if (elementCount >= 2) { return SettlementCategory.City; } if (elementCount >= 1) { return SettlementCategory.Colony; } return SettlementCategory.None; }