Files
erqiwang_youle/client/js/01_SubGame/codes/config/Layout_Table.js
T
joywayerandClaude Opus 5 f982460c9c 二七王:群组 206 改名为主牌统计条,与 design §8.2 的「亮牌」消歧义
群组 206 原名「亮牌条 / LIANGPAI_BAR」,但它的实际用途与坐标 (35,400) 对应的是
清单 §2.5「自己的主牌统计条」——手牌上方显示 x对 x主、前端本地统计、有手牌时常显。
而 design §8.2 真正的「亮牌」是庄家埋牌后向两个闲家亮出自己全部固定主牌的具体牌面,
走遮罩面板(群组 242,复用 HIST_* 精灵)。清单 §0.0 专门用一节区分「亮牌 / 余主公示 /
明牌 / 开底」四类公开信息,名字撞车极易把渲染写到错误的界面上。

统一改名(ID 一律不变,只改名字):
- 群组   EQW_Groups.LIANGPAI_BAR   → ZHU_STAT_BAR (206)
- View   EQW_Sprites.LiangPaiView  → ZhuStatView,容器 LiangPaiBar → ZhuStatBar
- 精灵   LIANGPAI_BG/_TEXT (1030/1031) → ZHU_STAT_BG / ZHU_STAT_TEXT
- 布局   EQW_Layout.LIANGPAI_BG    → ZHU_STAT_BG
- 资源   EQW_Images.BAR_LIANGPAI   → BAR_ZHU_STAT (605)

同步清单 §0.0 / §0.3 群组表与号段表 / §1.6 / §2.5 / §3.5 / §3.6 / §5.1 / §5.7b /
§6.5 / §7.2 T-9 / §7.3 第 5 条,并在 §0.3 群组表下加修订说明(2026-08-27 + 缘由)。

一并订正清单 §1.6 的一处笔误:收到 liangpai 时应弹出亮牌遮罩面板(群组 242),
原文写的是「渲染 §2.5 亮牌信息条」——正是同名异实造成的串位。
EQW_Anim.LIANGPAI_AUTO_CLOSE 属真正的亮牌面板,保持原名,仅补注释说明归属。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 08:40:09 +08:00

150 lines
7.3 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_Layout: 常驻区 + 玩家位(清单 §6.5 / §6.6)//////
///////////////////////////////////////////////////////////////
// 【纯数据文件】无函数、无副作用;依赖 LayoutConstants.js 先加载
// (引用其 EQW_Layout.TEXT_STYLE.*,属 EQW_Layout 内部自引用)。
var EQW_Layout = EQW_Layout || {};
//===== 常驻区(清单 §6.5)=====
//顶部信息条底
EQW_Layout.TOP_INFO_BG = { kind: 'point', x: 486, y: 4, w: 276, h: 68 };
//顶部 · 花色图标:贴信息条内部左下角(资源 SUIT_ICON_S 30×30,清单 §3)
EQW_Layout.TOP_SUIT_ICON = {
kind: 'attach', targetKind: 'layout', target: 'TOP_INFO_BG',
hAlign: 'left', vAlign: 'bottom', offsetX: 20, offsetY: -8, w: 30, h: 30
};
//顶部 · 叫分数值文字 / 抓分数值文字:【清单 §6.5 未给出位置】——那张表只列了两个角标底与角标
//文字,而角标底又必须贴在这两段数值文字身上。此处显式占位:坐标与宽高全部标为运行时注入,
//由调用方按信息条内的三列表格实际排布给出;设计稿补齐后把 x/y/w/h 回填成固定值即可。
//显式占位是为了避免 C 阶段在渲染代码里就地硬编码一组坐标——那样这两处位置就再也无从统一修改
EQW_Layout.TOP_CALL_TEXT = { kind: 'point', runtime: ['x', 'y', 'w', 'h'] };
EQW_Layout.TOP_GRADE_TEXT = { kind: 'point', runtime: ['x', 'y', 'w', 'h'] };
//顶部 · 叫分角标底:贴叫分数值文字右上角(资源 BADGE_MULTIPLE 帧1 34×18)。
//角标数值文字复用同一矩形,不单独配置(清单未给独立位置,下同)
EQW_Layout.TOP_CALL_BADGE_BG = {
kind: 'attach', targetKind: 'layout', target: 'TOP_CALL_TEXT',
corner: 'topRight', offsetX: 4, offsetY: 6, w: 34, h: 18
};
//顶部 · 抓分角标底:贴抓分数值文字右上角(资源 BADGE_MULTIPLE 帧2 34×18)
EQW_Layout.TOP_GRADE_BADGE_BG = {
kind: 'attach', targetKind: 'layout', target: 'TOP_GRADE_TEXT',
corner: 'topRight', offsetX: 4, offsetY: 6, w: 34, h: 18
};
//自己的主牌统计条(手牌上方「x对 x主」,群组 206)。
//2026-08-27 由 LIANGPAI_BG 改名:与 design §8.2 的「亮牌」同名异实,后者是遮罩面板(群组 242)
EQW_Layout.ZHU_STAT_BG = { kind: 'point', x: 35, y: 400, w: 210, h: 35 };
//底栏条
EQW_Layout.FOOTER_BG = { kind: 'point', x: 0, y: 648, w: 1280, h: 72 };
//底栏 · 局数文字「1/4 局」
EQW_Layout.FOOTER_ASET_TEXT = {
kind: 'point', x: 635, y: 672, w: 65, h: 26, textStyle: EQW_Layout.TEXT_STYLE.ASET_COUNT
};
//底栏 · 功能钮组(明牌/已出牌/上一轮/底牌):逐项不等宽(清单 §6.1 T-25)
EQW_Layout.FOOTER_FUNC_BUTTONS = {
kind: 'line', direction: 'horizontal', anchorX: 1250, anchorY: 672,
itemHeight: 30, spacing: 15, anchor: 'right',
items: [
{ key: 'BTN_MINGPAI', width: 74 },
{ key: 'BTN_HISTORY', width: 87 },
{ key: 'BTN_LAST_ROUND', width: 93 },
{ key: 'BTN_BOTTOM_CARDS', width: 78 }
]
};
//底栏 · 提示按钮组(踩/有分/没分):count 由运行时同时可见的按钮数给出,不进配置
EQW_Layout.FOOTER_TISHI_BUTTONS = {
kind: 'line', direction: 'horizontal', anchorX: 335, anchorY: 672,
itemWidth: 52, itemHeight: 30, spacing: 26, anchor: 'left'
};
//右侧语音钮(平台):坐标仅登记供 01_SubGame_modify.js 配置区人工同步核对(清单 §6.11 同类处理)
EQW_Layout.VOICE_BTN_REF = { kind: 'point', x: 1210, y: 310, w: 56, h: 56 };
//右侧聊天钮(平台):同上
EQW_Layout.CHAT_BTN_REF = { kind: 'point', x: 1210, y: 385, w: 56, h: 56 };
//===== 玩家位(清单 §6.6)=====
//头像框(平台提供):仅登记坐标供 attach 参考与 Game_Modify.PLAYER_INFO_LAYOUT 人工同步(清单 §6.11)。
//SELF 尺寸与 LEFT/RIGHT 不同(84×53 vs 91×118),bySeat 内单独覆盖 w/h
EQW_Layout.PLAYER_AVATAR_FRAME_REF = {
kind: 'point', w: 91, h: 118,
bySeat: {
LEFT: { x: 22, y: 122 },
RIGHT: { x: 1160, y: 122 },
SELF: { x: 22, y: 645, w: 84, h: 53 }
}
};
//『庄』印章:三家各一个精灵(P_LEFT_BANKER / P_RIGHT_BANKER / P_SELF_BANKER),按 bySeat 求位置。
//LEFT/RIGHT 贴平台头像框外角;SELF 为底栏固定点(与清单 §6.5「底栏·庄标」同一元素,此处合并,避免重复定义)。
//注意:base 的 kind 是 attach,SELF 变体里【有意】把 kind 覆盖为 point——EQW_LayoutSolver._mergeBySeat
//会合并包括 kind 在内的所有字段,这里利用该机制表达「底栏庄标是固定坐标、不贴附任何目标」,
//与 LEFT/RIGHT 两个上家贴头像框(attach)是不同的定位方式,不是笔误
EQW_Layout.P_BANKER_MARK = {
kind: 'attach', targetKind: 'platform', w: 40, h: 40,
bySeat: {
LEFT: { target: 'P_LEFT_AVATAR', corner: 'topRight', offsetX: 7, offsetY: 8 },
RIGHT: { target: 'P_RIGHT_AVATAR', corner: 'topLeft', offsetX: -40, offsetY: 8 },
SELF: { kind: 'point', x: 338, y: 668, w: 32, h: 34 }
}
};
//『主N』角标底:仅左右两家(自己主/对数已在手牌区可见,无此角标)。w/h 为清单 §6.6 实测值
EQW_Layout.P_ZHU_BADGE = {
kind: 'attach', targetKind: 'platform', corner: 'bottomLeft', offsetX: 0, offsetY: 6, w: 40, h: 19,
bySeat: {
LEFT: { target: 'P_LEFT_AVATAR' },
RIGHT: { target: 'P_RIGHT_AVATAR' }
}
};
//『对N』角标底:贴主N角标右侧。w/h 清单未重复给出,沿用主N角标同尺寸
//(同资源 BADGE_ZHU_PAIR 的另一帧,帧1黄底=主N、帧2白底=对N,尺寸一致)
EQW_Layout.P_PAIR_BADGE = {
kind: 'attach', targetKind: 'layout', target: 'P_ZHU_BADGE', hAlign: 'right', vAlign: 'middle',
offsetX: 44, offsetY: 0, w: 40, h: 19
};
//状态文字「60分」/「不叫」:仅左右两家(自己此阶段无独立文字区,见清单 §6.6 表)
EQW_Layout.P_STATUS_TEXT = {
kind: 'point', w: 130, h: 70, textStyle: EQW_Layout.TEXT_STYLE.STATUS_BIG,
bySeat: {
LEFT: { x: 170, y: 165 },
RIGHT: { x: 980, y: 165 }
}
};
//倒计时:三家都有(多帧图数字精灵,纯秒数无后缀,见 NUM_STYLE.COUNTDOWN)。
//高度恒为单字高,取 NUM_STYLE.COUNTDOWN.charHeight(SSOT);宽度随位数变化
//(SpriteManager.setNumberImage 按【字符数 × charWidth】自动改精灵宽),故 w 留到运行时注入
EQW_Layout.P_COUNTDOWN = {
kind: 'point', h: EQW_Layout.NUM_STYLE.COUNTDOWN.charHeight,
runtime: ['w'],
bySeat: {
LEFT: { x: 195, y: 165 },
RIGHT: { x: 1010, y: 165 },
SELF: { x: 445, y: 345 }
}
};
//提示气泡(踩/没分/有分):朝向 arrowRight 是配置项,不按座位硬判(清单 §6.6)。
//w/h 清单 §3 标『待定』,此处用示意尺寸占位,资源定稿后回填(不影响 kind/字段结构)
EQW_Layout.TISHI_BUBBLE = {
kind: 'attach', targetKind: 'platform', w: 96, h: 44,
bySeat: {
LEFT: { target: 'P_LEFT_AVATAR', hAlign: 'right', vAlign: 'middle', offsetX: 10, arrowRight: false },
RIGHT: { target: 'P_RIGHT_AVATAR', hAlign: 'left', vAlign: 'middle', offsetX: -10, arrowRight: true },
SELF: { target: 'P_SELF_AVATAR', hAlign: 'right', vAlign: 'top', offsetX: 10, offsetY: -70, arrowRight: false }
}
};