public void Setup(ShipSystem system) { InspectedSystem = system; SystemName.Text = InspectedSystem.SystemName; PowerTemp.Setup(system.MaxPower, system.MaxCoolantFlow, system.NominalTemp * 3, system.Essential); PowerTemp.SetPower += PowerTemp_SetPower; PowerTemp.SetCoolant += PowerTemp_SetCoolant; DoActivate.Visible = system.ActivationHeat > 0; if (system.ActivationHeat > 0) SystemName.Width -= DoActivate.Width + 4; DoUpdate(); }
public float ComputeSystemTemp(ShipSystem system, float time) { float powerHeat = (system.CurrentPower * system.HeatGeneratedPerSecondPerPower * time); if (system.CurrentPower > system.NominalPower) { float extraHeat = (system.CurrentPower-system.NominalPower) * (system.HeatGeneratedPerSecondPerPower * system.OverPowerHeatFactor) * time; powerHeat += extraHeat; } powerHeat -= system.AmbientCooling * time; float newHeat = system.CurrentTemp + powerHeat - (system.AmbientCooling * time); if (newHeat < 0) newHeat = 0; return newHeat; }
public static SampleShip Setup(DirectoryInfo dirToCheck) { FileInfo file = null; if (dirToCheck.Exists) { file = new FileInfo(Path.Combine(dirToCheck.FullName, ShipXMLFile)); if (file.Exists) { try { XmlSerializer xml = new XmlSerializer(typeof(SampleShip)); FileStream fs = file.OpenRead(); SampleShip s = xml.Deserialize(fs) as SampleShip; fs.Close(); if (s != null) return HookUpShip(s); } catch(SystemException /*e*/) { } } } SampleShip ship = new SampleShip(); ship.Systems.Clear(); ship.Systems.Add(new ShipSystem("Thrusters")); ship.Systems.Add(new ShipSystem("LifeSupport",true,25)); ship.Systems.Add(new ShipSystem("Sensors")); ship.Systems.Add(new ShipSystem("Missiles")); ShipSystem fSheilds = new ShipSystem("Forward Shields"); fSheilds.MaxCoolantFlow = 200; fSheilds.NominalPower = 200; fSheilds.MaxPower = 400; fSheilds.ActivationHeat = 100; fSheilds.NominalTemp = 200; ship.Systems.Add(fSheilds); ShipSystem rSheilds = new ShipSystem("Rear Shields"); rSheilds.MaxCoolantFlow = 200; rSheilds.NominalPower = 200; rSheilds.MaxPower = 400; rSheilds.ActivationHeat = 100; rSheilds.NominalTemp = 200; ship.Systems.Add(rSheilds); ShipSystem ftl = new ShipSystem("FTL"); ftl.MaxCoolantFlow = 300; ftl.NominalPower = 1000; ftl.MaxPower = 5000; ftl.HeatDamageFactor = 0.01f; ftl.NominalTemp = 400; ftl.HeatGeneratedPerSecondPerPower = 0.05f; ship.Systems.Add(ftl); ShipSystem beams = new ShipSystem("Beams"); beams.MaxCoolantFlow = 200; beams.NominalPower = 300; beams.MaxPower = 1000; beams.ActivationHeat = 100; beams.NominalTemp = 200; ship.Systems.Add(beams); ship.Cooler.MaxCoolant = 200; ship.Cooler.TotalCoolant = 100; ship.Cooler.AddReservoir(new CoolantSystem.Reservoir(100)); ship.Cooler.AddReservoir(new CoolantSystem.Reservoir(100)); if (dirToCheck.Exists) ship.Save(file); return HookUpShip(ship); }
public void SetSystemDesiredPower(ShipSystem system, float value) { system.SetDesiredPower(value); }
public void SetSystemDesiredCoolant(ShipSystem system, float value) { Cooler.SetSystemCoolant(system, value); }
public float SetSystemCoolant(ShipSystem system, float desiredCoolant) { if (system == null) return 0; float actualCoolant = desiredCoolant; if (actualCoolant > system.MaxCoolantFlow) actualCoolant = system.MaxCoolantFlow; system.DesiredCoolantFlow = actualCoolant; // cap at he max return actualCoolant; }
public ShipSystemInspector(ShipSystem system) { InitializeComponent(); Setup(system); }