public static void GetTitleStrings(int minCount, int maxCount, string trait, int minExperience, int maxExperience, out string countStr, out string traitStr, out string experienceStr) { // Build the count string if (maxCount == int.MaxValue) { countStr = Localizer.Format("#cc.param.count.atLeast", minCount); } else if (minCount == 0) { countStr = Localizer.Format("#cc.param.count.atMost", maxCount); } else if (minCount == maxCount) { countStr = Localizer.Format("#cc.param.count.exact", minCount); } else { countStr = Localizer.Format("#cc.param.count.between", minCount, maxCount); } // Build the trait string if (!String.IsNullOrEmpty(trait)) { traitStr = Localizer.Format("#cc.param.HasAstronaut.trait", LocalizationUtil.TraitTitle(trait)); } else { traitStr = null; } // Build the experience string if (minExperience != 0 && maxExperience != 5) { if (minExperience == 0) { experienceStr = Localizer.Format("#cc.param.HasAstronaut.experience.atMost", maxExperience); } else if (maxExperience == 5) { experienceStr = Localizer.Format("#cc.param.HasAstronaut.experience.atLeast", minExperience); } else if (minExperience == maxExperience) { experienceStr = Localizer.Format("#cc.param.HasAstronaut.experience.exact", minExperience); } else { experienceStr = Localizer.Format("#cc.param.HasAstronaut.experience.between", minExperience, maxExperience); } } else { experienceStr = null; } }
protected override string GetParameterTitle() { string output = null; if (string.IsNullOrEmpty(title)) { if (kerbals.Count == 0 && (state == ParameterState.Complete || ParameterCount == 1)) { if (ParameterCount == 1) { hideChildren = true; } // Build the count string string countStr; if (maxCrew == 0) { countStr = Localizer.GetStringByTag("#cc.param.HasCrew.unmanned"); } else if (maxCrew == int.MaxValue) { countStr = Localizer.Format("#cc.param.count.atLeast", minCrew); } else if (minCrew == 0) { countStr = Localizer.Format("#cc.param.count.atMost", maxCrew); } else if (minCrew == maxCrew) { countStr = Localizer.Format("#cc.param.count.exact", minCrew); } else { countStr = Localizer.Format("#cc.param.count.between", minCrew, maxCrew); } // Build the trait string string traitStr = null; if (!String.IsNullOrEmpty(trait)) { traitStr = Localizer.Format("#cc.param.HasAstronaut.trait", LocalizationUtil.TraitTitle(trait)); } // Build the experience string string experienceStr = null; if (minExperience != 0 && maxExperience != 5) { if (minExperience == 0) { experienceStr = Localizer.Format("#cc.param.HasAstronaut.experience.atMost", maxExperience); } else if (maxExperience == 5) { experienceStr = Localizer.Format("#cc.param.HasAstronaut.experience.atLeast", minExperience); } else if (minExperience == maxExperience) { experienceStr = Localizer.Format("#cc.param.HasAstronaut.experience.exact", minExperience); } else { experienceStr = Localizer.Format("#cc.param.HasAstronaut.experience.between", minExperience, maxExperience); } } // Build the output string if (String.IsNullOrEmpty(traitStr)) { if (String.IsNullOrEmpty(experienceStr)) { output = Localizer.Format("#cc.param.HasCrew.1", countStr); } else { output = Localizer.Format("#cc.param.HasCrew.2", countStr, experienceStr); } } else if (String.IsNullOrEmpty(experienceStr)) { output = Localizer.Format("#cc.param.HasCrew.2", countStr, traitStr); } else { output = Localizer.Format("#cc.param.HasCrew.3", countStr, traitStr, experienceStr); } } else { if (state == ParameterState.Complete || ParameterCount == 1) { if (ParameterCount == 1) { hideChildren = true; } output = Localizer.Format("#cc.param.HasCrew.1", ParameterDelegate <ProtoCrewMember> .GetDelegateText(this)); } else { output = Localizer.GetStringByTag("#cc.param.HasCrew"); } } } else { output = title; } return(output); }
protected void CreateDelegates() { // Experience trait if (!string.IsNullOrEmpty(trait)) { AddParameter(new ParameterDelegate <ProtoCrewMember>(Localizer.Format("#cc.param.HasCrew.trait", LocalizationUtil.TraitTitle(trait)), cm => cm.experienceTrait.Config.Name == trait)); } // Filter for experience if (minExperience != 0 || maxExperience != 5) { string countText; if (minExperience == 0) { countText = Localizer.Format("#cc.param.count.atMost.num", maxExperience); } else if (maxExperience == 5) { countText = Localizer.Format("#cc.param.count.atLeast.num", minExperience); } else if (minExperience == maxExperience) { countText = Localizer.Format("#cc.param.count.exact.num", minExperience); } else { countText = Localizer.Format("#cc.param.count.between.num", minExperience, maxExperience); } AddParameter(new ParameterDelegate <ProtoCrewMember>(Localizer.Format("#cc.param.HasCrew.experience", countText), cm => cm.experienceLevel >= minExperience && cm.experienceLevel <= maxExperience)); } // Validate count if (kerbals.Count == 0) { // Special handling for unmanned if (minCrew == 0 && maxCrew == 0) { AddParameter(new ParameterDelegate <ProtoCrewMember>(Localizer.GetStringByTag("#cc.param.HasCrew.unmanned"), pcm => true, ParameterDelegateMatchType.NONE)); } else { AddParameter(new CountParameterDelegate <ProtoCrewMember>(minCrew, maxCrew)); } } // Validate specific kerbals foreach (Kerbal kerbal in kerbals) { AddParameter(new ParameterDelegate <ProtoCrewMember>(Localizer.Format("#cc.param.HasCrew.specific", kerbal.name), pcm => pcm == kerbal.pcm, ParameterDelegateMatchType.VALIDATE)); } }