Esempio n. 1
0
        public override void OnUpdate()
        {
            double resource_abundance =
                ORSX_AtmosphericResourceHandler.getAtmosphericResourceContent(vessel.mainBody.flightGlobalsIndex,
                                                                              resourceName);
            bool resource_available = false;

            if (resource_abundance > 0)
            {
                resource_available = true;
            }
            Events["startResourceExtraction"].active = !IsEnabled && resource_available;
            Events["stopResourceExtration"].active   = IsEnabled;
            if (IsEnabled)
            {
                Fields["powerStr"].guiActive     = true;
                Fields["resourceRate"].guiActive = true;
                statusTitle = "Active";
                double power_required = powerConsumption;
                powerStr = (power_required * electrical_power_ratio).ToString("0.000") + " MW / " +
                           power_required.ToString("0.000") + " MW";
                double resource_density       = PartResourceLibrary.Instance.GetDefinition(resourceName).density;
                double resource_rate_per_hour = extraction_rate_d * resource_density * 3600;
                resourceRate = formatMassStr(resource_rate_per_hour);
            }
            else
            {
                Fields["powerStr"].guiActive     = false;
                Fields["resourceRate"].guiActive = false;
                statusTitle = "Offline";
            }
        }
Esempio n. 2
0
        public override void OnFixedUpdate()
        {
            if (IsEnabled)
            {
                double power_requirements = powerConsumption;
                double extraction_time    = extractionRatePerTon;
                if (vessel.altitude > ORSX_Helper.getMaxAtmosphericAltitude(vessel.mainBody))
                {
                    IsEnabled = false;
                    return;
                }

                double electrical_power_provided = 0;
                if (resourceManaged)
                {
                    electrical_power_provided = consumeFNResource(power_requirements * TimeWarp.fixedDeltaTime,
                                                                  resourceToUse);
                }
                else
                {
                    electrical_power_provided = part.RequestResource(resourceToUse,
                                                                     power_requirements * TimeWarp.fixedDeltaTime);
                }

                if (power_requirements > 0)
                {
                    electrical_power_ratio = electrical_power_provided / TimeWarp.fixedDeltaTime / power_requirements;
                }
                else
                {
                    if (power_requirements < 0)
                    {
                        IsEnabled = false;
                        return;
                    }
                    electrical_power_ratio = 1;
                }
                double resource_abundance =
                    ORSX_AtmosphericResourceHandler.getAtmosphericResourceContent(vessel.mainBody.flightGlobalsIndex,
                                                                                  resourceName);
                double extraction_rate = resource_abundance * extraction_time * electrical_power_ratio *
                                         part.vessel.atmDensity;
                if (resource_abundance > 0)
                {
                    double resource_density = PartResourceLibrary.Instance.GetDefinition(resourceName).density;
                    //extraction_rate_d = -part.RequestResource(resourceName, -extraction_rate / resource_density * TimeWarp.fixedDeltaTime) / TimeWarp.fixedDeltaTime;
                    extraction_rate_d =
                        -ORSX_Helper.fixedRequestResource(part, resourceName,
                                                          -extraction_rate / resource_density * TimeWarp.fixedDeltaTime) / TimeWarp.fixedDeltaTime;
                }
                else
                {
                    IsEnabled = false;
                }
            }
        }