コード例 #1
0
        public override void OnStart(PartModule.StartState state)
        {
            _initializationCountdown = 10;
            Debug.Log("[KSPI] - Start Initializing ElectricEngineControllerFX");
            try
            {
                // initialise resources
                this.resources_to_supply = new [] { ResourceManager.FNRESOURCE_WASTEHEAT };
                base.OnStart(state);
                AttachToEngine();

                _ispFloatCurve = new FloatCurve();
                _ispFloatCurve.Add(0, baseISP);
                _g0                    = PluginHelper.GravityConstant;
                _speedOfLight          = GameConstants.speedOfLight * PluginHelper.SpeedOfLightMult;
                _hasGearTechnology     = String.IsNullOrEmpty(gearsTechReq) || PluginHelper.UpgradeAvailable(gearsTechReq);
                _modifiedEngineBaseIsp = baseISP * PluginHelper.ElectricEngineIspMult;
                _hasrequiredupgrade    = this.HasTechsRequiredToUpgrade();

                if (_hasrequiredupgrade && (isupgraded || state == StartState.Editor))
                {
                    upgradePartModule();
                }

                UpdateEngineTypeString();

                resourceBuffers = new ResourceBuffers();
                resourceBuffers.AddConfiguration(new ResourceBuffers.TimeBasedConfig(ResourceManager.FNRESOURCE_WASTEHEAT, wasteHeatMultiplier, 2.0e+4, true));
                resourceBuffers.UpdateVariable(ResourceManager.FNRESOURCE_WASTEHEAT, this.part.mass);
                resourceBuffers.Init(this.part);

                // initialize propellant
                _propellants = ElectricEnginePropellant.GetPropellantsEngineForType(type);
                SetupPropellants(true);
            }
            catch (Exception e)
            {
                Debug.LogError("[KSPI] - Error OnStart ElectricEngineControllerFX " + e.Message);
            }
            Debug.Log("[KSPI] - End Initializing ElectricEngineControllerFX");
        }
コード例 #2
0
        private void DetermineTechLevel()
        {
            numberOfAvailableUpgradeTechs = 0;
            if (PluginHelper.UpgradeAvailable(upgradeTechReq1))
            {
                numberOfAvailableUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(upgradeTechReq2))
            {
                numberOfAvailableUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(upgradeTechReq3))
            {
                numberOfAvailableUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(upgradeTechReq4))
            {
                numberOfAvailableUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(upgradeTechReq5))
            {
                numberOfAvailableUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(upgradeTechReq6))
            {
                numberOfAvailableUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(upgradeTechReq7))
            {
                numberOfAvailableUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(upgradeTechReq8))
            {
                numberOfAvailableUpgradeTechs++;
            }

            EngineGenerationType = (GenerationType)numberOfAvailableUpgradeTechs;
        }
コード例 #3
0
        protected void DetermineTechLevel()
        {
            var numberOfUpgradeTechs = 0;

            if (PluginHelper.UpgradeAvailable(upgradeTechReq1))
            {
                numberOfUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(upgradeTechReq2))
            {
                numberOfUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(upgradeTechReq3))
            {
                numberOfUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(upgradeTechReq4))
            {
                numberOfUpgradeTechs++;
            }

            EngineGenerationType = (GenerationType)numberOfUpgradeTechs;
        }
コード例 #4
0
        private RadiatorManager(FNRadiator radiator)
        {
            UpdatingRadiator = radiator;

            // determine number of upgrade techs
            NrAvailableUpgradeTechs = 1;
            if (PluginHelper.UpgradeAvailable(PluginHelper.RadiatorUpgradeTech4))
            {
                NrAvailableUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(PluginHelper.RadiatorUpgradeTech3))
            {
                NrAvailableUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(PluginHelper.RadiatorUpgradeTech2))
            {
                NrAvailableUpgradeTechs++;
            }
            if (PluginHelper.UpgradeAvailable(PluginHelper.RadiatorUpgradeTech1))
            {
                NrAvailableUpgradeTechs++;
            }

            // determine fusion tech levels
            if (NrAvailableUpgradeTechs == 5)
            {
                CurrentGenerationType = GenerationType.Mk5;
            }
            else if (NrAvailableUpgradeTechs == 4)
            {
                CurrentGenerationType = GenerationType.Mk4;
            }
            else if (NrAvailableUpgradeTechs == 3)
            {
                CurrentGenerationType = GenerationType.Mk3;
            }
            else if (NrAvailableUpgradeTechs == 2)
            {
                CurrentGenerationType = GenerationType.Mk2;
            }
            else
            {
                CurrentGenerationType = GenerationType.Mk1;
            }

            MaxVacuumTemperatureTitanium = PluginHelper.RadiatorTemperatureMk3;
            if (CurrentGenerationType == GenerationType.Mk5)
            {
                MaxVacuumTemperatureGraphene = PluginHelper.RadiatorTemperatureMk5;
            }
            else if (CurrentGenerationType == GenerationType.Mk4)
            {
                MaxVacuumTemperatureGraphene = PluginHelper.RadiatorTemperatureMk4;
            }
            else if (CurrentGenerationType == GenerationType.Mk3)
            {
                MaxVacuumTemperatureTitanium = MaxVacuumTemperatureGraphene = PluginHelper.RadiatorTemperatureMk3;
            }
            else if (CurrentGenerationType == GenerationType.Mk2)
            {
                MaxVacuumTemperatureTitanium = MaxVacuumTemperatureGraphene = PluginHelper.RadiatorTemperatureMk2;
            }
            else
            {
                MaxVacuumTemperatureTitanium = MaxVacuumTemperatureGraphene = PluginHelper.RadiatorTemperatureMk1;
            }
        }
コード例 #5
0
        public override void OnStart(PartModule.StartState state)
        {
            try
            {
                Debug.Log("[KSPI]: Start ElectricEngineControllerFX");

                if (state != StartState.Editor)
                {
                    if (vessel.FindPartModulesImplementing <FNGenerator>().Where(m => m.isHighPower).Any() == false)
                    {
                        if (powerThrustMultiplier == 1 && powerThrustMultiplierWithoutReactors > 0)
                        {
                            powerThrustMultiplier = powerThrustMultiplierWithoutReactors;
                        }

                        if (powerReqMult == 1 && powerReqMultWithoutReactor > 0)
                        {
                            powerReqMult = powerReqMultWithoutReactor;
                        }
                    }
                }

                ScaleParameters();

                // initialise resources
                this.resources_to_supply = new[] { ResourceManager.FNRESOURCE_WASTEHEAT };
                base.OnStart(state);

                AttachToEngine();
                DetermineTechLevel();
                powerCapacityModifier = PowerCapacityModifier;

                _initializationCountdown = 10;
                _ispFloatCurve           = new FloatCurve();
                _ispFloatCurve.Add(0, (float)baseISP);
                _speedOfLight          = GameConstants.speedOfLight * PluginHelper.SpeedOfLightMult;
                _hasGearTechnology     = String.IsNullOrEmpty(gearsTechReq) || PluginHelper.UpgradeAvailable(gearsTechReq);
                _modifiedEngineBaseIsp = baseISP * PluginHelper.ElectricEngineIspMult;
                _hasrequiredupgrade    = this.HasTechsRequiredToUpgrade();

                if (_hasrequiredupgrade && (isupgraded || state == StartState.Editor))
                {
                    upgradePartModule();
                }

                UpdateEngineTypeString();

                resourceBuffers = new ResourceBuffers();
                resourceBuffers.AddConfiguration(new ResourceBuffers.TimeBasedConfig(ResourceManager.FNRESOURCE_WASTEHEAT, wasteHeatMultiplier, 2.0e+4, true));
                resourceBuffers.UpdateVariable(ResourceManager.FNRESOURCE_WASTEHEAT, (double)(decimal)this.part.mass);
                resourceBuffers.Init(this.part);

                InitializePropellantMode();

                SetupPropellants(true);

                _attachedEngine.maxThrust = (float)maxThrustFromPower;
            }
            catch (Exception e)
            {
                Debug.LogError("[KSPI]: Error OnStart ElectricEngineControllerFX " + e.Message);
            }
            Debug.Log("[KSPI]: End Initializing ElectricEngineControllerFX");
        }
コード例 #6
0
 public static bool HasTechsRequiredToUpgrade(this IUpgradeableModule upg_module)
 {
     return(PluginHelper.UpgradeAvailable(upg_module.UpgradeTechnology));
 }
コード例 #7
0
        private void InitializeEfficiency()
        {
            if (chargedParticleMode && efficiencyMk1 == 0)
            {
                efficiencyMk1 = directConversionEff;
            }
            else if (!chargedParticleMode && efficiencyMk1 == 0)
            {
                efficiencyMk1 = pCarnotEff;
            }

            if (chargedParticleMode && efficiencyMk2 == 0)
            {
                efficiencyMk2 = upgradedDirectConversionEff;
            }
            else if (!chargedParticleMode && efficiencyMk2 == 0)
            {
                efficiencyMk2 = upgradedpCarnotEff;
            }

            if (efficiencyMk3 == 0)
            {
                efficiencyMk3 = efficiencyMk2;
            }
            if (efficiencyMk4 == 0)
            {
                efficiencyMk4 = efficiencyMk3;
            }
            if (efficiencyMk5 == 0)
            {
                efficiencyMk5 = efficiencyMk4;
            }
            if (efficiencyMk6 == 0)
            {
                efficiencyMk6 = efficiencyMk5;
            }

            if (String.IsNullOrEmpty(Mk2TechReq))
            {
                Mk2TechReq = upgradeTechReq;
            }

            int techLevel = 1;

            if (PluginHelper.UpgradeAvailable(Mk6TechReq))
            {
                techLevel++;
            }
            if (PluginHelper.UpgradeAvailable(Mk5TechReq))
            {
                techLevel++;
            }
            if (PluginHelper.UpgradeAvailable(Mk4TechReq))
            {
                techLevel++;
            }
            if (PluginHelper.UpgradeAvailable(Mk3TechReq))
            {
                techLevel++;
            }
            if (PluginHelper.UpgradeAvailable(Mk2TechReq))
            {
                techLevel++;
            }

            if (techLevel == 6)
            {
                maxEfficiency = efficiencyMk6;
            }
            else if (techLevel == 5)
            {
                maxEfficiency = efficiencyMk5;
            }
            else if (techLevel == 4)
            {
                maxEfficiency = efficiencyMk4;
            }
            else if (techLevel == 3)
            {
                maxEfficiency = efficiencyMk3;
            }
            else if (techLevel == 2)
            {
                maxEfficiency = efficiencyMk2;
            }
            else
            {
                maxEfficiency = efficiencyMk1;
            }
        }