Пример #1
0
        internal AnimalsTask(ModConfig config, AnimalsTaskId id)
        {
            _config = config;
            _id     = id;

            SettingsMenu.ReportConfigChanged += SettingsMenu_ReportConfigChanged;

            if (id == AnimalsTaskId.UnpettedAnimals)
            {
                ModEntry.EventsHelper.Display.MenuChanged += Display_MenuChanged;
            }
        }
Пример #2
0
        internal AnimalsTask(ModConfig config, AnimalsTaskId id)
        {
            _config = config;
            _id     = id;

            SettingsMenu.ReportConfigChanged += SettingsMenu_ReportConfigChanged;

            if (id == AnimalsTaskId.UnpettedAnimals)
            {
                MenuEvents.MenuChanged += MenuEvents_MenuChanged;
                MenuEvents.MenuClosed  += MenuEvents_MenuClosed;
            }
        }
Пример #3
0
        protected override void FirstScan()
        {
            if (_who == AnimalsTaskId.None)
            {
                _who = _id;
            }
            else if (_who != _id)
            {
                return;
            }

            if (ObjectsNames.Count == 0)
            {
                PopulateObjectsNames();
            }

            _farm = Game1.locations.First(l => l is Farm) as Farm;

            // Checking animals left outside
            CheckAnimals(_farm);

            // ReSharper disable once PossibleNullReferenceException
            foreach (var building in _farm.buildings)
            {
                if (building.isUnderConstruction())
                {
                    continue;
                }

                switch (building.indoors.Value)
                {
                case AnimalHouse animalHouse:
                    // Check animals
                    CheckAnimals(animalHouse);

                    // Check for object in Coop
                    if (building is Coop)
                    {
                        CheckAnimalProductsInCoop(animalHouse);
                    }

                    // Check for hay
                    var count       = animalHouse.numberOfObjectsWithName("Hay");
                    var animalLimit = animalHouse.animalLimit.Value;
                    if (count < animalLimit)
                    {
                        MissingHay.Add(new Tuple <Building, int>(building, animalLimit - count));
                    }
                    break;

                case SlimeHutch slimeHutch:
                    // Check slime balls
                    foreach (var pair in building.indoors.Value.objects.Pairs)
                    {
                        if (pair.Value.ParentSheetIndex >= 56 && pair.Value.ParentSheetIndex <= 61)
                        {
                            AnimalProductsToCollect.Add(new TaskItem <SObject>(slimeHutch, pair.Key, pair.Value));
                        }
                    }
                    break;

                default:
                    break;
                }
            }

            CheckForTruffles(_farm);
        }