Exemplo n.º 1
0
        public override void OnUpdate()
        {
            Events["BeginResearch"].active        = !IsEnabled;
            Events["ReprocessFuel"].active        = !IsEnabled;
            Events["ActivateFactory"].active      = !IsEnabled;
            Events["ActivateElectrolysis"].active = false;
            Events["ActivateCentrifuge"].active   = !IsEnabled && vessel.Splashed;
            Events["StopActivity"].active         = IsEnabled;

            if (IsEnabled)
            {
                //anim [animName1].normalizedTime = 1f;
                statusTitle = modes[active_mode] + "...";
                Fields["scienceRate"].guiActive      = false;
                Fields["reprocessingRate"].guiActive = false;
                Fields["antimatterRate"].guiActive   = false;
                Fields["electrolysisRate"].guiActive = false;
                Fields["centrifugeRate"].guiActive   = false;
                Fields["antimatterProductionEfficiency"].guiActive = false;
                Fields["powerStr"].guiActive = true;

                double currentpowertmp = electrical_power_ratio * GameConstants.basePowerConsumption;
                powerStr = currentpowertmp.ToString("0.00") + "MW / " + GameConstants.basePowerConsumption.ToString("0.00") + "MW";
                if (active_mode == 0)   // Research
                {
                    Fields["scienceRate"].guiActive = true;
                    float scienceratetmp = science_rate_f * 86400;
                    scienceRate = scienceratetmp.ToString("0.000") + "/Day";
                }
                else if (active_mode == 1)     // Fuel Reprocessing
                {
                    Fields["reprocessingRate"].guiActive = true;
                    float reprocessratetmp = reprocessing_rate_f;
                    reprocessingRate = reprocessratetmp.ToString("0.0") + " Hours Remaining";
                }
                else if (active_mode == 2)     // Antimatter
                {
                    currentpowertmp = electrical_power_ratio * GameConstants.baseAMFPowerConsumption;
                    Fields["antimatterRate"].guiActive = true;
                    Fields["antimatterProductionEfficiency"].guiActive = true;
                    powerStr = currentpowertmp.ToString("0.00") + "MW / " + GameConstants.baseAMFPowerConsumption.ToString("0.00") + "MW";
                    antimatterProductionEfficiency = (anti_factory.getAntimatterProductionEfficiency() * 100).ToString("0.000") + "%";
                    double antimatter_rate_per_day = antimatter_rate_f * 86400;
                    if (antimatter_rate_per_day > 0.1)
                    {
                        antimatterRate = (antimatter_rate_per_day).ToString("0.000") + " mg/day";
                    }
                    else
                    {
                        if (antimatter_rate_per_day > 0.1e-3)
                        {
                            antimatterRate = (antimatter_rate_per_day * 1e3).ToString("0.000") + " ug/day";
                        }
                        else
                        {
                            antimatterRate = (antimatter_rate_per_day * 1e6).ToString("0.000") + " ng/day";
                        }
                    }
                }
                else if (active_mode == 3)     // Electrolysis
                {
                    currentpowertmp = electrical_power_ratio * GameConstants.baseELCPowerConsumption;
                    Fields["electrolysisRate"].guiActive = true;
                    float electrolysisratetmp = -electrolysis_rate_f * 86400;
                    electrolysisRate = electrolysisratetmp.ToString("0.0") + "mT/day";
                    powerStr         = currentpowertmp.ToString("0.00") + "MW / " + GameConstants.baseELCPowerConsumption.ToString("0.00") + "MW";
                }
                else if (active_mode == 4)     // Centrifuge
                {
                    currentpowertmp = electrical_power_ratio * GameConstants.baseCentriPowerConsumption;
                    Fields["centrifugeRate"].guiActive = true;
                    powerStr = currentpowertmp.ToString("0.00") + "MW / " + GameConstants.baseCentriPowerConsumption.ToString("0.00") + "MW";
                    float deut_per_hour = deut_rate_f * 3600;
                    centrifugeRate = deut_per_hour.ToString("0.00") + " Kg Deuterium/Hour";
                }
                else
                {
                }
            }
            else
            {
                if (play_down)
                {
                    anim[animName1].speed          = -1f;
                    anim[animName1].normalizedTime = 1f;
                    anim.Blend(animName1, 2f);
                    anim2[animName2].speed          = -1f;
                    anim2[animName2].normalizedTime = 1f;
                    anim2.Blend(animName2, 2f);
                    play_down = false;
                }
                //anim [animName1].normalizedTime = 0f;
                Fields["scienceRate"].guiActive      = false;
                Fields["reprocessingRate"].guiActive = false;
                Fields["antimatterRate"].guiActive   = false;
                Fields["powerStr"].guiActive         = false;
                Fields["centrifugeRate"].guiActive   = false;
                Fields["electrolysisRate"].guiActive = false;
                Fields["antimatterProductionEfficiency"].guiActive = false;
                if (crew_capacity_ratio > 0)
                {
                    statusTitle = "Idle";
                }
                else
                {
                    statusTitle = "Not enough crew";
                }
            }
        }
Exemplo n.º 2
0
        public override void OnUpdate()
        {
            base.OnUpdate();
            Events["BeginResearch"].active        = isupgraded && !IsEnabled;
            Events["ReprocessFuel"].active        = isupgraded && !IsEnabled;
            Events["ActivateFactory"].active      = isupgraded && !IsEnabled;
            Events["ActivateElectrolysis"].active = false;
            Events["ActivateCentrifuge"].active   = isupgraded && !IsEnabled && vessel.Splashed;
            Events["StopActivity"].active         = isupgraded && IsEnabled;
            Fields["statusTitle"].guiActive       = isupgraded;

            // only show retrofit btoon if we can actualy upgrade
            Events["RetrofitEngine"].active = ResearchAndDevelopment.Instance == null ? false : !isupgraded && ResearchAndDevelopment.Instance.Science >= upgradeCost && hasrequiredupgrade;

            if (IsEnabled)
            {
                //anim [animName1].normalizedTime = 1f;
                statusTitle = modes[active_mode] + "...";
                Fields["scienceRate"].guiActive = false;

                Fields["collectedScience"].guiActive = false;
                Fields["reprocessingRate"].guiActive = false;
                Fields["antimatterRate"].guiActive   = false;
                Fields["electrolysisRate"].guiActive = false;
                Fields["centrifugeRate"].guiActive   = false;
                Fields["antimatterProductionEfficiency"].guiActive = false;
                Fields["powerStr"].guiActive = true;

                double currentpowertmp = electrical_power_ratio * PluginHelper.BasePowerConsumption * powerReqMult;
                powerStr = currentpowertmp.ToString("0.0000") + "MW / " + (powerReqMult * PluginHelper.BasePowerConsumption).ToString("0.0000") + "MW";
                if (active_mode == 0) // Research
                {
                    Fields["scienceRate"].guiActive      = true;
                    Fields["collectedScience"].guiActive = true;
                    double scienceratetmp = science_rate_f * GameConstants.EARH_DAY_SECONDS;
                    scienceRate      = scienceratetmp.ToString("0.0000") + "/Day";
                    collectedScience = science_to_add.ToString("0.000000");
                }
                else if (active_mode == 1) // Fuel Reprocessing
                {
                    Fields["reprocessingRate"].guiActive = true;
                    reprocessingRate = reprocessing_rate_f.ToString("0.0") + " Hours Remaining";
                }
                else if (active_mode == 2) // Antimatter
                {
                    currentpowertmp = electrical_power_ratio * PluginHelper.BaseAMFPowerConsumption * powerReqMult;
                    Fields["antimatterRate"].guiActive = true;
                    Fields["antimatterProductionEfficiency"].guiActive = true;
                    powerStr = currentpowertmp.ToString("0.00") + "MW / " + (powerReqMult * PluginHelper.BaseAMFPowerConsumption).ToString("0.00") + "MW";
                    antimatterProductionEfficiency = (anti_factory.getAntimatterProductionEfficiency() * 100).ToString("0.0000") + "%";
                    double antimatter_rate_per_day = antimatter_rate_f * GameConstants.EARH_DAY_SECONDS;

                    if (antimatter_rate_per_day > 0.1)
                    {
                        antimatterRate = (antimatter_rate_per_day).ToString("0.0000") + " mg/day";
                    }
                    else
                    {
                        if (antimatter_rate_per_day > 0.1e-3)
                        {
                            antimatterRate = (antimatter_rate_per_day * 1e3).ToString("0.0000") + " ug/day";
                        }
                        else
                        {
                            antimatterRate = (antimatter_rate_per_day * 1e6).ToString("0.0000") + " ng/day";
                        }
                    }
                }
                else if (active_mode == 3) // Electrolysis
                {
                    currentpowertmp = electrical_power_ratio * PluginHelper.BaseELCPowerConsumption * powerReqMult;
                    Fields["electrolysisRate"].guiActive = true;
                    double electrolysisratetmp = -electrolysis_rate_f * GameConstants.EARH_DAY_SECONDS;
                    electrolysisRate = electrolysisratetmp.ToString("0.0") + "mT/day";
                    powerStr         = currentpowertmp.ToString("0.00") + "MW / " + (powerReqMult * PluginHelper.BaseELCPowerConsumption).ToString("0.00") + "MW";
                }
                else if (active_mode == 4) // Centrifuge
                {
                    currentpowertmp = electrical_power_ratio * PluginHelper.BaseCentriPowerConsumption * powerReqMult;
                    Fields["centrifugeRate"].guiActive = true;
                    powerStr = currentpowertmp.ToString("0.00") + "MW / " + (powerReqMult * PluginHelper.BaseCentriPowerConsumption).ToString("0.00") + "MW";
                    float deut_per_hour = deut_rate_f * 3600;
                    centrifugeRate = deut_per_hour.ToString("0.00") + " Kg Deuterium/Hour";
                }
                else
                {
                    // nothing
                }
            }
            else
            {
                if (play_down)
                {
                    anim[animName1].speed          = -1f;
                    anim[animName1].normalizedTime = 1f;
                    anim.Blend(animName1, 2f);
                    anim2[animName2].speed          = -1f;
                    anim2[animName2].normalizedTime = 1f;
                    anim2.Blend(animName2, 2f);
                    play_down = false;
                }

                //anim [animName1].normalizedTime = 0f;
                Fields["scienceRate"].guiActive      = false;
                Fields["collectedScience"].guiActive = false;
                Fields["reprocessingRate"].guiActive = false;
                Fields["antimatterRate"].guiActive   = false;
                Fields["powerStr"].guiActive         = false;
                Fields["centrifugeRate"].guiActive   = false;
                Fields["electrolysisRate"].guiActive = false;
                Fields["antimatterProductionEfficiency"].guiActive = false;

                if (crew_capacity_ratio > 0)
                {
                    statusTitle = "Idle";
                }
                else
                {
                    statusTitle = "Not enough crew";
                }
            }
        }