示例#1
0
        public static void OnNewDay()
        {
            TempWaterStop.Clear();

            foreach (Vector2 vec in TempWaterOneDay)
            {
                if (Game1.getFarm().terrainFeatures.TryGetValue(vec, out TerrainFeature tf) && tf is HoeDirt hd)
                {
                    hd.state.Value = HoeDirt.watered;
                    TempWaterStop.Add(vec);
                }
            }

            TempWaterOneDay.Clear();

            foreach (Vector2 vec in TempWaterTwoDays)
            {
                if (Game1.getFarm().terrainFeatures.TryGetValue(vec, out TerrainFeature tf) && tf is HoeDirt hd)
                {
                    hd.state.Value = HoeDirt.watered;
                    TempWaterOneDay.Add(vec);
                }
            }

            TempWaterTwoDays.Clear();


            foreach (Vector2 vec in TempQualityFertilizer)
            {
                if (Game1.getFarm().terrainFeatures.TryGetValue(vec, out TerrainFeature tf) && tf is HoeDirt hd)
                {
                    hd.fertilizer.Value = HoeDirt.noFertilizer;
                }
            }
            TempQualityFertilizer.Clear();

            foreach (Vector2 vec in TempQualityIIFertilizer)
            {
                if (Game1.getFarm().terrainFeatures.TryGetValue(vec, out TerrainFeature tf) && tf is HoeDirt hd)
                {
                    hd.fertilizer.Value = HoeDirt.noFertilizer;
                }
            }
            TempQualityIIFertilizer.Clear();
        }
示例#2
0
        public static void OnEndDay()
        {
            foreach (KeyValuePair <Vector2, TerrainFeature> pair in Game1.getFarm().terrainFeatures.Pairs)
            {
                if (pair.Key is Vector2 vec && pair.Value is HoeDirt hd && hd.crop is Crop crop && crop != null)
                {
                    if (crop.isWildSeedCrop())
                    {
                        //TODO
                    }
                    else
                    {
                        List <CropTrait> traits = GetTraits(crop);

                        switch (GetQuality(vec, traits))
                        {
                        case 0:     //normal
                            break;

                        case 1:     //better
                            if (hd.fertilizer.Value == HoeDirt.noFertilizer)
                            {
                                TempQualityFertilizer.Add(vec);
                                hd.fertilizer.Value = HoeDirt.fertilizerLowQuality;
                            }
                            break;

                        case 2:     //best
                            if (hd.fertilizer.Value == HoeDirt.noFertilizer)
                            {
                                TempQualityIIFertilizer.Add(vec);
                                hd.fertilizer.Value = HoeDirt.fertilizerHighQuality;
                            }
                            break;

                        default:
                            ModEntry.GetMonitor().Log("Bug: GetQuality returned wrong value", LogLevel.Error);
                            break;
                        }

                        switch (GetSpeed(vec, traits))
                        {
                        case 0:     //reduced
                            if (GetRandomInt(100) <= config.minimal_speed_ungrow_chance)
                            {
                                UngrowCrop(hd.crop, vec, "lacking speed trait or compost");
                            }
                            break;

                        case 1:     //normal
                            break;

                        case 2:     //better
                            if (GetRandomInt(100) <= config.speed_i_trait_grow_chance)
                            {
                                hd.crop.newDay(HoeDirt.watered, HoeDirt.noFertilizer, (int)vec.X, (int)vec.Y, Game1.getFarm());
                            }
                            break;

                        case 3:     //best
                            if (GetRandomInt(100) <= config.speed_ii_trait_grow_chance)
                            {
                                hd.crop.newDay(HoeDirt.watered, HoeDirt.noFertilizer, (int)vec.X, (int)vec.Y, Game1.getFarm());
                            }
                            break;

                        default:
                            ModEntry.GetMonitor().Log("Bug: GetSpeed returned wrong value", LogLevel.Error);
                            break;
                        }

                        switch (GetWater(vec, traits))
                        {
                        case 0:     //reduced
                            if (hd.state.Value != HoeDirt.watered)
                            {
                                UngrowCrop(hd.crop, vec, "lacking water trait or compost");
                            }
                            break;

                        case 1:     //normal
                            break;

                        case 2:     //better
                            if (hd.state.Value == HoeDirt.watered && !TempWaterOneDay.Contains(vec) && !TempWaterStop.Contains(vec))
                            {
                                TempWaterOneDay.Add(vec);
                            }
                            break;

                        case 3:     //best
                            if (hd.state.Value == HoeDirt.watered && !TempWaterOneDay.Contains(vec) && !TempWaterStop.Contains(vec))
                            {
                                TempWaterTwoDays.Add(vec);
                            }
                            break;

                        default:
                            ModEntry.GetMonitor().Log("Bug: GetWater returned wrong value", LogLevel.Error);
                            break;
                        }
                    }
                }
            }
        }