Files
erqiwang_youle/client/js/01_SubGame/codes/config/Layout_Table.js
T
joywayerandClaude Opus 5 6c92920df8 二七王:前端布局与动画常量
照清单 §6 各表逐条录入,字段名与 LayoutSolver 的 node 一一对应、可原样喂入。
布局文件保持纯数据:无函数、无副作用;分行策略等写成数据标记而非函数。
建房选项配置自带 bit 与 value,roomtype 拼串遍历配置即可,不按下标硬拼。
动画参数含 D-8 判定动画的待补说明。

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

134 lines
5.7 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', target: 'TOP_INFO_BG',
hAlign: 'left', vAlign: 'bottom', offsetX: 20, offsetY: -8, w: 30, h: 30
};
//顶部 · 叫分角标底:贴叫分数值文字右上角(资源 BADGE_MULTIPLE 帧1 34×18)。
//角标数值文字复用同一矩形,不单独配置(清单未给独立位置,下同)
EQW_Layout.TOP_CALL_BADGE_BG = {
kind: 'attach', 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', target: 'TOP_GRADE_TEXT', corner: 'topRight', offsetX: 4, offsetY: 6, w: 34, h: 18
};
//亮牌信息条
EQW_Layout.LIANGPAI_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「底栏·庄标」同一元素,此处合并,避免重复定义)
EQW_Layout.P_BANKER_MARK = {
kind: 'attach', 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', 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', 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 }
}
};
//倒计时:三家都有
EQW_Layout.P_COUNTDOWN = {
kind: 'point', w: 75, h: 70,
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', 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 }
}
};