Esempio n. 1
0
 /// <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;
 }
Esempio n. 7
0
 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;
 }
Esempio n. 8
0
 private PlanetoidStat __MakeMoonStat(PlanetoidCategory mCategory) {
     float radius = mCategory.Radius();  //__GetRadius(mCategory);
     return new PlanetoidStat(radius, 10000F, 10F, mCategory, 5, CreateRandomResourceYield(ResourceCategory.Common));
 }
Esempio n. 9
0
 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);
 }
Esempio n. 10
0
 public IList<APlanetoidData> GetPlanetData(PlanetoidCategory pType) {
     return _composition[pType];
 }
Esempio n. 11
0
 /// <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;
 }