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 void Postfix(ref StardewValley.AnimalHouse __instance)
        {
            var animalHouse = new Decorators.AnimalHouse(__instance);

            if (animalHouse.IsFull() || animalHouse.GetIncubatorWithEggReadyToHatch() == null)
            {
                return;
            }
            animalHouse.SetIncubatorHatchEvent();
        }
示例#3
0
        public static bool Prefix(ref StardewValley.Buildings.Coop __instance, ref int dayOfMonth)
        {
            var animalHouse = new Decorators.AnimalHouse(new Decorators.Coop(__instance).GetIndoors());

            if (!animalHouse.IsEggReadyToHatch())
            {
                return(true);
            }
            animalHouse.ResetIncubator();
            return(true);
        }
        public static bool Prefix(ref StardewValley.AnimalHouse __instance, ref string name)
        {
            var moddedAnimalHouse = new Decorators.AnimalHouse(__instance);
            var moddedPlayer      = new Farmer(Game.GetPlayer());

            if (moddedAnimalHouse.GetBuilding() is StardewValley.Buildings.Barn _)
            {
                if (Event.IsFarmEventOccurring(out QuestionEvent farmEvent))
                {
                    HandleNewborn(ref moddedAnimalHouse, name, ref farmEvent, moddedPlayer);
                }
            }
            HandleHatchling(ref moddedAnimalHouse, name, moddedPlayer);
            Event.GoToNextEventCommandInLocation(Game.GetCurrentLocation());
            Game.ExitActiveMenu();
            return(false);
        }
        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);
        }