Esempio n. 1
0
        /// <summary>Age a fruit tree if it's eligible for aging.</summary>
        /// <param name="tree">The tree to grow.</param>
        private void AgeFruitTree(FruitTree tree)
        {
            FruitTreeConfig config = this.Config.FruitTrees;

            // check if ageable
            if (!config.InstantlyAge || tree.growthStage.Value < FruitTree.treeStage || tree.daysUntilMature.Value <= -ModEntry.FruitTreeIridiumDays)
            {
                return;
            }

            // age tree
            tree.daysUntilMature.Value = -ModEntry.FruitTreeIridiumDays;
        }
Esempio n. 2
0
        /// <summary>Grow a fruit tree if it's eligible for growth.</summary>
        /// <param name="tree">The tree to grow.</param>
        /// <param name="location">The tree's location.</param>
        /// <param name="tile">The tree's tile position.</param>
        private void GrowFruitTree(FruitTree tree, GameLocation location, Vector2 tile)
        {
            FruitTreeConfig config = this.Config.FruitTrees;

            // check if growable
            bool isGrown  = tree.growthStage.Value >= FruitTree.treeStage;
            bool isMature = tree.daysUntilMature.Value <= 0;

            if ((isGrown && isMature) || !this.CanGrowNow(location, config.InstantlyGrowInWinter))
            {
                return;
            }

            // ignore if tree blocked
            if (!config.InstantlyGrowWhenInvalid)
            {
                foreach (Vector2 adjacentTile in Utility.getSurroundingTileLocationsArray(tile))
                {
                    bool occupied =
                        location.isTileOccupied(adjacentTile) &&
                        (
                            !location.terrainFeatures.ContainsKey(tile) ||
                            !(location.terrainFeatures[tile] is HoeDirt) ||
                            ((HoeDirt)location.terrainFeatures[tile]).crop == null
                        );
                    if (occupied)
                    {
                        return;
                    }
                }
            }

            // grow tree
            if (!isGrown)
            {
                tree.growthStage.Value = FruitTree.treeStage;
            }
            if (!isMature)
            {
                tree.daysUntilMature.Value = 0;
            }
        }