public override void OnUpdate() { //Update Events Events["ActivateReactor"].active = !IsEnabled && !IsNuclear; Events["DeactivateReactor"].active = IsEnabled && !IsNuclear; Events["BreedTritium"].active = !breedtritium && IsNeutronRich && IsEnabled; Events["StopBreedTritium"].active = breedtritium && IsNeutronRich && IsEnabled; Events["RetrofitReactor"].active = ResearchAndDevelopment.Instance != null ? !isupgraded && ResearchAndDevelopment.Instance.Science >= upgradeCost && hasrequiredupgrade : false; //Update Fields Fields["currentTPwr"].guiActive = IsEnabled && (ongoing_thermal_power_f > 0); Fields["currentCPwr"].guiActive = IsEnabled && (ongoing_charged_power_f > 0); fuelModeStr = current_fuel_mode != null ? current_fuel_mode.ModeGUIName : ""; // reactorTypeStr = isupgraded ? upgradedName != "" ? upgradedName : originalName : originalName; coretempStr = CoreTemperature.ToString("0") + " K"; if (update_count - last_draw_update > 10) { if (IsEnabled) { if (current_fuel_mode != null && !current_fuel_mode.ReactorFuels.Any(fuel => getFuelAvailability(fuel) <= 0)) { if (ongoing_thermal_power_f > 0) { currentTPwr = PluginHelper.getFormattedPowerString(ongoing_thermal_power_f) + "_th"; } if (ongoing_charged_power_f > 0) { currentCPwr = PluginHelper.getFormattedPowerString(ongoing_charged_power_f) + "_cp"; } statusStr = "Active (" + powerPcnt.ToString("0.00") + "%)"; } else if (current_fuel_mode != null) { statusStr = current_fuel_mode.ReactorFuels.FirstOrDefault(fuel => getFuelAvailability(fuel) <= 0).FuelName + " Deprived"; } } else { if (powerPcnt > 0) { statusStr = "Decay Heating (" + powerPcnt.ToString("0.00") + "%)"; } else { statusStr = "Offline"; } } last_draw_update = update_count; } if (!vessel.isActiveVessel || part == null) { RenderingManager.RemoveFromPostDrawQueue(0, OnGUI); } update_count++; }
public override void OnUpdate() { bool transmitter_on = has_transmitter && part_transmitter.isActive(); Events["ActivateReceiver"].active = !receiverIsEnabled && !transmitter_on; Events["DisableReceiver"].active = receiverIsEnabled; Fields["toteff"].guiActive = (connectedsatsi > 0 || connectedrelaysi > 0); if (IsThermalSource) { coreTempererature = CoreTemperature.ToString("0.0") + " K"; Fields["coreTempererature"].guiActive = true; } else { Fields["coreTempererature"].guiActive = false; } Fields["coreTempererature"].guiActive = IsThermalSource; if (receiverIsEnabled) { if (powerInput > 1000) { beamedpower = (powerInput / 1000).ToString("0.00") + "MW"; } else { beamedpower = powerInput.ToString("0.00") + "KW"; } } else { beamedpower = "Offline."; } connectedsats = string.Format("{0}/{1}", connectedsatsi, MicrowaveSources.instance.transmitters.Count); connectedrelays = string.Format("{0}/{1}", connectedrelaysi, MicrowaveSources.instance.relays.Count); networkDepthString = networkDepth.ToString(); toteff = (efficiency_d * 100).ToString("0.00") + "%"; if (anim != null) { if (connectedsatsi > 0 || connectedrelaysi > 0) { if (play_up) { play_down = true; play_up = false; anim[animName].speed = 1f; anim.Blend(animName, 2f); } } else { if (play_down) { play_down = false; play_up = true; if (anim[animName].normalizedTime == 0.0f) { anim[animName].normalizedTime = 1.0f; } anim[animName].speed = -1f; anim.Blend(animName, 2f); } } } }
public override void OnStart(PartModule.StartState state) { PowerOutputBase = PowerOutput; upgradedPowerOutputBase = upgradedPowerOutput; // Gui Fields Fields["partMass"].guiActiveEditor = partMass > 0; String[] resources_to_supply = { FNResourceManager.FNRESOURCE_THERMALPOWER, FNResourceManager.FNRESOURCE_WASTEHEAT, FNResourceManager.FNRESOURCE_CHARGED_PARTICLES }; this.resources_to_supply = resources_to_supply; print("[KSP Interstellar] Configuring Reactor Fuel Modes"); fuel_modes = getReactorFuelModes(); setDefaultFuelMode(); print("[KSP Interstellar] Configuration Complete"); var rnd = new System.Random(); windowID = rnd.Next(int.MaxValue); base.OnStart(state); if (state == StartState.Editor) { print("[KSPI] Checking for upgrade tech: " + UpgradeTechnology); if (this.HasTechsRequiredToUpgrade() || CanPartUpgradeAlternative()) { print("[KSPI] Found required upgradeTech, Upgrading Reactor"); upgradePartModule(); } maximumThermalPowerFloat = MaximumThermalPower; reactorTypeStr = isupgraded ? upgradedName != "" ? upgradedName : originalName : originalName; coretempStr = CoreTemperature.ToString("0") + " K"; return; } if (this.HasTechsRequiredToUpgrade() || CanPartUpgradeAlternative()) { hasrequiredupgrade = true; } if (!reactorInit && startDisabled) { last_active_time = (float)(Planetarium.GetUniversalTime() - 4.0 * GameConstants.EARH_DAY_SECONDS); IsEnabled = false; startDisabled = false; reactorInit = true; } else if (!reactorInit) { IsEnabled = true; reactorInit = true; } print("[KSP Interstellar] Reactor Persistent Resource Update"); if (IsEnabled && last_active_time > 0) { doPersistentResourceUpdate(); } this.part.force_activate(); //RenderingManager.AddToPostDrawQueue(0, OnGUI); print("[KSP Interstellar] Configuring Reactor"); maximumThermalPowerFloat = MaximumThermalPower; }