/// <summary> /// This is the component itself, which tracks whether or not it is destroyed, and in the case of fuel/engineering whether the component has a cargo load. /// </summary> /// <param name="definition"></param> public GeneralComponentTN(GeneralComponentDefTN definition) { GenCompDef = definition; Name = definition.Name; /// <summary> /// In the case of destroyed fuel/engineering bays I will assume that all supplies are evenly distributed by percentage and merely subtract an average. /// </summary> isDestroyed = false; }
public void TGOrdersTest() { EngineDefTN EngDef = new EngineDefTN("25 EP Nuclear Thermal Engine", 5, 1.0f, 1.0f, 1.0f, 1, 5, -1.0f); GeneralComponentDefTN CrewQ = new GeneralComponentDefTN("Crew Quarters", 1.0f, 0, 10.0m, ComponentTypeTN.Crew); GeneralComponentDefTN FuelT = new GeneralComponentDefTN("Fuel Storage", 1.0f, 0, 10.0m, ComponentTypeTN.Fuel); GeneralComponentDefTN EBay = new GeneralComponentDefTN("Engineering Spaces", 1.0f, 5, 10.0m, ComponentTypeTN.Engineering); GeneralComponentDefTN Bridge = new GeneralComponentDefTN("Bridge", 1.0f, 5, 10.0m, ComponentTypeTN.Bridge); Faction FID = new Faction(0); StarSystem System = SystemGen.CreateSol(); SystemBody planet = new SystemBody(System.Stars[0], SystemBody.PlanetType.Terrestrial);; System.Stars[0].Planets.Add(planet); Waypoint WP1 = new Waypoint("WP TG Orders", System, 0.1, 0.1, 0); planet.Position.X = 0.0; planet.Position.Y = 0.0; TaskGroupTN TaskGroup1 = new TaskGroupTN("Taskforce 001", FID, planet, System); ShipClassTN test = new ShipClassTN("Ship", FID); test.AddCrewQuarters(CrewQ, 2); test.AddFuelStorage(FuelT, 2); test.AddEngineeringSpaces(EBay, 2); test.AddOtherComponent(Bridge, 1); test.AddEngine(EngDef, 1); TaskGroup1.AddShip(test, "Test Ship"); TaskGroup1.Ships[0].Refuel(200000.0f); Order TGOrder = new Order(Constants.ShipTN.OrderType.MoveTo, -1, -1, 0, WP1); TaskGroup1.IssueOrder(TGOrder); Console.WriteLine("Fuel Remaining:{0}", TaskGroup1.Ships[0].CurrentFuel); while (TaskGroup1.TaskGroupOrders.Count != 0) { TaskGroup1.FollowOrders(5); Console.WriteLine("{0} {1} | {2} {3}", Distance.ToKm(TaskGroup1.Contact.Position.X), Distance.ToKm(TaskGroup1.Contact.Position.Y), TaskGroup1.Contact.Position.X, TaskGroup1.Contact.Position.Y); } Console.WriteLine("Fuel Remaining:{0}", TaskGroup1.Ships[0].CurrentFuel); }
public void TGActiveTest() { EngineDefTN EngDef = new EngineDefTN("25 EP Nuclear Thermal Engine", 5, 1.0f, 1.0f, 1.0f, 1, 5, -1.0f); ActiveSensorDefTN ActDef1 = new ActiveSensorDefTN("Search 5M - 5000", 1.0f, 10, 5, 100, false, 1.0f, 1); ActiveSensorDefTN ActDef2 = new ActiveSensorDefTN("Search 500k - 1", 1.0f, 10, 5, 1, false, 1.0f, 1); ActiveSensorDefTN ActDef3 = new ActiveSensorDefTN("Search 2.2M - 1000", 1.0f, 10, 5, 20, false, 1.0f, 1); ActiveSensorDefTN ActDef4 = new ActiveSensorDefTN("Search 7M - 10000", 1.0f, 10, 5, 200, false, 1.0f, 1); GeneralComponentDefTN CrewQ = new GeneralComponentDefTN("Crew Quarters", 1.0f, 0, 10.0m, ComponentTypeTN.Crew); GeneralComponentDefTN FuelT = new GeneralComponentDefTN("Fuel Storage", 1.0f, 0, 10.0m, ComponentTypeTN.Fuel); GeneralComponentDefTN EBay = new GeneralComponentDefTN("Engineering Spaces", 1.0f, 5, 10.0m, ComponentTypeTN.Engineering); GeneralComponentDefTN Bridge = new GeneralComponentDefTN("Bridge", 1.0f, 5, 10.0m, ComponentTypeTN.Bridge); Faction FID = new Faction(0); StarSystem System = SystemGen.CreateSol(); SystemBody planet = new SystemBody(System.Stars[0], SystemBody.PlanetType.Terrestrial);; System.Stars[0].Planets.Add(planet); TaskGroupTN TaskGroup1 = new TaskGroupTN("Taskforce 001", FID, planet, System); for (int loop = 0; loop < 4; loop++) { ShipClassTN test = new ShipClassTN("Ship", FID); test.AddCrewQuarters(CrewQ, 2); test.AddFuelStorage(FuelT, 2); test.AddEngineeringSpaces(EBay, 2); Console.WriteLine("Bridge isn't present: {0} {1}", test.OtherComponents.IndexOf(Bridge), test.HasBridge); test.AddOtherComponent(Bridge, 1); Console.WriteLine("Bridge is present: {0} {1}", test.OtherComponents.IndexOf(Bridge), test.HasBridge); switch (loop) { case 0: test.AddActiveSensor(ActDef2, 2); break; case 1: test.AddActiveSensor(ActDef1, 2); break; case 2: test.AddActiveSensor(ActDef3, 2); break; case 3: test.AddActiveSensor(ActDef4, 2); break; } TaskGroup1.AddShip(test, "Test Ship"); TaskGroup1.SetActiveSensor(loop, 0, true); TaskGroup1.SetActiveSensor(loop, 1, true); } LinkedListNode<int> EM = TaskGroup1.EMSortList.First; for (int loop = 0; loop < 4; loop++) { Console.WriteLine("{0} {1}", TaskGroup1.Ships[loop].CurrentEMSignature, EM.Value); EM = EM.Next; } for (int loop = 0; loop < Constants.ShipTN.ResolutionMax; loop++) { Console.WriteLine("{0} | {1}", TaskGroup1.TaskGroupLookUpST[loop], loop); } TaskGroup1.SetActiveSensor(2, 0, false); TaskGroup1.SetActiveSensor(2, 1, false); Console.WriteLine("--------------------------------------------"); EM = TaskGroup1.EMSortList.First; for (int loop = 0; loop < 4; loop++) { Console.WriteLine("{0} {1}", TaskGroup1.Ships[loop].CurrentEMSignature, EM.Value); EM = EM.Next; } for (int loop = 0; loop < Constants.ShipTN.ResolutionMax; loop++) { Console.WriteLine("{0} | {1}", TaskGroup1.TaskGroupLookUpST[loop], loop); } }
public void TGPassivesTest() { EngineDefTN EngDef = new EngineDefTN("25 EP Nuclear Thermal Engine", 5, 1.0f, 1.0f, 1.0f, 1, 5, -1.0f); PassiveSensorDefTN ThPasDef1 = new PassiveSensorDefTN("Thermal Sensor TH1-5", 1.0f, 5, PassiveSensorType.Thermal, 1.0f, 1); PassiveSensorDefTN ThPasDef2 = new PassiveSensorDefTN("Thermal Sensor TH1-6", 1.0f, 6, PassiveSensorType.Thermal, 1.0f, 1); PassiveSensorDefTN ThPasDef3 = new PassiveSensorDefTN("Thermal Sensor TH1-8", 1.0f, 8, PassiveSensorType.Thermal, 1.0f, 1); PassiveSensorDefTN ThPasDef4 = new PassiveSensorDefTN("Thermal Sensor TH1-11", 1.0f, 11, PassiveSensorType.Thermal, 1.0f, 1); GeneralComponentDefTN CrewQ = new GeneralComponentDefTN("Crew Quarters", 1.0f, 0, 10.0m, ComponentTypeTN.Crew); GeneralComponentDefTN FuelT = new GeneralComponentDefTN("Fuel Storage", 1.0f, 0, 10.0m, ComponentTypeTN.Fuel); GeneralComponentDefTN EBay = new GeneralComponentDefTN("Engineering Spaces", 1.0f, 5, 10.0m, ComponentTypeTN.Engineering); GeneralComponentDefTN Bridge = new GeneralComponentDefTN("Bridge", 1.0f, 5, 10.0m, ComponentTypeTN.Bridge); Faction FID = new Faction(0); StarSystem System = SystemGen.CreateSol(); SystemBody planet = new SystemBody(System.Stars[0], SystemBody.PlanetType.Terrestrial);; System.Stars[0].Planets.Add(planet); TaskGroupTN TaskGroup1 = new TaskGroupTN("Taskforce 001", FID, planet, System); for (int loop = 0; loop < 4; loop++) { ShipClassTN test = new ShipClassTN("Ship", FID); test.AddCrewQuarters(CrewQ, 2); test.AddFuelStorage(FuelT, 2); test.AddEngineeringSpaces(EBay, 2); test.AddOtherComponent(Bridge, 1); switch (loop) { case 0: test.AddPassiveSensor(ThPasDef2, 5); break; case 1: test.AddPassiveSensor(ThPasDef1, 4); break; case 2: test.AddPassiveSensor(ThPasDef3, 7); break; case 3: test.AddPassiveSensor(ThPasDef4, 6); break; } TaskGroup1.AddShip(test, "Test Ship"); Console.WriteLine("Best Thermal:{0},{1}", TaskGroup1.BestThermal.pSensorDef.rating, TaskGroup1.BestThermalCount); } }
public void TGActiveSortThermalSortTest() { EngineDefTN EngDef = new EngineDefTN("25 EP Nuclear Thermal Engine", 5, 1.0f, 1.0f, 1.0f, 1, 5, -1.0f); GeneralComponentDefTN CrewQ = new GeneralComponentDefTN("Crew Quarters", 1.0f, 0, 10.0m, ComponentTypeTN.Crew); GeneralComponentDefTN FuelT = new GeneralComponentDefTN("Fuel Storage", 1.0f, 0, 10.0m, ComponentTypeTN.Fuel); GeneralComponentDefTN EBay = new GeneralComponentDefTN("Engineering Spaces", 1.0f, 5, 10.0m, ComponentTypeTN.Engineering); GeneralComponentDefTN Bridge = new GeneralComponentDefTN("Bridge", 1.0f, 5, 10.0m, ComponentTypeTN.Bridge); Faction FID = new Faction(0); StarSystem System = SystemGen.CreateSol(); SystemBody planet = new SystemBody(System.Stars[0], SystemBody.PlanetType.Terrestrial);; System.Stars[0].Planets.Add(planet); TaskGroupTN TaskGroup1 = new TaskGroupTN("Taskforce 001", FID, planet, System); for (int loop = 0; loop < 5; loop++) { ShipClassTN test = new ShipClassTN("Ship", FID); test.AddCrewQuarters(CrewQ, 2); test.AddFuelStorage(FuelT, 2); test.AddEngineeringSpaces(EBay, 2); test.AddOtherComponent(Bridge, 1); int add = 0; switch (loop) { case 0: add = 2; break; case 1: add = 4; break; case 2: add = 1; break; case 3: add = 5; break; case 4: add = 3; break; } test.AddEngine(EngDef, (byte)add); Console.WriteLine("Speed:{0}", test.MaxSpeed); TaskGroup1.AddShip(test,"Test Ship"); Console.WriteLine("{0} {1}", TaskGroup1, TaskGroup1.Ships[loop].ShipsTaskGroup); } LinkedListNode<int> AS = TaskGroup1.ActiveSortList.First; LinkedListNode<int> ES = TaskGroup1.EMSortList.First; LinkedListNode<int> TS = TaskGroup1.ThermalSortList.First; for (int loop = 0; loop < 5; loop++) { Console.Write("AL:{0}, EL:{1}, TL:{2} || Ship{3} AL:{4}, EL:{5} TL:{6} |||", AS.Value, ES.Value, TS.Value, loop, TaskGroup1.Ships[loop].ActiveList.Value, TaskGroup1.Ships[loop].EMList.Value, TaskGroup1.Ships[loop].ThermalList.Value); Console.WriteLine("{0} {1} {2} {3} {4} {5} {6}", TaskGroup1.Ships[loop].CurrentSpeed, TaskGroup1.Ships[loop].CurrentEnginePower, TaskGroup1.Ships[loop].CurrentThermalSignature, TaskGroup1.Ships[loop].ShipClass.MaxEnginePower, TaskGroup1.Ships[loop].ShipClass.MaxThermalSignature, TaskGroup1.Ships[loop].CurrentFuelUsePerHour, TaskGroup1.Ships[loop].ShipClass.MaxFuelUsePerHour); AS = AS.Next; ES = ES.Next; TS = TS.Next; } TaskGroup1.Ships[4].CurrentThermalSignature = 500; TaskGroup1.SortShipBySignature(TaskGroup1.Ships[4].ThermalList, TaskGroup1.ThermalSortList, 0); Console.WriteLine("------------------------"); AS = TaskGroup1.ActiveSortList.First; ES = TaskGroup1.EMSortList.First; TS = TaskGroup1.ThermalSortList.First; for (int loop = 0; loop < 5; loop++) { Console.Write("AL:{0}, EL:{1}, TL:{2} || Ship{3} AL:{4}, EL:{5} TL:{6} |||", AS.Value, ES.Value, TS.Value, loop, TaskGroup1.Ships[loop].ActiveList.Value, TaskGroup1.Ships[loop].EMList.Value, TaskGroup1.Ships[loop].ThermalList.Value); Console.WriteLine("{0} {1} {2} {3} {4} {5} {6}", TaskGroup1.Ships[loop].CurrentSpeed, TaskGroup1.Ships[loop].CurrentEnginePower, TaskGroup1.Ships[loop].CurrentThermalSignature, TaskGroup1.Ships[loop].ShipClass.MaxEnginePower, TaskGroup1.Ships[loop].ShipClass.MaxThermalSignature, TaskGroup1.Ships[loop].CurrentFuelUsePerHour, TaskGroup1.Ships[loop].ShipClass.MaxFuelUsePerHour); AS = AS.Next; ES = ES.Next; TS = TS.Next; } }
public void testShip() { Faction newFaction = new Faction(0); /// <summary> /// These would go into a faction component list I think /// </summary> EngineDefTN EngDef = new EngineDefTN("25 EP Nuclear Thermal Engine", 5, 1.0f, 1.0f, 1.0f, 1, 5, -1.0f); ActiveSensorDefTN ActDef = new ActiveSensorDefTN("Search 5M - 5000", 1.0f, 10, 5, 100, false, 1.0f, 1); PassiveSensorDefTN ThPasDef = new PassiveSensorDefTN("Thermal Sensor TH1-5", 1.0f, 5, PassiveSensorType.Thermal, 1.0f, 1); PassiveSensorDefTN EMPasDef = new PassiveSensorDefTN("EM Sensor EM1-5", 1.0f, 5, PassiveSensorType.EM, 1.0f, 1); GeneralComponentDefTN CrewQ = new GeneralComponentDefTN("Crew Quarters", 1.0f, 0, 10.0m, ComponentTypeTN.Crew); GeneralComponentDefTN FuelT = new GeneralComponentDefTN("Fuel Storage", 1.0f, 0, 10.0m, ComponentTypeTN.Fuel); GeneralComponentDefTN EBay = new GeneralComponentDefTN("Engineering Spaces", 1.0f, 5, 10.0m, ComponentTypeTN.Engineering); GeneralComponentDefTN Bridge = new GeneralComponentDefTN("Bridge", 1.0f, 5, 10.0m, ComponentTypeTN.Bridge); ShipClassTN TestClass = new ShipClassTN("Test Ship Class", newFaction); TestClass.AddCrewQuarters(CrewQ, 2); TestClass.AddFuelStorage(FuelT, 2); TestClass.AddEngineeringSpaces(EBay, 2); TestClass.AddOtherComponent(Bridge, 1); TestClass.AddEngine(EngDef, 1); TestClass.AddPassiveSensor(ThPasDef, 1); TestClass.AddPassiveSensor(EMPasDef, 1); TestClass.AddActiveSensor(ActDef, 1); Console.WriteLine("Size: {0}, Crew: {1}, Cost: {2}, HTK: {3}, Tonnage: {4}", TestClass.SizeHS, TestClass.TotalRequiredCrew, TestClass.BuildPointCost, TestClass.TotalHTK, TestClass.SizeTons); Console.WriteLine("HS Accomodations/Required: {0}/{1}, Total Fuel Capacity: {2}, Total MSP: {3}, Engineering percentage: {4}, Has Bridge: {5}, Total Required Crew: {6}", TestClass.AccomHSAvailable, TestClass.AccomHSRequirement, TestClass.TotalFuelCapacity, TestClass.TotalMSPCapacity, (TestClass.EngineeringHS / TestClass.SizeHS), TestClass.HasBridge, TestClass.TotalRequiredCrew); Console.WriteLine("Armor Size: {0}, Cost: {1}", TestClass.ShipArmorDef.size, TestClass.ShipArmorDef.cost); Console.WriteLine("Ship Engine Power: {0}, Ship Thermal Signature: {1}, Ship Fuel Use Per Hour: {2}", TestClass.MaxEnginePower, TestClass.MaxThermalSignature, TestClass.MaxFuelUsePerHour); Console.WriteLine("Best TH: {0}, BestEM: {1}, Max EM Signature: {2}, Total Cross Section: {3}", TestClass.BestThermalRating, TestClass.BestEMRating, TestClass.MaxEMSignature, TestClass.TotalCrossSection); TestClass.AddCrewQuarters(CrewQ, -1); Console.WriteLine("Size: {0}, Crew: {1}, Cost: {2}, HTK: {3}, Tonnage: {4}", TestClass.SizeHS, TestClass.TotalRequiredCrew, TestClass.BuildPointCost, TestClass.TotalHTK, TestClass.SizeTons); Console.WriteLine("HS Accomodations/Required: {0}/{1}, Total Fuel Capacity: {2}, Total MSP: {3}, Engineering percentage: {4}, Has Bridge: {5}, Total Required Crew: {6}", TestClass.AccomHSAvailable, TestClass.AccomHSRequirement, TestClass.TotalFuelCapacity, TestClass.TotalMSPCapacity, (TestClass.EngineeringHS / TestClass.SizeHS), TestClass.HasBridge, TestClass.TotalRequiredCrew); Console.WriteLine("Armor Size: {0}, Cost: {1}", TestClass.ShipArmorDef.size, TestClass.ShipArmorDef.cost); Console.WriteLine("Ship Engine Power: {0}, Ship Thermal Signature: {1}, Ship Fuel Use Per Hour: {2}", TestClass.MaxEnginePower, TestClass.MaxThermalSignature, TestClass.MaxFuelUsePerHour); Console.WriteLine("Best TH: {0}, BestEM: {1}, Max EM Signature: {2}, Total Cross Section: {3}", TestClass.BestThermalRating, TestClass.BestEMRating, TestClass.MaxEMSignature, TestClass.TotalCrossSection); TestClass.AddCrewQuarters(CrewQ, -1); Console.WriteLine("Size: {0}, Crew: {1}, Cost: {2}, HTK: {3}, Tonnage: {4}", TestClass.SizeHS, TestClass.TotalRequiredCrew, TestClass.BuildPointCost, TestClass.TotalHTK, TestClass.SizeTons); Console.WriteLine("HS Accomodations/Required: {0}/{1}, Total Fuel Capacity: {2}, Total MSP: {3}, Engineering percentage: {4}, Has Bridge: {5}, Total Required Crew: {6}", TestClass.AccomHSAvailable, TestClass.AccomHSRequirement, TestClass.TotalFuelCapacity, TestClass.TotalMSPCapacity, (TestClass.EngineeringHS / TestClass.SizeHS), TestClass.HasBridge, TestClass.TotalRequiredCrew); Console.WriteLine("Armor Size: {0}, Cost: {1}", TestClass.ShipArmorDef.size, TestClass.ShipArmorDef.cost); Console.WriteLine("Ship Engine Power: {0}, Ship Thermal Signature: {1}, Ship Fuel Use Per Hour: {2}", TestClass.MaxEnginePower, TestClass.MaxThermalSignature, TestClass.MaxFuelUsePerHour); Console.WriteLine("Best TH: {0}, BestEM: {1}, Max EM Signature: {2}, Total Cross Section: {3}", TestClass.BestThermalRating, TestClass.BestEMRating, TestClass.MaxEMSignature, TestClass.TotalCrossSection); TestClass.AddCrewQuarters(CrewQ, 2); StarSystem System1 = SystemGen.CreateSol(); SystemBody pl1 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); System1.Stars[0].Planets.Add(pl1); TaskGroupTN newTG = new TaskGroupTN("TG", newFaction, System1.Stars[0].Planets[0], System1); ShipTN testShip = new ShipTN(TestClass, 0, 0, newTG, newFaction, "Test Ship"); testShip.CrewQuarters[0].isDestroyed = true; for (int loop = 0; loop < testShip.CrewQuarters.Count; loop++) { Console.WriteLine("Crew Quarters {0} isDestroyed:{1}", loop + 1, testShip.CrewQuarters[loop].isDestroyed); } testShip.CrewQuarters[0].isDestroyed = false; Console.WriteLine("Engine Power/Fuel Usage/Thermal Signature/Speed: {0}/{1}/{2}/{3}", testShip.CurrentEnginePower, testShip.CurrentFuelUsePerHour, testShip.CurrentThermalSignature, testShip.CurrentSpeed); testShip.SetSpeed(1000); Console.WriteLine("Engine Power/Fuel Usage/Thermal Signature/Speed: {0}/{1}/{2}/{3}", testShip.CurrentEnginePower, testShip.CurrentFuelUsePerHour, testShip.CurrentThermalSignature, testShip.CurrentSpeed); Console.WriteLine("Current Crew/Fuel/MSP: {0}/{1}/{2}", testShip.CurrentCrew, testShip.CurrentFuel, testShip.CurrentMSP); int CrewSource = 100000; float FuelSource = 100000.0f; int MSPSource = 100000; CrewSource = testShip.Recrew(CrewSource); FuelSource = testShip.Refuel(FuelSource); MSPSource = testShip.Resupply(MSPSource); Console.WriteLine("Current Crew/Fuel/MSP: {0}/{1}/{2} Source: {3}/{4}/{5}", testShip.CurrentCrew, testShip.CurrentFuel, testShip.CurrentMSP, CrewSource, FuelSource, MSPSource); Console.WriteLine("Current EM Signature: {0}", testShip.CurrentEMSignature); bool isActive = true; testShip.SetSensor(testShip.ShipASensor[0], isActive); Console.WriteLine("Current EM Signature: {0}", testShip.CurrentEMSignature); isActive = false; testShip.SetSpeed(1500); testShip.SetSensor(testShip.ShipASensor[0], isActive); Console.WriteLine("Engine Power/Fuel Usage/Thermal Signature/Speed: {0}/{1}/{2}/{3}", testShip.CurrentEnginePower, testShip.CurrentFuelUsePerHour, testShip.CurrentThermalSignature, testShip.CurrentSpeed); Console.WriteLine("Current EM Signature: {0}", testShip.CurrentEMSignature); }
/// <summary> /// Every faction will start with some components defined and ready to use, though the engines and sensors shouldn't be here just yet. /// </summary> public void AddInitialComponents() { /// <summary> /// Watch total component count when adding or subtracting from this function /// </summary> TotalComponents = 0; GeneralComponentDefTN CrewQ = new GeneralComponentDefTN("Crew Quarters", 1.0f, 0, 10.0m, ComponentTypeTN.Crew); GeneralComponentDefTN CrewQS = new GeneralComponentDefTN("Crew Quarters - Small", 0.2f, 0, 2.0m, ComponentTypeTN.Crew); GeneralComponentDefTN FuelT = new GeneralComponentDefTN("Fuel Storage", 1.0f, 0, 10.0m, ComponentTypeTN.Fuel); GeneralComponentDefTN FuelTS = new GeneralComponentDefTN("Fuel Storage - Small", 0.2f, 0, 3.0m, ComponentTypeTN.Fuel); GeneralComponentDefTN EBay = new GeneralComponentDefTN("Engineering Spaces", 1.0f, 5, 10.0m, ComponentTypeTN.Engineering); GeneralComponentDefTN Bridge = new GeneralComponentDefTN("Bridge", 1.0f, 5, 10.0m, ComponentTypeTN.Bridge); TotalComponents = TotalComponents + 6; CrewQuarters.Add(CrewQ); CrewQuarters.Add(CrewQS); FuelStorage.Add(FuelT); FuelStorage.Add(FuelTS); EngineeringSpaces.Add(EBay); OtherComponents.Add(Bridge); /// <summary> /// These components aren't really basic, but I'll put them in anyway for the time being. Count 6 to 17 /// </summary> EngineDefTN EngDef = new EngineDefTN("25 EP Nuclear Thermal Engine", 5.0f, 1.0f, 1.0f, 1.0f, 1, 5, -1.0f); ActiveSensorDefTN ActDef = new ActiveSensorDefTN("Search 5M - 5000", 1.0f, 10, 5, 100, false, 1.0f, 1); PassiveSensorDefTN ThPasDef = new PassiveSensorDefTN("Thermal Sensor TH1-5", 1.0f, 5, PassiveSensorType.Thermal, 1.0f, 1); PassiveSensorDefTN EMPasDef = new PassiveSensorDefTN("EM Sensor EM1-5", 1.0f, 5, PassiveSensorType.EM, 1.0f, 1); BeamFireControlDefTN BFCDef = new BeamFireControlDefTN("Fire Control S01 10-1250", 0, 0, 1.0f, 1.0f, false, false, 1.0f, 1); BeamDefTN BeamDef = new BeamDefTN("10cm C1 Infrared Laser", ComponentTypeTN.Laser, 0, 0, 0, 1.0f); ReactorDefTN ReactDef = new ReactorDefTN("PWR S1 P2", 0, 1.0f, 1.0f); ShieldDefTN AShieldDef = new ShieldDefTN("Alpha R300/240 Shields", 0, 0, 1.0f, 1.0f, ComponentTypeTN.Shield); MissileLauncherDefTN TubeDef = new MissileLauncherDefTN("Size 1 Launcher", 1.0f, 1, false, 0); MagazineDefTN MagDef = new MagazineDefTN("Mag S1", 1.0f, 1, 0, 0, 1); ActiveSensorDefTN MFCDef = new ActiveSensorDefTN("Wasp I FC", 1.0f, 10, 5, 100, true, 1.0f, 1); TotalComponents = TotalComponents + 11; Engines.Add(EngDef); ActiveSensorDef.Add(ActDef); PassiveSensorDef.Add(ThPasDef); PassiveSensorDef.Add(EMPasDef); BeamFireControlDef.Add(BFCDef); BeamWeaponDef.Add(BeamDef); ReactorDef.Add(ReactDef); ShieldDef.Add(AShieldDef); MLauncherDef.Add(TubeDef); MagazineDef.Add(MagDef); MissileFireControlDef.Add(MFCDef); TurretableBeamDef.Add(BeamDef); /// <summary> /// Everyone starts with cargoholds. Count 17 to 19 /// </summary> CargoDefTN CargoStandard = new CargoDefTN("Cargo Hold - Standard", 500.0f, 50.0m, 5); CargoDefTN CargoSmall = new CargoDefTN("Cargo Hold - Small", 100.0f, 12.5m, 2); TotalComponents = TotalComponents + 2; CargoHoldDef.Add(CargoStandard); CargoHoldDef.Add(CargoSmall); /// <summary> /// Cryostorage is a TN only starting option. otherwise it must be researched. Count, 19 to 22 /// </summary> ColonyDefTN ColonyStandard = new ColonyDefTN("Cryogenic Transport", 50.0f, 100.0m, 10); ColonyDefTN ColonySmall = new ColonyDefTN("Cryogenic Transport - Small", 5.0f, 20.0m, 2); ColonyDefTN ColonyEmergency = new ColonyDefTN("Cryogenic Transport - Emergency", 1.0f, 5.0m, 0); TotalComponents = TotalComponents + 3; ColonyBayDef.Add(ColonyStandard); ColonyBayDef.Add(ColonySmall); ColonyBayDef.Add(ColonyEmergency); /// <summary> /// Only TN starts begin with this component for now. the improved,advanced, and grav-assisted variants have to be researched. Count 22, to 23 /// </summary> CargoHandlingDefTN CHS = new CargoHandlingDefTN("Cargo Handling System", 5, 10.0m); CargoHandleSystemDef.Add(CHS); TotalComponents = TotalComponents + 1; /// <summary> /// Alpha build components: Count 23, to 39 /// </summary> EngineDefTN AlphaEngine = new EngineDefTN("Ion Engine 120", 12.0f, 1.0f, 0.7f, 1.0f, 1, 10.0f, -1.0f); ActiveSensorDefTN AlphaBigSensor = new ActiveSensorDefTN("Search 181M - 10000", 10.0f, 16, 8, 200, false, 1.0f, 1); ActiveSensorDefTN AlphaSmallSensor = new ActiveSensorDefTN("Search 57M - 1000", 10.0f, 16, 8, 20, false, 1.0f, 1); ActiveSensorDefTN AlphaMissileSensor = new ActiveSensorDefTN("Search 1.4M - Missile", 10.0f, 16, 8, 1, false, 1.0f, 1); PassiveSensorDefTN AlphaEMSensor = new PassiveSensorDefTN("EM Detection Sensor EM10-80", 10.0f, 8, PassiveSensorType.EM, 1.0f, 1); PassiveSensorDefTN AlphaTHSensor = new PassiveSensorDefTN("TH Detection Sensor TH10-80", 10.0f, 8, PassiveSensorType.Thermal, 1.0f, 1); BeamFireControlDefTN AlphaFireControl = new BeamFireControlDefTN("Primary III FC R96K T6K", 2, 2, 4.0f, 2.0f, false, false, 1.0f, 1); BeamDefTN AlphaRailGun = new BeamDefTN("15cm Railgun V3/C3", ComponentTypeTN.Rail, 2, 2, 2, 1.0f); BeamDefTN AlphaLaser = new BeamDefTN("15cm C3 Near UV Laser", ComponentTypeTN.Laser, 2, 2, 2, 1.0f); BeamDefTN AlphaParticle = new BeamDefTN("PBW-4 150K", ComponentTypeTN.Particle, 2, 2, 2, 1.0f); BeamDefTN AlphaPlasma = new BeamDefTN("15cm C3 Plasma Beam", ComponentTypeTN.Plasma, 2, 2, 2, 1.0f); BeamDefTN AlphaMeson = new BeamDefTN("R9/C3 Meson Cannon", ComponentTypeTN.Meson, 2, 2, 2, 1.0f); BeamDefTN AlphaHPM = new BeamDefTN("R9/C3 Microwave", ComponentTypeTN.Microwave, 2, 2, 2, 1.0f); BeamDefTN AlphaGauss = new BeamDefTN("Gauss R3-100", ComponentTypeTN.Gauss, 0, 2, 2, 1.0f); ReactorDefTN AlphaReactor = new ReactorDefTN("GCFR S1 P4.5", 2, 1.0f, 1.0f); ShieldDefTN AlphaShield = new ShieldDefTN("Gamma R300/336 Shields", 2, 2, 0.7f, 1.0f, ComponentTypeTN.Shield); TotalComponents = TotalComponents + 16; Engines.Add(AlphaEngine); ActiveSensorDef.Add(AlphaBigSensor); ActiveSensorDef.Add(AlphaSmallSensor); ActiveSensorDef.Add(AlphaMissileSensor); PassiveSensorDef.Add(AlphaEMSensor); PassiveSensorDef.Add(AlphaTHSensor); BeamFireControlDef.Add(AlphaFireControl); BeamWeaponDef.Add(AlphaRailGun); BeamWeaponDef.Add(AlphaLaser); BeamWeaponDef.Add(AlphaParticle); BeamWeaponDef.Add(AlphaPlasma); BeamWeaponDef.Add(AlphaMeson); BeamWeaponDef.Add(AlphaHPM); BeamWeaponDef.Add(AlphaGauss); ReactorDef.Add(AlphaReactor); ShieldDef.Add(AlphaShield); TurretableBeamDef.Add(AlphaLaser); TurretableBeamDef.Add(AlphaMeson); TurretableBeamDef.Add(AlphaGauss); /// <summary> /// Missile Combat Alpha Components: Count at 44 from 39 OrdnanceDefTN and MissileEngineDefTN are _NOT_ included in the total count. /// </summary> EngineDefTN AlphaMCEngine = new EngineDefTN("Military 5000 EP Photonic Drive", 100.0f, 1.0f, 0.1f, 1.0f, 1, 50.0f, -1.0f); ActiveSensorDefTN AlphaMCSensor = new ActiveSensorDefTN("Active Search Sensor MR13500-R100", 10.0f, 180, 75, 100, false, 1.0f, 0); ActiveSensorDefTN AlphaMCMissileFireControl = new ActiveSensorDefTN("Missile Fire Control FC40500-R100", 10.0f, 180, 75, 100, true, 1.0f, 0); MagazineDefTN MagazineMCDef = new MagazineDefTN("Capacity 587 Magazine: Exp 1% HTK4", 30.0f, 4, 8, 8, 12); MissileLauncherDefTN TubeMCDef = new MissileLauncherDefTN("Size 4 Launcher", 4.0f, 11, false, 0); MissileEngineDefTN MissileEngineMCDef = new MissileEngineDefTN("Photonic Missile Drive", 100.0f, 1.0f, 0.1f, 1.5f); OrdnanceDefTN MissileMCDef = new OrdnanceDefTN("Size 4 Missile", null, 0.5f, 11, 1.0f, 1.0f, 11, 0.0f, 0, 0.0f, 0, 0.0f, 0, 0.0f, 0, 100, 0, 0.0f, 0.0f, 0, false, 0, false, 0, MissileEngineMCDef, 1); TotalComponents = TotalComponents + 5; Engines.Add(AlphaMCEngine); ActiveSensorDef.Add(AlphaMCSensor); MissileFireControlDef.Add(AlphaMCMissileFireControl); MagazineDef.Add(MagazineMCDef); MLauncherDef.Add(TubeMCDef); MissileEngineDef.Add(MissileEngineMCDef); MissileDef.Add(MissileMCDef); MissileLauncherDefTN TubeAMMDef = new MissileLauncherDefTN("Size 1 Launcher", 1.0f, 11, false, 0); MissileEngineDefTN MissileEngineAMMDef = new MissileEngineDefTN("Small Photonic Missile Drive", 100.0f, 6.0f, 0.1f, 0.4f); ActiveSensorDefTN AMMSensor = new ActiveSensorDefTN("AMM Sensor", 10.0f, 180, 75, 1, false, 1.0f, 0); ActiveSensorDefTN AMMMFC = new ActiveSensorDefTN("AMM MFC", 10.0f, 180, 75, 1, true, 1.0f, 0); OrdnanceDefTN MissileAMMDef = new OrdnanceDefTN("Size 1 Missile", null, 0.14f, 11, 0.23f, 0.23f, 11, 0.0f, 0, 0.0f, 0, 0.0f, 0, 0.0f, 0, 1, 0, 0.0f, 0.0f, 0, false, 0, false, 0, MissileEngineAMMDef, 1); TotalComponents = TotalComponents + 3; MLauncherDef.Add(TubeAMMDef); MissileEngineDef.Add(MissileEngineAMMDef); ActiveSensorDef.Add(AMMSensor); MissileFireControlDef.Add(AMMMFC); MissileDef.Add(MissileAMMDef); }
/// <summary> /// Every faction will start with some components defined and ready to use, though the engines and sensors shouldn't be here just yet. /// </summary> public void AddInitialComponents() { /// <summary> /// Watch total component count when adding or subtracting from this function /// </summary> TotalComponents = 0; GeneralComponentDefTN CrewQ = new GeneralComponentDefTN("Crew Quarters", 1.0f, 0, 10.0m, ComponentTypeTN.Crew); GeneralComponentDefTN CrewQS = new GeneralComponentDefTN("Crew Quarters - Small", 0.2f, 0, 2.0m, ComponentTypeTN.Crew); GeneralComponentDefTN FuelT = new GeneralComponentDefTN("Fuel Storage", 1.0f, 0, 10.0m, ComponentTypeTN.Fuel); GeneralComponentDefTN FuelTS = new GeneralComponentDefTN("Fuel Storage - Small", 0.2f, 0, 3.0m, ComponentTypeTN.Fuel); GeneralComponentDefTN EBay = new GeneralComponentDefTN("Engineering Spaces", 1.0f, 5, 10.0m, ComponentTypeTN.Engineering); GeneralComponentDefTN Bridge = new GeneralComponentDefTN("Bridge", 1.0f, 5, 10.0m, ComponentTypeTN.Bridge); TotalComponents = TotalComponents + 6; CrewQuarters.Add(CrewQ); CrewQuarters.Add(CrewQS); FuelStorage.Add(FuelT); FuelStorage.Add(FuelTS); EngineeringSpaces.Add(EBay); OtherComponents.Add(Bridge); /// <summary> /// These components aren't really basic, but I'll put them in anyway for the time being. Count 6 to 17 /// </summary> EngineDefTN EngDef = new EngineDefTN("25 EP Nuclear Thermal Engine", 5.0f, 1.0f, 1.0f, 1.0f, 1, 5, -1.0f); ActiveSensorDefTN ActDef = new ActiveSensorDefTN("Search 5M - 5000", 1.0f, 10, 5, 100, false, 1.0f, 1); PassiveSensorDefTN ThPasDef = new PassiveSensorDefTN("Thermal Sensor TH1-5", 1.0f, 5, PassiveSensorType.Thermal, 1.0f, 1); PassiveSensorDefTN EMPasDef = new PassiveSensorDefTN("EM Sensor EM1-5", 1.0f, 5, PassiveSensorType.EM, 1.0f, 1); BeamFireControlDefTN BFCDef = new BeamFireControlDefTN("Fire Control S01 10-1250", 0, 0, 1.0f, 1.0f, false, false, 1.0f, 1); BeamDefTN BeamDef = new BeamDefTN("10cm C1 Infrared Laser", ComponentTypeTN.Laser, 0, 0, 0, 1.0f); ReactorDefTN ReactDef = new ReactorDefTN("PWR S1 P2", 0, 1.0f, 1.0f); ShieldDefTN AShieldDef = new ShieldDefTN("Alpha R300/240 Shields", 0, 0, 1.0f, 1.0f, ComponentTypeTN.Shield); MissileLauncherDefTN TubeDef = new MissileLauncherDefTN("Size 1 Launcher", 1.0f, 1, false, 0); MagazineDefTN MagDef = new MagazineDefTN("Mag S1", 1.0f, 1, 0, 0, 1); ActiveSensorDefTN MFCDef = new ActiveSensorDefTN("Wasp I FC", 1.0f, 10, 5, 100, true, 1.0f, 1); TotalComponents = TotalComponents + 11; Engines.Add(EngDef); ActiveSensorDef.Add(ActDef); PassiveSensorDef.Add(ThPasDef); PassiveSensorDef.Add(EMPasDef); BeamFireControlDef.Add(BFCDef); BeamWeaponDef.Add(BeamDef); ReactorDef.Add(ReactDef); ShieldDef.Add(AShieldDef); MLauncherDef.Add(TubeDef); MagazineDef.Add(MagDef); MissileFireControlDef.Add(MFCDef); TurretableBeamDef.Add(BeamDef); /// <summary> /// Everyone starts with cargoholds. Count 17 to 19 /// </summary> CargoDefTN CargoStandard = new CargoDefTN("Cargo Hold - Standard", 500.0f, 50.0m, 5); CargoDefTN CargoSmall = new CargoDefTN("Cargo Hold - Small", 100.0f, 12.5m, 2); TotalComponents = TotalComponents + 2; CargoHoldDef.Add(CargoStandard); CargoHoldDef.Add(CargoSmall); /// <summary> /// Cryostorage is a TN only starting option. otherwise it must be researched. Count, 19 to 22 /// </summary> ColonyDefTN ColonyStandard = new ColonyDefTN("Cryogenic Transport", 50.0f, 100.0m, 10); ColonyDefTN ColonySmall = new ColonyDefTN("Cryogenic Transport - Small", 5.0f, 20.0m, 2); ColonyDefTN ColonyEmergency = new ColonyDefTN("Cryogenic Transport - Emergency", 1.0f, 5.0m, 0); TotalComponents = TotalComponents + 3; ColonyBayDef.Add(ColonyStandard); ColonyBayDef.Add(ColonySmall); ColonyBayDef.Add(ColonyEmergency); /// <summary> /// Only TN starts begin with this component for now. the improved,advanced, and grav-assisted variants have to be researched. Count 22, to 23 /// </summary> CargoHandlingDefTN CHS = new CargoHandlingDefTN("Cargo Handling System", 5, 10.0m); CargoHandleSystemDef.Add(CHS); TotalComponents = TotalComponents + 1; /// <summary> /// Alpha build components: Count 23, to 39 /// </summary> EngineDefTN AlphaEngine = new EngineDefTN("Ion Engine 120", 12.0f, 1.0f, 0.7f, 1.0f, 1, 10.0f, -1.0f); ActiveSensorDefTN AlphaBigSensor = new ActiveSensorDefTN("Search 181M - 10000", 10.0f, 16, 8, 200, false, 1.0f, 1); ActiveSensorDefTN AlphaSmallSensor = new ActiveSensorDefTN("Search 57M - 1000", 10.0f, 16, 8, 20, false, 1.0f, 1); ActiveSensorDefTN AlphaMissileSensor = new ActiveSensorDefTN("Search 1.4M - Missile", 10.0f, 16, 8, 1, false, 1.0f, 1); PassiveSensorDefTN AlphaEMSensor = new PassiveSensorDefTN("EM Detection Sensor EM10-80", 10.0f, 8, PassiveSensorType.EM, 1.0f, 1); PassiveSensorDefTN AlphaTHSensor = new PassiveSensorDefTN("TH Detection Sensor TH10-80", 10.0f, 8, PassiveSensorType.Thermal, 1.0f, 1); BeamFireControlDefTN AlphaFireControl = new BeamFireControlDefTN("Primary III FC R96K T6K", 2, 2, 4.0f, 2.0f, false, false, 1.0f, 1); BeamDefTN AlphaRailGun = new BeamDefTN("15cm Railgun V3/C3", ComponentTypeTN.Rail, 2, 2, 2, 1.0f); BeamDefTN AlphaLaser = new BeamDefTN("15cm C3 Near UV Laser", ComponentTypeTN.Laser, 2, 2, 2, 1.0f); BeamDefTN AlphaParticle = new BeamDefTN("PBW-4 150K", ComponentTypeTN.Particle, 2, 2, 2, 1.0f); BeamDefTN AlphaPlasma = new BeamDefTN("15cm C3 Plasma Beam", ComponentTypeTN.Plasma, 2, 2, 2, 1.0f); BeamDefTN AlphaMeson = new BeamDefTN("R9/C3 Meson Cannon", ComponentTypeTN.Meson, 2, 2, 2, 1.0f); BeamDefTN AlphaHPM = new BeamDefTN("R9/C3 Microwave", ComponentTypeTN.Microwave, 2, 2, 2, 1.0f); BeamDefTN AlphaGauss = new BeamDefTN("Gauss R3-100", ComponentTypeTN.Gauss, 0, 2, 2, 1.0f); ReactorDefTN AlphaReactor = new ReactorDefTN("GCFR S1 P4.5", 2, 1.0f, 1.0f); ShieldDefTN AlphaShield = new ShieldDefTN("Gamma R300/336 Shields", 2, 2, 0.7f, 1.0f, ComponentTypeTN.Shield); TotalComponents = TotalComponents + 16; Engines.Add(AlphaEngine); ActiveSensorDef.Add(AlphaBigSensor); ActiveSensorDef.Add(AlphaSmallSensor); ActiveSensorDef.Add(AlphaMissileSensor); PassiveSensorDef.Add(AlphaEMSensor); PassiveSensorDef.Add(AlphaTHSensor); BeamFireControlDef.Add(AlphaFireControl); BeamWeaponDef.Add(AlphaRailGun); BeamWeaponDef.Add(AlphaLaser); BeamWeaponDef.Add(AlphaParticle); BeamWeaponDef.Add(AlphaPlasma); BeamWeaponDef.Add(AlphaMeson); BeamWeaponDef.Add(AlphaHPM); BeamWeaponDef.Add(AlphaGauss); ReactorDef.Add(AlphaReactor); ShieldDef.Add(AlphaShield); TurretableBeamDef.Add(AlphaLaser); TurretableBeamDef.Add(AlphaMeson); TurretableBeamDef.Add(AlphaGauss); /// <summary> /// Missile Combat Alpha Components: Count at 44 from 39 OrdnanceDefTN and MissileEngineDefTN are _NOT_ included in the total count. /// </summary> EngineDefTN AlphaMCEngine = new EngineDefTN("Military 5000 EP Photonic Drive", 100.0f, 1.0f, 0.1f, 1.0f, 1, 50.0f, -1.0f); ActiveSensorDefTN AlphaMCSensor = new ActiveSensorDefTN("Active Search Sensor MR13500-R100", 10.0f, 180, 75, 100, false, 1.0f, 0); ActiveSensorDefTN AlphaMCMissileFireControl = new ActiveSensorDefTN("Missile Fire Control FC40500-R100", 10.0f, 180, 75, 100, true, 1.0f, 0); MagazineDefTN MagazineMCDef = new MagazineDefTN("Capacity 587 Magazine: Exp 1% HTK4", 30.0f, 4, 8, 8, 12); MissileLauncherDefTN TubeMCDef = new MissileLauncherDefTN("Size 4 Launcher", 4.0f, 11, false, 0); MissileEngineDefTN MissileEngineMCDef = new MissileEngineDefTN("Photonic Missile Drive", 100.0f, 1.0f, 0.1f, 1.5f); OrdnanceDefTN MissileMCDef = new OrdnanceDefTN("Size 4 Missile", null, 0.5f, 11, 1.0f, 1.0f, 11, 0.0f, 0, 0.0f, 0, 0.0f, 0, 0.0f, 0, 100, 0, 0.0f, 0.0f, 0, false, 0, false, 0, MissileEngineMCDef, 1); TotalComponents = TotalComponents + 5; Engines.Add(AlphaMCEngine); ActiveSensorDef.Add(AlphaMCSensor); MissileFireControlDef.Add(AlphaMCMissileFireControl); MagazineDef.Add(MagazineMCDef); MLauncherDef.Add(TubeMCDef); MissileEngineDef.Add(MissileEngineMCDef); MissileDef.Add(MissileMCDef); MissileLauncherDefTN TubeAMMDef = new MissileLauncherDefTN("Size 1 Launcher", 1.0f, 11, false, 0); MissileEngineDefTN MissileEngineAMMDef = new MissileEngineDefTN("Small Photonic Missile Drive", 100.0f, 6.0f, 0.1f, 0.4f); ActiveSensorDefTN AMMSensor = new ActiveSensorDefTN("AMM Sensor", 10.0f, 180, 75, 1, false, 1.0f, 0); ActiveSensorDefTN AMMMFC = new ActiveSensorDefTN("AMM MFC", 10.0f, 180, 75, 1, true, 1.0f, 0); OrdnanceDefTN MissileAMMDef = new OrdnanceDefTN("Size 1 Missile", null, 0.14f, 11, 0.23f, 0.23f, 11, 0.0f, 0, 0.0f, 0, 0.0f, 0, 0.0f, 0, 1, 0, 0.0f, 0.0f, 0, false, 0, false, 0, MissileEngineAMMDef, 1); TotalComponents = TotalComponents + 3; MLauncherDef.Add(TubeAMMDef); MissileEngineDef.Add(MissileEngineAMMDef); ActiveSensorDef.Add(AMMSensor); MissileFireControlDef.Add(AMMMFC); MissileDef.Add(MissileAMMDef); /// <summary> /// Sensor components should be added upon researching the appropriate technology, as they cannot be designed, Count should be at 46 /// </summary> SurveySensorDefTN GeoSurvey = new SurveySensorDefTN("Geological Survey Sensor", SurveySensorDefTN.SurveySensorType.Geological, 1.0f); SurveySensorDefTN GravSurvey = new SurveySensorDefTN("Gravitational Survey Sensor", SurveySensorDefTN.SurveySensorType.Gravitational, 1.0f); SurveySensorDef.Add(GeoSurvey); SurveySensorDef.Add(GravSurvey); TotalComponents = TotalComponents + 2; }
/// <summary> /// AddOtherComponent handles specialty general components. To Subtract add a negative number of the component. /// </summary> /// <param name="Other">The Component Definition.</param> /// <param name="inc">The number of components.</param> public void AddOtherComponent(GeneralComponentDefTN Other, short inc) { /// <summary> /// Wrong type of generalComponent def sent to add Other Component. /// </summary> if (Other.componentType < ComponentTypeTN.Bridge) { return; } int OtherCompIndex = OtherComponents.IndexOf(Other); if (OtherCompIndex != -1) { OtherComponentsCount[OtherCompIndex] = (ushort)((short)OtherComponentsCount[OtherCompIndex] + inc); } if (OtherCompIndex == -1 && inc >= 1) { OtherComponents.Add(Other); OtherComponentsCount.Add((ushort)inc); } else { if (OtherCompIndex != -1) { if (OtherComponentsCount[OtherCompIndex] <= 0) { OtherComponentsCount.RemoveAt(OtherCompIndex); OtherComponents.RemoveAt(OtherCompIndex); } } else { /// <summary> /// Error here so return. /// </summary> return; } } if (Other.componentType == ComponentTypeTN.Bridge) { HasBridge = true; //***Fill in the rest of this if statement for other components, and subtracting components. } UpdateClass(Other, inc); }
/// <summary> /// Adds engineering bays to the design. subtracts now. /// </summary> /// <param name="EBay">Component definition.</param> /// <param name="inc">Number of components.</param> public void AddEngineeringSpaces(GeneralComponentDefTN EBay, short inc) { /// <summary> /// Wrong type of generalComponent def sent to add Engineering Spaces. /// </summary> if (EBay.componentType != ComponentTypeTN.Engineering) { return; } int EBayIndex = EngineeringBays.IndexOf(EBay); if (EBayIndex != -1) { EngineeringBaysCount[EBayIndex] = (ushort)((short)EngineeringBaysCount[EBayIndex] + inc); } if (EBayIndex == -1 && inc >= 1) { EngineeringBays.Add(EBay); EngineeringBaysCount.Add((ushort)inc); } else { if (EBayIndex != -1) { if (EngineeringBaysCount[EBayIndex] <= 0) { EngineeringBaysCount.RemoveAt(EBayIndex); EngineeringBays.RemoveAt(EBayIndex); } } else { /// <summary> /// Error message? /// </summary> return; } } EngineeringHS = EngineeringHS + (EBay.size * (float)inc); UpdateClass(EBay, inc); }
/// <summary> /// Adds the specified Fuel Tanks to the ship. Subtracts now. /// </summary> /// <param name="FuelT">Fuel tank definition</param> /// <param name="inc">number of fuel tanks.</param> public void AddFuelStorage(GeneralComponentDefTN FuelT, short inc) { /// <summary> /// Wrong type of generalComponent def sent to add Fuel Storage. /// </summary> if (FuelT.componentType != ComponentTypeTN.Fuel) { return; } int FuelIndex = FuelTanks.IndexOf(FuelT); if (FuelIndex != -1) { FuelTanksCount[FuelIndex] = (ushort)((short)FuelTanksCount[FuelIndex] + inc); } if (FuelIndex == -1 && inc >= 1) { FuelTanks.Add(FuelT); FuelTanksCount.Add((ushort)inc); } else { if (FuelIndex != -1) { if (FuelTanksCount[FuelIndex] <= 0) { FuelTanksCount.RemoveAt(FuelIndex); FuelTanks.RemoveAt(FuelIndex); } } else { /// <summary> /// Perhaps some kind of error should be noted here. /// </summary> return; } } TotalFuelCapacity = TotalFuelCapacity + (FuelT.size * (float)inc * 50000.0f); UpdateClass(FuelT, inc); }
/// <summary> /// Adds the specified crew quarter component to the ship. Subtracts now. /// </summary> /// <param name="CrewQ">General Component Crew Quarter definition.</param> /// <param name="inc">Number of crew quarters to add, or subtract.</param> public void AddCrewQuarters(GeneralComponentDefTN CrewQ, short inc) { /// <summary> /// Wrong type of generalComponent def sent to add crew quarters. What error should be sent? /// </summary> if (CrewQ.componentType != ComponentTypeTN.Crew) { return; } int CrewIndex = CrewQuarters.IndexOf(CrewQ); if (CrewIndex != -1) { CrewQuartersCount[CrewIndex] = (ushort)((short)CrewQuartersCount[CrewIndex] + inc); } if (CrewIndex == -1 && inc >= 1) { CrewQuarters.Add(CrewQ); CrewQuartersCount.Add((ushort)inc); } else { if (CrewIndex != -1) { if (CrewQuartersCount[CrewIndex] <= 0) { CrewQuartersCount.RemoveAt(CrewIndex); CrewQuarters.RemoveAt(CrewIndex); } } else { /// <summary> /// Perhaps some kind of error should be noted here. /// </summary> return; } } /// <summary> /// The Size of the available accomodations for crew is increased by the size of this component. /// </summary> AccomHSAvailable = AccomHSAvailable + (CrewQ.size * (float)inc); /// <summary> /// Total Crew Berths. AccomHS / Tons per man. /// </summary> TotalCrewQuarters = (int)Math.Floor((AccomHSAvailable * 50.0f) / TonsPerMan); /// <summary> /// General Housekeeping /// </summary> UpdateClass(CrewQ, inc); }