Esempio n. 1
0
        public static PowerDetails operator+(PowerDetails a, PowerDetails b)
        {
            var result = new PowerDetails();

            result.CurrentPowerOutput = a.CurrentPowerOutput + b.CurrentPowerOutput;
            result.MaxPowerOutput     = a.MaxPowerOutput + b.MaxPowerOutput;
            return(result);
        }
Esempio n. 2
0
 public void SetSelectedPower(string shortName)
 {
     if (powerList?.Any() == false)
     {
         GetPowerList();
     }
     SelectedPower = powerList.Find(x => x.ShortName.Equals(shortName));
 }
Esempio n. 3
0
    public PowerDetails GetPowerDetails <T>(List <T> producers)
        where T : IMyTerminalBlock
    {
        var result = new PowerDetails();

        result.CurrentPowerOutput = 0.0f;
        result.MaxPowerOutput     = 0.0f;
        for (var e = producers.GetEnumerator(); e.MoveNext();)
        {
            var producer = e.Current as IMyPowerProducer;
            if (e.Current.IsFunctional && e.Current.IsWorking &&
                producer != null)
            {
                result.CurrentPowerOutput += producer.CurrentPowerOutput;
                result.MaxPowerOutput     += producer.MaxPowerOutput;
            }
        }
        return(result);
    }
Esempio n. 4
0
    private void DisableOneBattery(List <IMyBatteryBlock> batteries, PowerDetails totalDetails)
    {
        for (var e = batteries.GetEnumerator(); e.MoveNext();)
        {
            var battery = e.Current;

            if (battery.Enabled && battery.ProductionEnabled)
            {
                // But only if we can actually spare it
                var wouldBeOutput = totalDetails.CurrentPowerOutput - battery.CurrentPowerOutput;
                var wouldBeLoad   = wouldBeOutput / (totalDetails.MaxPowerOutput - battery.MaxPowerOutput);
                if (wouldBeLoad <= POWER_MANAGER_HIGH_LOAD_THRESHOLD)
                {
                    battery.GetActionWithName("OnOff_Off").Apply(battery);
                    ZACommons.SetBatteryRecharge(battery, true);
                }
                return;
            }
        }
    }
Esempio n. 5
0
        private void CreateSensorPowerInfo(XmlWriter writer, PowerDetails power)
        {
            writer.WriteStartElement("p");     //start paragraph
            #region table
            writer.WriteStartElement("table"); //start table
            writer.WriteAttributeString("style", "color:black; border-collapse: collapse; border: 1px solid black; width: 25%;");
            writer.WriteStartElement("tr");    //start row
            writer.WriteStartElement("th");    //start header
            writer.WriteAttributeString("style", "text-align: left;");
            writer.WriteAttributeString("colspan", "2");
            writer.WriteValue("Power Details");
            writer.WriteEndElement(); //end header
            writer.WriteEndElement(); //end row

            #region row
            if (power.ShouldSerializeBatteryLevel())
            {
                writer.WriteStartElement("tr"); //start row
                writer.WriteAttributeString("style", "color:black; border-collapse: collapse; border: 1px solid black;");
                writer.WriteStartElement("td"); //start cell
                writer.WriteAttributeString("style", "color:black; border-collapse: collapse; border: 1px solid black;  width: 50%;");
                writer.WriteValue("Battery Level:");
                writer.WriteEndElement();       //end cell

                writer.WriteStartElement("td"); //start cell
                writer.WriteAttributeString("style", "color:black; border-collapse: collapse; border: 1px solid black;");
                float temp = (float)power.BatteryLevel / 10;

                writer.WriteValue(temp.ToString("####0.0") + " %");

                //writer.WriteValue(power.BatteryLevel.ToString());
                writer.WriteEndElement(); //end cell
                writer.WriteEndElement(); //end row
            }
            #endregion row

            writer.WriteEndElement(); //end table
            #endregion table
            writer.WriteEndElement(); //end paragraph
        }