Compare commits
3 Commits
57f9941dc4
...
0e93c6ed56
| Author | SHA1 | Date |
|---|---|---|
|
|
0e93c6ed56 | |
|
|
c601771c92 | |
|
|
29cf5972b6 |
Binary file not shown.
|
After Width: | Height: | Size: 825 KiB |
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
Binary file not shown.
|
|
@ -10,12 +10,24 @@
|
|||
" art-window aspect the renderer uses).",
|
||||
" 3. Map each card id to its 0-based frame index in the matching map below.",
|
||||
"Sheets: rooms are landscape windows; heroes/spells portrait; bosses larger",
|
||||
"portrait. Ids not present in a map (or maps left empty) stay procedural."
|
||||
"portrait. Ids not present in a map (or maps left empty) stay procedural.",
|
||||
"deckBackSheet is different: it's the FULL card back (not an art window",
|
||||
"inset into a procedural frame), used by the small deck-pile display on the",
|
||||
"left side of the board. 4 frames in a 2x2 grid, 300x420 each, row-major:",
|
||||
"0=Room Deck, 1=Spell Deck, 2=Hero Deck, 3=Epic Hero Deck. Until a path is",
|
||||
"set, each pile falls back to a procedural back design with a unique glyph.",
|
||||
"iconSheet is small badge icons (transparent bg, no border/plate — that's",
|
||||
"still drawn procedurally), reused all over the UI: the 4 treasure-class",
|
||||
"badges, the soul-count icon (hero cards, both boards, the soul-collect fx),",
|
||||
"and the hero HP heart (filled) / boss wound-tracker pip (filled=remaining,",
|
||||
"heartEmpty=lost). 128x128 each, 4x2 grid. Map key is the icon id."
|
||||
],
|
||||
"roomSheet": { "key": "dungeonboss-rooms", "path": "assets/images/dungeonboss-rooms.png", "frameWidth": 300, "frameHeight": 200 },
|
||||
"heroSheet": { "key": "dungeonboss-heroes", "path": "assets/images/dungeonboss-heroes.png", "frameWidth": 300, "frameHeight": 225 },
|
||||
"spellSheet": { "key": "dungeonboss-spells", "path": "assets/images/dungeonboss-spells.png", "frameWidth": 300, "frameHeight": 160 },
|
||||
"bossSheet": { "key": "dungeonboss-bosses", "path": "assets/images/dungeonboss-bosses.png", "frameWidth": 300, "frameHeight": 275 },
|
||||
"deckBackSheet": { "key": "dungeonboss-deckbacks", "path": "assets/images/dungeonboss-deckbacks.png", "frameWidth": 300, "frameHeight": 420 },
|
||||
"iconSheet": { "key": "dungeonboss-icons", "path": "assets/images/dungeonboss-icons.png", "frameWidth": 128, "frameHeight": 128 },
|
||||
|
||||
"rooms": {
|
||||
"darkaltar": 0, "opengrave": 1, "specterssanctum": 2, "succubusspa": 3,
|
||||
|
|
@ -47,5 +59,11 @@
|
|||
"bosses": {
|
||||
"draculord": 0, "cleopatra": 1, "kingcroak": 2, "xyzax": 3,
|
||||
"cerebellus": 4, "seducia": 5, "gorgona": 6, "robobo": 7
|
||||
},
|
||||
"deckBacks": {
|
||||
"room": 0, "spell": 1, "hero": 2, "epic": 3
|
||||
},
|
||||
"icons": {
|
||||
"fighter": 0, "mage": 1, "thief": 2, "cleric": 3, "soul": 4, "heartEmpty": 5, "heart": 6
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -238,7 +238,65 @@ just make each one visually distinct and readable at the small on-board size.
|
|||
|
||||
---
|
||||
|
||||
## 5. Menu icon — `game-icons.png` frame **77** *(shared sheet)*
|
||||
## 5. Deck-back sheet — `dungeonboss-deckbacks.png`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Path** | `public/assets/images/dungeonboss-deckbacks.png` |
|
||||
| **Frame size** | **300 × 420 px** (aspect ≈ 0.71 : 1, portrait — a full card back, not an art window) |
|
||||
| **Sheet size** | **2 columns × 2 rows = 600 × 840 px** holds all 4 frames exactly |
|
||||
| **Status** | ✅ Art already dropped in and wired (`deckBackSheet.path` is set) |
|
||||
| **JSON** | `deckBackSheet` (set `path`) + `deckBacks` map (already filled in for all 4 ids) |
|
||||
|
||||
Unlike the four sheets above, this one is **not** an illustration inset into a
|
||||
procedurally-drawn card frame — draw the **entire card back**, border and all,
|
||||
since it's shown as-is (just scaled) in the small "decks remaining" pile
|
||||
display on the left side of the board, below the deck-count text. Until art
|
||||
is supplied, each pile falls back to a procedural back design (dark plate,
|
||||
double border, one glyph per deck: ⌂ room, ✦ spell, ⚔ hero, ♛ epic hero).
|
||||
|
||||
### Frame map
|
||||
|
||||
| Frame | id | Pile |
|
||||
|---:|---|---|
|
||||
| 0 | `room` | Room Deck |
|
||||
| 1 | `spell` | Spell Deck |
|
||||
| 2 | `hero` | Hero Deck |
|
||||
| 3 | `epic` | Epic Hero Deck |
|
||||
|
||||
---
|
||||
|
||||
## 6. Icon sheet — `dungeonboss-icons.png`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Path** | `public/assets/images/dungeonboss-icons.png` |
|
||||
| **Frame size** | **128 × 128 px**, transparent background |
|
||||
| **Sheet size** | **4 columns × 2 rows = 512 × 256 px** holds all 7 frames (1 spare) |
|
||||
| **Status** | ✅ Art already dropped in and wired (`iconSheet.path` is set) |
|
||||
| **JSON** | `iconSheet` (set `path`) + `icons` map (already filled in for all 7 ids) |
|
||||
|
||||
Small badge icons, reused all over the UI rather than tied to one card. Unlike
|
||||
the sheets above, these paint **only the glyph** — the dark backing plate
|
||||
behind the treasure icons, and the card layout around the heart/soul badges,
|
||||
stay procedural. These render tiny (as small as ~18–30px on screen), so keep
|
||||
shapes bold and simple.
|
||||
|
||||
### Frame map
|
||||
|
||||
| Frame | id | Icon | Used for |
|
||||
|---:|---|---|---|
|
||||
| 0 | `fighter` | Sword | treasure-class badge (room/boss cards) |
|
||||
| 1 | `mage` | Tome | treasure-class badge |
|
||||
| 2 | `thief` | Coins | treasure-class badge |
|
||||
| 3 | `cleric` | Ankh | treasure-class badge |
|
||||
| 4 | `soul` | Soul/wisp | every soul-count display (hero card, both boards, soul-collect fx) |
|
||||
| 5 | `heartEmpty` | Hollow heart | boss wound tracker, lost-wound pip |
|
||||
| 6 | `heart` | Filled heart | hero-card HP badge (number still drawn on top by code); boss wound tracker, remaining-life pip |
|
||||
|
||||
---
|
||||
|
||||
## 7. Menu icon — `game-icons.png` frame **77** *(shared sheet)*
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
|
|
@ -262,8 +320,10 @@ rather than a new file.
|
|||
- [x] `dungeonboss-spells.png` — 1200×640 (4×4 grid), 300×160 per frame, 16 frames (0–15); `spellSheet.path` set in `dungeonboss-artwork.json`.
|
||||
- [x] `dungeonboss-heroes.png` — 2100×1350 (7×6 grid), 300×225 per frame, 41 frames (0–40); `heroSheet.path` set in `dungeonboss-artwork.json`.
|
||||
- [x] `dungeonboss-bosses.png` — 1200×550 (4×2 grid), 300×275 per frame, 8 frames (0–7); `bossSheet.path` set in `dungeonboss-artwork.json`.
|
||||
- [x] `dungeonboss-deckbacks.png` — 600×840 (2×2 grid), 300×420 per frame, 4 frames (0–3); `deckBackSheet.path` set in `dungeonboss-artwork.json`.
|
||||
- [x] `dungeonboss-icons.png` — 512×256 (4×2 grid), 128×128 per frame, 7 frames (0–6); `iconSheet.path` set in `dungeonboss-artwork.json`.
|
||||
- [ ] `game-icons.png` frame 77 — 44×44 menu icon.
|
||||
|
||||
The frame→id mappings for all four sheets are already filled in in
|
||||
The frame→id mappings for all six sheets are already filled in in
|
||||
`public/data/dungeonboss-artwork.json` — once you drop the PNGs in and set the
|
||||
four `path` fields, art appears with no code changes.
|
||||
`path` fields, art appears with no code changes.
|
||||
|
|
|
|||
|
|
@ -230,7 +230,7 @@ export default class PreloadScene extends Phaser.Scene {
|
|||
|
||||
// Dungeon Boss drop-in spritesheets, same contract as Spire Climb's.
|
||||
const dbArt = this.cache.json.get('dungeonboss-artwork');
|
||||
const dbSheets = [dbArt?.roomSheet, dbArt?.heroSheet, dbArt?.spellSheet, dbArt?.bossSheet]
|
||||
const dbSheets = [dbArt?.roomSheet, dbArt?.heroSheet, dbArt?.spellSheet, dbArt?.bossSheet, dbArt?.deckBackSheet, dbArt?.iconSheet]
|
||||
.filter((s) => s && s.path && s.key && !this.textures.exists(s.key));
|
||||
|
||||
// Star Wars Deckbuilder drop-in spritesheets, same contract.
|
||||
|
|
|
|||
Loading…
Reference in New Issue