Fix Y-based depth sorting for world objects #32

Merged
tekki merged 5 commits from feature/depth-sorting into master 2026-03-23 20:07:28 +00:00
4 changed files with 9 additions and 8 deletions
Showing only changes of commit cd171c859c - Show all commits

View File

@@ -179,18 +179,19 @@ export class GameScene extends Phaser.Scene {
const name = `bobj_${building.id}`
if (this.children.getByName(name)) continue
const worldDepth = building.tileY + 5
if (building.kind === 'chest') {
const g = this.add.graphics().setName(name).setDepth(8)
const g = this.add.graphics().setName(name).setDepth(worldDepth)
g.fillStyle(0x8B4513); g.fillRect(wx - 10, wy - 7, 20, 14)
g.fillStyle(0xCD853F); g.fillRect(wx - 9, wy - 6, 18, 6)
g.lineStyle(1, 0x5C3317); g.strokeRect(wx - 10, wy - 7, 20, 14)
} else if (building.kind === 'bed') {
this.add.image(wx, wy, 'bed_obj').setName(name).setDepth(8)
this.add.image(wx, wy, 'bed_obj').setName(name).setDepth(worldDepth)
} else if (building.kind === 'stockpile_zone') {
this.add.image(wx, wy, 'stockpile_obj').setName(name).setDepth(4).setAlpha(0.8)
} else if (building.kind === 'forester_hut') {
// Draw a simple log-cabin silhouette for the forester hut
const g = this.add.graphics().setName(name).setDepth(8)
const g = this.add.graphics().setName(name).setDepth(worldDepth)
// Body
g.fillStyle(0x6B3F16); g.fillRect(wx - 12, wy - 9, 24, 18)
// Roof

View File

@@ -32,7 +32,7 @@ export class BuildingSystem {
create(): void {
this.ghost = this.scene.add.rectangle(0, 0, TILE_SIZE, TILE_SIZE, 0x00FF00, 0.35)
this.ghost.setDepth(20)
this.ghost.setDepth(1000)
this.ghost.setVisible(false)
this.ghost.setStrokeStyle(2, 0x00FF00, 0.8)
@@ -40,7 +40,7 @@ export class BuildingSystem {
fontSize: '10px', color: '#ffffff', fontFamily: 'monospace',
backgroundColor: '#000000aa', padding: { x: 3, y: 2 }
})
this.ghostLabel.setDepth(21)
this.ghostLabel.setDepth(1001)
this.ghostLabel.setVisible(false)
this.ghostLabel.setOrigin(0.5, 1)

View File

@@ -47,10 +47,10 @@ export class ResourceSystem {
sprite.setOrigin(0.5, 0.75)
}
sprite.setDepth(5)
sprite.setDepth(node.tileY + 5)
const healthBar = this.scene.add.graphics()
healthBar.setDepth(6)
healthBar.setDepth(node.tileY + 6)
healthBar.setVisible(false)
this.sprites.set(node.id, { sprite, node, healthBar })

View File

@@ -110,7 +110,7 @@ export class TreeSeedlingSystem {
const key = `seedling_${Math.min(s.stage, 2)}`
const sprite = this.scene.add.image(x, y, key)
.setOrigin(0.5, 0.85)
.setDepth(5)
.setDepth(s.tileY + 5)
this.sprites.set(s.id, sprite)
}