feat(client): tilemap z-filtering, entity 24x32 footprint, follow stub (#71, #72)

tile_renderer: only render z=0 tiles on FloorTiles layer (D-049 z-stack).
entity_renderer: fix footprint from 24x24 to 24x32 per D-044, split
ENTITY_SIZE into ENTITY_WIDTH/ENTITY_HEIGHT with separate offsets.
game_state: add follow_target_id stub for server ticket #241.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-21 14:09:53 +01:00
co-authored by Claude Opus 4.6
parent eb6b5cc337
commit 7ddee15f06
3 changed files with 24 additions and 9 deletions
@@ -64,6 +64,8 @@ func _setup_tileset() -> void:
# Update tiles from snapshot data
# tiles: Array of {x: int, y: int, z: int, type: String}
# Only renders z=0 tiles (ground floor). z=1 (FloorObjects) and z>1 (upper floors)
# are handled by separate nodes — skipped here until those layers are implemented.
func update_tiles(tiles: Array) -> void:
if not _initialized:
return
@@ -74,6 +76,12 @@ func update_tiles(tiles: Array) -> void:
if not tile_data.has("x") or not tile_data.has("y") or not tile_data.has("type"):
continue
# Multi-layer support: FloorTiles only renders z=0 (ground floor).
# z=1 → FloorObjects node, z=2 → YSortGroup furniture (future layers).
var tile_z: int = tile_data.get("z", 0)
if tile_z != 0:
continue
var tile_type_str: String = tile_data.type
if not TILE_TYPE_MAP.has(tile_type_str):
push_warning("TileRenderer: unknown tile type '%s' at (%d, %d)" % [