二七王:前端精灵结构常量

照清单 §5.1–§5.8 逐条录入,键名与 ID 原样照抄;省略写法(如「结构同 202」)
全部展开写全。每个精灵注明类型/用途/资源键/帧说明,后期照此在编辑器里创建。
按协调方中途下达的结构变更,Group 与其名下精灵合并为 group 容器
(groupName: { id: 群组常量, 精灵键: 精灵ID, ... })。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-26 20:53:35 +08:00
co-authored by Claude Opus 5
parent 8b579896b2
commit 488f36b545
5 changed files with 705 additions and 0 deletions
@@ -0,0 +1,181 @@
///////////////////////////////////////////////////////////////
////////// EQW_Sprites: 精灵结构(清单 §5.4/§5.5 阶段操作区与浮层)
///////////////////////////////////////////////////////////////
// 子游戏精灵段 1001–2999。结构与 Sprites_Table.js 一致:
// View 下 Layer(或 Layer1/Layer2…)为图层声明,其余键是 group 容器;
// 容器内 id 为群组 ID、其余键才是精灵 id。
// 连号精灵逐条写全,不用循环生成。
var EQW_Sprites = EQW_Sprites || {};
//叫分面板:14 档位按钮 + 「不叫」按钮(清单 §5.4,Layer 104 群组 220)
EQW_Sprites.CallPanelView = {
Layer: EQW_Layers.ACTION, //104
CallPanel: {
id: EQW_Groups.CALL_PANEL, //220
CALL_PANEL_BG: 1600, //图片:面板底,资源 EQW_Images.PANEL_CALL_SCORE
CALL_HINT_BG: 1601, //图片:提示条底,资源 EQW_Images.BAR_HINT_TOP
CALL_HINT_TEXT: 1602, //文字:「70分坐庄才可投降」
//—— 14 档位按钮底(含角标底),资源 EQW_Images.BTN_CALL_SCORE,档位 70..5,
// 帧1=浅黄+蓝角标(70/65/60/55) 帧2=金黄+绿角标(50/45/40) 帧3=橙+深橙角标(35..5) 帧4=灰(不可选),
// 颜色按档位位置固定,仅因不可叫切换到灰帧4 ——
CALL_BTN_1: 1603,
CALL_BTN_2: 1604,
CALL_BTN_3: 1605,
CALL_BTN_4: 1606,
CALL_BTN_5: 1607,
CALL_BTN_6: 1608,
CALL_BTN_7: 1609,
CALL_BTN_8: 1610,
CALL_BTN_9: 1611,
CALL_BTN_10: 1612,
CALL_BTN_11: 1613,
CALL_BTN_12: 1614,
CALL_BTN_13: 1615,
CALL_BTN_14: 1616,
//—— 14 档位分数数字(图片型数字精灵),资源 EQW_Images.NUM_CALL_SCORE,帧1–10=数字0–9,按档位分数(70..5)拼帧 ——
CALL_BTN_NUM_1: 1617,
CALL_BTN_NUM_2: 1618,
CALL_BTN_NUM_3: 1619,
CALL_BTN_NUM_4: 1620,
CALL_BTN_NUM_5: 1621,
CALL_BTN_NUM_6: 1622,
CALL_BTN_NUM_7: 1623,
CALL_BTN_NUM_8: 1624,
CALL_BTN_NUM_9: 1625,
CALL_BTN_NUM_10: 1626,
CALL_BTN_NUM_11: 1627,
CALL_BTN_NUM_12: 1628,
CALL_BTN_NUM_13: 1629,
CALL_BTN_NUM_14: 1630,
//—— 14 档位 multiple 子数角标文字(「2子」…「15子」),随爬坡规则开关变 ——
CALL_BTN_BADGE_1: 1631,
CALL_BTN_BADGE_2: 1632,
CALL_BTN_BADGE_3: 1633,
CALL_BTN_BADGE_4: 1634,
CALL_BTN_BADGE_5: 1635,
CALL_BTN_BADGE_6: 1636,
CALL_BTN_BADGE_7: 1637,
CALL_BTN_BADGE_8: 1638,
CALL_BTN_BADGE_9: 1639,
CALL_BTN_BADGE_10: 1640,
CALL_BTN_BADGE_11: 1641,
CALL_BTN_BADGE_12: 1642,
CALL_BTN_BADGE_13: 1643,
CALL_BTN_BADGE_14: 1644,
CALL_BTN_NONE: 1645, //图片:「不叫」按钮,资源 EQW_Images.BTN_NO_CALL
CALL_BTN_NONE_TEXT: 1646 //文字:按钮文案「不叫」
}
};
//选主/投降面板:4 花色按钮 + 投降按钮(清单 §5.4,Layer 104 群组 221)
EQW_Sprites.ChooseMainView = {
Layer: EQW_Layers.ACTION, //104
ChooseMain: {
id: EQW_Groups.CHOOSE_MAIN, //221
MAIN_TITLE_BG: 1650, //图片:「亮主」斜角条,资源 EQW_Images.BAR_CHOOSE_MAIN
MAIN_TITLE_TEXT: 1651, //文字:「亮主」
//—— 4 个花色按钮底,资源 EQW_Images.BTN_SUIT_CHOOSE ——
MAIN_SUIT_BTN_1: 1652,
MAIN_SUIT_BTN_2: 1653,
MAIN_SUIT_BTN_3: 1654,
MAIN_SUIT_BTN_4: 1655,
//—— 4 个花色图标,资源 EQW_Images.SUIT_ICON_L,帧固定 = 位置序号(1方块 2梅花 3红心 4黑桃,与 TOP_SUIT_ICON 花色序一致) ——
MAIN_SUIT_ICON_1: 1656,
MAIN_SUIT_ICON_2: 1657,
MAIN_SUIT_ICON_3: 1658,
MAIN_SUIT_ICON_4: 1659,
//—— 4 个花色张数文字:该花色在庄家手中的张数 ——
MAIN_SUIT_COUNT_1: 1660,
MAIN_SUIT_COUNT_2: 1661,
MAIN_SUIT_COUNT_3: 1662,
MAIN_SUIT_COUNT_4: 1663,
//—— 4 个对数角标底,资源 EQW_Images.BADGE_MULTIPLE 帧1(蓝底) ——
MAIN_SUIT_PAIR_BG_1: 1664,
MAIN_SUIT_PAIR_BG_2: 1665,
MAIN_SUIT_PAIR_BG_3: 1666,
MAIN_SUIT_PAIR_BG_4: 1667,
//—— 4 个对数角标文字:「N对」——
MAIN_SUIT_PAIR_TEXT_1: 1668,
MAIN_SUIT_PAIR_TEXT_2: 1669,
MAIN_SUIT_PAIR_TEXT_3: 1670,
MAIN_SUIT_PAIR_TEXT_4: 1671,
MAIN_BTN_SURRENDER: 1672, //图片:「投降」按钮,资源 EQW_Images.BTN_SURRENDER
MAIN_BTN_SURRENDER_TEXT: 1673 //文字:按钮文案「投降」
}
};
//操作条:埋牌操作条(群组 222)+ 出牌操作条(群组 223),同一屏幕位置随阶段互斥展示(清单 §5.4)
EQW_Sprites.OperationBarView = {
Layer: EQW_Layers.ACTION, //104
BuryBar: {
id: EQW_Groups.BURY_BAR, //222
BURY_BTN_TIP: 1700, //图片:「提示」按钮,资源 EQW_Images.BTN_TIP
BURY_BTN_TIP_TEXT: 1701, //文字:按钮文案「提示」
BURY_BTN_SUBMIT: 1702, //图片:「埋牌」按钮,资源 EQW_Images.BTN_BURY,帧1=可提交 帧2=灰(未满8张)
BURY_BTN_SUBMIT_TEXT: 1703 //文字:「埋牌 (N/8)」
},
PlayBar: {
id: EQW_Groups.PLAY_BAR, //223
PLAY_BTN_SUBMIT: 1710, //图片:「出牌」按钮,资源 EQW_Images.BTN_PLAY,帧1=可出 帧2=灰
PLAY_BTN_SUBMIT_TEXT: 1711, //文字:按钮文案「出牌」
PLAY_BTN_TIP: 1712, //图片:「提示」按钮(出牌阶段必备),资源 EQW_Images.BTN_TIP
PLAY_BTN_TIP_TEXT: 1713 //文字:按钮文案「提示」
}
};
//倒计时:左上家/右上家/自己 三处操作区倒计时(清单 §5.4,Layer 104 群组 224)
EQW_Sprites.CountdownView = {
Layer: EQW_Layers.ACTION, //104
Countdown: {
id: EQW_Groups.COUNTDOWN, //224
CD_LEFT: 1150, //文字:左上家位倒计时
CD_RIGHT: 1151, //文字:右上家位倒计时
CD_SELF: 1152 //文字:自己操作区倒计时
}
};
//桌面浮层:提示气泡 + 通用状态提示条 + 捡分飘字(清单 §5.5,Layer 105 群组 230)
//
//以下键号在源清单中被显式判定「不需要」,本文件不占用,留空号以便追溯:
// 1753 TXT_BAOZHU —— 报无主不做全场提示(D-4),只让他家 主N/对N 角标出现
// 1754/1759 BAR_SHUAICUO —— 甩错提示并入通用状态提示条 BAR_TOAST/TXT_TOAST(§2.8)
// 1757/1758 BOTTOM_3S_* —— 70分底牌亮3秒复用底牌区翻牌(D-2),仅可见范围不同,不单独建精灵
EQW_Sprites.OverlayView = {
Layer: EQW_Layers.OVERLAY, //105
Overlay: {
id: EQW_Groups.OVERLAY, //230
//—— 提示气泡:踩/没分/有分,按发送者位置三选一显示,资源 EQW_Images.BUBBLE_TISHI,
// 帧 = (arrowRight ? 3 : 0) + tip(tip:1踩 2没分 3有分);朝向为配置项 arrowRight,非按座位硬判(清单 §6.6)——
BUBBLE_TISHI_LEFT: 1750, //左上家气泡:头像在气泡左侧,箭头向左,帧1–3,attach 头像框 hAlign:right
BUBBLE_TISHI_RIGHT: 1751, //右上家气泡:头像在气泡右侧,箭头向右,帧4–6,attach 头像框 hAlign:left
BUBBLE_TISHI_SELF: 1752, //自己气泡:头像在气泡左侧,箭头向左,帧1–3(本人看不到自己气泡,仅对家可见,见清单 §6.6)
GRADE_FLOAT_BG: 1755, //图片:捡分飘字底,资源 EQW_Images.TXT_GRADE_FLOAT
GRADE_FLOAT_TEXT: 1756, //文字:「20分」
BAR_TOAST: 1760, //图片:通用状态提示条底(等待类/即时反馈类共用,收敛为 3 条,见清单 §2.8),资源 EQW_Images.BAR_TOAST,可九宫拉伸
TXT_TOAST: 1761 //文字:提示文案
}
};
@@ -0,0 +1,214 @@
///////////////////////////////////////////////////////////////
////////// EQW_Sprites: 精灵结构(清单 §5.2/§5.3 手牌与桌面牌)//
///////////////////////////////////////////////////////////////
// 子游戏精灵段 1001–2999。结构与 Sprites_Table.js 一致:
// View 下 Layer(或 Layer1/Layer2…)为图层声明,其余键是 group 容器;
// 容器内 id 为群组 ID、其余键才是精灵 id。
// 连号精灵逐条写全,不用循环生成——便于人逐张对照编辑器核对。
var EQW_Sprites = EQW_Sprites || {};
//自己手牌区:36 张手牌 + 8 个牌型分组标记,同属群组 210(清单 §5.2,Layer 102)
EQW_Sprites.HandView = {
Layer: EQW_Layers.HAND, //102
HandCards: {
id: EQW_Groups.HAND, //210
//—— 36 张手牌,资源 EQW_Images.CARD_FACE_L,帧 = cardIdToFrame(id)(§0.4 唯一权威转换)——
HAND_CARD_1: 1200,
HAND_CARD_2: 1201,
HAND_CARD_3: 1202,
HAND_CARD_4: 1203,
HAND_CARD_5: 1204,
HAND_CARD_6: 1205,
HAND_CARD_7: 1206,
HAND_CARD_8: 1207,
HAND_CARD_9: 1208,
HAND_CARD_10: 1209,
HAND_CARD_11: 1210,
HAND_CARD_12: 1211,
HAND_CARD_13: 1212,
HAND_CARD_14: 1213,
HAND_CARD_15: 1214,
HAND_CARD_16: 1215,
HAND_CARD_17: 1216,
HAND_CARD_18: 1217,
HAND_CARD_19: 1218,
HAND_CARD_20: 1219,
HAND_CARD_21: 1220,
HAND_CARD_22: 1221,
HAND_CARD_23: 1222,
HAND_CARD_24: 1223,
HAND_CARD_25: 1224,
HAND_CARD_26: 1225,
HAND_CARD_27: 1226,
HAND_CARD_28: 1227,
HAND_CARD_29: 1228,
HAND_CARD_30: 1229,
HAND_CARD_31: 1230,
HAND_CARD_32: 1231,
HAND_CARD_33: 1232,
HAND_CARD_34: 1233,
HAND_CARD_35: 1234,
HAND_CARD_36: 1235,
//—— 8 个手牌牌型分组标记【T-8】,资源 EQW_Images.MARK_CARD_GROUP,帧1=拖(拖拉机) 帧2=橙五角星(正2/正7) 帧3=蓝五角星(其他主牌)——
HAND_MARK_1: 1236,
HAND_MARK_2: 1237,
HAND_MARK_3: 1238,
HAND_MARK_4: 1239,
HAND_MARK_5: 1240,
HAND_MARK_6: 1241,
HAND_MARK_7: 1242,
HAND_MARK_8: 1243
}
};
//底牌区:发牌留桌 8 张(清单 §5.3,Layer 103 群组 211)
EQW_Sprites.BottomCardsView = {
Layer: EQW_Layers.TABLE_CARDS, //103
BottomCards: {
id: EQW_Groups.BOTTOM_CARDS, //211
//—— 资源 EQW_Images.CARD_FACE_L;未揭示时帧=55(牌背),70分公示/庄家查看时翻正面(帧=cardIdToFrame(id))——
BOTTOM_CARD_1: 1250,
BOTTOM_CARD_2: 1251,
BOTTOM_CARD_3: 1252,
BOTTOM_CARD_4: 1253,
BOTTOM_CARD_5: 1254,
BOTTOM_CARD_6: 1255,
BOTTOM_CARD_7: 1256,
BOTTOM_CARD_8: 1257
}
};
//埋牌底牌展示区:结算时亮出的埋牌底牌 8 张(清单 §5.3,Layer 103 群组 215)
EQW_Sprites.BuryCardsView = {
Layer: EQW_Layers.TABLE_CARDS, //103
BuryCards: {
id: EQW_Groups.BURY_CARDS, //215
//—— 资源 EQW_Images.CARD_FACE_S,帧 = cardIdToFrame(id)——
BURY_CARD_1: 1258,
BURY_CARD_2: 1259,
BURY_CARD_3: 1260,
BURY_CARD_4: 1261,
BURY_CARD_5: 1262,
BURY_CARD_6: 1263,
BURY_CARD_7: 1264,
BURY_CARD_8: 1265
}
};
//三家已出牌区:自己/左上家/右上家 各 28 张牌 + 牌型标签底 + 标签文字(清单 §5.3,Layer 103 群组 212/213/214)
EQW_Sprites.PlayAreaView = {
Layer: EQW_Layers.TABLE_CARDS, //103
PlaySelf: {
id: EQW_Groups.PLAY_SELF, //212 自己
//—— 本轮打出的牌,资源 EQW_Images.CARD_FACE_M,帧 = cardIdToFrame(id)——
PLAY_SELF_1: 1300,
PLAY_SELF_2: 1301,
PLAY_SELF_3: 1302,
PLAY_SELF_4: 1303,
PLAY_SELF_5: 1304,
PLAY_SELF_6: 1305,
PLAY_SELF_7: 1306,
PLAY_SELF_8: 1307,
PLAY_SELF_9: 1308,
PLAY_SELF_10: 1309,
PLAY_SELF_11: 1310,
PLAY_SELF_12: 1311,
PLAY_SELF_13: 1312,
PLAY_SELF_14: 1313,
PLAY_SELF_15: 1314,
PLAY_SELF_16: 1315,
PLAY_SELF_17: 1316,
PLAY_SELF_18: 1317,
PLAY_SELF_19: 1318,
PLAY_SELF_20: 1319,
PLAY_SELF_21: 1320,
PLAY_SELF_22: 1321,
PLAY_SELF_23: 1322,
PLAY_SELF_24: 1323,
PLAY_SELF_25: 1324,
PLAY_SELF_26: 1325,
PLAY_SELF_27: 1326,
PLAY_SELF_28: 1327,
PLAY_SELF_TYPE_BG: 1328, //图片:牌型标签底,资源 EQW_Images.LABEL_CARDTYPE,attach 该区首张牌 bottomLeft
PLAY_SELF_TYPE_TEXT: 1329 //文字:标签文案(当前只出「毙」一种,见 EQW_Images.LABEL_CARDTYPE 用途说明)
},
PlayLeft: {
id: EQW_Groups.PLAY_LEFT, //213 左上家,结构同 212
PLAY_LEFT_1: 1400,
PLAY_LEFT_2: 1401,
PLAY_LEFT_3: 1402,
PLAY_LEFT_4: 1403,
PLAY_LEFT_5: 1404,
PLAY_LEFT_6: 1405,
PLAY_LEFT_7: 1406,
PLAY_LEFT_8: 1407,
PLAY_LEFT_9: 1408,
PLAY_LEFT_10: 1409,
PLAY_LEFT_11: 1410,
PLAY_LEFT_12: 1411,
PLAY_LEFT_13: 1412,
PLAY_LEFT_14: 1413,
PLAY_LEFT_15: 1414,
PLAY_LEFT_16: 1415,
PLAY_LEFT_17: 1416,
PLAY_LEFT_18: 1417,
PLAY_LEFT_19: 1418,
PLAY_LEFT_20: 1419,
PLAY_LEFT_21: 1420,
PLAY_LEFT_22: 1421,
PLAY_LEFT_23: 1422,
PLAY_LEFT_24: 1423,
PLAY_LEFT_25: 1424,
PLAY_LEFT_26: 1425,
PLAY_LEFT_27: 1426,
PLAY_LEFT_28: 1427,
PLAY_LEFT_TYPE_BG: 1428,
PLAY_LEFT_TYPE_TEXT: 1429
},
PlayRight: {
id: EQW_Groups.PLAY_RIGHT, //214 右上家,结构同 212
PLAY_RIGHT_1: 1500,
PLAY_RIGHT_2: 1501,
PLAY_RIGHT_3: 1502,
PLAY_RIGHT_4: 1503,
PLAY_RIGHT_5: 1504,
PLAY_RIGHT_6: 1505,
PLAY_RIGHT_7: 1506,
PLAY_RIGHT_8: 1507,
PLAY_RIGHT_9: 1508,
PLAY_RIGHT_10: 1509,
PLAY_RIGHT_11: 1510,
PLAY_RIGHT_12: 1511,
PLAY_RIGHT_13: 1512,
PLAY_RIGHT_14: 1513,
PLAY_RIGHT_15: 1514,
PLAY_RIGHT_16: 1515,
PLAY_RIGHT_17: 1516,
PLAY_RIGHT_18: 1517,
PLAY_RIGHT_19: 1518,
PLAY_RIGHT_20: 1519,
PLAY_RIGHT_21: 1520,
PLAY_RIGHT_22: 1521,
PLAY_RIGHT_23: 1522,
PLAY_RIGHT_24: 1523,
PLAY_RIGHT_25: 1524,
PLAY_RIGHT_26: 1525,
PLAY_RIGHT_27: 1526,
PLAY_RIGHT_28: 1527,
PLAY_RIGHT_TYPE_BG: 1528,
PLAY_RIGHT_TYPE_TEXT: 1529
}
};
@@ -0,0 +1,51 @@
///////////////////////////////////////////////////////////////
////////// EQW_Sprites: 精灵结构(清单 §5.8 建房规则选项)//////
///////////////////////////////////////////////////////////////
// 子游戏精灵段 1001–2999。结构与 Sprites_Table.js 一致:
// View 下 Layer 为图层声明,其余键是 group 容器;
// 容器内 id 为群组 ID、其余键才是精灵 id。
// 3 个类别、4 个选项组、8 个选项,选项集固定,全部预置,共 20 个精灵。
// 渲染仍由 §1.1 的配置数据驱动:配置里每个选项声明自己用哪个精灵键、
// type(决定选择框帧号)、bit/value(决定 roomtype 拼串)——本文件不认识
// 「傍王」「爬坡」这些具体玩法名。
var EQW_Sprites = EQW_Sprites || {};
//建房规则选项区:挂在平台创建房间界面所在图层(清单 §5.8,群组 250)
EQW_Sprites.CreateRoomView = {
Layer: EQW_Layers.PLATFORM_CREATE_ROOM, //27
CreateRoom: {
id: EQW_Groups.CREATE_ROOM, //250
//—— 3 个类别标题,资源 EQW_Images.ROOM_CAT_TITLE,帧1=牌局 帧2=模式 帧3=规则 ——
ROOM_CAT_TITLE_1: 2050,
ROOM_CAT_TITLE_2: 2051,
ROOM_CAT_TITLE_3: 2052,
//—— 局数选择框(6局/12局),资源 EQW_Images.ROOM_OPT_BOX,单选帧1–2 ——
ROOM_BOX_ASET_1: 2053,
ROOM_BOX_ASET_2: 2054,
ROOM_TEXT_ASET_1: 2055, //文字:局数选项文字
ROOM_TEXT_ASET_2: 2056, //文字:局数选项文字
//—— 扣卡选择框(房主/AA),资源 EQW_Images.ROOM_OPT_BOX,单选帧1–2 ——
ROOM_BOX_CARD_1: 2057,
ROOM_BOX_CARD_2: 2058,
ROOM_TEXT_CARD_1: 2059, //文字:扣卡选项文字
ROOM_TEXT_CARD_2: 2060, //文字:扣卡选项文字
ROOM_TEXT_CARD_COST: 2061, //文字:房卡消耗附注(灰色小字,随局数×扣卡联动)
//—— 查牌选择框(可查/不查),资源 EQW_Images.ROOM_OPT_BOX,单选帧1–2 ——
ROOM_BOX_PEEK_1: 2062,
ROOM_BOX_PEEK_2: 2063,
ROOM_TEXT_PEEK_1: 2064, //文字:查牌选项文字
ROOM_TEXT_PEEK_2: 2065, //文字:查牌选项文字
//—— 附加规则选择框(傍王/爬坡),资源 EQW_Images.ROOM_OPT_BOX,复选帧3–4 ——
ROOM_BOX_RULE_1: 2066,
ROOM_BOX_RULE_2: 2067,
ROOM_TEXT_RULE_1: 2068, //文字:附加规则选项文字
ROOM_TEXT_RULE_2: 2069 //文字:附加规则选项文字
}
};
@@ -0,0 +1,146 @@
///////////////////////////////////////////////////////////////
////////// EQW_Sprites: 精灵结构(清单 §5.6/§5.6a/§5.7a/§5.7b 结算)
///////////////////////////////////////////////////////////////
// 子游戏精灵段 1001–2999。结构与 Sprites_Table.js 一致:
// View 下 Layer(或 Layer1/Layer2…)为图层声明,其余键是 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
ACC_TPL_DIVIDER: 1915, //模板:行间分隔线,资源 EQW_Images.LINE_DIVIDER
//—— 底部 4 个功能按钮:再来一局/分享好友/复制战绩/退出房间,资源 EQW_Images.BTN_ACCOUNT_* ——
ACC_BTN_AGAIN: 1920,
ACC_BTN_AGAIN_TEXT: 1921,
ACC_BTN_SHARE: 1922,
ACC_BTN_SHARE_TEXT: 1923,
ACC_BTN_COPY: 1924,
ACC_BTN_COPY_TEXT: 1925,
ACC_BTN_EXIT: 1926,
ACC_BTN_EXIT_TEXT: 1927
}
};
//出牌历史 / 上一轮 / 明牌 / 亮牌(清单 §5.7b,Layer 304 出牌历史、Layer 305 明牌,群组 242/243,牌用精灵复制)——
//两者版式相同(遮罩 + 每家一排牌),差别只在数据源与家数,共用同一套渲染:
//出牌历史:三家都显示,数据 = pushlist 摊平聚合到各家(§1.7 D-7);上一轮同一套精灵,只取 pushlist 末尾一项。
//明牌:只显示另两家,数据 = mingpai.others[].zhucards(§1.7 D-6)。
//亮牌:只显示一排(庄家固定主牌),数据 = liangpai.cards(§1.6),复用同一套遮罩+容器+牌模板,仅数据源与排数不同。
EQW_Sprites.HistoryMingPaiView = {
Layer1: EQW_Layers.POPUP_HISTORY, //304 出牌历史/上一轮/亮牌
Layer2: EQW_Layers.POPUP_MINGPAI, //305 明牌
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 //文字:自己座位标签
},
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座位标签
}
};
@@ -0,0 +1,113 @@
///////////////////////////////////////////////////////////////
////////// EQW_Sprites: 精灵结构(清单 §5.1 牌桌常驻)/////////
///////////////////////////////////////////////////////////////
// 子游戏精灵段 1001–2999(段内仅 3000 被平台占用)。
// 以 UI View 为组织单位:View 下 Layer(或 Layer1/Layer2…)为图层声明,
// 其余键一律是「group 容器」——容器内 id 为群组 ID、其余键才是精灵 id。
// 每个精灵注明:类型(图片/文字)+ 用途 + 资源键 + 帧说明——
// 后期即照这些注释在编辑器里逐个创建。
var EQW_Sprites = EQW_Sprites || {};
//顶部信息条:主 / 叫分 / 抓分 三列(清单 §5.1 群组 201)
EQW_Sprites.TopInfoView = {
Layer: EQW_Layers.TABLE_STATIC, //101
TopInfo: {
id: EQW_Groups.TOP_INFO, //201
TOP_INFO_BG: 1001, //图片:三列表格底,资源 EQW_Images.PANEL_TOP_INFO
TOP_SUIT_ICON: 1002, //图片:「主」列花色图标,资源 EQW_Images.SUIT_ICON_S,帧 = flower(1方块 2梅花 3红心 4黑桃,服务端 flower 编号)
TOP_CALL_TEXT: 1003, //文字:叫分数值
TOP_CALL_BADGE_BG: 1004, //图片:叫分角标底,资源 EQW_Images.BADGE_MULTIPLE 帧1(蓝底)
TOP_CALL_BADGE_TEXT: 1005, //文字:「N子」
TOP_GRADE_TEXT: 1006, //文字:抓分数值
TOP_GRADE_BADGE_BG: 1007, //图片:抓分角标底,资源 EQW_Images.BADGE_MULTIPLE 帧2(橙底)
TOP_GRADE_BADGE_TEXT: 1008 //文字:「N倍」,取 Math.abs(curmultiple)(T-16/S-8:curmultiple 带符号,展示取绝对值)
}
};
//三家玩家位附加标记:庄印章 + 主N/对N 角标 + 状态文字,跨三个群组
//(头像框本身是平台提供,登记见本文件末尾 EQW_PlatformSprites;本 View 的精灵全部 attach 到平台头像框上,见清单 §6.6)
EQW_Sprites.PlayerMarkView = {
Layer: EQW_Layers.TABLE_STATIC, //101
LeftMark: {
id: EQW_Groups.P_LEFT_MARK, //202 左上家
P_LEFT_BANKER: 1100, //图片:「庄」印章,资源 EQW_Images.MARK_BANKER,attach 头像框 topRight
P_LEFT_ZHU_BG: 1101, //图片:「主N」角标底,资源 EQW_Images.BADGE_ZHU_PAIR 帧1(黄底),attach 头像框 bottomLeft
P_LEFT_ZHU_TEXT: 1102, //文字:剩余主牌数
P_LEFT_PAIR_BG: 1103, //图片:「对N」角标底,资源 EQW_Images.BADGE_ZHU_PAIR 帧2(白底),attach 主N角标右侧
P_LEFT_PAIR_TEXT: 1104, //文字:剩余主对数
P_LEFT_STATUS_TEXT: 1105 //文字:「60分」/「不叫」
},
RightMark: {
id: EQW_Groups.P_RIGHT_MARK, //203 右上家,结构同 202
P_RIGHT_BANKER: 1110, //图片:「庄」印章,资源 EQW_Images.MARK_BANKER,attach 头像框 topLeft
P_RIGHT_ZHU_BG: 1111, //图片:「主N」角标底,资源 EQW_Images.BADGE_ZHU_PAIR 帧1(黄底),attach 头像框 bottomLeft
P_RIGHT_ZHU_TEXT: 1112, //文字:剩余主牌数
P_RIGHT_PAIR_BG: 1113, //图片:「对N」角标底,资源 EQW_Images.BADGE_ZHU_PAIR 帧2(白底),attach 主N角标右侧
P_RIGHT_PAIR_TEXT: 1114, //文字:剩余主对数
P_RIGHT_STATUS_TEXT: 1115 //文字:「60分」/「不叫」
},
SelfMark: {
id: EQW_Groups.P_SELF_MARK, //204 自己,无主N/对N角标——自己主/对数已在手牌区可见
P_SELF_BANKER: 1120, //图片:底栏「庄」印章,资源 EQW_Images.MARK_BANKER,point (338,668)
P_SELF_STATUS_TEXT: 1121 //文字:「50分」/「不叫」
}
};
//亮牌信息条(清单 §5.1 群组 206)
EQW_Sprites.LiangPaiView = {
Layer: EQW_Layers.TABLE_STATIC, //101
LiangPaiBar: {
id: EQW_Groups.LIANGPAI_BAR, //206
LIANGPAI_BG: 1030, //图片:半透圆角条,资源 EQW_Images.BAR_LIANGPAI
LIANGPAI_TEXT: 1031 //文字:亮牌统计文案
}
};
//底栏:局数 + 功能按钮(明牌/已出牌/上一轮/底牌)+ 提示按钮(清单 §5.1 群组 205)
EQW_Sprites.FooterView = {
Layer: EQW_Layers.TABLE_STATIC, //101
Footer: {
id: EQW_Groups.FOOTER, //205
FOOTER_BG: 1040, //图片:底栏深色条,资源 EQW_Images.BAR_FOOTER
FOOTER_ASET_TEXT: 1041, //文字:「1/4 局」
BTN_MINGPAI: 1042, //图片:「明牌」按钮,资源 EQW_Images.BTN_BOTTOM_FUNC
BTN_MINGPAI_TEXT: 1043, //文字:按钮文案「明牌」
BTN_HISTORY: 1044, //图片:「已出牌」按钮,资源 EQW_Images.BTN_BOTTOM_FUNC
BTN_HISTORY_TEXT: 1045, //文字:按钮文案「已出牌」
BTN_LAST_ROUND: 1046, //图片:「上一轮」按钮,资源 EQW_Images.BTN_BOTTOM_FUNC
BTN_LAST_ROUND_TEXT: 1047, //文字:按钮文案「上一轮」
BTN_BOTTOM_CARDS: 1048, //图片:「底牌」按钮,资源 EQW_Images.BTN_BOTTOM_FUNC
BTN_BOTTOM_CARDS_TEXT: 1049, //文字:按钮文案「底牌」
BTN_TISHI_CAI: 1050, //图片:「踩」按钮(闲家,占庄标区),资源 EQW_Images.BTN_TISHI
BTN_TISHI_CAI_TEXT: 1051, //文字:「踩」
BTN_TISHI_HAS: 1052, //图片:「有分」按钮,资源 EQW_Images.BTN_TISHI
BTN_TISHI_HAS_TEXT: 1053, //文字:「有分」
BTN_TISHI_NONE: 1054, //图片:「没分」按钮,资源 EQW_Images.BTN_TISHI
BTN_TISHI_NONE_TEXT: 1055 //文字:「没分」
}
};
///////////////////////////////////////////////////////////////
////////// EQW_PlatformSprites: 平台提供精灵登记表 //////////////
///////////////////////////////////////////////////////////////
//平台提供的精灵,子游戏【不建】,仅登记 ID 供布局 attach 引用。
//落在框架保留段 1–1000,故独立于 EQW_Sprites、不参与子游戏号段校验。
//三人局座位映射(清单 §0.2):ind0=南=自己 ind1=东=右上家 ind3=西=左上家;
//头像框基址 376+ind(清单 §6.6)。
var EQW_PlatformSprites = EQW_PlatformSprites || {
P_SELF_AVATAR: 376, //平台头像框 376+ind0,自己(南)
P_RIGHT_AVATAR: 377, //平台头像框 376+ind1,右上家(东)
P_LEFT_AVATAR: 379 //平台头像框 376+ind3,左上家(西)
};