public override void Handle(BaseFeatureSaveData featureSaveData, GameLocation location) { FruitTreeSaveData fruitTreeSaveData = featureSaveData as FruitTreeSaveData; int numRemoved = 0; for (int i = 0; i < location.debris.Count; i++) { Debris debris = location.debris[i]; if (debris.chunkType.Value == 382 && debris.Chunks.Count == 1 && debris.Chunks[0].debrisType == 382) { if (!this.WithinRange(debris.Chunks[0].position.Value, GetCoalPosition(numRemoved, featureSaveData.FeaturePosition), Game1.tileSize * 2)) { continue; } this.monitor.Log( $"Removed dropped coal from fruit tree {numRemoved + 1}/{fruitTreeSaveData.FruitsOnTree}.", LogLevel.Trace); location.debris.RemoveAt(i); i--; numRemoved++; if (numRemoved == fruitTreeSaveData.FruitsOnTree) { return; } } } }
public override void Resolve(GameLocation location, BaseFeatureSaveData featureSaveData) { FruitTreeSaveData fruitTreeSaveData = featureSaveData as FruitTreeSaveData; FruitTree fruitTree = location.terrainFeatures[featureSaveData.featurePosition] as FruitTree; fruitTree.struckByLightningCountdown = 0; fruitTree.fruitsOnTree = fruitTreeSaveData.fruitsOnTree; monitor.Log($"Turned {fruitTree.GetType()} at position {featureSaveData.featurePosition} back to fruit.", LogLevel.Trace); //Handle the dropped coal if (sideEffectHandlers[0].CanHandle(fruitTreeSaveData)) { sideEffectHandlers[0].Handle(fruitTreeSaveData, location); } }