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(); }
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; } } } } }