public void ColonyOrdersTest() { Faction PlayerFaction1 = new Faction(0); StarSystem System1 = SystemGen.CreateSol(); SystemBody pl1 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); SystemBody pl2 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); System1.Stars[0].Planets.Add(pl1); System1.Stars[0].Planets.Add(pl2); System1.Stars[0].Planets[0].Position.X = 1.0; System1.Stars[0].Planets[0].Position.Y = 1.0; System1.Stars[0].Planets[1].Position.X = 2.0; System1.Stars[0].Planets[1].Position.Y = 2.0; PlayerFaction1.AddNewShipDesign("Blucher"); PlayerFaction1.ShipDesigns[0].AddEngine(PlayerFaction1.ComponentList.Engines[0], 1); PlayerFaction1.ShipDesigns[0].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 2); PlayerFaction1.ShipDesigns[0].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 2); PlayerFaction1.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 2); PlayerFaction1.ShipDesigns[0].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 1); PlayerFaction1.ShipDesigns[0].AddColonyBay(PlayerFaction1.ComponentList.ColonyBayDef[0], 1); PlayerFaction1.ShipDesigns[0].AddCargoHandlingSystem(PlayerFaction1.ComponentList.CargoHandleSystemDef[0], 1); PlayerFaction1.AddNewTaskGroup("P1 TG 01", System1.Stars[0].Planets[0], System1); PlayerFaction1.TaskGroups[0].AddShip(PlayerFaction1.ShipDesigns[0], "Test Ship"); PlayerFaction1.TaskGroups[0].Ships[0].Refuel(200000.0f); Population P1 = new Population(System1.Stars[0].Planets[0], PlayerFaction1,0); Population P2 = new Population(System1.Stars[0].Planets[1], PlayerFaction1,0); System1.Stars[0].Planets[0].Populations[0].CivilianPopulation = 5.0f; System1.Stars[0].Planets[1].Populations[0].CivilianPopulation = 1.0f; Order Load = new Order(Constants.ShipTN.OrderType.LoadColonists, -1, 9000, 0, System1.Stars[0].Planets[0].Populations[0]); Order Unload = new Order(Constants.ShipTN.OrderType.UnloadColonists, -1, 9000, 0, System1.Stars[0].Planets[1].Populations[0]); PlayerFaction1.TaskGroups[0].IssueOrder(Load); PlayerFaction1.TaskGroups[0].IssueOrder(Unload); while (PlayerFaction1.TaskGroups[0].TaskGroupOrders.Count > 0) { Console.WriteLine("Current Order Time: {0} {1}", PlayerFaction1.TaskGroups[0].TimeRequirement, PlayerFaction1.TaskGroups[0].TaskGroupOrders[0].orderTimeRequirement); PlayerFaction1.TaskGroups[0].FollowOrders(Constants.TimeInSeconds.TwentyMinutes); Console.WriteLine("Order Count: {0}", PlayerFaction1.TaskGroups[0].TaskGroupOrders.Count); } Console.WriteLine("Population on P1 and P2:{0} {1}", System1.Stars[0].Planets[0].Populations[0].CivilianPopulation, System1.Stars[0].Planets[1].Populations[0].CivilianPopulation); }
public void TaskGroupFuelOrdersTest() { Faction PlayerFaction1 = new Faction(0); StarSystem System1 = SystemGen.CreateSol(); SystemBody pl1 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); SystemBody pl2 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); SystemBody pl3 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); System1.Stars[0].Planets.Add(pl1); System1.Stars[0].Planets.Add(pl2); System1.Stars[0].Planets.Add(pl3); System1.Stars[0].Planets[0].Position.X = 1.0; System1.Stars[0].Planets[0].Position.Y = 1.0; System1.Stars[0].Planets[1].Position.X = 0.0; System1.Stars[0].Planets[1].Position.Y = 3.0; System1.Stars[0].Planets[2].Position.X = 0.0; System1.Stars[0].Planets[2].Position.Y = 0.0; PlayerFaction1.AddNewShipDesign("Blucher"); PlayerFaction1.AddNewShipDesign("Tribal"); PlayerFaction1.AddNewShipDesign("Ohio"); PlayerFaction1.ShipDesigns[0].AddEngine(PlayerFaction1.ComponentList.Engines[0], 1); PlayerFaction1.ShipDesigns[0].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 2); PlayerFaction1.ShipDesigns[0].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 10); PlayerFaction1.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 2); PlayerFaction1.ShipDesigns[0].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 1); PlayerFaction1.ShipDesigns[0].IsTanker = true; PlayerFaction1.ShipDesigns[1].AddEngine(PlayerFaction1.ComponentList.Engines[0], 1); PlayerFaction1.ShipDesigns[1].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 2); PlayerFaction1.ShipDesigns[1].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 10); PlayerFaction1.ShipDesigns[1].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 2); PlayerFaction1.ShipDesigns[1].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 1); PlayerFaction1.ShipDesigns[1].IsTanker = true; PlayerFaction1.ShipDesigns[2].AddEngine(PlayerFaction1.ComponentList.Engines[0], 1); PlayerFaction1.ShipDesigns[2].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 2); PlayerFaction1.ShipDesigns[2].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 1); PlayerFaction1.ShipDesigns[2].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 2); PlayerFaction1.ShipDesigns[2].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 1); PlayerFaction1.ShipDesigns[2].IsTanker = false; PlayerFaction1.AddNewTaskGroup("P1 TG 01", System1.Stars[0].Planets[2], System1); PlayerFaction1.AddNewTaskGroup("P1 TG 02", System1.Stars[0].Planets[1], System1); PlayerFaction1.AddNewTaskGroup("P1 TG 03", System1.Stars[0].Planets[1], System1); PlayerFaction1.TaskGroups[0].AddShip(PlayerFaction1.ShipDesigns[0], "Test Ship 1"); PlayerFaction1.TaskGroups[0].AddShip(PlayerFaction1.ShipDesigns[2], "Test Ship 2"); PlayerFaction1.TaskGroups[1].AddShip(PlayerFaction1.ShipDesigns[1], "Test Ship 3"); PlayerFaction1.TaskGroups[2].AddShip(PlayerFaction1.ShipDesigns[2], "Test Ship 4"); PlayerFaction1.TaskGroups[0].Ships[0].Refuel(50000.0f); PlayerFaction1.TaskGroups[0].Ships[1].Refuel(50000.0f); PlayerFaction1.TaskGroups[1].Ships[0].Refuel(1000000.0f); Population P1 = new Population(System1.Stars[0].Planets[0], PlayerFaction1,0); Population P2 = new Population(System1.Stars[0].Planets[1], PlayerFaction1,0); System1.Stars[0].Planets[0].Populations[0].FuelStockpile = 10000000.0f; System1.Stars[0].Planets[1].Populations[0].FuelStockpile = 10.0f; PlayerFaction1.TaskGroups[1].IsOrbiting = false; PlayerFaction1.TaskGroups[1].Contact.Position.X = 3.0; PlayerFaction1.TaskGroups[1].Contact.Position.Y = 0.0; Order RefuelFromColony = new Order(Constants.ShipTN.OrderType.RefuelFromColony, -1, -1, -1, System1.Stars[0].Planets[0].Populations[0]); PlayerFaction1.TaskGroups[0].IssueOrder(RefuelFromColony); Order RefuelFromTargetFleet = new Order(Constants.ShipTN.OrderType.RefuelFromTargetFleet, -1, -1, -1, PlayerFaction1.TaskGroups[1]); PlayerFaction1.TaskGroups[0].IssueOrder(RefuelFromTargetFleet); Order RefuelTargetFleet = new Order(Constants.ShipTN.OrderType.RefuelTargetFleet, -1, -1, -1, PlayerFaction1.TaskGroups[2]); PlayerFaction1.TaskGroups[0].IssueOrder(RefuelTargetFleet); Order RefuelFromOwnTankers = new Order(Constants.ShipTN.OrderType.RefuelFromOwnTankers, -1, -1, -1, System1.Stars[0].Planets[1].Populations[0]); PlayerFaction1.TaskGroups[0].IssueOrder(RefuelFromOwnTankers); Order UnloadFuelToPop = new Order(Constants.ShipTN.OrderType.UnloadFuelToPlanet, -1, -1, -1, System1.Stars[0].Planets[1].Populations[0]); PlayerFaction1.TaskGroups[0].IssueOrder(UnloadFuelToPop); uint tickCount = 0; while (PlayerFaction1.TaskGroups[0].TaskGroupOrders.Count > 0) { Console.WriteLine("===================={0} {1} {2}====================", tickCount, PlayerFaction1.TaskGroups[0].TaskGroupOrders.Count, PlayerFaction1.TaskGroups[0].TimeRequirement); Console.WriteLine("X,Y: {0}/{1}", PlayerFaction1.TaskGroups[0].Contact.Position.X, PlayerFaction1.TaskGroups[0].Contact.Position.Y); Console.WriteLine("Fuel:s1:{0} s2:{1} s3:{2} s4:{3} P1:{4} P2:{5}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentFuel, PlayerFaction1.TaskGroups[0].Ships[1].CurrentFuel, PlayerFaction1.TaskGroups[1].Ships[0].CurrentFuel, PlayerFaction1.TaskGroups[2].Ships[0].CurrentFuel, System1.Stars[0].Planets[0].Populations[0].FuelStockpile, System1.Stars[0].Planets[1].Populations[0].FuelStockpile); PlayerFaction1.TaskGroups[0].FollowOrders(Constants.TimeInSeconds.Hour); tickCount = tickCount + Constants.TimeInSeconds.Hour; } Console.WriteLine("===================={0} {1} {2}====================", tickCount, PlayerFaction1.TaskGroups[0].TaskGroupOrders.Count, PlayerFaction1.TaskGroups[0].TimeRequirement); Console.WriteLine("X,Y: {0}/{1}", PlayerFaction1.TaskGroups[0].Contact.Position.X, PlayerFaction1.TaskGroups[0].Contact.Position.Y); Console.WriteLine("Fuel:s1:{0} s2:{1} s3:{2} s4:{3} P1:{4} P2:{5}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentFuel, PlayerFaction1.TaskGroups[0].Ships[1].CurrentFuel, PlayerFaction1.TaskGroups[1].Ships[0].CurrentFuel, PlayerFaction1.TaskGroups[2].Ships[0].CurrentFuel, System1.Stars[0].Planets[0].Populations[0].FuelStockpile, System1.Stars[0].Planets[1].Populations[0].FuelStockpile); }
public void FactionSystemTest() { Faction PlayerFaction1 = new Faction(0); Faction PlayerFaction2 = new Faction(1); StarSystem System1 = SystemGen.CreateSol(); StarSystem System2 = SystemGen.CreateSystem("Alpha Centauri"); SystemBody Start1 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); Start1.Position.X = 1.0; Start1.Position.Y = 1.0; SystemBody Start2 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); Start2.Position.X = 1.0005; Start2.Position.Y = 1.0005; PlayerFaction1.AddNewShipDesign("Blucher"); PlayerFaction2.AddNewShipDesign("Tribal"); PlayerFaction1.ShipDesigns[0].AddEngine(PlayerFaction1.ComponentList.Engines[0], 1); PlayerFaction1.ShipDesigns[0].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 2); PlayerFaction1.ShipDesigns[0].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 2); PlayerFaction1.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 2); PlayerFaction1.ShipDesigns[0].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 1); PlayerFaction1.ShipDesigns[0].AddActiveSensor(PlayerFaction1.ComponentList.ActiveSensorDef[0], 1); PlayerFaction1.ShipDesigns[0].AddPassiveSensor(PlayerFaction1.ComponentList.PassiveSensorDef[0], 1); PlayerFaction1.ShipDesigns[0].AddPassiveSensor(PlayerFaction1.ComponentList.PassiveSensorDef[1], 1); PlayerFaction2.ShipDesigns[0].AddEngine(PlayerFaction2.ComponentList.Engines[0], 1); PlayerFaction2.ShipDesigns[0].AddCrewQuarters(PlayerFaction2.ComponentList.CrewQuarters[0], 2); PlayerFaction2.ShipDesigns[0].AddFuelStorage(PlayerFaction2.ComponentList.FuelStorage[0], 2); PlayerFaction2.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction2.ComponentList.EngineeringSpaces[0], 2); PlayerFaction2.ShipDesigns[0].AddOtherComponent(PlayerFaction2.ComponentList.OtherComponents[0], 1); PlayerFaction2.ShipDesigns[0].AddActiveSensor(PlayerFaction2.ComponentList.ActiveSensorDef[0], 1); PlayerFaction2.ShipDesigns[0].AddPassiveSensor(PlayerFaction2.ComponentList.PassiveSensorDef[0], 1); PlayerFaction2.ShipDesigns[0].AddPassiveSensor(PlayerFaction2.ComponentList.PassiveSensorDef[1], 1); PlayerFaction1.AddNewTaskGroup("P1 TG 01", Start1, System1); PlayerFaction2.AddNewTaskGroup("P2 TG 01", Start2, System1); PlayerFaction1.TaskGroups[0].AddShip(PlayerFaction1.ShipDesigns[0], "Test Ship 1"); PlayerFaction2.TaskGroups[0].AddShip(PlayerFaction2.ShipDesigns[0], "Test Ship 2"); PlayerFaction1.TaskGroups[0].Ships[0].Refuel(200000.0f); PlayerFaction2.TaskGroups[0].Ships[0].Refuel(200000.0f); PlayerFaction1.AddNewContactList(System1); PlayerFaction2.AddNewContactList(System1); PlayerFaction1.AddNewContactList(System2); PlayerFaction2.AddNewContactList(System2); PlayerFaction1.TaskGroups[0].SetActiveSensor(0, 0, true); PlayerFaction2.TaskGroups[0].SetActiveSensor(0, 0, true); GameState.Instance.CurrentSecond = 5; Console.WriteLine("Time: 0 {0} {1}", PlayerFaction1.TaskGroups[0].Contact.Position.System.Name, PlayerFaction2.TaskGroups[0].Contact.Position.System.Name); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].ThermalDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].ThermalDetection[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].EMDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].EMDetection[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].ActiveDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].ActiveDetection[0]); PlayerFaction1.SensorSweep(); PlayerFaction2.SensorSweep(); Console.WriteLine("Time: 5 {0} {1}", PlayerFaction1.TaskGroups[0].Contact.Position.System.Name, PlayerFaction2.TaskGroups[0].Contact.Position.System.Name); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].ThermalDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].ThermalDetection[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].EMDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].EMDetection[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].ActiveDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].ActiveDetection[0]); PlayerFaction1.TaskGroups[0].SetActiveSensor(0, 0, false); PlayerFaction2.TaskGroups[0].SetActiveSensor(0, 0, false); GameState.Instance.CurrentSecond = 10; PlayerFaction1.SensorSweep(); PlayerFaction2.SensorSweep(); Console.WriteLine("Time: 10 {0} {1}", PlayerFaction1.TaskGroups[0].Contact.Position.System.Name, PlayerFaction2.TaskGroups[0].Contact.Position.System.Name); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].ThermalDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].ThermalDetection[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].EMDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].EMDetection[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].ActiveDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].ActiveDetection[0]); PlayerFaction1.TaskGroups[0].SetActiveSensor(0, 0, true); PlayerFaction2.TaskGroups[0].SetActiveSensor(0, 0, true); //this isn't needed, but also shouldn't crash now that its fixed. to test uncomment this out and run nunit or whatever tester. //SystemGen.GenerateJumpPoint(System1); //SystemGen.GenerateJumpPoint(System2); JumpPoint JP1 = new JumpPoint(System1.Stars[0], 0.1, 0.2); System1.JumpPoints.Add(JP1); JumpPoint JP2 = new JumpPoint(System2.Stars[0], 0.2, 0.1); System2.JumpPoints.Add(JP2); System1.JumpPoints[0].Connect = System2.JumpPoints[0]; System2.JumpPoints[0].Connect = System1.JumpPoints[0]; SystemPosition newPos = System1.JumpPoints[0].Connect.Position; PlayerFaction1.TaskGroups[0].Position.System.SystemContactList.Remove(PlayerFaction1.TaskGroups[0].Contact); newPos.System.SystemContactList.Add(PlayerFaction1.TaskGroups[0].Contact); PlayerFaction1.TaskGroups[0].Position = newPos; PlayerFaction1.TaskGroups[0].Contact.UpdateLocationAfterTransit(); PlayerFaction2.TaskGroups[0].Position.System.SystemContactList.Remove(PlayerFaction2.TaskGroups[0].Contact); newPos.System.SystemContactList.Add(PlayerFaction2.TaskGroups[0].Contact); PlayerFaction2.TaskGroups[0].Position = newPos; PlayerFaction2.TaskGroups[0].Contact.UpdateLocationAfterTransit(); GameState.Instance.CurrentSecond = 15; PlayerFaction1.SensorSweep(); PlayerFaction2.SensorSweep(); Console.WriteLine("Time: 15 {0} {1}", PlayerFaction1.TaskGroups[0].Contact.Position.System.Name, PlayerFaction2.TaskGroups[0].Contact.Position.System.Name); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].ThermalDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].ThermalDetection[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].EMDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].EMDetection[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].ActiveDetection[1], PlayerFaction2.TaskGroups[0].Ships[0].ActiveDetection[0]); }
public void CargoLoadUnloadTest() { Faction PlayerFaction1 = new Faction(0); StarSystem System1 = SystemGen.CreateSol(); SystemBody pl1 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); System1.Stars[0].Planets.Add(pl1); System1.Stars[0].Planets[0].Position.X = 1.0; System1.Stars[0].Planets[0].Position.Y = 1.0; PlayerFaction1.AddNewShipDesign("Blucher"); PlayerFaction1.ShipDesigns[0].AddEngine(PlayerFaction1.ComponentList.Engines[0], 1); PlayerFaction1.ShipDesigns[0].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 2); PlayerFaction1.ShipDesigns[0].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 2); PlayerFaction1.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 2); PlayerFaction1.ShipDesigns[0].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 1); PlayerFaction1.ShipDesigns[0].AddCargoHold(PlayerFaction1.ComponentList.CargoHoldDef[1], 1); PlayerFaction1.AddNewTaskGroup("P1 TG 01", System1.Stars[0].Planets[0], System1); PlayerFaction1.TaskGroups[0].AddShip(PlayerFaction1.ShipDesigns[0], "Test Ship"); PlayerFaction1.TaskGroups[0].Ships[0].Refuel(200000.0f); Population P1 = new Population(System1.Stars[0].Planets[0], PlayerFaction1,0); Population P2 = new Population(System1.Stars[0].Planets[0], PlayerFaction1,0); System1.Stars[0].Planets[0].Populations[0].Installations[(int)Installation.InstallationType.Infrastructure].Number = 3.0f; System1.Stars[0].Planets[0].Populations[1].Installations[(int)Installation.InstallationType.Infrastructure].Number = 0.0f; Console.WriteLine("Infrastructure on P1 and P2:{0} {1}", System1.Stars[0].Planets[0].Populations[0].Installations[(int)Installation.InstallationType.Infrastructure].Number, System1.Stars[0].Planets[0].Populations[1].Installations[(int)Installation.InstallationType.Infrastructure].Number); PlayerFaction1.TaskGroups[0].LoadCargo(System1.Stars[0].Planets[0].Populations[0], Installation.InstallationType.Infrastructure, 1); Console.WriteLine("Infrastructure on cargo tg after load in tons:{0}", PlayerFaction1.TaskGroups[0].Ships[0].CargoList[Installation.InstallationType.Infrastructure].tons); PlayerFaction1.TaskGroups[0].UnloadCargo(System1.Stars[0].Planets[0].Populations[1], Installation.InstallationType.Infrastructure, 1); Console.WriteLine("Infrastructure on P1 and P2:{0} {1}", System1.Stars[0].Planets[0].Populations[0].Installations[(int)Installation.InstallationType.Infrastructure].Number, System1.Stars[0].Planets[0].Populations[1].Installations[(int)Installation.InstallationType.Infrastructure].Number); Console.WriteLine("CargoList dictionary count after unload:{0}", PlayerFaction1.TaskGroups[0].Ships[0].CargoList.Count); }
public void CollierOrdersTest() { Faction PlayerFaction1 = new Faction(0); StarSystem System1 = SystemGen.CreateSol(); SystemBody pl1 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); SystemBody pl2 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); System1.Stars[0].Planets.Add(pl1); System1.Stars[0].Planets.Add(pl2); System1.Stars[0].Planets[0].Position.X = 1.0; System1.Stars[0].Planets[0].Position.Y = 1.0; System1.Stars[0].Planets[1].Position.X = 2.0; System1.Stars[0].Planets[1].Position.Y = 2.0; PlayerFaction1.AddNewShipDesign("Blucher"); MissileEngineDefTN TestMissileEngine = new MissileEngineDefTN("Testbed", 5.0f, 1.0f, 1.0f, 1.0f); OrdnanceSeriesTN Series = new OrdnanceSeriesTN("BLANK STANDIN"); OrdnanceDefTN TestMissile = new OrdnanceDefTN("Test Missile", Series, 1.0f, 0, 1.0f, 1.0f, 0, 0.0f, 0, 0.0f, 0, 0.0f, 0, 0.0f, 0, 1, 0, 0.0f, 0.0f, 0, false, 0, false, 0, TestMissileEngine, 1); PlayerFaction1.ShipDesigns[0].AddEngine(PlayerFaction1.ComponentList.Engines[0], 1); PlayerFaction1.ShipDesigns[0].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 2); PlayerFaction1.ShipDesigns[0].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 2); PlayerFaction1.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 2); PlayerFaction1.ShipDesigns[0].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 1); PlayerFaction1.ShipDesigns[0].AddMagazine(PlayerFaction1.ComponentList.MagazineDef[0], 1); PlayerFaction1.ShipDesigns[0].SetPreferredOrdnance(TestMissile, 3); PlayerFaction1.AddNewTaskGroup("P1 TG 01", System1.Stars[0].Planets[0], System1); PlayerFaction1.TaskGroups[0].AddShip(PlayerFaction1.ShipDesigns[0], "Test Ship"); PlayerFaction1.TaskGroups[0].Ships[0].Refuel(200000.0f); Population P1 = new Population(System1.Stars[0].Planets[0], PlayerFaction1,0); Population P2 = new Population(System1.Stars[0].Planets[1], PlayerFaction1,0); System1.Stars[0].Planets[0].Populations[0].LoadMissileToStockpile(TestMissile, 4); Order Load = new Order(Constants.ShipTN.OrderType.LoadOrdnanceFromColony, -1, -1, 0, System1.Stars[0].Planets[0].Populations[0]); Order Unload = new Order(Constants.ShipTN.OrderType.UnloadOrdnanceToColony, -1, -1, 0, System1.Stars[0].Planets[1].Populations[0]); PlayerFaction1.TaskGroups[0].IssueOrder(Load); PlayerFaction1.TaskGroups[0].IssueOrder(Unload); bool CK = System1.Stars[0].Planets[1].Populations[0].MissileStockpile.ContainsKey(TestMissile); Console.WriteLine("Missiles on P1 and P2:{0} {1}", System1.Stars[0].Planets[0].Populations[0].MissileStockpile[TestMissile], CK); while (PlayerFaction1.TaskGroups[0].TaskGroupOrders.Count > 0) { Console.WriteLine("Current Order Time: {0} {1}", PlayerFaction1.TaskGroups[0].TimeRequirement, PlayerFaction1.TaskGroups[0].TaskGroupOrders[0].orderTimeRequirement); PlayerFaction1.TaskGroups[0].FollowOrders(Constants.TimeInSeconds.TwentyMinutes); Console.WriteLine("Order Count: {0}", PlayerFaction1.TaskGroups[0].TaskGroupOrders.Count); } bool CK1 = System1.Stars[0].Planets[0].Populations[0].MissileStockpile.ContainsKey(TestMissile); bool CK2 = System1.Stars[0].Planets[1].Populations[0].MissileStockpile.ContainsKey(TestMissile); Console.WriteLine("Missiles on P1 and P2:{0} {1}", CK1, CK2); if (CK1 == true) { Console.WriteLine("P1 Missiles {0}", System1.Stars[0].Planets[0].Populations[0].MissileStockpile[TestMissile]); } if (CK2 == true) { Console.WriteLine("P2 Missiles {0}", System1.Stars[0].Planets[1].Populations[0].MissileStockpile[TestMissile]); } CK = PlayerFaction1.TaskGroups[0].Ships[0].ShipOrdnance.ContainsKey(TestMissile); Console.WriteLine("Missile count on Ships[0] after unload :{0}", CK); }
public void OrdnanceTest() { /// <summary> /// Need to hook missiles into the distance table calculations, as well as sensor model. /// </summary> /// <summary> ///The Damage table MUST be initialized. /// </summary> DamageValuesTN.init(); /// <summary> /// Factions ARE necessary. /// </summary> Faction PlayerFaction1 = new Faction(0); Faction PlayerFaction2 = new Faction(1); /// <summary> /// No StarSystem no contacts! /// </summary> StarSystem System1 = new StarSystem("This is not Sol", 0); System1.Populations = new BindingList<Population>(); Star S1 = new Star(); System1.Stars.Add(S1); PlayerFaction1.AddNewContactList(System1); PlayerFaction2.AddNewContactList(System1); /// <summary> /// No global RNG, no Damage or tohit. /// </summary> Random RNG = new Random(); /// <summary> /// Planets and populations are needed for house keeping. /// </summary> SystemBody pl1 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); SystemBody pl2 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); pl1.Position.System = System1; pl2.Position.System = System1; System1.Stars[0].Planets.Add(pl1); System1.Stars[0].Planets.Add(pl2); Population P1 = new Population(System1.Stars[0].Planets[0], PlayerFaction1,0); Population P2 = new Population(System1.Stars[0].Planets[1], PlayerFaction2,0); System1.Stars[0].Planets[0].Position.X = 1.0; System1.Stars[0].Planets[0].Position.Y = 1.0; System1.Stars[0].Planets[1].Position.X = 1.04; System1.Stars[0].Planets[1].Position.Y = 1.04; PlayerFaction1.AddNewShipDesign("Blucher"); PlayerFaction2.AddNewShipDesign("Tribal"); MissileEngineDefTN TestMissileEngine = new MissileEngineDefTN("Testbed", 5.0f, 4.0f, 1.0f, 1.0f); OrdnanceSeriesTN Series = new OrdnanceSeriesTN("BLANK STANDIN"); OrdnanceDefTN TestMissile = new OrdnanceDefTN("Test Missile", Series, 1.0f, 0, 1.0f, 1.0f, 0, 0.0f, 0, 0.0f, 0, 0.0f, 0, 0.0f, 0, 1, 0, 0.0f, 0.0f, 0, false, 0, false, 0, TestMissileEngine, 1); ActiveSensorDefTN Spotter = new ActiveSensorDefTN("Spotter", 6.0f, 12, 6, 19, false, 1.0f, 0); ActiveSensorDefTN FControl = new ActiveSensorDefTN("FCtrl", 6.0f, 12, 6, 19, true, 1.0f, 0); PlayerFaction1.ShipDesigns[0].AddEngine(PlayerFaction1.ComponentList.Engines[0], 1); PlayerFaction1.ShipDesigns[0].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 2); PlayerFaction1.ShipDesigns[0].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 2); PlayerFaction1.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 2); PlayerFaction1.ShipDesigns[0].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 1); PlayerFaction1.ShipDesigns[0].AddMagazine(PlayerFaction1.ComponentList.MagazineDef[0], 1); PlayerFaction1.ShipDesigns[0].AddLauncher(PlayerFaction1.ComponentList.MLauncherDef[0], 1); PlayerFaction1.ShipDesigns[0].AddMFC(FControl, 1); PlayerFaction1.ShipDesigns[0].AddActiveSensor(Spotter, 1); PlayerFaction2.ShipDesigns[0].AddEngine(PlayerFaction1.ComponentList.Engines[0], 1); PlayerFaction2.ShipDesigns[0].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 2); PlayerFaction2.ShipDesigns[0].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 2); PlayerFaction2.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 2); PlayerFaction2.ShipDesigns[0].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 1); PlayerFaction2.ShipDesigns[0].NewArmor("Duranium", 5, 4); PlayerFaction1.ShipDesigns[0].SetPreferredOrdnance(TestMissile, 3); PlayerFaction1.AddNewTaskGroup("P1 TG 01", System1.Stars[0].Planets[0], System1); PlayerFaction2.AddNewTaskGroup("P2 TG 01", System1.Stars[0].Planets[1], System1); PlayerFaction1.TaskGroups[0].AddShip(PlayerFaction1.ShipDesigns[0], "Test Ship 1"); PlayerFaction2.TaskGroups[0].AddShip(PlayerFaction2.ShipDesigns[0], "Test Ship 2"); PlayerFaction1.TaskGroups[0].Ships[0].Refuel(200000.0f); PlayerFaction2.TaskGroups[0].Ships[0].Refuel(200000.0f); System1.Stars[0].Planets[0].Populations[0].LoadMissileToStockpile(TestMissile, 4); Order Load = new Order(Constants.ShipTN.OrderType.LoadOrdnanceFromColony, -1, -1, 0, System1.Stars[0].Planets[0].Populations[0]); PlayerFaction1.TaskGroups[0].IssueOrder(Load); while (PlayerFaction1.TaskGroups[0].TaskGroupOrders.Count > 0) { PlayerFaction1.TaskGroups[0].FollowOrders(Constants.TimeInSeconds.TwentyMinutes); } /// <summary> /// Magazine loading isn't handled anywhere. /// </summary> PlayerFaction1.TaskGroups[0].Ships[0].ShipMLaunchers[0].loadedOrdnance = TestMissile; PlayerFaction1.TaskGroups[0].Ships[0].ShipMLaunchers[0].AssignMFC(PlayerFaction1.TaskGroups[0].Ships[0].ShipMFC[0]); PlayerFaction1.TaskGroups[0].Ships[0].ShipMFC[0].assignLaunchTube(PlayerFaction1.TaskGroups[0].Ships[0].ShipMLaunchers[0]); PlayerFaction1.TaskGroups[0].Ships[0].ShipMFC[0].assignTarget(PlayerFaction2.TaskGroups[0].Ships[0]); PlayerFaction1.TaskGroups[0].Ships[0].ShipMFC[0].openFire = true; PlayerFaction1.TaskGroups[0].SetActiveSensor(0, 0, true); GameState.Instance.CurrentSecond += 10; GameState.Instance.LastTimestep = 10; PlayerFaction1.SensorSweep(); bool ret = PlayerFaction1.TaskGroups[0].Ships[0].ShipFireWeapons(RNG); Console.WriteLine("Did we fire: {0} Detected Contacts:{1}", ret, PlayerFaction1.DetectedContactLists.Count); bool done = false; while (!done) { Console.WriteLine("TimeStep:{0} {1} Detected Contacts:{2}", GameState.Instance.CurrentSecond, GameState.Instance.LastTimestep, PlayerFaction1.DetectedContactLists.Count); PlayerFaction1.SensorSweep(); PlayerFaction1.MissileGroups[0].ProcessOrder((uint)GameState.Instance.LastTimestep, RNG); Console.WriteLine("{0} {1} {2} {3} {4} {5} {6} {7}", PlayerFaction1.MissileGroups[0].currentHeading, PlayerFaction1.MissileGroups[0].currentSpeedX, PlayerFaction1.MissileGroups[0].currentSpeedY, PlayerFaction1.MissileGroups[0].timeReq, PlayerFaction1.MissileGroups[0].dx, PlayerFaction1.MissileGroups[0].dy, PlayerFaction1.MissileGroups[0].missiles.Count, PlayerFaction1.MissileGroups[0].missilesDestroyed); GameState.Instance.CurrentSecond += 5; GameState.Instance.LastTimestep = 5; if (PlayerFaction1.MissileGroups[0].missiles.Count == PlayerFaction1.MissileGroups[0].missilesDestroyed) { PlayerFaction1.MissileGroups.Clear(); done = true; } } Console.WriteLine("Armor:"); for (int loop = 0; loop < PlayerFaction2.TaskGroups[0].Ships[0].ShipArmor.armorColumns.Count; loop++) { Console.WriteLine("{0} ", PlayerFaction2.TaskGroups[0].Ships[0].ShipArmor.armorColumns[loop]); } }
public void MesonMicrowaveShieldTest() { DamageValuesTN.init(); Faction PlayerFaction1 = new Faction(0); StarSystem System1 = SystemGen.CreateSol(); SystemBody pl1 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); SystemBody pl2 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); System1.Stars[0].Planets.Add(pl1); System1.Stars[0].Planets.Add(pl2); System1.Stars[0].Planets[0].Position.X = 1.0; System1.Stars[0].Planets[0].Position.Y = 1.0; System1.Stars[0].Planets[1].Position.X = 2.0; System1.Stars[0].Planets[1].Position.Y = 2.0; PlayerFaction1.AddNewShipDesign("Blucher"); PlayerFaction1.ShipDesigns[0].AddEngine(PlayerFaction1.ComponentList.Engines[0], 5); PlayerFaction1.ShipDesigns[0].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 5); PlayerFaction1.ShipDesigns[0].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 5); PlayerFaction1.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 5); PlayerFaction1.ShipDesigns[0].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 5); PlayerFaction1.ShipDesigns[0].AddActiveSensor(PlayerFaction1.ComponentList.ActiveSensorDef[0], 1); PlayerFaction1.ShipDesigns[0].AddShield(PlayerFaction1.ComponentList.ShieldDef[0], 10); PlayerFaction1.ShipDesigns[0].NewArmor("Conventional", 2, 5); PlayerFaction1.AddNewTaskGroup("P1 TG 01", System1.Stars[0].Planets[0], System1); PlayerFaction1.TaskGroups[0].AddShip(PlayerFaction1.ShipDesigns[0], "Test Ship"); PlayerFaction1.TaskGroups[0].Ships[0].Refuel(200000.0f); PlayerFaction1.TaskGroups[0].Ships[0].SetShields(true); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPool, PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPoolMax); PlayerFaction1.TaskGroups[0].Ships[0].RechargeShields(300); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPool, PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPoolMax); ushort Columns = PlayerFaction1.TaskGroups[0].Ships[0].ShipArmor.armorDef.cNum; Random Gen = new Random(); ushort HitLocation = (ushort)Gen.Next(0, Columns); PlayerFaction1.TaskGroups[0].Ships[0].OnDamaged(DamageTypeTN.Microwave, 1, HitLocation, PlayerFaction1.TaskGroups[0].Ships[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPool, PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPoolMax); HitLocation = (ushort)Gen.Next(0, Columns); PlayerFaction1.TaskGroups[0].Ships[0].OnDamaged(DamageTypeTN.Microwave, 1, HitLocation, PlayerFaction1.TaskGroups[0].Ships[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPool, PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPoolMax); HitLocation = (ushort)Gen.Next(0, Columns); PlayerFaction1.TaskGroups[0].Ships[0].OnDamaged(DamageTypeTN.Microwave, 1, HitLocation, PlayerFaction1.TaskGroups[0].Ships[0]); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPool, PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPoolMax); HitLocation = (ushort)Gen.Next(0, Columns); PlayerFaction1.TaskGroups[0].Ships[0].OnDamaged(DamageTypeTN.Microwave, 1, HitLocation, PlayerFaction1.TaskGroups[0].Ships[0]); Console.WriteLine("{0} {1} {2}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPool, PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPoolMax, PlayerFaction1.TaskGroups[0].Ships[0].DestroyedComponents.Count); PlayerFaction1.TaskGroups[0].Ships[0].RechargeShields(300); Console.WriteLine("{0} {1}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPool, PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPoolMax); HitLocation = (ushort)Gen.Next(0, Columns); PlayerFaction1.TaskGroups[0].Ships[0].OnDamaged(DamageTypeTN.Meson, 1, HitLocation, PlayerFaction1.TaskGroups[0].Ships[0]); Console.WriteLine("{0} {1} {2}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPool, PlayerFaction1.TaskGroups[0].Ships[0].CurrentShieldPoolMax, PlayerFaction1.TaskGroups[0].Ships[0].DestroyedComponents.Count); }
/// <summary> /// create factions fills in the factions, tgs, and ships. The design for ships should be modified here. /// </summary> /// <param name="P">Factions</param> /// <param name="Sol">Starting starsystem</param> /// <param name="factionCount"># of factions</param> /// <param name="TGCount"># of tgs</param> /// <param name="ShipCount"># of ships</param> /// <param name="RNG">"global" rng since it has to be done that way.</param> void createFactions(BindingList<Faction> P, StarSystem Sol, int factionCount, int TGCount, int ShipCount, Random RNG) { for (int loop = 0; loop < factionCount; loop++) { Faction P1 = new Faction(loop); P1.AddNewContactList(Sol); P1.AddNewShipDesign("Blucher"); P1.ShipDesigns[0].AddEngine(P1.ComponentList.Engines[0], 3); P1.ShipDesigns[0].AddCrewQuarters(P1.ComponentList.CrewQuarters[0], 1); P1.ShipDesigns[0].AddFuelStorage(P1.ComponentList.FuelStorage[0], 1); P1.ShipDesigns[0].AddEngineeringSpaces(P1.ComponentList.EngineeringSpaces[0], 1); P1.ShipDesigns[0].AddOtherComponent(P1.ComponentList.OtherComponents[0], 1); P1.ShipDesigns[0].AddActiveSensor(P1.ComponentList.ActiveSensorDef[0], 1); P1.ShipDesigns[0].AddBeamFireControl(P1.ComponentList.BeamFireControlDef[0], 1); P1.ShipDesigns[0].AddBeamWeapon(P1.ComponentList.BeamWeaponDef[0], 2); P1.ShipDesigns[0].AddReactor(P1.ComponentList.ReactorDef[0], 2); P1.ShipDesigns[0].NewArmor("Duranium", 5, 4); for (int loop2 = 0; loop2 < TGCount; loop2++) { int randx = RNG.Next(0, 100000); int randy = RNG.Next(0, 100000); float wx = ((float)randx / 50000.0f) - 1.0f; float wy = ((float)randy / 50000.0f) - 1.0f; SystemBody Start = new SystemBody(Sol.Stars[0], SystemBody.PlanetType.Terrestrial); Start.Position.X = wx; Start.Position.Y = wy; string ID1 = loop.ToString(); string TGName = "P" + ID1 + "TG 01"; P1.AddNewTaskGroup(TGName, Start, Sol); for (int loop3 = 0; loop3 < ShipCount; loop3++) { P1.TaskGroups[loop2].AddShip(P1.ShipDesigns[0], "Test Ship"); P1.TaskGroups[loop2].Ships[loop3].Refuel(200000.0f); P1.TaskGroups[loop2].SetActiveSensor(loop3, 0, true); } } P.Add(P1); } }
public void ShipDamageModel() { DamageValuesTN.init(); Faction PlayerFaction1 = new Faction(0); StarSystem System1 = SystemGen.CreateSol(); SystemBody pl1 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); SystemBody pl2 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); System1.Stars[0].Planets.Add(pl1); System1.Stars[0].Planets.Add(pl2); System1.Stars[0].Planets[0].Position.X = 1.0; System1.Stars[0].Planets[0].Position.Y = 1.0; System1.Stars[0].Planets[1].Position.X = 2.0; System1.Stars[0].Planets[1].Position.Y = 2.0; PlayerFaction1.AddNewShipDesign("Blucher"); PlayerFaction1.ShipDesigns[0].AddEngine(PlayerFaction1.ComponentList.Engines[0], 5); PlayerFaction1.ShipDesigns[0].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 5); PlayerFaction1.ShipDesigns[0].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 5); PlayerFaction1.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 5); PlayerFaction1.ShipDesigns[0].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 5); PlayerFaction1.ShipDesigns[0].AddActiveSensor(PlayerFaction1.ComponentList.ActiveSensorDef[0], 5); PlayerFaction1.ShipDesigns[0].AddBeamFireControl(PlayerFaction1.ComponentList.BeamFireControlDef[0], 5); PlayerFaction1.ShipDesigns[0].AddBeamWeapon(PlayerFaction1.ComponentList.BeamWeaponDef[0], 5); PlayerFaction1.ShipDesigns[0].NewArmor("Conventional", 2, 5); PlayerFaction1.AddNewTaskGroup("P1 TG 01", System1.Stars[0].Planets[0], System1); PlayerFaction1.TaskGroups[0].AddShip(PlayerFaction1.ShipDesigns[0], "Test Ship"); PlayerFaction1.TaskGroups[0].Ships[0].Refuel(200000.0f); ushort Columns = PlayerFaction1.TaskGroups[0].Ships[0].ShipArmor.armorDef.cNum; Random Gen = new Random(); ushort HitLocation = (ushort)Gen.Next(0, Columns); PlayerFaction1.TaskGroups[0].Ships[0].OnDamaged(DamageTypeTN.Missile, 4, HitLocation, PlayerFaction1.TaskGroups[0].Ships[0]); HitLocation = (ushort)Gen.Next(0, Columns); PlayerFaction1.TaskGroups[0].Ships[0].OnDamaged(DamageTypeTN.Missile, 4, HitLocation, PlayerFaction1.TaskGroups[0].Ships[0]); HitLocation = (ushort)Gen.Next(0, Columns); PlayerFaction1.TaskGroups[0].Ships[0].OnDamaged(DamageTypeTN.Missile, 4, HitLocation, PlayerFaction1.TaskGroups[0].Ships[0]); Console.WriteLine("Damage Template:"); for (int loop = 0; loop < DamageValuesTN.MissileTable[3].damageTemplate.Count; loop++) { Console.WriteLine("{0} ", DamageValuesTN.MissileTable[3].damageTemplate[loop]); } Console.WriteLine("Armor:"); for (int loop = 0; loop < PlayerFaction1.TaskGroups[0].Ships[0].ShipArmor.armorColumns.Count; loop++) { Console.WriteLine("{0} ", PlayerFaction1.TaskGroups[0].Ships[0].ShipArmor.armorColumns[loop]); } foreach (KeyValuePair<ushort, ushort> pair in PlayerFaction1.TaskGroups[0].Ships[0].ShipArmor.armorDamage) { Console.WriteLine("{0} {1} ", pair.Key, pair.Value); } int DAC = 1; for (int loop = 0; loop < PlayerFaction1.TaskGroups[0].Ships[0].ShipClass.ListOfComponentDefs.Count; loop++) { Console.WriteLine("{0} {1}-{2} {3}", PlayerFaction1.TaskGroups[0].Ships[0].ShipClass.ListOfComponentDefs[loop], DAC, PlayerFaction1.TaskGroups[0].Ships[0].ShipClass.DamageAllocationChart[PlayerFaction1.TaskGroups[0].Ships[0].ShipClass.ListOfComponentDefs[loop]], PlayerFaction1.TaskGroups[0].Ships[0].ComponentDefIndex[loop]); DAC = PlayerFaction1.TaskGroups[0].Ships[0].ShipClass.DamageAllocationChart[PlayerFaction1.TaskGroups[0].Ships[0].ShipClass.ListOfComponentDefs[loop]] + 1; } for (int loop2 = 0; loop2 < PlayerFaction1.TaskGroups[0].Ships[0].ShipComponents.Count; loop2++) { Console.WriteLine("{0} {1} {2}", loop2, PlayerFaction1.TaskGroups[0].Ships[0].ShipComponents[loop2], PlayerFaction1.TaskGroups[0].Ships[0].ShipComponents[loop2].componentIndex); } Console.WriteLine("{0} {1} {2} {3} {4} {5}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxEnginePower, PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxThermalSignature, PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxFuelUsePerHour, PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxSpeed, PlayerFaction1.TaskGroups[0].Ships[0].CurrentSpeed, PlayerFaction1.TaskGroups[0].Ships[0].ShipEngine[2].isDestroyed); int test = PlayerFaction1.TaskGroups[0].Ships[0].DestroyComponent(ComponentTypeTN.Engine, 0, 5, 2, Gen); Console.WriteLine("{0} {1} {2} {3} {4} {5} {6}", test, PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxEnginePower, PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxThermalSignature, PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxFuelUsePerHour, PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxSpeed, PlayerFaction1.TaskGroups[0].Ships[0].CurrentSpeed, PlayerFaction1.TaskGroups[0].Ships[0].ShipEngine[2].isDestroyed); PlayerFaction1.TaskGroups[0].Ships[0].RepairComponent(ComponentTypeTN.Engine, 22); Console.WriteLine("{0} {1} {2} {3} {4} {5}", PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxEnginePower, PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxThermalSignature, PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxFuelUsePerHour, PlayerFaction1.TaskGroups[0].Ships[0].CurrentMaxSpeed, PlayerFaction1.TaskGroups[0].Ships[0].CurrentSpeed, PlayerFaction1.TaskGroups[0].Ships[0].ShipEngine[2].isDestroyed); }
public void ComponentLoadUnloadTest() { Faction PlayerFaction1 = new Faction(0); StarSystem System1 = SystemGen.CreateSol(); SystemBody pl1 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); SystemBody pl2 = new SystemBody(System1.Stars[0], SystemBody.PlanetType.Terrestrial); System1.Stars[0].Planets.Add(pl1); System1.Stars[0].Planets.Add(pl2); System1.Stars[0].Planets[0].Position.X = 1.0; System1.Stars[0].Planets[0].Position.Y = 1.0; System1.Stars[0].Planets[1].Position.X = 2.0; System1.Stars[0].Planets[1].Position.Y = 2.0; PlayerFaction1.AddNewShipDesign("Blucher"); PlayerFaction1.ShipDesigns[0].AddEngine(PlayerFaction1.ComponentList.Engines[0], 1); PlayerFaction1.ShipDesigns[0].AddCrewQuarters(PlayerFaction1.ComponentList.CrewQuarters[0], 2); PlayerFaction1.ShipDesigns[0].AddFuelStorage(PlayerFaction1.ComponentList.FuelStorage[0], 2); PlayerFaction1.ShipDesigns[0].AddEngineeringSpaces(PlayerFaction1.ComponentList.EngineeringSpaces[0], 2); PlayerFaction1.ShipDesigns[0].AddOtherComponent(PlayerFaction1.ComponentList.OtherComponents[0], 1); PlayerFaction1.ShipDesigns[0].AddCargoHold(PlayerFaction1.ComponentList.CargoHoldDef[1], 1); PlayerFaction1.ShipDesigns[0].AddCargoHandlingSystem(PlayerFaction1.ComponentList.CargoHandleSystemDef[0], 1); PlayerFaction1.AddNewTaskGroup("P1 TG 01", System1.Stars[0].Planets[0], System1); PlayerFaction1.TaskGroups[0].AddShip(PlayerFaction1.ShipDesigns[0], "Test Ship"); PlayerFaction1.TaskGroups[0].Ships[0].Refuel(200000.0f); Population P1 = new Population(System1.Stars[0].Planets[0], PlayerFaction1,0); Population P2 = new Population(System1.Stars[0].Planets[1], PlayerFaction1,0); System1.Stars[0].Planets[0].Populations[0].AddComponentsToStockpile(PlayerFaction1.ComponentList.Engines[0], 500.0f); /// <summary> /// The 1st 0 after the ordertype is for the ComponentStockpile[0] and CargoComponentList[0] index respectively. /// </summary> Order Load = new Order(Constants.ShipTN.OrderType.LoadShipComponent, 0, 0, 0, System1.Stars[0].Planets[0].Populations[0]); Order Unload = new Order(Constants.ShipTN.OrderType.UnloadShipComponent, 0, 0, 0, System1.Stars[0].Planets[1].Populations[0]); PlayerFaction1.TaskGroups[0].IssueOrder(Load); PlayerFaction1.TaskGroups[0].IssueOrder(Unload); Console.WriteLine("Engine Components on on P1 and P2:{0} {1}", System1.Stars[0].Planets[0].Populations[0].ComponentStockpileCount[0], System1.Stars[0].Planets[1].Populations[0].ComponentStockpileCount.Count); while (PlayerFaction1.TaskGroups[0].TaskGroupOrders.Count > 0) { Console.WriteLine("Current Order Time: {0} {1}", PlayerFaction1.TaskGroups[0].TimeRequirement, PlayerFaction1.TaskGroups[0].TaskGroupOrders[0].orderTimeRequirement); PlayerFaction1.TaskGroups[0].FollowOrders(Constants.TimeInSeconds.TwentyMinutes); Console.WriteLine("Order Count: {0}", PlayerFaction1.TaskGroups[0].TaskGroupOrders.Count); } Console.WriteLine("Engine Components on on P1 and P2:{0} {1}", System1.Stars[0].Planets[0].Populations[0].ComponentStockpileCount[0], System1.Stars[0].Planets[1].Populations[0].ComponentStockpileCount[0]); Console.WriteLine("CargoList count on Ships[0] after unload :{0}", PlayerFaction1.TaskGroups[0].Ships[0].CargoComponentList.Count); }
/// <summary> /// Build the Shipyard task required minerals box. /// </summary> /// <param name="m_oSummaryPanel">Panel from the economics handler</param> /// <param name="CurrentFaction">Currently selected faction.</param> /// <param name="CurrentPopulation">Currently selected population</param> /// <param name="SYInfo">Currently selected shipyard on currently selected population belonging to currently selected faction</param> /// <param name="EligibleClassList">List of shipclasses that this shipyard can produce.</param> /// <param name="DamagedShipList">List of damaged ships in orbit.</param> /// <param name="ClassesInOrbit">List of shipclasses in orbit around CurrentPopulation.</param> /// <param name="ShipsOfClassInOrbit">List of ships in the selected shipclass in orbit around CurrentPopulation.</param> public static void BuildSYTRequiredMinerals(Panels.Eco_Summary m_oSummaryPanel, Faction CurrentFaction, Population CurrentPopulation, Installation.ShipyardInformation SYInfo, BindingList<ShipClassTN> EligibleClassList, BindingList<ShipTN> DamagedShipList, BindingList<ShipClassTN> ClassesInOrbit, BindingList<ShipTN> ShipsOfClassInOrbit) { if (m_oSummaryPanel.SYTaskTypeComboBox.SelectedIndex != -1 && m_oSummaryPanel.SYTaskGroupComboBox.SelectedIndex != -1 && SYInfo != null && (m_oSummaryPanel.SYNewClassComboBox.SelectedIndex != -1 || m_oSummaryPanel.RepairRefitScrapShipComboBox.SelectedIndex != -1)) { m_oSummaryPanel.ShipRequiredMaterialsListBox.Items.Clear(); Installation.ShipyardInformation CostPrototyper = new Installation.ShipyardInformation(CurrentFaction, SYInfo.ShipyardType,1); CostPrototyper.Tonnage = SYInfo.Tonnage; CostPrototyper.Slipways = SYInfo.Slipways; CostPrototyper.ModRate = SYInfo.ModRate; CostPrototyper.AssignedClass = SYInfo.AssignedClass; ShipTN CurrentShip = null; ShipClassTN ConstructRefit = null; TaskGroupTN TargetTG = null; int TGIndex = -1; /// <summary> /// I'm not storing a faction only list of taskgroups in orbit anywhere, so lets calculate that here. /// </summary> foreach (TaskGroupTN CurrentTaskGroup in CurrentPopulation.Planet.TaskGroupsInOrbit) { if (CurrentTaskGroup.TaskGroupFaction == CurrentFaction) { if (TGIndex == m_oSummaryPanel.SYTaskGroupComboBox.SelectedIndex) { TargetTG = CurrentTaskGroup; break; } TGIndex++; } } /// <summary> /// No TG was found so create one, the shipyard will want a tg in any event. /// </summary> if (TGIndex == -1) { CurrentFaction.AddNewTaskGroup("Shipyard TG", CurrentPopulation.Planet, CurrentPopulation.Planet.Position.System); /// <summary> /// Run this loop again as a different faction could have a taskgroup in orbit. /// </summary> foreach (TaskGroupTN CurrentTaskGroup in CurrentPopulation.Planet.TaskGroupsInOrbit) { if (CurrentTaskGroup.TaskGroupFaction == CurrentFaction) { TGIndex++; if (TGIndex == m_oSummaryPanel.SYTaskGroupComboBox.SelectedIndex) { TargetTG = CurrentTaskGroup; break; } } } } Constants.ShipyardInfo.Task SYITask = (Constants.ShipyardInfo.Task)m_oSummaryPanel.SYTaskTypeComboBox.SelectedIndex; int BaseBuildRate = SYInfo.CalcShipBuildRate(CurrentFaction, CurrentPopulation); if ((int)SYITask != -1) { switch (SYITask) { case Constants.ShipyardInfo.Task.Construction: int newShipIndex = m_oSummaryPanel.SYNewClassComboBox.SelectedIndex; if (newShipIndex != -1 && EligibleClassList.Count > newShipIndex) { ConstructRefit = EligibleClassList[newShipIndex]; } break; case Constants.ShipyardInfo.Task.Repair: int CurrentShipIndex = m_oSummaryPanel.RepairRefitScrapShipComboBox.SelectedIndex; if (CurrentShipIndex != -1 && DamagedShipList.Count > CurrentShipIndex) { CurrentShip = DamagedShipList[CurrentShipIndex]; } break; case Constants.ShipyardInfo.Task.Refit: newShipIndex = m_oSummaryPanel.SYNewClassComboBox.SelectedIndex; if (newShipIndex != -1 && EligibleClassList.Count > newShipIndex) { ConstructRefit = EligibleClassList[newShipIndex]; } CurrentShipIndex = m_oSummaryPanel.RepairRefitScrapShipComboBox.SelectedIndex; if (CurrentShipIndex != -1 && ShipsOfClassInOrbit.Count > CurrentShipIndex) { CurrentShip = ShipsOfClassInOrbit[CurrentShipIndex]; } break; case Constants.ShipyardInfo.Task.Scrap: CurrentShipIndex = m_oSummaryPanel.RepairRefitScrapShipComboBox.SelectedIndex; if (CurrentShipIndex != -1 && ShipsOfClassInOrbit.Count > CurrentShipIndex) { CurrentShip = ShipsOfClassInOrbit[CurrentShipIndex]; } break; } /// <summary> /// Faction swapping can cause some problems. /// </summary> if (CurrentShip == null && ConstructRefit == null) return; Installation.ShipyardInformation.ShipyardTask NewTask = new Installation.ShipyardInformation.ShipyardTask(CurrentShip, SYITask, TargetTG, BaseBuildRate, m_oSummaryPanel.SYShipNameTextBox.Text, ConstructRefit); CostPrototyper.BuildingShips.Add(NewTask); m_oSummaryPanel.SYTaskCostTextBox.Text = CostPrototyper.BuildingShips[0].Cost.ToString(); m_oSummaryPanel.SYTaskCompletionDateTextBox.Text = CostPrototyper.BuildingShips[0].CompletionDate.ToShortDateString(); for (int MineralIterator = 0; MineralIterator < Constants.Minerals.NO_OF_MINERIALS; MineralIterator++) { if (CostPrototyper.BuildingShips[0].minerialsCost[MineralIterator] != 0.0m) { string FormattedMineralTotal = CostPrototyper.BuildingShips[0].minerialsCost[MineralIterator].ToString("#,##0"); String CostString = String.Format("{0} {1} ({2})", (Constants.Minerals.MinerialNames)MineralIterator, FormattedMineralTotal, CurrentPopulation.Minerials[MineralIterator]); m_oSummaryPanel.ShipRequiredMaterialsListBox.Items.Add(CostString); } } } } else { /// <summary> /// There is no cost to calculate so print this instead. /// </summary> m_oSummaryPanel.SYTaskCostTextBox.Text = "N/A"; m_oSummaryPanel.SYTaskCompletionDateTextBox.Text = "N/A"; m_oSummaryPanel.ShipRequiredMaterialsListBox.Items.Clear(); } }