From 488f36b5451e6f1833cebafa06eaa28dc0eca66b Mon Sep 17 00:00:00 2001 From: Joywayer Date: Wed, 26 Aug 2026 20:53:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8C=E4=B8=83=E7=8E=8B=EF=BC=9A=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E7=B2=BE=E7=81=B5=E7=BB=93=E6=9E=84=E5=B8=B8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 照清单 §5.1–§5.8 逐条录入,键名与 ID 原样照抄;省略写法(如「结构同 202」) 全部展开写全。每个精灵注明类型/用途/资源键/帧说明,后期照此在编辑器里创建。 按协调方中途下达的结构变更,Group 与其名下精灵合并为 group 容器 (groupName: { id: 群组常量, 精灵键: 精灵ID, ... })。 Co-Authored-By: Claude Opus 5 (1M context) --- .../01_SubGame/codes/config/Sprites_Action.js | 181 +++++++++++++++ .../01_SubGame/codes/config/Sprites_Cards.js | 214 ++++++++++++++++++ .../codes/config/Sprites_CreateRoom.js | 51 +++++ .../01_SubGame/codes/config/Sprites_Result.js | 146 ++++++++++++ .../01_SubGame/codes/config/Sprites_Table.js | 113 +++++++++ 5 files changed, 705 insertions(+) create mode 100644 client/js/01_SubGame/codes/config/Sprites_Action.js create mode 100644 client/js/01_SubGame/codes/config/Sprites_Cards.js create mode 100644 client/js/01_SubGame/codes/config/Sprites_CreateRoom.js create mode 100644 client/js/01_SubGame/codes/config/Sprites_Result.js create mode 100644 client/js/01_SubGame/codes/config/Sprites_Table.js diff --git a/client/js/01_SubGame/codes/config/Sprites_Action.js b/client/js/01_SubGame/codes/config/Sprites_Action.js new file mode 100644 index 0000000..6db1fd0 --- /dev/null +++ b/client/js/01_SubGame/codes/config/Sprites_Action.js @@ -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 //文字:提示文案 + } +}; diff --git a/client/js/01_SubGame/codes/config/Sprites_Cards.js b/client/js/01_SubGame/codes/config/Sprites_Cards.js new file mode 100644 index 0000000..7acece9 --- /dev/null +++ b/client/js/01_SubGame/codes/config/Sprites_Cards.js @@ -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 + } +}; diff --git a/client/js/01_SubGame/codes/config/Sprites_CreateRoom.js b/client/js/01_SubGame/codes/config/Sprites_CreateRoom.js new file mode 100644 index 0000000..b0e4678 --- /dev/null +++ b/client/js/01_SubGame/codes/config/Sprites_CreateRoom.js @@ -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 //文字:附加规则选项文字 + } +}; diff --git a/client/js/01_SubGame/codes/config/Sprites_Result.js b/client/js/01_SubGame/codes/config/Sprites_Result.js new file mode 100644 index 0000000..09cecc1 --- /dev/null +++ b/client/js/01_SubGame/codes/config/Sprites_Result.js @@ -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座位标签 + } +}; diff --git a/client/js/01_SubGame/codes/config/Sprites_Table.js b/client/js/01_SubGame/codes/config/Sprites_Table.js new file mode 100644 index 0000000..bfc41e6 --- /dev/null +++ b/client/js/01_SubGame/codes/config/Sprites_Table.js @@ -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,左上家(西) +};