diff --git a/frontend/assets/building/building.house.v0.png b/frontend/assets/building/building.house.v0.png index fa0a9f7..a2cb5ba 100644 Binary files a/frontend/assets/building/building.house.v0.png and b/frontend/assets/building/building.house.v0.png differ diff --git a/frontend/assets/building/building.house.v1.png b/frontend/assets/building/building.house.v1.png index 382b16d..0934ef5 100644 Binary files a/frontend/assets/building/building.house.v1.png and b/frontend/assets/building/building.house.v1.png differ diff --git a/frontend/public/assets/game/manifest.json b/frontend/public/assets/game/manifest.json index 615727f..18e45f3 100644 --- a/frontend/public/assets/game/manifest.json +++ b/frontend/public/assets/game/manifest.json @@ -1,5 +1,5 @@ { - "version": 20, + "version": 26, "assetsRoot": "frontend/assets", "note": "file paths relative to frontend/assets. Rest camp: prop.camp_tent/fire/bag.v0 (wild rest). Other props + heroes + NPC.", "textures": { @@ -743,52 +743,62 @@ "enemy.spider_l4_5_meadow.south": { "file": "enemies/enemy.spider_l4_5_meadow.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "0f50eb96-6696-4cc8-b9d2-7e092044301f" }, "enemy.spider_l4_5_forest.south": { "file": "enemies/enemy.spider_l4_5_forest.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "eb6246b6-e287-462e-80fd-21f35e8e1ede" }, "enemy.spider_l6_6_forest.south": { "file": "enemies/enemy.spider_l6_6_forest.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "878d78d9-089f-4eca-8148-58fcd60c36f5" }, "enemy.spider_l6_6_ruins.south": { "file": "enemies/enemy.spider_l6_6_ruins.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "f456676d-2837-4e83-a6ef-36eb7364b959" }, "enemy.spider_l7_7_ruins.south": { "file": "enemies/enemy.spider_l7_7_ruins.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "72d1041f-29e6-4dc0-8dfe-f43a359cc6a2" }, "enemy.spider_l7_7_canyon.south": { "file": "enemies/enemy.spider_l7_7_canyon.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "59d47cb9-1027-4678-a874-0946ca331a6d" }, "enemy.spider_l8_8_canyon.south": { "file": "enemies/enemy.spider_l8_8_canyon.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "1efeee6f-3261-445b-a540-d1a473d156b5" }, "enemy.spider_l8_8_swamp.south": { "file": "enemies/enemy.spider_l8_8_swamp.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "aaa064e0-9596-4804-9e3c-201eea3359ea" }, "enemy.spider_l9_9_volcanic.south": { "file": "enemies/enemy.spider_l9_9_volcanic.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "18746628-1e42-4549-9b0c-7ea9ba08b680" }, "enemy.spider_l9_9_astral.south": { "file": "enemies/enemy.spider_l9_9_astral.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "47764bc3-73e3-49cb-a4e2-fbbe7e9a0bba" }, "enemy.orc_l5_6_meadow.south": { "file": "enemies/enemy.orc_l5_6_meadow.south.png", @@ -1293,22 +1303,26 @@ "enemy.bandit_l4_5_meadow.south": { "file": "enemies/enemy.bandit_l4_5_meadow.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "e8d3366a-205b-467f-a6be-ee92e30463e7" }, "enemy.bandit_l4_5_forest.south": { "file": "enemies/enemy.bandit_l4_5_forest.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "28f189f5-d7ac-4ff3-bfc9-24baee367919" }, "enemy.bandit_l6_7_forest.south": { "file": "enemies/enemy.bandit_l6_7_forest.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "9ffdf135-0b5f-48f5-b514-725c47e852bc" }, "enemy.bandit_l6_7_ruins.south": { "file": "enemies/enemy.bandit_l6_7_ruins.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "6d9ffb84-c924-42ef-8357-a6a3dc425984" }, "enemy.bandit_l8_9_ruins.south": { "file": "enemies/enemy.bandit_l8_9_ruins.south.png", @@ -1323,22 +1337,26 @@ "enemy.bandit_l10_11_canyon.south": { "file": "enemies/enemy.bandit_l10_11_canyon.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "6964debc-1afd-45a2-93bf-36f19746c430" }, "enemy.bandit_l10_11_swamp.south": { "file": "enemies/enemy.bandit_l10_11_swamp.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "166e50b8-c552-4390-be7b-81b073f47e4d" }, "enemy.bandit_l12_12_volcanic.south": { "file": "enemies/enemy.bandit_l12_12_volcanic.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "2a25ab29-73aa-46cc-a5fe-ede545e9018c" }, "enemy.bandit_l12_12_astral.south": { "file": "enemies/enemy.bandit_l12_12_astral.south.png", "kind": "map_object", - "rotation": "south" + "rotation": "south", + "pixellabObjectId": "df724272-2265-4f74-bdc8-9f546728735a" }, "enemy.cultist_l6_8_meadow.south": { "file": "enemies/enemy.cultist_l6_8_meadow.south.png", diff --git a/frontend/src/game/renderer.ts b/frontend/src/game/renderer.ts index 8c61422..4a82a85 100644 --- a/frontend/src/game/renderer.ts +++ b/frontend/src/game/renderer.ts @@ -1364,15 +1364,21 @@ export class GameRenderer { const bScreen = worldToScreen(b.worldX, b.worldY); const bx = bScreen.x; const by = bScreen.y; - - const w = 60 * scale * (b.footprintW / 2.5); - const h = 48 * scale * (b.footprintH / 2.0); - const rh = 32 * scale; - const bt = b.buildingType; + const isNpcHouse = bt.startsWith('house.'); + const footprintW = Math.max(1, b.footprintW); + const footprintH = Math.max(1, b.footprintH); + const baseW = 60 * scale * (footprintW / 2.5); + const baseH = 48 * scale * (footprintH / 2.0); + const houseSizeBoost = 1.95; + + const w = isNpcHouse ? Math.max(baseW * houseSizeBoost, 54 * scale) : baseW; + const h = isNpcHouse ? Math.max(baseH * houseSizeBoost, 42 * scale) : baseH; + const rh = isNpcHouse ? 32 * scale * 1.65 : 32 * scale; const spriteKey = this._spritesReady ? buildingTypeToTextureKey(bt) : null; const spriteTexture = spriteKey ? this._spriteRegistry.getTexture(spriteKey) : null; - if (spriteKey && spriteTexture) { + const hasUsableSprite = spriteKey !== null && spriteTexture !== null; + if (spriteKey !== null && spriteTexture !== null) { const poolKey = `building:${b.id}`; usedBuildingSprites.add(poolKey); const entry = this._ensureSprite( @@ -1391,7 +1397,7 @@ export class GameRenderer { entry.sprite.visible = true; } - const hasSprite = Boolean(spriteKey && spriteTexture); + const hasSprite = hasUsableSprite; if (!hasSprite) { if (bt === 'house.quest_giver') { this._drawHouse(gfx, bx, by, w, h, rh, 0xb89040, 0x6a3a22, 0);