Example #1
0
        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);
            }
        }