✨ 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:
@@ -20,6 +20,7 @@ export class BootScene extends Phaser.Scene {
|
||||
this.buildResourceTextures()
|
||||
this.buildPlayerTexture()
|
||||
this.buildCropTextures()
|
||||
this.buildSeedlingTextures()
|
||||
this.buildUITextures()
|
||||
this.buildVillagerAndBuildingTextures()
|
||||
this.generateWorldIfNeeded()
|
||||
@@ -287,6 +288,40 @@ export class BootScene extends Phaser.Scene {
|
||||
g3.generateTexture('crop_carrot_3', W, H); g3.destroy()
|
||||
}
|
||||
|
||||
// ─── Tree seedling textures (3 growth stages) ────────────────────────────
|
||||
|
||||
/**
|
||||
* Generates textures for the three tree-seedling growth stages:
|
||||
* seedling_0 – small sprout
|
||||
* seedling_1 – sapling with leaves
|
||||
* seedling_2 – young tree (about to mature into a FOREST tile)
|
||||
*/
|
||||
private buildSeedlingTextures(): void {
|
||||
// Stage 0: tiny sprout
|
||||
const g0 = this.add.graphics()
|
||||
g0.fillStyle(0x6D4C41); g0.fillRect(10, 20, 4, 10)
|
||||
g0.fillStyle(0x66BB6A); g0.fillEllipse(12, 16, 12, 8)
|
||||
g0.fillStyle(0x4CAF50); g0.fillEllipse(12, 13, 8, 6)
|
||||
g0.generateTexture('seedling_0', 24, 32); g0.destroy()
|
||||
|
||||
// Stage 1: sapling
|
||||
const g1 = this.add.graphics()
|
||||
g1.fillStyle(0x6D4C41); g1.fillRect(9, 15, 5, 16)
|
||||
g1.fillStyle(0x4CAF50); g1.fillCircle(12, 12, 8)
|
||||
g1.fillStyle(0x66BB6A, 0.7); g1.fillCircle(7, 16, 5); g1.fillCircle(17, 16, 5)
|
||||
g1.fillStyle(0x81C784); g1.fillCircle(12, 8, 5)
|
||||
g1.generateTexture('seedling_1', 24, 32); g1.destroy()
|
||||
|
||||
// Stage 2: young tree (mature, ready to become a resource)
|
||||
const g2 = this.add.graphics()
|
||||
g2.fillStyle(0x000000, 0.15); g2.fillEllipse(12, 28, 16, 6)
|
||||
g2.fillStyle(0x6D4C41); g2.fillRect(9, 14, 6, 14)
|
||||
g2.fillStyle(0x2E7D32); g2.fillCircle(12, 9, 10)
|
||||
g2.fillStyle(0x388E3C); g2.fillCircle(7, 13, 7); g2.fillCircle(17, 13, 7)
|
||||
g2.fillStyle(0x43A047); g2.fillCircle(12, 6, 7)
|
||||
g2.generateTexture('seedling_2', 24, 32); g2.destroy()
|
||||
}
|
||||
|
||||
// ─── UI panel texture ─────────────────────────────────────────────────────
|
||||
|
||||
private buildUITextures(): void {
|
||||
|
||||
Reference in New Issue
Block a user