From f96f2d491c87dea44b5ad4faa06c11b784eb2d91 Mon Sep 17 00:00:00 2001 From: Brian Fertig Date: Sun, 19 Jul 2026 19:04:14 -0600 Subject: [PATCH] feat(advancewars): add HP text display to battle animations and procedural cursor - Add HP text readout to battle animations showing 1-10 scale HP (matching Advance Wars' classic HP display), with smooth tweening - Extract cursor drawing into procedural texture, keeping it independent of the UI sheet - Add advancewars-ui.png sprite sheet and update artwork config --- assets/images/advancewars/advancewars-ui.png | Bin 0 -> 19192 bytes assets/images/advancewars/advancewars-ui.psd | Bin 0 -> 67365 bytes data/advancewars-artwork.json | 2 +- .../advancewars/AdvanceWarsBattleAnim.js | 33 ++++++++++++++++-- src/games/advancewars/AdvanceWarsMapView.js | 28 +++++++++++---- 5 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 assets/images/advancewars/advancewars-ui.png create mode 100644 assets/images/advancewars/advancewars-ui.psd diff --git a/assets/images/advancewars/advancewars-ui.png b/assets/images/advancewars/advancewars-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..71954ffd3d74bc87a88257039db0737ba95dc0c5 GIT binary patch literal 19192 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 TC-^hj00000NkvXXu0mjfv&ex- literal 0 HcmV?d00001 diff --git a/assets/images/advancewars/advancewars-ui.psd b/assets/images/advancewars/advancewars-ui.psd new file mode 100644 index 0000000000000000000000000000000000000000..8a858b4043b4912f3991324e1593a339bea9c462 GIT binary patch literal 67365 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 A6aWAK literal 0 HcmV?d00001 diff --git a/data/advancewars-artwork.json b/data/advancewars-artwork.json index c54fe60..178755f 100644 --- a/data/advancewars-artwork.json +++ b/data/advancewars-artwork.json @@ -20,7 +20,7 @@ }, "uiSheet": { "key": "advancewars-ui", - "path": null, + "path": "assets/images/advancewars/advancewars-ui.png", "frameWidth": 48, "frameHeight": 48 }, diff --git a/src/games/advancewars/AdvanceWarsBattleAnim.js b/src/games/advancewars/AdvanceWarsBattleAnim.js index 62f129c..a5bcf75 100644 --- a/src/games/advancewars/AdvanceWarsBattleAnim.js +++ b/src/games/advancewars/AdvanceWarsBattleAnim.js @@ -10,6 +10,7 @@ import { playSound } from '../../ui/Sounds.js'; const W = 760; const H = 380; +const HP_TEXT_PADDING = 20; // --------------------------------------------------------------------------- // Battle backgrounds: one backdrop image per terrain/building a fighter can @@ -232,7 +233,14 @@ export function playBattleAnim(scene, rules, state, texKey, battles, onDone) { const bar = scene.add.rectangle(cx + side * W / 4 - 108, cy - H / 2 + 58, 216, 12, 0x7dff9a, 1).setOrigin(0, 0.5).setDepth(52); objs.push(barBg, bar); - return { img, bar, spec }; + // remaining-HP readout in the outer top corner of this fighter's half — + // same font/size as the capture cut-in's points counter. 1-10 scale + // (AW's classic HP display), zero being the floor. + const hpText = scene.add.text(cx + side * W / 2 - side * HP_TEXT_PADDING, cy - H / 2 + HP_TEXT_PADDING, '', + { fontFamily: FONT, fontSize: '64px', color: '#ffe14d', stroke: '#000000', strokeThickness: 6 }) + .setOrigin(side > 0 ? 1 : 0, 0).setDepth(51); + objs.push(hpText); + return { img, bar, spec, hpText }; }; // starting HP = hp before the volleys (event carries post-hit hp; rebuild) @@ -249,8 +257,18 @@ export function playBattleAnim(scene, rules, state, texKey, battles, onDone) { f.bar.width = Math.max(0, 216 * (hp / 100)); f.bar.setFillStyle(hp > 50 ? 0x7dff9a : hp > 25 ? 0xffe14d : 0xff5a5a, 1); }; + const hpDisplay = (hp) => Math.max(0, Math.ceil(hp / 10)); + const animateHp = (f, fromHp, toHp) => { + const proxy = { hp: fromHp }; + scene.tweens.add({ + targets: proxy, hp: toHp, duration: 500, ease: 'Sine.easeOut', + onUpdate: () => f.hpText.setText(String(hpDisplay(proxy.hp))), + }); + }; setBar(left, leftHp); setBar(right, rightHp); + left.hpText.setText(String(hpDisplay(leftHp))); + right.hpText.setText(String(hpDisplay(rightHp))); const flip = scene.time.addEvent({ delay: 220, loop: true, callback: () => { @@ -290,8 +308,17 @@ export function playBattleAnim(scene, rules, state, texKey, battles, onDone) { objs.push(flash); scene.tweens.add({ targets: flash, alpha: 0, duration: 450, onComplete: () => flash.destroy() }); scene.cameras.main.shake(120, 0.004); - if (fromLeft) { rightHp = b.defender.hp; setBar(right, rightHp); } - else { leftHp = b.defender.hp; setBar(left, leftHp); } + if (fromLeft) { + const prevHp = rightHp; + rightHp = b.defender.hp; + setBar(right, rightHp); + animateHp(right, prevHp, rightHp); + } else { + const prevHp = leftHp; + leftHp = b.defender.hp; + setBar(left, leftHp); + animateHp(left, prevHp, leftHp); + } if (b.killed) { scene.tweens.add({ targets: victim.img, alpha: 0, y: victim.img.y + 16, duration: 550 }); } diff --git a/src/games/advancewars/AdvanceWarsMapView.js b/src/games/advancewars/AdvanceWarsMapView.js index 974e695..83b1025 100644 --- a/src/games/advancewars/AdvanceWarsMapView.js +++ b/src/games/advancewars/AdvanceWarsMapView.js @@ -101,6 +101,25 @@ function mkCanvasSheet(scene, key, spec, count) { const ground = (c, color) => { c.fillStyle = color; c.fillRect(0, 0, CELL, CELL); }; +// Tile cursor is always the built-in procedural corner-bracket art — kept +// independent of the UI sheet even once it's painted, per explicit request. +function drawCursor(c) { + c.strokeStyle = '#ffffff'; c.lineWidth = 4; + for (const [sx, sy, dx, dy] of [[3, 3, 1, 1], [45, 3, -1, 1], [3, 45, 1, -1], [45, 45, -1, -1]]) { + c.beginPath(); c.moveTo(sx + dx * 12, sy); c.lineTo(sx, sy); c.lineTo(sx, sy + dy * 12); c.stroke(); + } +} + +const CURSOR_TEX_KEY = 'advancewars-cursor-proc'; + +function ensureCursorTexture(scene) { + if (scene.textures.exists(CURSOR_TEX_KEY)) return CURSOR_TEX_KEY; + const tex = scene.textures.createCanvas(CURSOR_TEX_KEY, CELL, CELL); + drawCursor(tex.getContext()); + tex.refresh(); + return CURSOR_TEX_KEY; +} + const PROC_PAINTERS = { terrain(scene, key, spec) { const { at, finish } = mkCanvasSheet(scene, key, spec, spec.frames); @@ -180,12 +199,7 @@ const PROC_PAINTERS = { ui(scene, key, spec) { const { at, finish } = mkCanvasSheet(scene, key, spec, spec.frames); - at(UI_FRAMES.cursor, (c) => { - c.strokeStyle = '#ffffff'; c.lineWidth = 4; - for (const [sx, sy, dx, dy] of [[3, 3, 1, 1], [45, 3, -1, 1], [3, 45, 1, -1], [45, 45, -1, -1]]) { - c.beginPath(); c.moveTo(sx + dx * 12, sy); c.lineTo(sx, sy); c.lineTo(sx, sy + dy * 12); c.stroke(); - } - }); + at(UI_FRAMES.cursor, drawCursor); const boom = (r) => (c) => { c.fillStyle = '#ffb02f'; for (let i = 0; i < 8; i++) { @@ -244,7 +258,7 @@ export class AdvanceWarsMapView { this.atkG = scene.add.graphics().setDepth(this.depths.atkOv); this.fogG = scene.add.graphics().setDepth(this.depths.fog); this.pathG = scene.add.graphics().setDepth(this.depths.path); - this.cursor = scene.add.image(0, 0, this.tex.ui, UI_FRAMES.cursor) + this.cursor = scene.add.image(0, 0, ensureCursorTexture(scene)) .setDisplaySize(this.tile, this.tile) .setDepth(this.depths.cursor).setVisible(false); this.syncUnits();