二七王:倒计时与结算得分改用数字图精灵,收尾几处命名与文档订正

- CD_LEFT/CD_RIGHT/CD_SELF(1150-1152)由文字精灵改为多帧图数字精灵:
  资源 NUM_COUNTDOWN,纯秒数无后缀;对应布局节点 P_COUNTDOWN 的 h 改取
  NUM_STYLE.COUNTDOWN.charHeight,w 留到运行时注入。
- 结算得分 RESULT_SCORE_LEFT/RIGHT/SELF(1805-1807)同理由文字精灵改为
  数字图精灵(NUM_RESULT_WIN/NUM_RESULT_LOSE),与大局结算已有的
  ACC_TPL_SCORE_NUM 保持一致;布局节点随之调整,移除不再使用的
  TEXT_STYLE.SCORE_BIG。
- NUM_CALL_SCORE 第16帧由"待美术与规则确认"改为明确的"无后缀"(叫分档位
  面板只显示纯数字,"N子"角标是独立文字精灵);NUM_MAIN_SUIT_COUNT /
  NUM_RESULT_WIN / NUM_RESULT_LOSE 第16帧仍待确认,不改。
- Layout_Action.js 的 CALL_BTN_SCORE_TEXT、Layout_Result.js 的
  RESULT_SCORE_TEXT 改名为 CALL_BTN_SCORE_NUM / RESULT_SCORE_NUM:
  两者驱动的都是数字图精灵,_TEXT 后缀误导;同步测试引用。
- docs/client/development-guide/02:订正"SpriteManager 第1154行"这一失效
  行号引用(回退后该行号落在 setTextWithWidth 体内),改为不写死行号。
- docs_dev 清单同步:§2.4/§5.4/§5.6/§6.6/§6.9 倒计时与结算得分的精灵类型
  描述、§6.6/§6.9 对应布局参数。
- test_constants.js 的 NUM_STYLE 同源守卫表新增 COUNTDOWN、RESULT_WIN、
  RESULT_LOSE 三对(连同改名后的 CALL_BTN_SCORE_NUM),共 6 条新断言。

精灵总数、布局节点总数均未变(378 / 61),只改类型与命名,不增删。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-27 00:54:42 +08:00
co-authored by Claude Opus 5
parent 857bc955bb
commit 0c58ae67db
10 changed files with 46 additions and 21 deletions
@@ -327,7 +327,8 @@ var EQW_Images = EQW_Images || {
//用途:叫分档位的分数数字(深棕描边美术字,带描边/渐变,文字精灵做不出此效果)
//帧数:16(固定帧序 0123456789.+-x/p)
//帧说明:帧1–10 = 0–9;帧11–15 = . + - x /(本套用不到,仅占位);
// 帧16 = 后缀【待确认:档位面板只显示分数数字(70…5),若日后要显示「70分」则此帧出「分」】
// 帧16 = 无后缀(第16帧留空/不使用)【已确认,2026-08-27】:档位面板只显示纯数字(70…5),
// 旁边的「N子」角标是独立的文字精灵,不走这里
//单字符尺寸:30×40
//整图尺寸:480×40(16 帧 × 30)
//说明:14 个档位中 13 个是两位数(70…10),整串交给 setNumberImage,一档【一个】精灵,
@@ -24,7 +24,8 @@ EQW_Layout.CARD_SIZE = {
EQW_Layout.TEXT_STYLE = {
STATUS_BIG: { fontSize: 46, color: '#FFFFFF', align: 'center' }, //玩家位「60分」「不叫」(§6.6)
CALL_BIG: { fontSize: 52, color: '#FFD24A', align: 'center' }, //自己叫分大字(§6.8)
SCORE_BIG: { fontSize: 56, color: '#FFFFFF', align: 'center' }, //结算总分大字(§6.9)
//结算总分大字原用 SCORE_BIG(§6.9),2026-08-27 改为多帧图数字精灵(NUM_STYLE.RESULT_WIN/RESULT_LOSE),
//不再是文字精灵,SCORE_BIG 无消费者,移除(避免留一个没人用的样式常量)
ASET_COUNT: { fontSize: 20, color: '#FFFFFF', align: 'center' }, //底栏「1/4 局」(§6.5)
ROOM_OPT: { normal: { fontSize: 18, color: '#DDDDDD' }, //建房选项文字(§6.9b)
selected: { fontSize: 18, color: '#E8873A' } },
@@ -18,11 +18,12 @@ EQW_Layout.CALL_BTN_GRID = {
anchor: 'center', fillOrder: 'row'
};
//档位分数数字:贴对应档位按钮居中。CALL_BTN_1..14 是 14 个固定精灵,但本节点是共用模板,
//档位分数数字(多帧图数字精灵):贴对应档位按钮居中。CALL_BTN_1..14 是 14 个固定精灵,但本节点是共用模板,
//target 由调用方按第几档注入(不预置单一 target)。
//宽度随位数变化(SpriteManager.setNumberImage 会按【字符数 × charWidth】自动改精灵宽),
//故 w 留到运行时注入;高度恒为单字高,取 NUM_STYLE.CALL_SCORE.charHeight(SSOT,2026-08-26)
EQW_Layout.CALL_BTN_SCORE_TEXT = {
//节点名去掉 _TEXT 后缀改为 _NUM:驱动的是数字图精灵而非文字精灵(2026-08-27)
EQW_Layout.CALL_BTN_SCORE_NUM = {
kind: 'attach', targetKind: 'sprite', hAlign: 'center', vAlign: 'middle', offsetY: 4,
h: EQW_Layout.NUM_STYLE.CALL_SCORE.charHeight,
runtime: ['target', 'w']
@@ -24,10 +24,13 @@ EQW_Layout.RESULT_GLOW = {
}
};
//三家总分大字:贴对应光晕居中。target 直接指向光晕精灵键(固定,非动态)
EQW_Layout.RESULT_SCORE_TEXT = {
//三家总分大字(多帧图数字精灵,非文字精灵,2026-08-27):贴对应光晕居中。
//target 直接指向光晕精灵键(固定,非动态);高度恒为单字高,取 NUM_STYLE.RESULT_WIN.charHeight
//(与 NUM_STYLE.RESULT_LOSE 相同,SSOT);宽度随位数变化,留到运行时注入
//节点名去掉 _TEXT 后缀改为 _NUM:与 CALL_BTN_SCORE_NUM 同一理由,_TEXT 会让人误以为是文字精灵
EQW_Layout.RESULT_SCORE_NUM = {
kind: 'attach', targetKind: 'sprite', hAlign: 'center', vAlign: 'middle',
textStyle: EQW_Layout.TEXT_STYLE.SCORE_BIG, runtime: ['w', 'h'],
h: EQW_Layout.NUM_STYLE.RESULT_WIN.charHeight, runtime: ['w'],
bySeat: {
LEFT: { target: 'RESULT_GLOW_LEFT' },
RIGHT: { target: 'RESULT_GLOW_RIGHT' },
@@ -123,9 +123,12 @@ EQW_Layout.P_STATUS_TEXT = {
}
};
//倒计时:三家都有
//倒计时:三家都有(多帧图数字精灵,纯秒数无后缀,见 NUM_STYLE.COUNTDOWN)。
//高度恒为单字高,取 NUM_STYLE.COUNTDOWN.charHeight(SSOT);宽度随位数变化
//(SpriteManager.setNumberImage 按【字符数 × charWidth】自动改精灵宽),故 w 留到运行时注入
EQW_Layout.P_COUNTDOWN = {
kind: 'point', w: 75, h: 70,
kind: 'point', h: EQW_Layout.NUM_STYLE.COUNTDOWN.charHeight,
runtime: ['w'],
bySeat: {
LEFT: { x: 195, y: 165 },
RIGHT: { x: 1010, y: 165 },
@@ -147,15 +147,20 @@ EQW_Sprites.OperationBarView = {
};
//倒计时:左上家/右上家/自己 三处操作区倒计时(清单 §5.4,Layer 104 群组 224)
//
//三处均为【多帧图数字精灵】(非文字精灵):玩家视线焦点、视觉权重最高的数字,参考图是带描边/渐变
//的美术字,文字精灵做不出这个效果。资源 EQW_Images.NUM_COUNTDOWN(16 帧固定帧序),纯秒数无后缀。
//显示用 SpriteManager.setNumberImage(spriteId, '15', charWidth),charWidth 见
//EQW_Layout.NUM_STYLE.COUNTDOWN.charWidth(2026-08-27,与 NUM_STYLE.COUNTDOWN 一起落地)
EQW_Sprites.CountdownView = {
Layer: EQW_Layers.ACTION, //104
Countdown: {
id: EQW_Groups.COUNTDOWN, //224
CD_LEFT: 1150, //文字:左上家位倒计时
CD_RIGHT: 1151, //文字:右上家位倒计时
CD_SELF: 1152 //文字:自己操作区倒计时
CD_LEFT: 1150, //多帧图数字精灵:左上家位倒计时
CD_RIGHT: 1151, //多帧图数字精灵:右上家位倒计时
CD_SELF: 1152 //多帧图数字精灵:自己操作区倒计时
}
};
@@ -25,7 +25,11 @@ EQW_Sprites.AsetResultView = {
RESULT_GLOW_RIGHT: 1803,
RESULT_GLOW_SELF: 1804,
//—— 三家总分文字(aset.seatlist[i].grade)——
//—— 三家总分(aset.seatlist[i].grade),多帧图数字精灵,正分橙带 `+`、负分蓝带 `-`,
// 资源 EQW_Images.NUM_RESULT_WIN(赢)/ NUM_RESULT_LOSE(输),按符号二选一绑资源,
// 显示用 SpriteManager.setNumberImage(spriteId, '+20', charWidth),charWidth 见
// EQW_Layout.NUM_STYLE.RESULT_WIN/RESULT_LOSE——与 ACC_TPL_SCORE_NUM(1914,大局结算总分)
// 同一套资源与用法,两处结算得分显示保持一致(2026-08-27 由文字精灵改为数字图精灵)——
RESULT_SCORE_LEFT: 1805,
RESULT_SCORE_RIGHT: 1806,
RESULT_SCORE_SELF: 1807,