Пример #1
0
        public static string GetTraitDescr(CropTrait trait)
        {
            ITranslationHelper trans = ModEntry.GetHelper().Translation;

            switch (trait)
            {
            case CropTrait.PestResistanceNo:
            case CropTrait.PestResistanceI:
            case CropTrait.PestResistanceII:
                return(trans.Get("cult.msg_traitdesc_pestres"));

            case CropTrait.QualityNo:
            case CropTrait.QualityI:
            case CropTrait.QualityII:
                return(trans.Get("cult.msg_traitdesc_quality"));

            case CropTrait.WaterNo:
            case CropTrait.WaterI:
            case CropTrait.WaterII:
            case CropTrait.WaterIII:
                return(trans.Get("cult.msg_traitdesc_water"));

            case CropTrait.SpeedNo:
            case CropTrait.SpeedI:
            case CropTrait.SpeedII:
            case CropTrait.SpeedIII:
                return(trans.Get("cult.msg_traitdesc_speed"));

            default:
                return("ERROR gettraitdescr");
            }
        }
Пример #2
0
        public static string GetTraitName(CropTrait trait)
        {
            ITranslationHelper trans = ModEntry.GetHelper().Translation;

            switch (trait)
            {
            case CropTrait.PestResistanceI:
                return(trans.Get("cult.msg_trait_pestresI"));

            case CropTrait.PestResistanceII:
                return(trans.Get("cult.msg_trait_pestresII"));

            case CropTrait.QualityI:
                return(trans.Get("cult.msg_trait_qualityI"));

            case CropTrait.QualityII:
                return(trans.Get("cult.msg_trait_qualityII"));

            case CropTrait.WaterI:
                return(trans.Get("cult.msg_trait_waterI"));

            case CropTrait.WaterII:
                return(trans.Get("cult.msg_trait_waterII"));

            case CropTrait.SpeedI:
                return(trans.Get("cult.msg_trait_speedI"));

            case CropTrait.SpeedII:
                return(trans.Get("cult.msg_trait_speedII"));

            default:
                return("ERROR gettraitname");
            }
        }
Пример #3
0
        private static CropTrait GetNewRandomTrait(List <CropTrait> traits)
        {
            CropTrait result = CropTrait.PestResistanceI;

            for (int i = 0; i < 100; i++)
            {
                result = GetRandomTrait();
                if (!traits.Contains(result))
                {
                    break;
                }
            }
            return(result);
        }
Пример #4
0
        public static void AddTrait(CropTrait trait, List <CropTrait> traits, int id)
        {
            ITranslationHelper trans = ModEntry.GetHelper().Translation;

            void add()
            {
                ModEntry.GetMonitor().Log($"Added {trait} to {CropSeedsDisplayName(id)}", LogLevel.Trace);
                Game1.showGlobalMessage(trans.Get("cult.msg_traitinc", new { traitdesc = GetTraitDescr(trait), seed = CropSeedsDisplayName(id), trait = GetTraitName(trait) }));
                Game1.playSound("achievement");
                traits.Add(trait);
                CropTraits[id] = traits;
            }

            bool alreadyContains() => traits.Contains(trait);

            CropTrait newTrait = GetNewRandomTrait(traits);

            if (traits.Contains(newTrait))
            {
                ModEntry.GetMonitor().Log("Bug: tried to find new trait with full list or returned wrong trait", LogLevel.Error);
                return;
            }

            if (alreadyContains())
            {
                switch (trait)
                {
                case CropTrait.PestResistanceI:
                    AddTrait(CropTrait.PestResistanceII, traits, id);
                    break;

                case CropTrait.WaterI:
                    AddTrait(CropTrait.WaterII, traits, id);
                    break;

                case CropTrait.QualityI:
                    AddTrait(CropTrait.QualityII, traits, id);
                    break;

                case CropTrait.SpeedI:
                    AddTrait(CropTrait.SpeedII, traits, id);
                    break;

                default:
                    AddTrait(newTrait, traits, id);
                    break;
                }
            }
            else
            {
                switch (trait)
                {
                case CropTrait.PestResistanceII:
                    if (traits.Contains(CropTrait.PestResistanceI))
                    {
                        add();
                    }
                    else
                    {
                        trait = CropTrait.PestResistanceI;
                        add();
                    }
                    break;

                case CropTrait.WaterII:
                    if (traits.Contains(CropTrait.WaterI))
                    {
                        add();
                    }
                    else
                    {
                        trait = CropTrait.WaterI;
                        add();
                    }

                    break;

                case CropTrait.QualityII:
                    if (traits.Contains(CropTrait.QualityI))
                    {
                        add();
                    }
                    else
                    {
                        trait = CropTrait.QualityI;
                        add();
                    }

                    break;

                case CropTrait.SpeedII:
                    if (traits.Contains(CropTrait.SpeedI))
                    {
                        add();
                    }
                    else
                    {
                        trait = CropTrait.SpeedI;
                        add();
                    }
                    break;

                default:
                    add();
                    break;
                }
            }
        }
Пример #5
0
        public static void AddTrait(CropTrait trait, List <CropTrait> traits, int id)
        {
            ITranslationHelper trans = ModEntry.GetHelper().Translation;

            string gettraitdescr()
            {
                switch (trait)
                {
                case CropTrait.PestResistanceI:
                case CropTrait.PestResistanceII:
                    return(trans.Get("cult.msg_traitdesc_pestres"));

                case CropTrait.QualityI:
                case CropTrait.QualityII:
                    return(trans.Get("cult.msg_traitdesc_quality"));

                case CropTrait.WaterI:
                case CropTrait.WaterII:
                    return(trans.Get("cult.msg_traitdesc_water"));

                case CropTrait.SpeedI:
                case CropTrait.SpeedII:
                    return(trans.Get("cult.msg_traitdesc_speed"));

                default:
                    return("ERROR gettraitdescr");
                }
            }

            string gettraitname()
            {
                switch (trait)
                {
                case CropTrait.PestResistanceI:
                    return(trans.Get("cult.msg_trait_pestresI"));

                case CropTrait.PestResistanceII:
                    return(trans.Get("cult.msg_trait_pestresII"));

                case CropTrait.QualityI:
                    return(trans.Get("cult.msg_trait_qualityI"));

                case CropTrait.QualityII:
                    return(trans.Get("cult.msg_trait_qualityII"));

                case CropTrait.WaterI:
                    return(trans.Get("cult.msg_trait_waterI"));

                case CropTrait.WaterII:
                    return(trans.Get("cult.msg_trait_waterII"));

                case CropTrait.SpeedI:
                    return(trans.Get("cult.msg_trait_speedI"));

                case CropTrait.SpeedII:
                    return(trans.Get("cult.msg_trait_speedII"));

                default:
                    return("ERROR gettraitname");
                }
            }

            void add()
            {
                ModEntry.GetMonitor().Log($"Added {trait} to {CropSeedsName(id)}", LogLevel.Trace);
                Game1.showGlobalMessage(trans.Get("cult.msg_traitinc", new { traitdesc = gettraitdescr(), seed = CropSeedsName(id), trait = gettraitname() }));
                traits.Add(trait);
                CropTraits[id] = traits;
            }

            bool alreadyContains() => traits.Contains(trait);

            CropTrait newTrait = GetNewRandomTrait(traits);

            if (traits.Contains(newTrait))
            {
                ModEntry.GetMonitor().Log("Bug: tried to find new trait with full list or returned wrong trait", LogLevel.Error);
                return;
            }

            if (alreadyContains())
            {
                switch (trait)
                {
                case CropTrait.PestResistanceI:
                    AddTrait(CropTrait.PestResistanceII, traits, id);
                    break;

                case CropTrait.WaterI:
                    AddTrait(CropTrait.WaterII, traits, id);
                    break;

                case CropTrait.QualityI:
                    AddTrait(CropTrait.QualityII, traits, id);
                    break;

                case CropTrait.SpeedI:
                    AddTrait(CropTrait.SpeedII, traits, id);
                    break;

                default:
                    AddTrait(newTrait, traits, id);
                    break;
                }
            }
            else
            {
                switch (trait)
                {
                case CropTrait.PestResistanceII:
                    if (traits.Contains(CropTrait.PestResistanceI))
                    {
                        add();
                    }
                    else
                    {
                        trait = CropTrait.PestResistanceI;
                        add();
                    }
                    break;

                case CropTrait.WaterII:
                    if (traits.Contains(CropTrait.WaterI))
                    {
                        add();
                    }
                    else
                    {
                        trait = CropTrait.WaterI;
                        add();
                    }

                    break;

                case CropTrait.QualityII:
                    if (traits.Contains(CropTrait.QualityI))
                    {
                        add();
                    }
                    else
                    {
                        trait = CropTrait.QualityI;
                        add();
                    }

                    break;

                case CropTrait.SpeedII:
                    if (traits.Contains(CropTrait.SpeedI))
                    {
                        add();
                    }
                    else
                    {
                        trait = CropTrait.SpeedI;
                        add();
                    }
                    break;

                default:
                    add();
                    break;
                }
            }
        }