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;
        }
示例#3
0
        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);
        }
示例#4
0
 public void SetSystemDesiredPower(ShipSystem system, float value)
 {
     system.SetDesiredPower(value);
 }
示例#5
0
 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);
 }