/// <summary> /// Get all the kerbal classes in the game. Doesn't include "tourist", since technically /// speaking that's not a class. /// </summary> /// <returns></returns> private static HashSet <string> FindKerbalClasses() { HashSet <string> kerbalClasses = new HashSet <string>(); ExperienceSystemConfig systemConfig = new ExperienceSystemConfig(); for (int traitIndex = 0; traitIndex < systemConfig.Categories.Count; ++traitIndex) { ExperienceTraitConfig traitConfig = systemConfig.Categories[traitIndex]; Logging.Log("Adding kerbal class: " + traitConfig.Name); kerbalClasses.Add(traitConfig.Name); } kerbalClasses.Add(TouristClass); // since the game doesn't list "tourist" as an actual class return(kerbalClasses); }
/// <summary> /// Get all kerbal effect types. /// </summary> /// <param name="kerbalClasses"></param> /// <returns></returns> private static HashSet <string> FindKerbalEffects() { HashSet <string> kerbalEffects = new HashSet <string>(); ExperienceSystemConfig systemConfig = new ExperienceSystemConfig(); for (int traitIndex = 0; traitIndex < systemConfig.Categories.Count; ++traitIndex) { ExperienceTraitConfig traitConfig = systemConfig.Categories[traitIndex]; if (traitConfig.Effects == null) { continue; } for (int effectIndex = 0; effectIndex < traitConfig.Effects.Count; ++effectIndex) { ExperienceEffectConfig effectConfig = traitConfig.Effects[effectIndex]; if (!kerbalEffects.Contains(effectConfig.Name)) { Logging.Log("Adding kerbal effect: " + effectConfig.Name); kerbalEffects.Add(effectConfig.Name); } } } return(kerbalEffects); }
public override void SetVisible(bool newValue) { base.SetVisible(newValue); if (newValue) { trainees.Clear(); newProfessions.Clear(); //Get a list of available traits expSysConfig = new ExperienceSystemConfig(); expSysConfig.LoadTraitConfigs(); traitNames = expSysConfig.TraitNames.ToArray(); //Filter the list if we have any blacklisted traits List <string> names = new List <string>(); if (!string.IsNullOrEmpty(blacklistedTraits)) { for (int index = 0; index < traitNames.Length; index++) { if (blacklistedTraits.Contains(traitNames[index]) == false) { names.Add(traitNames[index]); } } if (names.Count > 0) { traitNames = names.ToArray(); } else { traitNames = null; } } if (traitNames == null) { return; } //Get the list of kerbals in the part that can be converted. int totalCrew = this.part.protoModuleCrew.Count; ProtoCrewMember candidate; names.Clear(); for (int index = 0; index < totalCrew; index++) { candidate = this.part.protoModuleCrew[index]; if (string.IsNullOrEmpty(traitsAllowedToConvert)) { trainees.Add(candidate.name, candidate); names.Add(candidate.name); } else if (traitsAllowedToConvert.Contains(candidate.trait)) { trainees.Add(candidate.name, candidate); names.Add(candidate.name); } } //Generate the list of names if (names.Count > 0) { kerbalNames = names.ToArray(); } } }
// reads trait icon settings from config file private void LoadIcons() { Loaded = true; ExperienceSystemConfig esc = GameDatabase.Instance.ExperienceConfigs; traitSettings.Clear(); ConfigNode node = GameDatabase.Instance.GetConfigNode("CommunityTraitIcons/CommunityTraitIcons/CommunityTraitIcons"); if (node != null) { var nodes = node.GetNodes("Trait"); for (int i = 0; i < nodes.Length; i++) { if (!nodes[i].HasValue("name") || !nodes[i].HasValue("icon") || !nodes[i].HasValue("color")) { log("Invalid Trait node format - load failed - skipped"); continue; } string traitName = nodes[i].GetValue("name"); if (!esc.TraitNames.Contains(traitName) && !traitName.Equals("Unknown")) { log("Unused Trait - " + traitName + " - load skipped"); continue; } Texture2D icon = GameDatabase.Instance.GetTexture(nodes[i].GetValue("icon"), false); if (icon == null) { log("Texture load failed: " + nodes[i].GetValue("icon")); icon = GameDatabase.Instance.GetTexture("CommunityTraitIcons/Icons/errorIcon", false); } var newTrait = new KerbalTraitSetting( traitName, icon, parseColor(nodes[i], "color", XKCDColors.White) ); try { traitSettings.Add(traitName, newTrait); } catch (Exception ex) { log("Error: {0}", ex.Message); } } } else { log("Could not find trait settings config - using defaults"); traitSettings.Add("Pilot", new KerbalTraitSetting("Pilot", GameDatabase.Instance.GetTexture("CommunityTraitIcons/Icons/pilotIcon", false), XKCDColors.PastelRed)); traitSettings.Add("Engineer", new KerbalTraitSetting("Engineer", GameDatabase.Instance.GetTexture("CommunityTraitIcons/Icons/engineerIcon", false), XKCDColors.DarkYellow)); traitSettings.Add("Scientist", new KerbalTraitSetting("Scientist", GameDatabase.Instance.GetTexture("CommunityTraitIcons/Icons/scientistIcon", false), XKCDColors.DirtyBlue)); traitSettings.Add("Tourist", new KerbalTraitSetting("Tourist", GameDatabase.Instance.GetTexture("CommunityTraitIcons/Icons/touristIcon", false), XKCDColors.SapGreen)); } if (!traitSettings.ContainsKey("Unknown")) { traitSettings.Add("Unknown", new KerbalTraitSetting("Unknown", GameDatabase.Instance.GetTexture("CommunityTraitIcons/Icons/questionIcon", false), XKCDColors.White)); } }