清单 §5.2 表格写的是「牌型分组标记 ×8」,但 §1.6 明确规定三种标记互斥、【每张牌】 至多一个,core/CardMark.js 也是按每张牌返回标记的。一手 28 张牌通常带 13 个以上标记、 36 张埋牌手更多,8 个远远不够。§1.6 是行为规格、比表格措辞更权威,故按 §1.6 裁决: HAND_MARK_1..36 与 HAND_CARD_1..36 一一对应。 - ID 另起 2100–2135 整段空号:1236 往后接不下 36 个连号(1250 起已是底牌/埋牌区), 换空号段比给别的 View 重新编号更安全;仍落在子游戏段 1001–2999,无重复。 - 守卫补「手牌与标记 1..36 一一对应且同群组」检查。 - 精灵总数由「> 200」改为钉死 387(test_constants / test_spriteindex 两处同一个数), 布局节点数同理已钉死——松下界删掉整个 View 都还能通过。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
252 lines
8.5 KiB
JavaScript
252 lines
8.5 KiB
JavaScript
///////////////////////////////////////////////////////////////
|
||
////////// EQW_Sprites: 精灵结构(清单 §5.2/§5.3 手牌与桌面牌)//
|
||
///////////////////////////////////////////////////////////////
|
||
// 子游戏精灵段 1001–2999。结构与 Sprites_Table.js 一致:
|
||
// View 下 Layer 为图层声明(一个 View 恰好一个图层),其余键是 group 容器;
|
||
// 容器内 id 为群组 ID、其余键才是精灵 id。
|
||
// 连号精灵逐条写全,不用循环生成——便于人逐张对照编辑器核对。
|
||
var EQW_Sprites = EQW_Sprites || {};
|
||
|
||
//自己手牌区:36 张手牌 + 36 个手牌标记(每张牌一个,见下方裁决说明),同属群组 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,
|
||
|
||
//—— 36 个手牌标记【T-8】,与 HAND_CARD_1..36 一一对应(HAND_MARK_i 属于 HAND_CARD_i)——
|
||
//资源 EQW_Images.MARK_CARD_GROUP,帧1=拖(拖拉机) 帧2=橙五角星(正2/正7) 帧3=蓝五角星(其他主牌)。
|
||
//【裁决:按「每张牌」而非「每组」】清单 §5.2 的表格写的是「牌型分组标记 ×8」,但 §1.6 明确
|
||
//规定三种标记互斥、【每张牌】至多一个,core/CardMark.js 也是按每张牌返回标记的。
|
||
//一手 28 张牌通常带 13 个以上标记、36 张埋牌手更多,8 个远远不够——§1.6 是行为规格,
|
||
//比 §5.2 表格的措辞更权威,故按 §1.6 扩到与手牌一一对应。
|
||
//ID 另起 2100 段:1236 往后接不下 36 个连号(1250 起已是底牌/埋牌区),
|
||
//换整段空号 2100–2135 比给别的 View 重新编号更安全。
|
||
HAND_MARK_1: 2100,
|
||
HAND_MARK_2: 2101,
|
||
HAND_MARK_3: 2102,
|
||
HAND_MARK_4: 2103,
|
||
HAND_MARK_5: 2104,
|
||
HAND_MARK_6: 2105,
|
||
HAND_MARK_7: 2106,
|
||
HAND_MARK_8: 2107,
|
||
HAND_MARK_9: 2108,
|
||
HAND_MARK_10: 2109,
|
||
HAND_MARK_11: 2110,
|
||
HAND_MARK_12: 2111,
|
||
HAND_MARK_13: 2112,
|
||
HAND_MARK_14: 2113,
|
||
HAND_MARK_15: 2114,
|
||
HAND_MARK_16: 2115,
|
||
HAND_MARK_17: 2116,
|
||
HAND_MARK_18: 2117,
|
||
HAND_MARK_19: 2118,
|
||
HAND_MARK_20: 2119,
|
||
HAND_MARK_21: 2120,
|
||
HAND_MARK_22: 2121,
|
||
HAND_MARK_23: 2122,
|
||
HAND_MARK_24: 2123,
|
||
HAND_MARK_25: 2124,
|
||
HAND_MARK_26: 2125,
|
||
HAND_MARK_27: 2126,
|
||
HAND_MARK_28: 2127,
|
||
HAND_MARK_29: 2128,
|
||
HAND_MARK_30: 2129,
|
||
HAND_MARK_31: 2130,
|
||
HAND_MARK_32: 2131,
|
||
HAND_MARK_33: 2132,
|
||
HAND_MARK_34: 2133,
|
||
HAND_MARK_35: 2134,
|
||
HAND_MARK_36: 2135
|
||
}
|
||
};
|
||
|
||
//底牌区:发牌留桌 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
|
||
|
||
//—— 本轮打出的牌,资源 EQW_Images.CARD_FACE_M,帧 = cardIdToFrame(id)——
|
||
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
|
||
|
||
//—— 本轮打出的牌,资源 EQW_Images.CARD_FACE_M,帧 = cardIdToFrame(id)——
|
||
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
|
||
}
|
||
};
|