/// <summary> /// Initializes a new instance of the <see cref="APlanetoidStat" /> class. /// </summary> /// <param name="radius">The radius.</param> /// <param name="mass">The mass.</param> /// <param name="maxHitPts">The maximum hit points.</param> /// <param name="category">The category.</param> /// <param name="capacity">The capacity.</param> /// <param name="resources">The resources.</param> public PlanetoidStat(float radius, float mass, float maxHitPts, PlanetoidCategory category, int capacity, ResourceYield resources) { Radius = radius; Mass = mass; MaxHitPoints = maxHitPts; Category = category; Capacity = capacity; Resources = resources; }
private PlanetoidStat MakeRandomMoonStat(PlanetoidCategory mCategory, SystemDesirability desirability) { float radius = mCategory.Radius(); float maxHitPts = 10F; // TODO vary by desirability int capacity = 5; // TODO vary by desirability var resourceYield = CreateRandomResourceYield(desirability, ResourceCategory.Common); return new PlanetoidStat(radius, 10000F, maxHitPts, mCategory, capacity, resourceYield); }
private PlanetStat MakeRandomPlanetStat(PlanetoidCategory pCategory, SystemDesirability desirability) { float radius = pCategory.Radius(); float closeOrbitInnerRadius = radius + TempGameValues.PlanetCloseOrbitInnerRadiusAdder; float maxHitPts = 100F; // TODO vary by desirability int capacity = 25; // TODO vary by desirability var resourceYield = CreateRandomResourceYield(desirability, ResourceCategory.Common, ResourceCategory.Strategic); return new PlanetStat(radius, 1000000F, maxHitPts, pCategory, capacity, resourceYield, closeOrbitInnerRadius); }
private bool TryAssignPlanetOrbitSlot(PlanetoidCategory pCat, Stack<OrbitData> innerSlots, Stack<OrbitData> goldilocksSlots, Stack<OrbitData> outerSlots, out OrbitData assignedSlot) { Stack<OrbitData>[] slots; switch (pCat) { case PlanetoidCategory.Volcanic: slots = new Stack<OrbitData>[] { innerSlots, goldilocksSlots }; break; case PlanetoidCategory.Terrestrial: slots = new Stack<OrbitData>[] { goldilocksSlots, innerSlots, outerSlots }; break; case PlanetoidCategory.Ice: slots = new Stack<OrbitData>[] { outerSlots, goldilocksSlots }; break; case PlanetoidCategory.GasGiant: slots = new Stack<OrbitData>[] { outerSlots, goldilocksSlots }; break; case PlanetoidCategory.Moon_001: case PlanetoidCategory.Moon_002: case PlanetoidCategory.Moon_003: case PlanetoidCategory.Moon_004: case PlanetoidCategory.Moon_005: case PlanetoidCategory.None: default: throw new NotImplementedException(ErrorMessages.UnanticipatedSwitchValue.Inject(pCat)); } return TryFindOrbitSlot(slots, out assignedSlot); }
private string MakeAndRecordMoonDesign(PlanetoidCategory cat, SystemDesirability desirability) { string designName = GetUniqueDesignName(cat.GetValueName()); PlanetoidStat stat = MakeRandomMoonStat(cat, desirability); int passiveCmQty = GetPassiveCountermeasureQty(desirability, max: 1); var passiveCMs = _availablePassiveCountermeasureStats.Shuffle().Take(passiveCmQty); MoonDesign design = new MoonDesign(designName, stat, passiveCMs); _gameMgr.CelestialDesigns.Add(design); return designName; }
private bool TryAssignMoonOrbitSlot(PlanetoidCategory mCat, int slotIndex, float startDepthForOrbitSlot, out OrbitData assignedSlot) { float depthAvailableForMoonOrbitsAroundPlanet = __systemOrbitSlotDepth; float moonObstacleZoneRadius = mCat.Radius() + TempGameValues.MoonObstacleZoneRadiusAdder; float depthReqdForOrbitSlot = moonObstacleZoneRadius * 2F; float endDepthForOrbitSlot = startDepthForOrbitSlot + depthReqdForOrbitSlot; if (endDepthForOrbitSlot > depthAvailableForMoonOrbitsAroundPlanet) { assignedSlot = null; return false; } GameTimeDuration orbitPeriod = _minMoonOrbitPeriod + (slotIndex * _moonOrbitPeriodIncrement); assignedSlot = new OrbitData(slotIndex, startDepthForOrbitSlot, endDepthForOrbitSlot, orbitPeriod); return true; }
public PlanetStat(float radius, float mass, float maxHitPts, PlanetoidCategory category, int capacity, ResourceYield resources, float closeOrbitInnerRadius) : base(radius, mass, maxHitPts, category, capacity, resources) { CloseOrbitInnerRadius = closeOrbitInnerRadius; }
private PlanetoidStat __MakeMoonStat(PlanetoidCategory mCategory) { float radius = mCategory.Radius(); //__GetRadius(mCategory); return new PlanetoidStat(radius, 10000F, 10F, mCategory, 5, CreateRandomResourceYield(ResourceCategory.Common)); }
private PlanetStat __MakePlanetStat(PlanetoidCategory pCategory) { float radius = pCategory.Radius(); //__GetRadius(pCategory); float lowOrbitRadius = radius + 1F; return new PlanetStat(radius, 1000000F, 100F, pCategory, 25, CreateRandomResourceYield(ResourceCategory.Common, ResourceCategory.Strategic), lowOrbitRadius); }
public IList<APlanetoidData> GetPlanetData(PlanetoidCategory pType) { return _composition[pType]; }
/// <summary> /// Initializes a new instance of the <see cref="PlanetoidData"/> class. /// </summary> /// <param name="category">The category of planet.</param> /// <param name="name">The name.</param> /// <param name="maxHitPoints">The maximum hit points.</param> /// <param name="parentName">Name of the parent.</param> public PlanetoidData(PlanetoidCategory category, string name, float maxHitPoints, string parentName) : base(name, maxHitPoints, parentName) { Category = category; }