void DetermineRange() { var crewList = EL_Utils.GetCrewList(part); int bestLevel = -2; foreach (var crew in crewList) { int level = -1; if (EL_Utils.HasSkill <ExSurveySkill> (crew)) { level = crew.experienceLevel; } if (level > bestLevel) { bestLevel = level; } } if (bestLevel > 5) { bestLevel = 5; } range = site_ranges[bestLevel + 2]; if (canBuild) { StartCoroutine(WaitAndFindSites()); } }
public void UpdateProductivity() { double kh = 0; enableSkilled = false; enableUnskilled = false; var crewList = EL_Utils.GetCrewList(part); foreach (var crew in crewList) { if (crew.GetEffect <ELConstructionSkill> () != null) { if (crew.experienceLevel >= 4) { enableSkilled = true; } if (crew.experienceLevel >= 5) { enableUnskilled = true; } } } foreach (var crew in crewList) { kh += KerbalContribution(crew); } Productivity = kh * ProductivityFactor + UnmannedProductivity; //Debug.LogFormat("[ELWorkshop] UpdateProductivity: {0}", Productivity); }
public override string GetInfo() { ConversionRecipe recipe = LoadRecipe(Rate); StringBuilder sb = StringBuilderCache.Acquire(); sb.Append(ConverterName); if (recipe.Inputs.Count > 0) { sb.Append("\n\n<color=#bada55>" + LocalStrings.Inputs + ":</color>"); //Inputs for (int i = 0, c = recipe.Inputs.Count; i < c; i++) { EL_Utils.PrintResource(sb, recipe.Inputs[i], "t"); } } if (recipe.Outputs.Count > 0) { sb.Append("\n<color=#bada55>" + LocalStrings.Outputs + ":</color>"); //Outputs for (int i = 0, c = recipe.Outputs.Count; i < c; i++) { EL_Utils.PrintResource(sb, recipe.Outputs[i], "t"); } } if (recipe.Requirements.Count > 0) { sb.Append("\n<color=#bada55>" + LocalStrings.Requirements + ":</color>"); //Requirements for (int i = 0, c = recipe.Requirements.Count; i < c; i++) { EL_Utils.PrintResource(sb, recipe.Requirements[i], "t"); } } return(sb.ToStringAndRelease()); }
void DetermineRange() { var crewList = EL_Utils.GetCrewList(part); int bestLevel = -2; foreach (var crew in crewList) { int level = -1; if (crew.GetEffect <ELSurveySkill> () != null) { level = crew.experienceLevel; } if (level > bestLevel) { bestLevel = level; } Debug.LogFormat("[EL SurveyStation] Kerbal: {0} {1} {2} {3}", crew.name, crew.GetEffect <ELSurveySkill> () != null, crew.experienceLevel, level); } if (bestLevel > 5) { bestLevel = 5; } range = site_ranges[bestLevel + 2]; Debug.LogFormat("[EL SurveyStation] best level: {0}, range: {1}", bestLevel, range); if (canBuild) { StartCoroutine(WaitAndFindSites()); } }
private void DetermineProductivity() { float kh = 0; enableSkilled = false; enableUnskilled = false; var crewList = EL_Utils.GetCrewList(part); if (useSkill) { foreach (var crew in crewList) { if (EL_Utils.HasSkill <ExConstructionSkill> (crew)) { if (crew.experienceLevel >= 4) { enableSkilled = true; } if (crew.experienceLevel >= 5) { enableUnskilled = true; } } } } foreach (var crew in crewList) { kh += KerbalContribution(crew, crew.stupidity, crew.courage, crew.isBadass); } Productivity = kh * ProductivityFactor; }
private void DetermineProductivity() { float kh = 0; enableSkilled = false; enableUnskilled = false; var crewList = EL_Utils.GetCrewList(part); if (useSkill) { foreach (var crew in crewList) { if (crew.GetEffect <ExConstructionSkill> () != null) { if (crew.experienceLevel >= 4) { enableSkilled = true; } if (crew.experienceLevel >= 5) { enableUnskilled = true; } } } } foreach (var crew in crewList) { kh += KerbalContribution(crew); } Productivity = kh * ProductivityFactor; }
public override string GetInfo() { StringBuilder sb = StringBuilderCache.Acquire(); sb.Append(ConverterName); if (Recipe.Inputs.Count > 0) { sb.Append("\n\n<color=#bada55>Inputs:</color>"); for (int i = 0, c = Recipe.Inputs.Count; i < c; i++) { EL_Utils.PrintResource(sb, Recipe.Inputs[i]); } } if (Recipe.Outputs.Count > 0) { sb.Append("\n<color=#bada55>Outputs:</color>"); for (int i = 0, c = Recipe.Outputs.Count; i < c; i++) { EL_Utils.PrintResource(sb, Recipe.Outputs[i]); } } if (Recipe.Requirements.Count > 0) { sb.Append("\n<color=#bada55>Requirements:</color>"); for (int i = 0, c = Recipe.Requirements.Count; i < c; i++) { EL_Utils.PrintResource(sb, Recipe.Requirements[i]); } } return(sb.ToStringAndRelease()); }
private void MassLabel(string title, double mass) { GUILayout.BeginHorizontal(); GUILayout.Label(title + ":"); GUILayout.FlexibleSpace(); GUILayout.Label(EL_Utils.FormatMass(mass)); GUILayout.EndHorizontal(); }
public override void OnStart(PartModule.StartState state) { base.OnStart(state); furnaceTempField = Fields["furnaceTemp"]; EL_Utils.SetupEVAEvent(Events["StartResourceConverter"], EVARange); EL_Utils.SetupEVAEvent(Events["StopResourceConverter"], EVARange); coreHeat = part.FindModuleImplementing <ModuleCoreHeat> (); }
void PrintRecipe (StringBuilder sb, Recipe recipe, bool disc = false) { for (int i = 0, c = recipe.ingredients.Count; i < c; i++) { if (EL_Utils.PrintIngredient (sb, recipe.ingredients[i], "kg") && disc && recipe.ingredients[i].discardable) { sb.Append("+"); } } }
double ResourceProgress(string label, BuildResource br, BuildResource req, bool forward) { double fraction = 1; if (req.amount > 0) { fraction = (req.amount - br.amount) / req.amount; } double required = br.amount; double available = control.padResources.ResourceAmount(br.name); double alarmTime; string percent = (fraction * 100).ToString("G4") + "%"; if (control.paused) { percent = percent + "[paused]"; alarmTime = 0; // need assignment or compiler complains about use of unassigned variable } else { double eta = BuildETA(br, req, forward); alarmTime = Planetarium.GetUniversalTime() + eta; percent = percent + " " + EL_Utils.TimeSpanString(eta); } GUILayout.BeginHorizontal(); // Resource name GUILayout.Box(label, ELStyles.white, GUILayout.Width(125), GUILayout.Height(40)); GUILayout.BeginVertical(); ELStyles.bar.Draw((float)fraction, percent, 300); GUILayout.EndVertical(); // Calculate if we have enough resources to build GUIStyle requiredStyle = ELStyles.green; if (required > available) { requiredStyle = ELStyles.yellow; } // Required and Available GUILayout.Box(displayAmount(required), requiredStyle, GUILayout.Width(100), GUILayout.Height(40)); GUILayout.Box(displayAmount(available), ELStyles.white, GUILayout.Width(100), GUILayout.Height(40)); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); return(alarmTime); }
public override void OnStart(PartModule.StartState state) { if (state == PartModule.StartState.None || state == PartModule.StartState.Editor) { return; } if (EVARange > 0) { EL_Utils.SetupEVAEvent(Events["ShowRenameUI"], EVARange); } control.OnStart(); }
double ResourceProgress(string label, BuildResource br, BuildResource req, bool forward) { double fraction = 1; if (req.amount > 0) { fraction = (req.amount - br.amount) / req.amount; } double required = br.amount; double available = control.padResources.ResourceAmount(br.name); double eta = 0; string percent = (fraction * 100).ToString("G4") + "%"; if (control.paused) { percent = percent + "[paused]"; } else { eta = BuildETA(br, req, forward); percent = percent + " " + EL_Utils.TimeSpanString(eta); } GUILayout.BeginHorizontal(); // Resource name GUILayout.Box(label, ELStyles.white, width125, height40); GUILayout.BeginVertical(); ELStyles.bar.Draw((float)fraction, percent, 300); GUILayout.EndVertical(); // Calculate if we have enough resources to build GUIStyle requiredStyle = ELStyles.green; if (required > available) { requiredStyle = ELStyles.yellow; } // Required and Available GUILayout.Box(displayAmount(required), requiredStyle, width100, height40); GUILayout.Box(displayAmount(available), ELStyles.white, width100, height40); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); return(eta); }
public override void OnStart(PartModule.StartState state) { if (state == PartModule.StartState.None || state == PartModule.StartState.Editor) { return; } control.OnStart(); if (EVARange > 0) { EL_Utils.SetupEVAEvent(Events["ShowRenameUI"], EVARange); } GameEvents.onVesselSituationChange.Add(onVesselSituationChange); GameEvents.onCrewTransferred.Add(onCrewTransferred); StartCoroutine(WaitAndDetermineRange()); ELSurveyTracker.onSiteAdded.Add(onSiteAdded); ELSurveyTracker.onSiteRemoved.Add(onSiteRemoved); ELSurveyTracker.onSiteModified.Add(onSiteModified); }
public override void OnStart(StartState state) { RecycleField = part.FindModelComponent <Collider> (RecycleField_name); Debug.Log(String.Format("[EL Recycler] OnStart: {0}", RecycleField)); if (EVARange > 0) { EL_Utils.SetupEVAEvent(Events["Activate"], EVARange); EL_Utils.SetupEVAEvent(Events["Deactivate"], EVARange); } if (RecycleField != null) { RecycleField.enabled = false; RecycleField.isTrigger = true; //FIXME workaround for KSP 1.1 bug } if (state == PartModule.StartState.None || state == PartModule.StartState.Editor) { return; } sm.Start(RecycleField); }
public override void OnStart(PartModule.StartState state) { base.OnStart(state); if (!HighLogic.LoadedSceneIsFlight) { return; } if (resource_providers == null) { resource_providers = new List <IResourceProvider> (); resource_providers.Add(StockResourceProvider.Create()); var kethane = KethaneResourceProvider.Create(); if (kethane != null) { resource_providers.Add(kethane); } } resource_amounts = new double[resource_providers.Count]; FindTransforms(); Fields["ResourceStatus"].guiName = ResourceName + " rate"; EL_Utils.SetupEVAEvent(Events["StartResourceConverter"], EVARange); EL_Utils.SetupEVAEvent(Events["StopResourceConverter"], EVARange); }
private float KerbalContribution(ProtoCrewMember crew, float stupidity, float courage, bool isBadass) { string expstr = KerbalExt.Get(crew, "experience:task=Workshop"); float experience = 0; if (expstr != null) { float.TryParse(expstr, out experience); } float contribution; if (isBadass) { contribution = Baddass(stupidity, courage, experience); } else { contribution = Normal(stupidity, courage, experience); } if (useSkill) { if (!EL_Utils.HasSkill <ExConstructionSkill> (crew)) { if (!enableUnskilled) { // can't work here, but may not know to keep out of the way. contribution = Mathf.Min(contribution, 0); } if (crew.experienceLevel >= 3) { // can resist "ooh, what does this button do?" contribution = Mathf.Max(contribution, 0); } } else { switch (crew.experienceLevel) { case 0: if (!enableSkilled && !SupportInexperienced) { // can't work here, but knows to keep out of the way. contribution = 0; } break; case 1: break; case 2: if (SupportInexperienced) { // He's learned the ropes. contribution = HyperCurve(contribution); } break; default: // He's learned the ropes very well. contribution = HyperCurve(contribution); break; } } } Debug.Log(String.Format("[EL Workshop] Kerbal: " + "{0} {1} {2} {3} {4}({5}) {6} {7} {8} {9} {10}", crew.name, stupidity, courage, isBadass, experience, expstr, contribution, EL_Utils.HasSkill <ExConstructionSkill> (crew), crew.experienceLevel, enableSkilled, SupportInexperienced)); return(contribution); }
private void ResourcePanel(string title, List <BuildResource> resources, ScrollView scroll) { GUILayout.Label(title + ":"); GUILayout.BeginVertical(GUILayout.Height(100)); scroll.Begin(); foreach (var res in resources) { GUILayout.BeginHorizontal(); GUILayout.Label(String.Format("{0}:", res.name)); GUILayout.FlexibleSpace(); GUILayout.Label(String.Format("{0} ({1})", res.amount.ToStringSI(4, unit: "u"), EL_Utils.FormatMass(res.mass, 4))); GUILayout.EndHorizontal(); } scroll.End(); GUILayout.EndVertical(); }
public override void OnStart(PartModule.StartState state) { base.OnStart (state); EL_Utils.SetupEVAEvent (Events["StartResourceConverter"], EVARange); EL_Utils.SetupEVAEvent (Events["StopResourceConverter"], EVARange); }