Files
erqiwang_youle/client/js/01_SubGame/codes/config/Layout_CreateRoom.js
T
joywayerandClaude Opus 5 ec954ea4fe 二七王:补建房折行 grid 的 cols 字段,补庄标 kind 覆盖注释
按复审意见修 2 处 Minor:ROOM_OPTION_OVERFLOW_GRID 补上清单原文给出的
cols:maxPerRow;P_BANKER_MARK.bySeat.SELF 补注释说明有意将 kind 由
attach 覆盖为 point(底栏庄标是定点,不贴附头像框,与左右上家不同)。

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

83 lines
4.9 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 / EQW_RoomOptions: 建房规则选项(清单 §6.9b / §1.1)
///////////////////////////////////////////////////////////////
// 【纯数据文件】无函数、无副作用;依赖 LayoutConstants.js 先加载
// (引用其 EQW_Layout.TEXT_STYLE.*,属 EQW_Layout 内部自引用)。
var EQW_Layout = EQW_Layout || {};
//===== 建房规则选项区布局(清单 §6.9b)=====
//两层嵌套:类别竖排(ROOM_CATEGORY_COLUMN)+ 类别内选项槽横排(ROOM_OPTION_ROW)。
//本节数值按参考图比例估,实际以平台建房界面尺寸为准(清单 §6.9b 原文,不是本文件误差)。
//类别竖排。itemWidth 清单未给——类别行宽度等于平台内容区实际宽度,由调用方按实际面板尺寸处理
EQW_Layout.ROOM_CATEGORY_COLUMN = {
kind: 'line', direction: 'vertical', anchorX: 0, anchorY: 0,
itemHeight: 32, spacing: 8, anchor: 'left'
};
//类别标题:贴所在类别行。该行是 ROOM_CATEGORY_COLUMN 求解结果的第 N 项,不是固定精灵,
//target 由调用方按类别序号注入。资源 ROOM_CAT_TITLE 60×24(清单 §3)
EQW_Layout.ROOM_CATEGORY_TITLE = { kind: 'attach', hAlign: 'left', vAlign: 'middle', offsetX: 0, w: 60, h: 24 };
//类别内选项槽横排。anchorY 清单未给(随所在类别行的 y 浮动,由调用方按该行位置注入);
//itemHeight 清单未给,沿用 ROOM_CATEGORY_COLUMN.itemHeight(同一行内选择框与文字纵向居中)
EQW_Layout.ROOM_OPTION_ROW = {
kind: 'line', direction: 'horizontal', anchorX: 70,
itemWidth: 150, spacing: 0, anchor: 'left'
};
//选项组之间的额外间隔(同类别下两个选项组之间比组内选项多留的间距)
EQW_Layout.ROOM_OPTION_GROUP_GAP = 40;
//选择框:贴所在选项槽左侧(资源 ROOM_OPT_BOX 22×22)。target 由调用方按选项槽注入
EQW_Layout.ROOM_OPTION_BOX = { kind: 'attach', hAlign: 'left', vAlign: 'middle', w: 22, h: 22 };
//选项文字:贴同槽选择框右侧,纯文字,清单未给宽高。
//选中态变橙见 EQW_Layout.TEXT_STYLE.ROOM_OPT(normal / selected 两态,由调用方按选中状态二选一)
EQW_Layout.ROOM_OPTION_TEXT = { kind: 'attach', hAlign: 'right', vAlign: 'middle', offsetX: 8 };
//房卡附注:贴扣卡组最后一个选项(固定精灵 ROOM_BOX_CARD_2)右侧
EQW_Layout.ROOM_CARD_COST_NOTE = {
kind: 'attach', target: 'ROOM_BOX_CARD_2', hAlign: 'right', vAlign: 'middle', offsetX: 20,
textStyle: EQW_Layout.TEXT_STYLE.ROOM_CARD_COST_NOTE
};
//折行:选项数超过 maxPerRow 时改用 grid。二七王每组最多 2 项,不会触发(清单 §6.9b 原文);
//清单原文是 grid{cols:maxPerRow, spacingX:0, spacingY:8, fillOrder:'row'},cols 直接取自 maxPerRow,
//故与 spacingX/spacingY/fillOrder 一并记为已定的四个字段;itemWidth / itemHeight / anchorX / anchorY
//清单未给(该分支未被实际使用)
EQW_Layout.ROOM_OPTION_MAX_PER_ROW = 4;
EQW_Layout.ROOM_OPTION_OVERFLOW_GRID = { kind: 'grid', cols: 4, spacingX: 0, spacingY: 8, fillOrder: 'row' };
///////////////////////////////////////////////////////////////
////////// EQW_RoomOptions: 建房规则选项配置(清单 §1.1)///////
///////////////////////////////////////////////////////////////
//整个界面由本配置驱动渲染,加一个选项 = 配置里加一条,不改渲染逻辑(工程总则 §5 OCP / §6 配置优先)。
//type: 'radio' 单选 / 'checkbox' 多选 / 'radioOptional' 单选可不选
//选择框帧号 = (useCheckbox ? 3 : 1) + (selected ? 1 : 0),useCheckbox = (checkbox 或 radioOptional)
//【roomtype 拼串只在一处实现】每个选项自带 bit 与 value,拼串就是遍历本配置,
//不得在别处按下标硬拼(与服务端 class.config.js parse() 对称的 SSOT 要求)
var EQW_RoomOptions = {
categories: [
{ titleFrame: 1, /* 牌局 */ groups: [
{ key: 'aset', type: 'radio', bit: 0,
items: [ { label: '6局', value: '0' }, { label: '12局', value: '1' } ] },
{ key: 'card', type: 'radio', bit: 1, note: 'cardCost',
items: [ { label: '房主扣卡', value: '0' }, { label: 'AA每人扣卡', value: '1' } ] }
] },
{ titleFrame: 2, /* 模式 */ groups: [
{ key: 'peek', type: 'radio', bit: 4,
items: [ { label: '可查牌', value: '0' }, { label: '不查牌', value: '1' } ] }
] },
{ titleFrame: 3, /* 规则 */ groups: [
{ key: 'rules', type: 'checkbox',
items: [ { label: '傍王', bit: 2 }, { label: '爬坡', bit: 3 } ] }
] }
],
//房卡消耗联动(协议 §0.5):不硬编码在 UI 代码里
cardCost: {
'0': { '0': '房主2张', '1': '房主4张' }, //房主扣卡:6局 / 12局
'1': { '0': '每人1张', '1': '每人2张' } //AA 每人扣卡:6局 / 12局
}
};