Exemple #1
0
        public static bool Prefix(ref string name, ref string __result)
        {
            var category = name;

            __result = FarmAnimals.GetCategory(category).AnimalShop.Name;
            return(false);
        }
        private static void HandleHatchling(
            ref Decorators.AnimalHouse moddedAnimalHouse,
            string name,
            Farmer moddedPlayer)
        {
            if (moddedAnimalHouse.IsFull())
            {
                return;
            }
            var withEggReadyToHatch = moddedAnimalHouse.GetIncubatorWithEggReadyToHatch();

            if (withEggReadyToHatch == null)
            {
                return;
            }
            string type;

            type = new Incubator(withEggReadyToHatch)
                   .GetRandomType(FarmAnimals.GroupTypesByCategory()
                                  .ToDictionary
                                      (kvp => kvp.Key,
                                      kvp => moddedPlayer.SanitizeBlueChickens(kvp.Value)));

            var building   = moddedAnimalHouse.GetBuilding();
            var farmAnimal = new Decorators.FarmAnimal(moddedPlayer.CreateFarmAnimal(type, name, building));

            farmAnimal.AddToBuilding(building);
            moddedAnimalHouse.ResetIncubator(withEggReadyToHatch);
            farmAnimal.SetCurrentProduce(-1);
        }
        public static bool Prefix(ref string name, ref string __result)
        {
            var str = name;

            __result = FarmAnimals.GetCategory(str).AnimalShop.Description;
            var farmer = new Farmer(Game.GetPlayer());
            var types1 = FarmAnimals.GroupPurchaseableTypesByCategory()[str];
            var types2 = farmer.SanitizeBlueChickens(types1);
            var count1 = types2.Count;
            var count2 = farmer.SanitizeAffordableTypes(types2).Count;

            if (count2 > 0 && count2 < count1)
            {
                var strArray = new string[3]
                {
                    count2.ToString(),
                    count1.ToString(),
                    "$"
                };
                __result = __result + " (" +
                           Content.LoadString("Strings\\Locations:AdventureGuild_KillList_LineFormat", strArray) + ")";
            }

            return(false);
        }
        public static void ValidateCachedFarmAnimals(IModHelper helper, IMonitor monitor)
        {
            var animals = FarmAnimals.ReadCache();
            var categoriesToBeRemoved = new List <string>();

            foreach (var category in animals.Categories)
            {
                try
                {
                    Assert.ValidStringLength("category", category.Category, 1);
                    var typesToBeRemoved = new List <string>();
                    foreach (var type in category.Types)
                    {
                        try
                        {
                            Assert.FarmAnimalTypeIsNotRestricted(type.Type);
                            Assert.FarmAnimalTypeExists(type.Type);
                        }
                        catch (Exception ex)
                        {
                            monitor.Log(type.Type + " type will not load: " + ex.Message, LogLevel.Warn);
                            typesToBeRemoved.Add(type.Type);
                        }
                    }

                    if (typesToBeRemoved.Any())
                    {
                        category.Types.RemoveAll(o => typesToBeRemoved.Contains(o.Type));
                    }
                    Assert.AtLeastOneTypeRequired(category.Types.Select(o => o.Type).ToList());
                    Assert.AtLeastOneBuildingRequired(category.Buildings);
                    Assert.BuildingsExist(category.Buildings);
                    if (category.CanBePurchased())
                    {
                        Assert.ValidStringLength("name", category.AnimalShop.Name, 1);
                        Assert.ValidStringLength("description", category.AnimalShop.Description, 1);
                        Assert.FileExists(category.AnimalShop.Icon);
                        Assert.ValidFileExtension(category.AnimalShop.Icon, ".png");
                        if (category.AnimalShop.Exclude != null)
                        {
                            Assert.FarmAnimalTypesExist(category.AnimalShop.Exclude);
                        }
                    }
                }
                catch (Exception ex)
                {
                    monitor.Log(category.Category + " category will not load: " + ex.Message, LogLevel.Warn);
                    categoriesToBeRemoved.Add(category.Category);
                }
            }

            if (categoriesToBeRemoved.Any())
            {
                animals.Categories.RemoveAll(o => categoriesToBeRemoved.Contains(o.Category));
            }
            FarmAnimals.Write(animals);
        }
        public string GetRandomAnimalShopType(string category, Farmer farmer)
        {
            var farmer1    = new Decorators.Farmer(farmer);
            var types1     = FarmAnimals.GroupPurchaseableTypesByCategory()[category];
            var types2     = farmer1.SanitizeBlueChickens(types1);
            var stringList = farmer1.SanitizeAffordableTypes(types2);

            return(stringList[Random.Next(stringList.Count)]);
        }
Exemple #6
0
        public override void Callback(string command, string[] args)
        {
            var message = "Listing farm animals\n";

            FarmAnimals.ReadCache();
            foreach (var category in FarmAnimals.GetCategories())
            {
                message += DescribeFarmAnimalCategory(category);
            }
            Monitor.Log(message, LogLevel.Info);
        }
        public static void Postfix(ref StardewValley.Menus.PurchaseAnimalsMenu __instance,
                                   ref List <StardewValley.Object> stock)
        {
            var moddedMenu = new Decorators.PurchaseAnimalsMenu(__instance);
            var dictionary = FarmAnimals.GetCategories().Where(o => o.CanBePurchased())
                             .ToDictionary(o => o.Category, o => o.GetAnimalShopIconTexture());
            int iconHeight;

            moddedMenu.SetUpAnimalsToPurchase(stock, dictionary, out iconHeight);
            AdjustMenuHeight(ref moddedMenu, iconHeight);
            StardewValley.Menus.PurchaseAnimalsMenu.menuWidth = 640;
        }
        private static void HandleNewborn(
            ref Decorators.AnimalHouse moddedAnimalHouse,
            string name,
            ref QuestionEvent questionEvent,
            Farmer moddedPlayer)
        {
            var withEggReadyToHatch = moddedAnimalHouse.GetIncubatorWithEggReadyToHatch();
            var moddedParent        = new Decorators.FarmAnimal(questionEvent.animal);
            var dictionary          = FarmAnimals.GroupTypesByCategory().Where(kvp => kvp.Value.Contains(moddedParent.GetTypeString()))
                                      .ToDictionary(kvp => kvp.Key, kvp => moddedPlayer.SanitizeBlueChickens(kvp.Value));
            var randomTypeFromProduce = moddedParent.GetRandomTypeFromProduce(dictionary);
            var building   = moddedAnimalHouse.GetBuilding();
            var farmAnimal = new Decorators.FarmAnimal(moddedPlayer.CreateFarmAnimal(randomTypeFromProduce, name, building));

            farmAnimal.AssociateParent(questionEvent.animal);
            farmAnimal.AddToBuilding(building);
            farmAnimal.SetCurrentProduce(-1);
            Event.ForceQuestionEventToProceed(questionEvent);
        }
 public static void SeedCacheWithVanillaFarmAnimals()
 {
     FarmAnimals.Write(new Cache.FarmAnimals(FarmAnimals.GetVanillaCategories()));
 }
 public Dictionary <string, Texture2D> GetAnimalShopIcons()
 {
     return(FarmAnimals.GetCategories().Where(o => o.CanBePurchased())
            .ToDictionary(o => o.Category,
                          o => o.GetAnimalShopIconTexture()));
 }
 public List <Object> GetAnimalShopStock(Farm farm)
 {
     return(FarmAnimals.GetPurchaseAnimalStock(farm));
 }
 public Dictionary <string, List <string> > GetFarmAnimalCategories()
 {
     return(FarmAnimals.GetCategories().ToDictionary(o => o.Category,
                                                     o =>
                                                     o.Types.Select(t => t.Type).ToList()));
 }
 public static bool Prefix(ref List <StardewValley.Object> __result)
 {
     __result = FarmAnimals.GetPurchaseAnimalStock(Game.GetFarm());
     return(false);
 }