Files
erqiwang_youle/client/js/01_SubGame/codes/config/Sprites_CreateRoom.js
T
joywayerandClaude Opus 5 b11a3f17a9 二七王:Sprites_CreateRoom.js 补 CreateRoomView 的布局说明注释
分区标题标出 Layer(平台 27)与 Group 250,正文含 ASCII 版式图:类别竖排 ×
选项槽横排的两层嵌套,标出三个类别标题、8 组「选择框 + 文字」与房卡附注各自
对应的精灵常量与 attach 目标;另附帧号公式、roomtype 五位映射、房卡联动表、
资源说明与 @see 出处,并注明参考图是别的游戏、只借版式不借内容。

纯注释改动,数据部分一字未动(精灵总数仍 378、布局节点仍 61)。

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

133 lines
9.4 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_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 //文字:附加规则选项文字
}
};