Skip to content

Commit

Permalink
Summary work largely finished
Browse files Browse the repository at this point in the history
The summary page displays everything more or less correctly now. also
PPV is handled appropriately, populations have thermal and EM
signatures, ruins should now be generate-able.
  • Loading branch information
NathanH- committed Nov 17, 2014
1 parent d491a66 commit aa8d4d7
Show file tree
Hide file tree
Showing 16 changed files with 1,309 additions and 116 deletions.
36 changes: 36 additions & 0 deletions Pulsar4X/Pulsar4X.Lib/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -984,6 +984,42 @@ public static class Faction
public const int FactionMax = 64;
}

/// <summary>
/// Colony related constants
/// </summary>
public static class Colony
{
/// <summary>
/// Thermal signature per million pop.
/// </summary>
public static float CivilianThermalSignature = 5.0f;

/// <summary>
/// EM signature per million pop.
/// </summary>
public static float CivilianEMSignature = 50.0f;


/// <summary>
/// For Thermal and EM signature calculations.
/// </summary>
public static float NavalShipyardTonnageDivisor = 50.0f;

/// <summary>
/// For Thermal and EM signature calculations.
/// </summary>
public static float CommercialShipyardTonnageDivisor = 500.0f;
/// <summary>
/// What sensor strength will a single DSTS add? This is about equal to a full sized thermal sensor array at each tech level.
/// </summary>
public static int[] DeepSpaceStrength = { 250, 300, 400, 550, 700, 900, 1200, 1600, 2000, 2500, 3000, 3750 };

/// <summary>
/// Maximum index to DeepSpaceStrength
/// </summary>
public const int DeepSpaceMax = 11;
}

/// <summary>
/// Tick times to complete said interval.
/// </summary>
Expand Down
2 changes: 2 additions & 0 deletions Pulsar4X/Pulsar4X.Lib/Entities/Faction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1007,6 +1007,7 @@ public Faction(int ID)
FactionTechLevel[(int)Faction.FactionTechnology.MissileAgility] = 0;
FactionTechLevel[(int)Faction.FactionTechnology.TurretTracking] = 0;
FactionTechLevel[(int)Faction.FactionTechnology.ECCM] = 0;
FactionTechLevel[(int)Faction.FactionTechnology.DSTSSensorStrength] = 0;

#warning FastOOB magic numbers
ShipBPTotal = 8000.0m;
Expand Down Expand Up @@ -1094,6 +1095,7 @@ public Faction(string a_oName, Species a_oSpecies, int ID)
FactionTechLevel[(int)Faction.FactionTechnology.MissileAgility] = 0;
FactionTechLevel[(int)Faction.FactionTechnology.TurretTracking] = 0;
FactionTechLevel[(int)Faction.FactionTechnology.ECCM] = 0;
FactionTechLevel[(int)Faction.FactionTechnology.DSTSSensorStrength] = 0;

#warning FastOOB magic numbers
ShipBPTotal = 8000.0m;
Expand Down
2 changes: 1 addition & 1 deletion Pulsar4X/Pulsar4X.Lib/Entities/Gas.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace Pulsar4X.Entities
{
public class Gas
public class Gas : GameEntity
{
public int MoleculeId { get; set; }
public double SurfacePressure { get; set; } //units of millibars (mb)
Expand Down
117 changes: 115 additions & 2 deletions Pulsar4X/Pulsar4X.Lib/Entities/Installation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Pulsar4X.Entities;

namespace Pulsar4X.Entities
Expand All @@ -14,10 +15,12 @@ public enum InstallationType
CivilianMiningComplex,
CommercialShipyard,
ConstructionFactory,
ConventionalIndustry,
DeepSpaceTrackingStation,
FighterFactory,
FinancialCentre,
FuelRefinery,
GeneticModificationCentre,
GroundForceTrainingFacility,
Infrastructure,
MaintenanceFacility,
Expand All @@ -33,13 +36,45 @@ public enum InstallationType
InstallationCount
}

public const int NO_OF_INSTALLATIONS = 20;
public const int NO_OF_INSTALLATIONS = (int)InstallationType.InstallationCount;

public InstallationType Type { get; set; }
/// <summary>
/// amount of wealth and resource units to build.
/// </summary>
public int Cost { get; set; }

/// <summary>
/// Number of this installation that a colony has
/// </summary>
public float Number { get; set; }

/// <summary>
/// Size of this installation for cargo transfering.
/// </summary>
public int Mass { get; set; }


/// <summary>
/// What thermal signature does this installation have.
/// </summary>
public float ThermalSignature { get; set; }

/// <summary>
/// What EM Signature does this installation have.
/// </summary>
public float EMSignature { get; set; }

/// <summary>
/// Shipyard tonnage.
/// </summary>
public BindingList<int> Tonnage { get; set; }

/// <summary>
/// Shipyard slipway count.
/// </summary>
public BindingList<int> Slipways { get; set; }

int[] m_aiMinerialsCost;
public int[] MinerialsCost
{
Expand All @@ -63,8 +98,12 @@ public Installation(InstallationType a_eType)
{
Number = 0;
Mass = 25000;
Tonnage = new BindingList<int>();
Slipways = new BindingList<int>();
Type = a_eType;
m_aiMinerialsCost = new int[Constants.Minerals.NO_OF_MINERIALS];
ThermalSignature = 0;
EMSignature = 0;

switch (a_eType)
{
Expand All @@ -74,11 +113,15 @@ public Installation(InstallationType a_eType)
Cost = 240;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 120;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Corundium] = 120;
ThermalSignature = 5;
EMSignature = 5;
break;
}
case InstallationType.CivilianMiningComplex:
{
Name = "Civilian Mining Complex";
ThermalSignature = 50;
EMSignature = 0;
break;
}
case InstallationType.CommercialShipyard:
Expand All @@ -88,6 +131,14 @@ public Installation(InstallationType a_eType)
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 1200;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Neutronium] = 1200;
Mass = 100000;
Tonnage.Add(10000);
Slipways.Add(1);

/// <summary>
/// For base
/// </summary>
ThermalSignature = 220;
EMSignature = 110;
break;
}
case InstallationType.ConstructionFactory:
Expand All @@ -97,6 +148,19 @@ public Installation(InstallationType a_eType)
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 60;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Tritanium] = 30;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Corundium] = 30;
ThermalSignature = 5;
EMSignature = 5;
break;
}
case InstallationType.ConventionalIndustry:
{
Name = "Conventional Industry";
/// <summary>
/// CI can't be built, but cna be converted for 20 cost to make other installations.
/// </summary>
Cost = 20;
ThermalSignature = 5;
EMSignature = 5;
break;
}
case InstallationType.DeepSpaceTrackingStation:
Expand All @@ -105,6 +169,8 @@ public Installation(InstallationType a_eType)
Cost = 300;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 150;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Uridium] = 150;
ThermalSignature = 5;
EMSignature = 0;
break;
}
case InstallationType.FighterFactory:
Expand All @@ -113,6 +179,8 @@ public Installation(InstallationType a_eType)
Cost = 120;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 30;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Uridium] = 90;
ThermalSignature = 5;
EMSignature = 5;
break;
}
case InstallationType.FinancialCentre:
Expand All @@ -121,13 +189,30 @@ public Installation(InstallationType a_eType)
Cost = 240;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Corbomite] = 120;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Uridium] = 120;
ThermalSignature = 5;
EMSignature = 50;
break;
}
case InstallationType.FuelRefinery:
{
Name = "Fuel Refinery";
Cost = 120;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 120;
ThermalSignature = 5;
EMSignature = 5;
break;
}
case InstallationType.GeneticModificationCentre:
{
Name = "Genetic Modification Centre";
Cost = 2400;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 300;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Corbomite] = 1200;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Boronide] = 600;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Mercassium] = 300;
Mass = 50000;
ThermalSignature = 10;
EMSignature = 50;
break;
}
case InstallationType.GroundForceTrainingFacility:
Expand All @@ -137,6 +222,8 @@ public Installation(InstallationType a_eType)
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 1200;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Neutronium] = 1200;
Mass = 100000;
ThermalSignature = 10;
EMSignature = 100;
break;
}
case InstallationType.Infrastructure:
Expand All @@ -145,6 +232,8 @@ public Installation(InstallationType a_eType)
Cost = 2;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 2;
Mass = 2500;
ThermalSignature = 0.5f;
EMSignature = 0.5f;
break;
}
case InstallationType.MaintenanceFacility:
Expand All @@ -153,6 +242,8 @@ public Installation(InstallationType a_eType)
Cost = 150;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 75;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Neutronium] = 75;
ThermalSignature = 5;
EMSignature = 5;
break;
}
case InstallationType.MassDriver:
Expand All @@ -162,7 +253,8 @@ public Installation(InstallationType a_eType)
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 100;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Neutronium] = 100;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Boronide] = 100;

ThermalSignature = 5;
EMSignature = 5;
break;
}
case InstallationType.MilitaryAcademy:
Expand All @@ -175,6 +267,8 @@ public Installation(InstallationType a_eType)
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Uridium] = 300;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Corundium] = 300;
Mass = 100000;
ThermalSignature = 10;
EMSignature = 100;
break;
}
case InstallationType.Mine:
Expand All @@ -183,6 +277,8 @@ public Installation(InstallationType a_eType)
Cost = 120;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 60;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Corundium] = 60;
ThermalSignature = 5;
EMSignature = 5;
break;
}
case InstallationType.NavalShipyardComplex:
Expand All @@ -192,6 +288,13 @@ public Installation(InstallationType a_eType)
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 1200;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Neutronium] = 1200;
Mass = 100000;
Tonnage.Add(1000);
Slipways.Add(1);
/// <summary>
/// base signatures.
/// </summary>
ThermalSignature = 220;
EMSignature = 110;
break;
}
case InstallationType.OrdnanceFactory:
Expand All @@ -200,6 +303,8 @@ public Installation(InstallationType a_eType)
Cost = 120;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 30;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Tritanium] = 90;
ThermalSignature = 5;
EMSignature = 5;
break;
}
case InstallationType.ResearchLab:
Expand All @@ -209,6 +314,8 @@ public Installation(InstallationType a_eType)
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 1200;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Mercassium] = 1200;
Mass = 100000;
ThermalSignature = 50;
EMSignature = 100;
break;
}
case InstallationType.SectorCommand:
Expand All @@ -220,6 +327,8 @@ public Installation(InstallationType a_eType)
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Mercassium] = 600;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Uridium] = 600;
Mass = 100000;
ThermalSignature = 20;
EMSignature = 150;
break;
}
case InstallationType.Spaceport:
Expand All @@ -232,6 +341,8 @@ public Installation(InstallationType a_eType)
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Mercassium] = 300;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Uridium] = 300;
Mass = 50000;
ThermalSignature = 50;
EMSignature = 100;
break;
}
case InstallationType.TerraformingInstallation:
Expand All @@ -241,6 +352,8 @@ public Installation(InstallationType a_eType)
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Duranium] = 300;
m_aiMinerialsCost[(int)Constants.Minerals.MinerialNames.Boronide] = 300;
Mass = 50000;
ThermalSignature = 100;
EMSignature = 25;
break;
}
}
Expand Down
8 changes: 6 additions & 2 deletions Pulsar4X/Pulsar4X.Lib/Entities/Molecule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@

namespace Pulsar4X.Entities
{
public class Molecule
public class Molecule : GameEntity
{
/// <summary>
/// Does this need an Id separate from the GameEntity Guid?
/// </summary>
public int Id { get; set; }


public string Symbol { get; set; }
public string Name { get; set; }
public double AtomicWeight { get; set; }
public double MeltingPoint { get; set; }
public double BoilingPoint { get; set; }
Expand Down
Loading

0 comments on commit aa8d4d7

Please sign in to comment.