✨ implement unified tile system (Issue #14)
- Tree seedlings: plant tree_seed on grass via farming tool; two-stage growth (sprout → sapling → young tree, ~1 min/stage); matures into a harvestable FOREST resource tile - Tile recovery: Nisse chops start a 5-min DARK_GRASS→GRASS timer; terrain canvas updated live via WorldSystem.refreshTerrainTile() - New TreeSeedlingSystem manages sprites, growth ticking, maturation - BootScene generates seedling_0/1/2 textures procedurally - FarmingSystem adds tree_seed to tool cycle (F key) - Stockpile panel shows tree_seed (default: 5); panel height adjusted - StateManager v5: treeSeedlings + tileRecovery in WorldState - WorldSystem uses CanvasTexture for live single-pixel updates Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -76,6 +76,16 @@ export class ResourceSystem {
|
||||
this.removeSprite(id)
|
||||
}
|
||||
|
||||
/**
|
||||
* Spawns a sprite for a resource that was created at runtime
|
||||
* (e.g. a tree grown from a seedling). The resource must already be
|
||||
* present in the game state when this is called.
|
||||
* @param node - The resource node to render
|
||||
*/
|
||||
public spawnResourcePublic(node: ResourceNodeState): void {
|
||||
this.spawnSprite(node)
|
||||
}
|
||||
|
||||
/** Called when WorldSystem changes a tile (e.g. after tree removed) */
|
||||
syncTileChange(tileX: number, tileY: number, worldSystem: { setTile: (x: number, y: number, type: TileType) => void }): void {
|
||||
const state = stateManager.getState()
|
||||
|
||||
Reference in New Issue
Block a user