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;
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
            }
        }