为 HandView / BottomCardsView / BuryCardsView / PlayAreaView 各补一块 JSDoc: 分区标题标出 Layer 与 Group,正文含 ASCII 版式图(手牌单排/双排两种形态、 底牌背面与翻正面、埋牌底牌在结算面板内的位置、三家已出牌区的镜像关系与 牌型标签/牌角标贴附方式)、元素说明、资源说明、精灵 ID 分配与 @see 出处。 纯注释改动,数据部分一字未动(精灵总数仍 378、布局节点仍 61)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
497 lines
26 KiB
JavaScript
497 lines
26 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 || {};
|
||
|
||
// ============================================================================
|
||
// 自己手牌区 - Layer 102 (HAND), Group 210 (HAND)
|
||
// ============================================================================
|
||
|
||
/**
|
||
* 自己手牌区 - HandView
|
||
*
|
||
* 用途: 屏幕下部铺开自己的手牌(重叠排列),并在每张牌上叠加牌型标记。
|
||
* 两种形态:常态【单排】、庄家埋牌时【双排】。张数上限 36(庄家摸底后 28+8)。
|
||
*
|
||
* 布局说明(参考图 docs_dev/uiref/等待叫分.png = 单排;
|
||
* docs_dev/uiref/庄家埋牌.png = 双排):
|
||
*
|
||
* 形态一 · 单排(叫分 / 选主 / 出牌阶段,EQW_Layout.HAND_FAN_SINGLE)
|
||
* fan/horizontal, anchor center, anchorX=640 anchorY=455, maxWidth=1215,
|
||
* 牌尺寸 CARD_SIZE.L = 110×190, spacingMax=0 spacingMin=-78, overlapFrom='left'
|
||
*
|
||
* x≈35 x≈1250
|
||
* ┌──┬──┬──┬──┬──┬──┬──┬──┬── … ──┬──┬──┬──────────┐ y=455
|
||
* │K │K │K │K │K │K │K │K │ │K │K │ K │
|
||
* │♦ │♦ │♦ │♦ │♦ │♦ │♦ │♦ │ …… │♦ │♦ │ ♦ │
|
||
* └──┴──┴──┴──┴──┴──┴──┴──┴── … ──┴──┴──┴──────────┘ y=645
|
||
* ↑ HAND_CARD_1(1200) 起自左,逐张右叠;末张整张露出(110px)
|
||
* 36 张时每张只露约 32px(spacing -78),与参考图实测 33px 吻合
|
||
*
|
||
* 形态二 · 双排(仅庄家埋牌阶段,EQW_Layout.HAND_TWO_ROW)
|
||
* splitStrategy='floorTop':上排 floor(n/2)、下排 ceil(n/2)(36 张 = 18/18)
|
||
* ROW_TOP anchorX=644 anchorY=285 maxWidth=928 spacingMin=-65
|
||
* ROW_BOTTOM anchorX=644 anchorY=455 maxWidth=928 spacingMin=-65
|
||
*
|
||
* ┌──┬──┬──┬── … ──┬──┬──────┐ y=285 ← ROW_TOP
|
||
* │K │K │K │ …… │K │ K │
|
||
* └──┴──┴──┴── … ──┴──┴──────┘ y=455
|
||
* ┌──┬──┬──┬── … ──┬──┬──────┐ y=455 ← ROW_BOTTOM
|
||
* │K │K │K │ …… │K │ K │
|
||
* └──┴──┴──┴── … ──┴──┴──────┘ y=645
|
||
* ⚠ 参考图画的是 17/19 分行,属填充画法(清单 §0.5),不作依据;分行以 floorTop 为准。
|
||
*
|
||
* 选中态: 整张牌上浮,偏移量 EQW_Anim.HAND_SELECT_OFFSET_Y = -40(SSOT,布局里不重复定义)。
|
||
*
|
||
* 元素说明:
|
||
* - HAND_CARD_1..36 与 HAND_MARK_1..36 【一一对应】(HAND_MARK_i 属于 HAND_CARD_i),
|
||
* 同属群组 210;张数少于 36 时隐藏多余精灵并重算间距。
|
||
* - 牌面帧 = cardIdToFrame(id)(清单 §0.4 唯一权威转换,前端只此一处实现)。
|
||
* - 手牌标记三种互斥、每张牌至多一个,由前端据 flower(主牌花色)本地标注,服务端不下发:
|
||
* 帧1 =「拖」红色圆标 —— 该牌属于一组拖拉机
|
||
* 帧2 = 橙色五角星 —— 正 2 / 正 7(主花色的 2 和 7)
|
||
* 帧3 = 蓝色五角星 —— 除正2正7外的其他主牌(双王、副2、副7、主花色普通牌)
|
||
* 在参考图 庄家埋牌.png 下排牌的左下角可看到这三种标记。
|
||
* - 【时序】发牌动画从右往左铺开(EQW_Anim.DEAL: 800ms / 每张 20ms 延迟);须先
|
||
* setHandCards() 把牌写进 this.data、再播动画,动画回调里只刷界面不写核心数据。
|
||
* - 【时序】选主后主牌集合会变(正2/正7 升格),手牌必须按新主牌序重排(清单 §7.2 T-5)。
|
||
*
|
||
* 资源说明:
|
||
* - 牌面: EQW_Images.CARD_FACE_L (501), 60 帧 (10列×6行行优先), 单帧 110×190, 整图 1100×1140
|
||
* 帧1–13 黑桃A–K / 帧14–26 红桃 / 帧27–39 梅花 / 帧40–52 方块 /
|
||
* 帧53 小王 / 帧54 大王 / 帧55–60 牌背(二七王用帧55)
|
||
* - 牌上标记: EQW_Images.MARK_CARD_GROUP (577), 3 帧, 26×26
|
||
* - 选中标记: EQW_Images.MARK_SELECTED (578) 尺寸待定,也可只用上浮表现、不出图
|
||
*
|
||
* 精灵ID分配: 1200–1235(手牌)+ 2100–2135(手牌标记)
|
||
* —— 标记另起 2100 段的原因见下方原注释(1236 起接不下 36 个连号)。
|
||
*
|
||
* @see docs_dev/二七王-UI资源与精灵清单.md §2.7 手牌区 / §5.2 Layer 102 / §6.7 牌区配置
|
||
* @see docs_dev/uiref/等待叫分.png
|
||
* @see docs_dev/uiref/庄家埋牌.png
|
||
*/
|
||
//自己手牌区: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 张)- Layer 103 (TABLE_CARDS), Group 211 (BOTTOM_CARDS)
|
||
// ============================================================================
|
||
|
||
/**
|
||
* 底牌区 - BottomCardsView
|
||
*
|
||
* 用途: 桌面中央上部的 8 张【底牌】——发牌时没有发给玩家、留在桌面的那 8 张。
|
||
* 发牌起显示牌背;庄家摸底 / 70 分开底时【同一批精灵】翻成正面。
|
||
*
|
||
* 布局说明(背面:docs_dev/uiref/等待叫分.png 中央;正面:docs_dev/uiref/叫分确定庄.png、
|
||
* docs_dev/uiref/等待庄家选主.png 中央;
|
||
* 位置见 EQW_Layout.BOTTOM_CARDS = line/horizontal, anchor center,
|
||
* anchorX=655 anchorY=110, 牌尺寸 CARD_SIZE.L 110×190, spacing=-36):
|
||
*
|
||
* x 居中于 655
|
||
* ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬────────────┐ y=110
|
||
* │ 背 │ 背 │ 背 │ 背 │ 背 │ 背 │ 背 │ 背 │
|
||
* │ │ │ │ │ │ │ │ │
|
||
* └──────┴──────┴──────┴──────┴──────┴──────┴──────┴────────────┘ y=300
|
||
* ↑ ↑ ↑
|
||
* BOTTOM_ BOTTOM_ BOTTOM_
|
||
* CARD_1 CARD_2 … (等距 spacing -36,每张露 74px)… CARD_8
|
||
* (1250) (1251) (1257)
|
||
*
|
||
* 翻开后同一批精灵改帧为正面(帧 = cardIdToFrame(id)):
|
||
* ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬────────────┐
|
||
* │K │K │K │K │K │K │K │K │
|
||
* │♦ │♦ │♦ │♦ │♦ │♦ │♦ │♦ │
|
||
* └──────┴──────┴──────┴──────┴──────┴──────┴──────┴────────────┘
|
||
*
|
||
* 元素说明:
|
||
* - 未揭示时帧 = 55(牌背);揭示时帧 = cardIdToFrame(id)(清单 §0.4)。
|
||
* - 【时序·开底 D-2 已定】翻牌这套 UI 只有一套,两种情形只是【谁能看到】不同:
|
||
* 非 70 分坐庄(只摸底)→ 只有庄家看得到这 3 秒,闲家侧保持背面 / 直接收起
|
||
* 70 分坐庄(开底) → 全场三人都看得到 3 秒(EQW_Anim.ANCARD_REVEAL_DURATION = 3000)
|
||
* 开底【不做倒计时、不做单独的公示面板、不加提示文案】——画面本身已说清楚(§2.8)。
|
||
* 3 秒后庄家摸入手牌、闲家侧收起,底牌区隐藏。
|
||
* - 【重连不重放】70 分的 3 秒亮牌是上庄时的一次性事件,deskinfo 重连不得补播(§1.4)。
|
||
* - 底栏「底牌」按钮再看这 8 张时也复用本区(庄家全程可看,闲家仅开底过的局,S-3)。
|
||
* - ⚠ 参考图 等待庄家选主.png 把「开底摊牌」与「等待庄家选主」提示条画在了一起,属叠画
|
||
* 示意(§0.5);实际顺序是 开底 3 秒 → 庄家摸底入手 → 选主,摸底后本区即收起。
|
||
*
|
||
* 资源说明:
|
||
* - 牌面: EQW_Images.CARD_FACE_L (501), 60 帧, 单帧 110×190(与手牌同一套资源)
|
||
*
|
||
* 精灵ID分配: 1250–1257
|
||
*
|
||
* @see docs_dev/二七王-UI资源与精灵清单.md §1.2 发牌 / §1.4 看底牌·上庄 / §5.3 / §6.7
|
||
* @see docs_dev/uiref/等待叫分.png
|
||
* @see docs_dev/uiref/叫分确定庄.png
|
||
* @see docs_dev/uiref/等待庄家选主.png
|
||
*/
|
||
//底牌区:发牌留桌 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
|
||
}
|
||
};
|
||
|
||
// ============================================================================
|
||
// 埋牌底牌展示区 - Layer 103 (TABLE_CARDS), Group 215 (BURY_CARDS)
|
||
// ============================================================================
|
||
|
||
/**
|
||
* 埋牌底牌展示区 - BuryCardsView
|
||
*
|
||
* 用途: 小局结算时亮出【埋牌底牌】——庄家埋牌阶段从手里扣下的那 8 张。
|
||
* 用最小的牌面尺寸档 S,摆在小局结算面板的上半部。
|
||
*
|
||
* 术语区分(清单 §2.6 已统一,别混):
|
||
* 「底牌」 = 发牌留桌的 8 张 → BottomCardsView(群组 211),协议字段 bottomcards
|
||
* 「埋牌底牌」= 庄家埋下的 8 张 → 本 View(群组 215),协议字段 burycards / bottom.cards
|
||
*
|
||
* 布局说明(参考图 docs_dev/uiref/小局结算.png 中央面板内那排小牌;
|
||
* 位置见 EQW_Layout.BURY_CARDS = line/horizontal, anchor center,
|
||
* anchorX=640 anchorY=163, 牌尺寸 CARD_SIZE.S 50×70, spacing=2):
|
||
*
|
||
* ┌──────────────────────────────────────────┐ y=140 ← RESULT_BOTTOM_PANEL(1800)
|
||
* │ ┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐ │ y=163 (见 Sprites_Result.js)
|
||
* │ │10││10││10││10││10││10││10││10│ │
|
||
* │ │♠ ││♥ ││♣ ││♦ ││♠ ││♥ ││♣ ││♦ │ │ y=233
|
||
* │ └──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘ │
|
||
* │ 叫分2子 底牌 20x0 │ ← RESULT_BOTTOM_TEXT(1801)
|
||
* └──────────────────────────────────────────┘ y=288
|
||
* ↑ ↑ ↑
|
||
* BURY_ BURY_ BURY_
|
||
* CARD_1 CARD_2 …(等距 spacing +2,不重叠)… CARD_8
|
||
* (1258) (1259) (1265)
|
||
*
|
||
* 本区居中于 x=640,与外层面板(EQW_Layout.RESULT_BOTTOM_PANEL = 430,140,420×148)
|
||
* 的中心 x=640 对齐;8×50 + 7×2 = 414,正好落在面板 420 宽度之内。
|
||
*
|
||
* 元素说明:
|
||
* - 数据取结算包 bottom.cards,【恒有】(design §11:牌局结束需要亮出底牌)——
|
||
* 即便闲家未扣底也照常亮 8 张,只是面板文案里的倍数位显示 0。
|
||
* - 帧 = cardIdToFrame(id),恒为正面(本区只在结算时出现,不存在牌背态)。
|
||
* - 【容错】投降结算只有 aset、无 bottom 分组 → 结算面板必须容忍底牌区缺失,
|
||
* 不能因读不到 bottom.cards 就崩或显示空框(§1.8)。
|
||
* - 底栏「扣底」按钮(清单 §2.6,尚无精灵)看的也是这 8 张。
|
||
*
|
||
* 资源说明:
|
||
* - 牌面: EQW_Images.CARD_FACE_S (503), 60 帧, 单帧 50×70, 整图 500×420
|
||
* 帧排布与 CARD_FACE_L 完全一致(§0.4)
|
||
*
|
||
* 精灵ID分配: 1258–1265
|
||
*
|
||
* @see docs_dev/二七王-UI资源与精灵清单.md §1.8 末轮扣底 + 小局结算 / §5.3 / §6.7
|
||
* @see docs_dev/uiref/小局结算.png
|
||
*/
|
||
//埋牌底牌展示区:结算时亮出的埋牌底牌 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
|
||
}
|
||
};
|
||
|
||
// ============================================================================
|
||
// 三家已出牌区 - Layer 103 (TABLE_CARDS), Group 212 / 213 / 214
|
||
// ============================================================================
|
||
|
||
/**
|
||
* 三家已出牌区 - PlayAreaView
|
||
*
|
||
* 用途: 出牌阶段,三家各有一块区域展示【本轮】打出的牌(中号牌面 CARD_FACE_M)。
|
||
* 每家一个群组、各预置 28 张(= 单次出牌张数上限,甩牌最多可甩满手牌)。
|
||
*
|
||
* 布局说明(参考图 docs_dev/uiref/出牌2.png;
|
||
* 位置见 EQW_Layout.PLAY_AREA,三家共用 base + bySeat 三个变体:
|
||
* fan/horizontal, 牌尺寸 CARD_SIZE.M 90×155, maxWidth=170,
|
||
* spacingMax=-35 spacingMin=-62):
|
||
*
|
||
* ┌──────────────────────────────────────────────────────────────┐ y=0
|
||
* │ ┌ 顶部信息条 ┐ │
|
||
* │ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │
|
||
* │ │头像│ │K K │ │K K │ │头像│ │ y≈120
|
||
* │ └────┘ │ 大│ │ 大│ └────┘ │
|
||
* │ └────┘ └────┘ │
|
||
* │ LEFT 258,120 RIGHT 1022,120 │
|
||
* │ overlapFrom='right' overlapFrom='left' │
|
||
* │ (左右镜像:同参数,堆叠朝向相反) │
|
||
* │ │
|
||
* │ ┌────┐ │
|
||
* │ │K K │ ← SELF 650,265 │ y≈265
|
||
* │ │ 庄│ overlapFrom='left' │
|
||
* │ ┌──┴────┘ │
|
||
* │ │拖拉机│ ← 牌型标签,贴该区首张牌 bottomLeft │
|
||
* │ └──────┘ │
|
||
* │ │
|
||
* │ ┌──────────── 自己手牌区(Layer 102)────────────┐ │ y≈455
|
||
* └──────────────────────────────────────────────────────────────┘ y=720
|
||
*
|
||
* 单个出牌区的内部结构(以自己为例):
|
||
*
|
||
* PLAY_SELF_1(1300) 起自左,逐张右叠(fan 压缩,最多 28 张)
|
||
* ↓
|
||
* ┌────┬────┬──────┐
|
||
* │ K │ K │ K │ 每张牌【右上角】可再叠一个角标:
|
||
* │ ♦ │ ♦ │ ♦ ⟨庄⟩│ MARK_BANKER_CORNER(572) 28×28「庄」橙色斜标
|
||
* └────┴────┴──────┘ MARK_JOKER_BIG(573) 34×34「大/小」王圆标
|
||
* ┌──────┐ —— 贴的是运行时才确定的某一张牌,故
|
||
* │ 拖拉机│ EQW_Layout.PLAY_CARD_CORNER_MARK 只给模板
|
||
* └──────┘ (corner/offset),target/w/h 由调用方注入
|
||
* ↑ PLAY_SELF_TYPE_BG(1328) + PLAY_SELF_TYPE_TEXT(1329)
|
||
* EQW_Layout.PLAY_TYPE_LABEL: attach 首张牌 bottomLeft, offsetY=-24, 76×24
|
||
* 首槽是【固定】精灵(PLAY_SELF_1 / PLAY_LEFT_1 / PLAY_RIGHT_1),非动态目标
|
||
*
|
||
* 元素说明:
|
||
* - 牌面帧 = cardIdToFrame(id)(§0.4);数据取 chupai1/2/3 的 seat + cards。
|
||
* - 牌型标签当前【只出「毙」一种】——EQW_Images.LABEL_CARDTYPE 只做这一帧;
|
||
* 数据层仍保留 毙/垫/混合出牌 三种标识以备扩展,但不出图、不显示。
|
||
* ⚠ 参考图 出牌2.png 左下角的橙色「拖拉机」标签是设计示意,与当前资源定案(只做「毙」)
|
||
* 不一致,实现时以资源注释为准(清单 §7.2 T-11 标签种类以美术稿为准,尚未定案)。
|
||
* - 甩牌的真实结构只能读 chupai1.shuai({tractors, pairs, singles}),
|
||
* 【不得据 cardtype 反推】(协议 §11 明确警告)。
|
||
* - 【时序·一轮结束】maxseat 高亮 → 三家出牌区收牌 → 若有 grade 播捡分飘字
|
||
* (OverlayView 的 GRADE_FLOAT)并累加顶部「抓分」列 → 下一轮由 maxseat 先出。
|
||
* - 【为什么预置而不复制】号段每家 100 个、容量充裕,且需要叠压 z 序与出牌动画、
|
||
* 逐张独立控制,故不使用 SpriteCopyUtils,避免显式清理负担(清单 §5.6a 判据表)。
|
||
*
|
||
* 资源说明:
|
||
* - 牌面: EQW_Images.CARD_FACE_M (502), 60 帧, 单帧 90×155, 整图 900×930
|
||
* - 牌型标签底: EQW_Images.LABEL_CARDTYPE (576), 1 帧, 76×24
|
||
* - 牌角标: EQW_Images.MARK_BANKER_CORNER (572) 1 帧 28×28 /
|
||
* EQW_Images.MARK_JOKER_BIG (573) 2 帧 34×34(帧1=大王 帧2=小王)
|
||
*
|
||
* 精灵ID分配: 1300–1329(自己)/ 1400–1429(左上家)/ 1500–1529(右上家)
|
||
*
|
||
* @see docs_dev/二七王-UI资源与精灵清单.md §2.3 已出牌区 / §1.7 出牌对局 / §5.3 / §6.7
|
||
* @see docs_dev/uiref/出牌.png
|
||
* @see docs_dev/uiref/出牌2.png
|
||
*/
|
||
//三家已出牌区:自己/左上家/右上家 各 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
|
||
}
|
||
};
|