- 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>
105 lines
4.8 KiB
JavaScript
105 lines
4.8 KiB
JavaScript
///////////////////////////////////////////////////////////////
|
||
////////// EQW_Layout: 阶段操作区配置(清单 §6.8)//////////////
|
||
///////////////////////////////////////////////////////////////
|
||
// 【纯数据文件】无函数、无副作用;依赖 LayoutConstants.js 先加载
|
||
// (引用其 EQW_Layout.TEXT_STYLE.*,属 EQW_Layout 内部自引用)。
|
||
var EQW_Layout = EQW_Layout || {};
|
||
|
||
//===== 叫分面板 =====
|
||
|
||
EQW_Layout.CALL_PANEL_BG = { kind: 'point', x: 355, y: 140, w: 575, h: 170 };
|
||
|
||
EQW_Layout.CALL_HINT_BG = { kind: 'point', x: 470, y: 100, w: 345, h: 33 };
|
||
|
||
//14 档位按钮:grid 布局(清单 §6.1 示例,7×2)
|
||
EQW_Layout.CALL_BTN_GRID = {
|
||
kind: 'grid', anchorX: 640, anchorY: 160, cols: 7, rows: 2,
|
||
itemWidth: 74, itemHeight: 56, spacingX: 7, spacingY: 24,
|
||
anchor: 'center', fillOrder: 'row'
|
||
};
|
||
|
||
//档位分数数字(多帧图数字精灵):贴对应档位按钮居中。CALL_BTN_1..14 是 14 个固定精灵,但本节点是共用模板,
|
||
//target 由调用方按第几档注入(不预置单一 target)。
|
||
//宽度随位数变化(SpriteManager.setNumberImage 会按【字符数 × charWidth】自动改精灵宽),
|
||
//故 w 留到运行时注入;高度恒为单字高,取 NUM_STYLE.CALL_SCORE.charHeight(SSOT,2026-08-26)
|
||
//节点名去掉 _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']
|
||
};
|
||
|
||
//档位子数角标:贴对应档位按钮右上角,纯文字无底图,清单未给宽高(同上,调用方注入 target)
|
||
EQW_Layout.CALL_BTN_MULTIPLE_BADGE = {
|
||
kind: 'attach', targetKind: 'sprite', corner: 'topRight', offsetX: -30, offsetY: 2,
|
||
runtime: ['target', 'w', 'h']
|
||
};
|
||
|
||
EQW_Layout.CALL_BTN_NONE = { kind: 'point', x: 553, y: 345, w: 184, h: 57 };
|
||
|
||
//自己叫分大字
|
||
EQW_Layout.CALL_SELF_SCORE_TEXT = {
|
||
kind: 'point', x: 570, y: 320, w: 140, h: 70, textStyle: EQW_Layout.TEXT_STYLE.CALL_BIG
|
||
};
|
||
|
||
//===== 选主 / 投降面板 =====
|
||
|
||
EQW_Layout.MAIN_TITLE_BG = { kind: 'point', x: 330, y: 315, w: 425, h: 50 };
|
||
|
||
//4 花色 + 投降:投降不显示时只排前 4 项,anchor:left 保证前 4 个位置不变
|
||
EQW_Layout.MAIN_SUIT_LINE = {
|
||
kind: 'line', direction: 'horizontal', anchorX: 330, anchorY: 373,
|
||
itemWidth: 128, itemHeight: 55, spacing: 9, anchor: 'left'
|
||
};
|
||
|
||
//张数数字:贴对应花色按钮下方居中,一个花色【一个】精灵,整串「N张」由 setNumberImage 显示。
|
||
//2026-08-26:原十位/个位两节点合并为本节点;宽度随位数变化(2 或 3 个字符)留到运行时注入,
|
||
//高度恒为单字高,取 NUM_STYLE.MAIN_SUIT_COUNT.charHeight(SSOT)
|
||
EQW_Layout.MAIN_SUIT_COUNT = {
|
||
kind: 'attach', targetKind: 'sprite', hAlign: 'center', vAlign: 'bottom', offsetY: -6,
|
||
h: EQW_Layout.NUM_STYLE.MAIN_SUIT_COUNT.charHeight,
|
||
runtime: ['target', 'w']
|
||
};
|
||
|
||
//对数角标文字:贴对应花色按钮右上角(按钮帧内已含角标底,本节点只定位叠加的文字)。
|
||
//清单未给宽高(调用方注入 target)
|
||
EQW_Layout.MAIN_SUIT_PAIR_BADGE = {
|
||
kind: 'attach', targetKind: 'sprite', corner: 'topRight', offsetX: -36, offsetY: 2, w: 34, h: 18,
|
||
runtime: ['target']
|
||
};
|
||
|
||
//===== 埋牌 / 出牌操作条 =====
|
||
|
||
//埋牌操作条:提示 / 倒计时(CD_SELF) / 埋牌,逐项不等宽(清单 §6.1)
|
||
EQW_Layout.BURY_OPERATION_BAR = {
|
||
kind: 'line', direction: 'horizontal', anchorX: 640, anchorY: 165,
|
||
itemHeight: 63, spacing: 45, anchor: 'center',
|
||
items: [
|
||
{ key: 'BURY_BTN_TIP', width: 180 },
|
||
{ key: 'CD_SELF', width: 60 },
|
||
{ key: 'BURY_BTN_SUBMIT', width: 180 }
|
||
]
|
||
};
|
||
|
||
//出牌操作条:倒计时(CD_SELF) / 出牌
|
||
EQW_Layout.PLAY_OPERATION_BAR = {
|
||
kind: 'line', direction: 'horizontal', anchorX: 640, anchorY: 345,
|
||
itemHeight: 55, spacing: 35, anchor: 'center',
|
||
items: [
|
||
{ key: 'CD_SELF', width: 75 },
|
||
{ key: 'PLAY_BTN_SUBMIT', width: 157 }
|
||
]
|
||
};
|
||
|
||
//===== 浮层 =====
|
||
|
||
//捡分飘字:起始位置在此。动画参数(floatRise / floatDuration)见 EQW_Anim.SCORE_FLOAT,不在此重复(SSOT)
|
||
EQW_Layout.GRADE_FLOAT = { kind: 'point', x: 570, y: 180, w: 170, h: 55 };
|
||
|
||
//状态提示条 · 等待类(如『等待庄家选主』)。与即时反馈类共用同一套精灵 BAR_TOAST/TXT_TOAST,
|
||
//仅位置预设不同,调用方按提示类型二选一应用(清单 §2.8:收敛为 3 条)
|
||
EQW_Layout.TOAST_WAIT = { kind: 'point', x: 500, y: 373, w: 320, h: 47 };
|
||
|
||
//状态提示条 · 即时反馈类(如『强甩失败』)。自动消失时长见 EQW_Anim.TOAST_DURATION,不在此重复(SSOT)
|
||
EQW_Layout.TOAST_INSTANT = { kind: 'point', x: 462, y: 172, w: 363, h: 50 };
|