Files
erqiwang_youle/client/js/01_SubGame/codes/config/Sprites_Result.js
T
joywayerandClaude Opus 5 2fe0f661b4 二七王:数字改回「一个数字一个精灵」,数字资源改为等宽连续图
有了图集叠绘能力,多位数不再需要每位一个精灵:

- Sprites_Action.js:选主花色张数从每花色两个(_TENS/_ONES)改回每花色一个
  (MAIN_SUIT_COUNT_1..4 = 1674–1677),空出的 1678–1681 按本文件既有写法记跳号、不复用;
  叫分档位 CALL_BTN_NUM_1..14 数量不变,注释改为图集叠绘(现在能正确显示两位数)。
- ImageResources.js:NUM_COUNTDOWN / NUM_RESULT_WIN / NUM_RESULT_LOSE / NUM_CALL_SCORE /
  NUM_MAIN_SUIT_COUNT 不再是编辑器配帧的多帧资源,改为等宽连续排列的一张图,
  逐条写明字符排列顺序、单字符宽高、整图尺寸(给美术的出图规格)。
- Layout_Action.js:张数的十位/个位两节点合并为一个;两个数字节点的 w/h 直接引用
  NUM_STYLE(SSOT),不再由调用方运行时注入。
- Sprites_Result.js:记下 ACC_TPL_SCORE_NUM 是复制精灵、无法用 NumberRenderer 的风险。
- 单测:精灵总数 382→378、布局节点 62→61(按实际更新,未放宽下界);
  新增 NUM_STYLE 资源键/字段合法性与「布局节点 w/h 与样式同源」守卫。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 23:53:16 +08:00

158 lines
9.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
///////////////////////////////////////////////////////////////
////////// EQW_Sprites: 精灵结构(清单 §5.6/§5.6a/§5.7a/§5.7b 结算)
///////////////////////////////////////////////////////////////
// 子游戏精灵段 1001–2999。结构与 Sprites_Table.js 一致:
// View 下 Layer 为图层声明(一个 View 恰好一个图层),其余键是 group 容器;
// 容器内 id 为群组 ID、其余键才是精灵 id。
// 连号精灵逐条写全,不用循环生成。
var EQW_Sprites = EQW_Sprites || {};
//小局结算面板(清单 §5.6,Layer 302 群组 240)
//
//以下键号在源清单中被显式判定「不需要」,本文件不占用,留空号以便追溯:
// 1814 RESULT_JUDGE_TEXT —— 结算面板不显示判定文字,改由动画呈现(§1.8,D-8)
EQW_Sprites.AsetResultView = {
Layer: EQW_Layers.POPUP_ASET_RESULT, //302
AsetResult: {
id: EQW_Groups.ASET_RESULT, //240
RESULT_BOTTOM_PANEL: 1800, //图片:底牌区面板底,资源 EQW_Images.PANEL_BOTTOM_CARDS
RESULT_BOTTOM_TEXT: 1801, //文字:「叫分{multiple}子 底牌 {grade1}x{bottom.multiple}」
//—— 三家分数光晕,资源 EQW_Images.GLOW_RESULT,帧1=赢(橙) 帧2=输(蓝) ——
RESULT_GLOW_LEFT: 1802,
RESULT_GLOW_RIGHT: 1803,
RESULT_GLOW_SELF: 1804,
//—— 三家总分文字(aset.seatlist[i].grade)——
RESULT_SCORE_LEFT: 1805,
RESULT_SCORE_RIGHT: 1806,
RESULT_SCORE_SELF: 1807,
//—— 三家捡分子数得分文字 grade_jf【T-13】——
RESULT_JF_LEFT: 1808,
RESULT_JF_RIGHT: 1809,
RESULT_JF_SELF: 1810,
//—— 三家算奖得分文字 grade_aw【T-13】——
RESULT_AW_LEFT: 1811,
RESULT_AW_RIGHT: 1812,
RESULT_AW_SELF: 1813,
RESULT_BTN_CG: 1815, //图片:「冲关牌型」按钮,资源 EQW_Images.BTN_CG_CARDS
RESULT_BTN_CG_TEXT: 1816, //文字:按钮文案「冲关牌型」
RESULT_BTN_NEXT: 1817, //图片:「下一局」按钮,资源 EQW_Images.BTN_NEXT_ASET
RESULT_BTN_NEXT_TEXT: 1818 //文字:按钮文案「下一局」
}
};
//> 底牌 8 张精灵复用 Sprites_Cards.js 群组 215(BuryCardsView.BuryCards,1258–1265),不在此重复。
//冲关牌型叠加层(清单 §5.6a,Layer 302 群组 244,精灵复制)——
//本层的牌用 SpriteCopyUtils 运行时复制,不预置固定张数(cards 长度不定,最多可达 20 余张)。
//编辑器里只需建 5 个精灵(3 容器 + 1 牌模板 + 1 遮罩);奖数文字 3 个照常预置。
//RESULT_BTN_NEXT(1817/1818)在遮罩之上仍需可见可点,其图层内层级须高于 CG_MASK。
//清理是硬要求:关闭叠加层/组件 onDestroy 时必须 SpriteCopyUtils.removeRange(boxId, 0, cards.length),否则复制精灵残留。
EQW_Sprites.ChongGuanOverlayView = {
Layer: EQW_Layers.POPUP_ASET_RESULT, //302
ChongGuan: {
id: EQW_Groups.CHONGGUAN, //244
CG_MASK: 1820, //图片:半透黑遮罩(拉伸满屏,兼作点击关闭热区),资源 EQW_Images.MASK_DIM
CG_BOX_LEFT: 1821, //容器:左上家冲关牌容器(SpriteCopyUtils 复制的父精灵)
CG_BOX_RIGHT: 1822, //容器:右上家冲关牌容器
CG_BOX_SELF: 1823, //容器:自己冲关牌容器
CG_CARD_TPL: 1824, //模板:冲关牌模板(编辑器里放好、默认隐藏,只作样式来源),资源 EQW_Images.CARD_FACE_L
//—— 三家奖数文字,与该家的冲关牌并列显示,取 aset.seatlist[i].naward ——
CG_COUNT_LEFT: 1825,
CG_COUNT_RIGHT: 1826,
CG_COUNT_SELF: 1827
}
};
//大局总结算 / 解散结算(清单 §5.7a,Layer 303 群组 241,玩家栏用精灵复制)——
//三条玩家栏结构完全相同、仅数据不同,用 SpriteCopyUtils 复制生成;面板外壳与按钮预置。
//tag 分段(SpriteCopyUtils.createTagManager):rank 1–20 / avatar 21–40 / text 41–140(每行 6 条文字)/ score 141–160 / divider 161–180。
//清理:关闭面板时按各段 removeRange。
//解散结算复用本面板(协议 §14.1,解散包也带 account),只是 aset 各项为 0。
EQW_Sprites.AccountView = {
Layer: EQW_Layers.POPUP_ACCOUNT, //303
Account: {
id: EQW_Groups.ACCOUNT, //241
ACC_PANEL_BG: 1900, //图片:面板底(圆角浅灰绿),资源 EQW_Images.PANEL_ACCOUNT
ACC_TITLE_BAR: 1901, //图片:标题栏(青绿底),资源 EQW_Images.BAR_ACCOUNT_TITLE
ACC_TITLE_TEXT: 1902, //文字:「二七王-3人 房号… 共…局 …」
ACC_BTN_CLOSE: 1903, //图片:右上角关闭按钮,资源 EQW_Images.BTN_ACC_CLOSE
ACC_RULE_BAR: 1904, //图片:底部规则栏(浅绿底),资源 EQW_Images.BAR_ACCOUNT_RULE
ACC_RULE_TEXT: 1905, //文字:「规则:可查牌、傍王、爬坡算子」
ACC_ROW_CONTAINER: 1910, //容器:玩家栏的复制父精灵
//—— 玩家栏复制模板(tag 分段见上)——
ACC_TPL_RANK: 1911, //模板:名次徽章,资源 EQW_Images.BADGE_RANK,帧=名次1–3
ACC_TPL_AVATAR: 1912, //模板:头像,运行时贴玩家头像
ACC_TPL_TEXT: 1913, //模板:通用文字(昵称/ID/各项分数,一行一个)
ACC_TPL_SCORE_NUM: 1914, //模板:右侧总分大字(数字精灵),资源 EQW_Images.NUM_RESULT_WIN / NUM_RESULT_LOSE
//【2026-08-26 待定】NUM_RESULT_* 已改为等宽连续图 + 图集叠绘(见 ImageResources.js §3.6),
//而本精灵是【复制模板】、运行时 ID 为字符串,SpriteEventController.registerDraw 只收数字 ID、
//复制精灵也不单独收绘制事件 → 无法用 NumberRenderer。玩家栏总分的呈现方式待 F 阶段定
//(改文字精灵 / 改预置精灵 / 由父容器统一叠绘),此处先记风险不改结构
ACC_TPL_DIVIDER: 1915, //模板:行间分隔线,资源 EQW_Images.LINE_DIVIDER
//—— 底部 4 个功能按钮 ——
ACC_BTN_AGAIN: 1920, //图片:「再来一局」按钮,资源 EQW_Images.BTN_ACCOUNT_AGAIN
ACC_BTN_AGAIN_TEXT: 1921, //文字:按钮文案「再来一局」
ACC_BTN_SHARE: 1922, //图片:「分享好友」按钮,资源 EQW_Images.BTN_ACCOUNT_SHARE
ACC_BTN_SHARE_TEXT: 1923, //文字:按钮文案「分享好友」
ACC_BTN_COPY: 1924, //图片:「复制战绩」按钮,资源 EQW_Images.BTN_ACCOUNT_COPY
ACC_BTN_COPY_TEXT: 1925, //文字:按钮文案「复制战绩」
ACC_BTN_EXIT: 1926, //图片:「退出房间」按钮,资源 EQW_Images.BTN_ACCOUNT_EXIT
ACC_BTN_EXIT_TEXT: 1927 //文字:按钮文案「退出房间」
}
};
//出牌历史 / 上一轮 / 亮牌(清单 §5.7b,Layer 304,群组 242,牌用精灵复制)——
//三家都显示,数据 = pushlist 摊平聚合到各家(§1.7 D-7);上一轮同一套精灵,只取 pushlist 末尾一项;
//亮牌只显示一排(庄家固定主牌),数据 = liangpai.cards(§1.6),复用同一套遮罩+容器+牌模板,仅数据源与排数不同。
//与下方 MingPaiView(Layer 305)版式相同(遮罩 + 每家一排牌),差别只在数据源与家数,两个 View 共用同一套渲染逻辑,
//但各自数据独立、图层不同,故拆成两个 View(一个 View 恰好一个图层)。
EQW_Sprites.HistoryView = {
Layer: EQW_Layers.POPUP_HISTORY, //304
History: {
id: EQW_Groups.HISTORY, //242
HIST_MASK: 1950, //图片:半透黑遮罩(兼关闭热区),资源 EQW_Images.MASK_DIM
HIST_BOX_LEFT: 1951, //容器:左上家牌容器
HIST_BOX_RIGHT: 1952, //容器:右上家牌容器
HIST_BOX_SELF: 1953, //容器:自己牌容器
HIST_CARD_TPL: 1954, //模板:牌模板,资源 EQW_Images.CARD_FACE_L
HIST_LABEL_LEFT: 1955, //文字:左上家座位标签(昵称/张数)
HIST_LABEL_RIGHT: 1956, //文字:右上家座位标签
HIST_LABEL_SELF: 1957 //文字:自己座位标签
}
};
//明牌(清单 §5.7b,Layer 305,群组 243,牌用精灵复制)——
//只显示另两家,数据 = mingpai.others[].zhucards(§1.7 D-6);
//版式与上方 HistoryView(Layer 304)相同(遮罩 + 每家一排牌),差别只在数据源与家数,两个 View 共用同一套渲染逻辑,
//但各自数据独立、图层不同,故拆成两个 View(一个 View 恰好一个图层)。
EQW_Sprites.MingPaiView = {
Layer: EQW_Layers.POPUP_MINGPAI, //305
MingPai: {
id: EQW_Groups.MINGPAI, //243
MING_MASK: 2000, //图片:明牌遮罩,资源 EQW_Images.MASK_DIM
MING_BOX_A: 2001, //容器:另一家A牌容器
MING_BOX_B: 2002, //容器:另一家B牌容器
MING_CARD_TPL: 2003, //模板:牌模板,资源 EQW_Images.CARD_FACE_L
MING_LABEL_A: 2004, //文字:A座位标签
MING_LABEL_B: 2005 //文字:B座位标签
}
};