/////////////////////////////////////////////////////////////// ////////// EQW_Sprites: 精灵结构(清单 §5.8 建房规则选项)////// /////////////////////////////////////////////////////////////// // 子游戏精灵段 1001–2999。结构与 Sprites_Table.js 一致: // View 下 Layer 为图层声明(一个 View 恰好一个图层),其余键是 group 容器; // 容器内 id 为群组 ID、其余键才是精灵 id。 // 3 个类别、4 个选项组、8 个选项,选项集固定,全部预置,共 20 个精灵。 // 渲染仍由 §1.1 的配置数据驱动:配置里每个选项声明自己用哪个精灵键、 // type(决定选择框帧号)、bit/value(决定 roomtype 拼串)——本文件不认识 // 「傍王」「爬坡」这些具体玩法名。 var EQW_Sprites = EQW_Sprites || {}; // ============================================================================ // 建房规则选项区 - Layer 27 (平台 CreateRoom_Layer), Group 250 (CREATE_ROOM) // ============================================================================ /** * 建房规则选项区 - CreateRoomView * * 用途: 创建房间弹窗里【只属于子游戏的那块内容区】——3 个类别标题 + 4 个选项组 + 8 个选项, * 玩家勾选后拼成 5 位 roomtype 串发给服务端。 * 弹窗背景、标题、关闭按钮、确认按钮(平台约定的 25 号精灵)都【由平台提供】, * 本 View 不重复建弹窗外壳(D-1 已定)。也因此不新开图层,直接挂平台的 Layer 27。 * * 布局说明(参考图 docs_dev/uiref/创建房间选项的UI参考内容根据实际二七王游戏改动.png * ——⚠ 那是【另一个游戏】的建房选项(局数 8/16/24、人数 2/3/4、霸王 ×2/×4, * 二七王都没有)。【只照搬视觉范式与控件样式,内容一律按二七王的 roomtype 重写】。 * 下图画的是二七王的实际内容): * * 两层嵌套:类别竖排(ROOM_CATEGORY_COLUMN)+ 类别内选项槽横排(ROOM_OPTION_ROW) * * x=0 x=70 内容区右边缘 * ┌──────┬──────────────────┬──────────────────┬─────────────────┐ * │ 牌局 │ ◉ 6局 │ ◯ 12局 │ │ ← 类别 1 行 1 * │ │ ◉ 房主扣卡 │ ◯ AA每人扣卡 │ 房主2张 │ ← 类别 1 行 2 * ├──────┼──────────────────┼──────────────────┼─────────────────┤ * │ 模式 │ ◉ 可查牌 │ ◯ 不查牌 │ │ ← 类别 2 * ├──────┼──────────────────┼──────────────────┼─────────────────┤ * │ 规则 │ ▣ 傍王 │ ▣ 爬坡 │ │ ← 类别 3 * └──────┴──────────────────┴──────────────────┴─────────────────┘ * ↑ ↑ ↑ ↑ * │ │ └ ROOM_TEXT_*:attach 同槽选择框右侧 offsetX=+8(ROOM_OPTION_TEXT) * │ └── ROOM_BOX_*:attach 所在选项槽 left/middle,22×22(ROOM_OPTION_BOX) * └───────── ROOM_CAT_TITLE_1..3 (2050–2052):attach 所在类别行 left/middle,60×24 * 帧1=牌局 帧2=模式 帧3=规则(ROOM_CATEGORY_TITLE) * ↑ * ROOM_TEXT_CARD_COST(2061) 房卡消耗附注(灰色小字) * attach ROOM_BOX_CARD_2 右侧 offsetX=+20(ROOM_CARD_COST_NOTE) * * 布局参数(EQW_Layout,清单 §6.9b 原文说明数值按参考图比例估、实际以平台建房界面尺寸为准): * ROOM_CATEGORY_COLUMN line/vertical, anchor='top', itemHeight=32, spacing=8, * itemWidth 由调用方按平台内容区实际宽度注入 * ⚠ anchor 必须用竖排语义 top/bottom/center,写成 'left' 会被 * 求解器按方向校验拒掉(历史坑:会算出画布外的 y) * ROOM_OPTION_ROW line/horizontal, anchor='left', anchorX=70, itemWidth=150, * itemHeight 沿用类别行高 32,spacing=0,anchorY 随所在类别行注入 * ROOM_OPTION_GROUP_GAP 40 同类别下两个选项组之间比组内选项多留的间距 * ROOM_OPTION_MAX_PER_ROW 4 + ROOM_OPTION_OVERFLOW_GRID —— 选项超 4 个才折行; * 二七王每组最多 2 项,不会触发 * * 元素说明: * - 每个选项 = 选择框(图片精灵)+ 文字精灵,成对出现,共 8 组。 * - 选择框帧号 = (useCheckbox ? 3 : 1) + (selected ? 1 : 0), * useCheckbox = (类型为 checkbox 或 radioOptional)。三个单选组用帧1–2,附加规则组用帧3–4。 * - 选中态文字变橙: EQW_Layout.TEXT_STYLE.ROOM_OPT 的 normal / selected 两态。 * - 【本文件不认识玩法名】渲染由 EQW_RoomOptions(Layout_CreateRoom.js)这份配置数据驱动: * 配置里每个选项自己声明用哪个精灵键(box / text)、type(决定帧号)、bit/value * (决定 roomtype 拼串)。渲染器一律【按键名取精灵,不得按下标拼字符串】—— * 组的 key 是 'rules'、精灵却叫 ROOM_BOX_RULE_1,本来就拼不出来。 * 加一个选项 = 配置里加一条,不改渲染逻辑(OCP + 配置优先)。 * - 【roomtype 拼串只在一处实现】遍历配置写 item.value 到 item.bit,不得在别处按下标硬拼 * (与服务端 class.config.js parse() 对称的 SSOT 要求)。二七王 5 位: * 位0 局数(6局/12局) 位1 扣卡(房主/AA) 位2 傍王 位3 爬坡 位4 查牌(可查/不查) * 缺省值 roomtype = "00000"。 * - 【房卡消耗联动】随「局数 × 扣卡」两组实时变化,取自 EQW_RoomOptions.cardCost 配置表, * 不硬编码在 UI 代码里:房主扣卡 6局=房主2张 / 12局=房主4张;AA 6局=每人1张 / 12局=每人2张。 * - 【参考图里不要照抄的部分】「人数」行(二七王固定 3 人,不给玩家选)与「霸王」行。 * - 交互:点平台约定的 25 号精灵 → 拼 roomtype → Net.Send_create_room(...)。 * * 资源说明: * - 选择框: EQW_Images.ROOM_OPT_BOX (681), 4 帧 (2×2), 22×22 * 帧1=单选·未选中(灰空心环) 帧2=单选·已选中(橙实心环) * 帧3=复选·未选中(浅绿空方块) 帧4=复选·已选中 * - 类别标题: EQW_Images.ROOM_CAT_TITLE (682), 3 帧, 60×24, 帧1=牌局 帧2=模式 帧3=规则 * - 选项行底: EQW_Images.ROW_ROOM_OPT (683), 1 帧, 尺寸待定——参考图为无底透明,可选, * 当前本 View 未使用该资源(没有对应精灵) * * 精灵ID分配: 2050–2069(群组 250 号段 2050–2099),共 20 个,全部预置 * —— 选项集固定(3 类别 / 4 选项组 / 8 选项),数量小,不用精灵复制(§5.6a 判据表) * * @see docs_dev/二七王-UI资源与精灵清单.md §1.1 建房·房间设置 / §5.8 / §6.9b * @see docs_dev/uiref/创建房间选项的UI参考内容根据实际二七王游戏改动.png(样式范式,非内容) */ //建房规则选项区:挂在平台创建房间界面所在图层(清单 §5.8,群组 250) EQW_Sprites.CreateRoomView = { Layer: EQW_Layers.PLATFORM_CREATE_ROOM, //27 CreateRoom: { id: EQW_Groups.CREATE_ROOM, //250 //—— 3 个类别标题,资源 EQW_Images.ROOM_CAT_TITLE,帧1=牌局 帧2=模式 帧3=规则 —— ROOM_CAT_TITLE_1: 2050, ROOM_CAT_TITLE_2: 2051, ROOM_CAT_TITLE_3: 2052, //—— 局数选择框(6局/12局),资源 EQW_Images.ROOM_OPT_BOX,单选帧1–2 —— ROOM_BOX_ASET_1: 2053, ROOM_BOX_ASET_2: 2054, ROOM_TEXT_ASET_1: 2055, //文字:局数选项文字 ROOM_TEXT_ASET_2: 2056, //文字:局数选项文字 //—— 扣卡选择框(房主/AA),资源 EQW_Images.ROOM_OPT_BOX,单选帧1–2 —— ROOM_BOX_CARD_1: 2057, ROOM_BOX_CARD_2: 2058, ROOM_TEXT_CARD_1: 2059, //文字:扣卡选项文字 ROOM_TEXT_CARD_2: 2060, //文字:扣卡选项文字 ROOM_TEXT_CARD_COST: 2061, //文字:房卡消耗附注(灰色小字,随局数×扣卡联动) //—— 查牌选择框(可查/不查),资源 EQW_Images.ROOM_OPT_BOX,单选帧1–2 —— ROOM_BOX_PEEK_1: 2062, ROOM_BOX_PEEK_2: 2063, ROOM_TEXT_PEEK_1: 2064, //文字:查牌选项文字 ROOM_TEXT_PEEK_2: 2065, //文字:查牌选项文字 //—— 附加规则选择框(傍王/爬坡),资源 EQW_Images.ROOM_OPT_BOX,复选帧3–4 —— ROOM_BOX_RULE_1: 2066, ROOM_BOX_RULE_2: 2067, ROOM_TEXT_RULE_1: 2068, //文字:附加规则选项文字 ROOM_TEXT_RULE_2: 2069 //文字:附加规则选项文字 } };