コード例 #1
0
 public void NotifyActiveChargedEnergyGenrator(double efficency, ElectricGeneratorType generatorType)
 {
 }
コード例 #2
0
 public bool ShouldApplyBalance(ElectricGeneratorType generatorType)
 {
     return false;
 }
コード例 #3
0
 public bool ShouldApplyBalance(ElectricGeneratorType generatorType)
 {
     return false;
 }
コード例 #4
0
 public void NotifyActiveThermalEnergyGenrator(double efficency, ElectricGeneratorType generatorType)
 {
     currentIsThermalEnergyGenratorActive = efficency;
 }
コード例 #5
0
 public void NotifyActiveThermalEnergyGenrator(double efficency, ElectricGeneratorType generatorType)
 {
     currentIsThermalEnergyGeneratorActive = efficency;
 }
コード例 #6
0
 public void NotifyActiveChargedEnergyGenrator(double efficency, ElectricGeneratorType generatorType)
 {
 }
コード例 #7
0
 public bool ShouldApplyBalance(ElectricGeneratorType generatorType)
 {
     return generatorType == _firstGeneratorType && storedIsThermalEnergyGenratorActive > 0 && storedIsChargedEnergyGenratorActive > 0;
 }
コード例 #8
0
        public override void OnStart(PartModule.StartState state)
        {
            windowPosition = new Rect(windowPositionX, windowPositionY, 300, 100);

            _firstGeneratorType = ElectricGeneratorType.unknown;
            _hasPowerUpgradeTechnology = PluginHelper.upgradeAvailable(powerUpgradeTechReq);
            previousTimeWarp = TimeWarp.fixedDeltaTime - 1.0e-6f;
            hasBimodelUpgradeTechReq = PluginHelper.HasTechRequirmentOrEmpty(bimodelUpgradeTechReq);

            if (!part.Resources.Contains(FNResourceManager.FNRESOURCE_THERMALPOWER))
            {
                ConfigNode node = new ConfigNode("RESOURCE");
                node.AddValue("name", FNResourceManager.FNRESOURCE_THERMALPOWER);
                node.AddValue("maxAmount", PowerOutput);
                node.AddValue("possibleAmount", 0);
                part.AddResource(node);
                part.Resources.UpdateList();
            }

            // while in edit mode, listen to on attach event
            if (state == StartState.Editor)
                part.OnEditorAttach += OnEditorAttach;

            // initialise resource defenitions
            thermalPowerResource = part.Resources.list.FirstOrDefault(r => r.resourceName == FNResourceManager.FNRESOURCE_THERMALPOWER);
            chargedPowerResource = part.Resources.list.FirstOrDefault(r => r.resourceName == FNResourceManager.FNRESOURCE_CHARGED_PARTICLES);
            wasteheatPowerResource = part.Resources.list.FirstOrDefault(r => r.resourceName == FNResourceManager.FNRESOURCE_WASTEHEAT);

            // calculate WasteHeat Capacity
            partBaseWasteheat = part.mass * 1.0e+5 * wasteHeatMultiplier + (StableMaximumReactorPower * 100);

            String[] resources_to_supply = { FNResourceManager.FNRESOURCE_THERMALPOWER, FNResourceManager.FNRESOURCE_WASTEHEAT, FNResourceManager.FNRESOURCE_CHARGED_PARTICLES };
            this.resources_to_supply = resources_to_supply;

            var rnd = new System.Random();
            windowID = rnd.Next(int.MaxValue);
            base.OnStart(state);

            // check if we need to upgrade
            if (state == StartState.Editor)
            {
                print("[KSPI] Checking for upgrade tech: " + UpgradeTechnology);
                if (this.HasTechsRequiredToUpgrade() || CanPartUpgradeAlternative())
                {
                    print("[KSPI] Found required upgradeTech, Upgrading Reactor");
                    upgradePartModule();
                }
            }

            // configure reactor modes
            print("[KSP Interstellar] Configuring Reactor Fuel Modes");
            fuel_modes = GetReactorFuelModes();
            setDefaultFuelMode();
            UpdateFuelMode();
            print("[KSP Interstellar] Configuration Reactor Fuels Complete");

            if (state == StartState.Editor)
            {
                maximumThermalPowerFloat = MaximumThermalPower;
                reactorTypeStr = isupgraded ? upgradedName != "" ? upgradedName : originalName : originalName;
                coretempStr = CoreTemperature.ToString("0") + " K";
                return;
            }

            if (this.HasTechsRequiredToUpgrade() || CanPartUpgradeAlternative())
                hasrequiredupgrade = true;

            if (!reactorInit)
            {
                IsEnabled = true;
                reactorInit = true;
                breedtritium = true;

                if (startDisabled)
                {
                    last_active_time = (float)(Planetarium.GetUniversalTime() - 4.0 * GameConstants.EARH_DAY_SECONDS);
                    IsEnabled = false;
                    startDisabled = false;
                    breedtritium = false;
                }
            }

            print("[KSP Interstellar] Reactor Persistent Resource Update");
            if (IsEnabled && last_active_time > 0)
                DoPersistentResourceUpdate();

            // only force activate if not with a engine model
            var myAttachedEngine = this.part.FindModuleImplementing<ModuleEngines>();
            if (myAttachedEngine == null)
            {
                this.part.force_activate();
                Fields["partMass"].guiActiveEditor = true;
                Fields["radius"].guiActiveEditor = true;
                Fields["connectedRecieversStr"].guiActiveEditor = true;
                Fields["heatTransportationEfficiency"].guiActiveEditor = true;
            }

            //RenderingManager.AddToPostDrawQueue(0, OnGUI);
            print("[KSP Interstellar] Succesfully Completed Configuring Reactor");
        }
コード例 #9
0
 public void NotifyActiveThermalEnergyGenrator(double efficency, ElectricGeneratorType generatorType)
 {
     currentIsThermalEnergyGenratorActive = efficency;
     if (_firstGeneratorType == ElectricGeneratorType.unknown)
         _firstGeneratorType = generatorType;
 }