Skip to content
This repository has been archived by the owner on Jun 17, 2021. It is now read-only.

Commit

Permalink
Merge pull request #3 from soulsource/master
Browse files Browse the repository at this point in the history
Change a few frequently called foreach loops to for
  • Loading branch information
Real-Gecko authored Mar 13, 2017
2 parents c268186 + 9382173 commit a41a109
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 17 deletions.
12 changes: 7 additions & 5 deletions BonVoyage/BonVoyage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -220,9 +220,9 @@ public void Update()
lastUpdated = DateTime.Now;

double currentTime = Planetarium.GetUniversalTime();

foreach (ActiveRover rover in activeRovers)
rover.Update (currentTime);
for(int i=0; i<activeRovers.Count;++i)
activeRovers[i].Update (currentTime);
}

/// <summary>
Expand Down Expand Up @@ -329,8 +329,9 @@ public void DrawGUI(int guiId)
double currentTime = Planetarium.GetUniversalTime();
GUILayout.BeginVertical();
mainWindowScrollPosition = GUILayout.BeginScrollView(mainWindowScrollPosition);
foreach (var rover in activeRovers)
for(int i=0; i<activeRovers.Count;++i)
{
var rover = activeRovers[i];
switch (rover.status)
{
case "current":
Expand Down Expand Up @@ -423,8 +424,9 @@ public void DrawGUI(int guiId)
}

public void UpdateRoverState(Vessel vessel, bool stateActive) {
foreach (var rover in activeRovers)
for(int i=0; i<activeRovers.Count;++i)
{
var rover = activeRovers[i];
if (rover.vessel == vessel)
{
rover.bvActive = stateActive;
Expand Down
33 changes: 21 additions & 12 deletions BonVoyage/BonVoyageModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,9 @@ public void Activate()
int inTheAir = 0;

List<ModuleWheels.ModuleWheelMotor> operableWheels = new List<ModuleWheels.ModuleWheelMotor>();
foreach (var part in this.vessel.parts)
for(int i=0;i<this.vessel.parts.Count;++i)
{
var part = this.vessel.parts[i];
ModuleWheels.ModuleWheelMotor wheelMotor = part.FindModuleImplementing<ModuleWheels.ModuleWheelMotor>();
if (wheelMotor != null)
{
Expand Down Expand Up @@ -293,9 +294,9 @@ public void CalculateOther()
[KSPEvent(guiActive = true, guiName = "Calculate average speed", active = false)]
public void CalculateAverageSpeed() {
List<ModuleWheels.ModuleWheelMotor> operableWheels = new List<ModuleWheels.ModuleWheelMotor>();
foreach (var part in this.vessel.parts)
for(int i=0; i< this.vessel.parts.Count;++i)
{
ModuleWheels.ModuleWheelMotor wheelMotor = part.FindModuleImplementing<ModuleWheels.ModuleWheelMotor>();
ModuleWheels.ModuleWheelMotor wheelMotor = this.vessel.parts[i].FindModuleImplementing<ModuleWheels.ModuleWheelMotor>();
if (wheelMotor != null)
{
operableWheels.Add(wheelMotor);
Expand All @@ -311,9 +312,9 @@ public void CalculatePowerRequirement()
{
double powerRequired = 0;
// List<ModuleWheels.ModuleWheelMotor> operableWheels = new List<ModuleWheels.ModuleWheelMotor>();
foreach (var part in this.vessel.parts)
for(int i=0; i< this.vessel.parts.Count;++i)
{
ModuleWheels.ModuleWheelMotor wheelMotor = part.FindModuleImplementing<ModuleWheels.ModuleWheelMotor>();
ModuleWheels.ModuleWheelMotor wheelMotor = this.vessel.parts[i].FindModuleImplementing<ModuleWheels.ModuleWheelMotor>();
if (wheelMotor != null)
{
if (wheelMotor.motorEnabled)
Expand Down Expand Up @@ -399,8 +400,9 @@ private double GetAverageSpeed(List<ModuleWheels.ModuleWheelMotor> operableWheel
{
double averageSpeed = 0;
int wheelsOnline = 0;
foreach (ModuleWheels.ModuleWheelMotor wheelMotor in operableWheels)
for(int i=0;i<operableWheels.Count;++i)
{
var wheelMotor = operableWheels[i];
if (wheelMotor.motorEnabled)
{
wheelsOnline++;
Expand All @@ -426,9 +428,9 @@ private double CalculateSolarPower()
double solarFlux = PhysicsGlobals.SolarLuminosity / (12.566370614359172 * distanceToSun * distanceToSun);
float multiplier = 1;

foreach (var part in this.vessel.parts)
for(int i=0;i<this.vessel.parts.Count;++i)
{
ModuleDeployableSolarPanel solarPanel = part.FindModuleImplementing<ModuleDeployableSolarPanel>();
ModuleDeployableSolarPanel solarPanel = this.vessel.parts[i].FindModuleImplementing<ModuleDeployableSolarPanel>();
if (solarPanel == null)
continue;
if (solarPanel.deployState != ModuleDeployableSolarPanel.DeployState.BROKEN)
Expand All @@ -449,13 +451,16 @@ private double CalculateSolarPower()
private double CalculateOtherPower()
{
double otherPower = 0;
foreach (var part in this.vessel.parts)
for(int i=0;i<this.vessel.parts.Count;++i)
{
var part = this.vessel.parts[i];
// Find standard RTGs
ModuleGenerator powerModule = part.FindModuleImplementing<ModuleGenerator>();
if (powerModule != null) {
if (powerModule.generatorIsActive || powerModule.isAlwaysActive) {
foreach (var resource in powerModule.resHandler.outputResources) {
for(int j=0; j<powerModule.resHandler.outputResources.Count;++j)
{
var resource = powerModule.resHandler.outputResources[j];
if (resource.name == "ElectricCharge") {
otherPower += resource.rate * powerModule.efficiency;
}
Expand All @@ -467,7 +472,9 @@ private double CalculateOtherPower()
PartModuleList modules = part.Modules;

// Near future fission reactors
foreach (var module in modules) {
for(int j=0;j<modules.Count;++j)
{
var module = modules[j];
if (module.moduleName == "FissionGenerator") {
otherPower += double.Parse (module.Fields.GetValue ("CurrentGeneration").ToString());
}
Expand All @@ -477,7 +484,9 @@ private double CalculateOtherPower()
ModuleResourceConverter converterModule = part.FindModuleImplementing<ModuleResourceConverter>();
if (converterModule != null) {
if (converterModule.ModuleIsActive() && converterModule.ConverterName == "Reactor") {
foreach (var resource in converterModule.outputList) {
for(int j=0;j<converterModule.outputList.Count;++j)
{
var resource = converterModule.outputList[j];
if (resource.ResourceName == "ElectricCharge") {
otherPower += resource.Ratio * converterModule.GetEfficiencyMultiplier();
}
Expand Down

0 comments on commit a41a109

Please sign in to comment.