/** * ============================================================================ * GameView_Sprites.template.js - 精灵 ID 定义规范 * ============================================================================ * * 使用方式: * 将此文件复制到游戏项目中,按实际精灵 ID 填写。 * 建议按界面拆分为多个文件,例如: * RoomView_Sprites.js (房间等待界面) * GameView_Sprites.js (游戏主界面) * PopupView_Sprites.js (弹窗/结算界面) * 所有 ID 值必须与 gameabc 编辑器中实际配置的精灵/图层/群组 ID 完全一致, * 不可自行编造数字。 * * ============================================================================ * ID 分配规范 * ============================================================================ * * 精灵 ID:子游戏使用 1001+(框架保留 1–1000) * 图层 ID:普通图层 101–200,弹窗图层 301+(框架保留 1–100) * 群组 ID:子游戏使用 201+(框架保留 1–200) * * ============================================================================ * 文件结构规范 * ============================================================================ * * 顶层变量对应一个"界面",每个界面包含: * * VAR_NAME.VIEW_NAME = { * LAYER: <图层ID>, // 必填,该界面挂载的图层 * * SOME_GROUP: { * GROUP_ID: <群组ID>, // 必填,该功能区的群组 * SPRITES: { * SPRITE_KEY: <精灵ID>, // 每个精灵 * ... * } * }, * * // 也可不用群组,直接列精灵 * SIMPLE_SPRITE: <精灵ID> * }; * * ============================================================================ * 每个精灵条目必须包含的注释字段 * ============================================================================ * * 类型:图片精灵 / 文字精灵 / 容器精灵 / 热区精灵 * 用途:一句话说明该精灵在游戏中的作用 * 资源:引用的 ImageResources 键名(图片精灵必填) * 帧说明:初始帧及切换时机(如有多帧) * * ============================================================================ * 精灵类型说明 * ============================================================================ * * 图片精灵:显示图片/帧动画,用 SpriteManager.setFrame() 切换画面 * 文字精灵:显示动态文字,用 SpriteManager.setText() 修改内容 * 容器精灵:作为 SpriteCopyUtils 的父容器,本身不显示内容 * 热区精灵:仅用于点击检测,透明不显示 * * ============================================================================ * 注意事项 * ============================================================================ * * - 玩家信息 UI(头像/昵称/分数/准备标识/房主标识)由平台框架提供, * 子游戏无需也不应在此重复定义 * - GlobalUI(加载界面、消息弹窗、确认对话框)由框架提供, * 子游戏弹窗从 Layer 302+ 开始定义 * * @see ImageResources.template.js 图片资源 ID 定义规范 * @see SoundResources.template.js 音效资源 ID 定义规范 */ 'use strict'; // ============================================================================ // 房间界面精灵定义 (Layer xxx) // ============================================================================ // /** // * RoomView_Sprites - 房间等待界面精灵定义 // * 图层:Layer <在编辑器查到的图层ID> // * 用途:显示等待玩家加入、规则配置、准备/开始状态 // */ // var RoomView_Sprites = {}; // // RoomView_Sprites.ROOM_VIEW = { // LAYER: <图层ID>, // // // 规则配置群组 // // 用途:创建房间时的玩法选项(圈数、人数、特殊规则等) // ROOM_CONFIG_GROUP: { // GROUP_ID: <群组ID>, // SPRITES: { // // 图片精灵:第1行标题图片,资源=ImageResources.XXX,帧=1 // ROW1_TITLE: <精灵ID>, // // // 图片精灵:第1行选项1图标,资源=ImageResources.XXX,帧1=未选中 帧2=已选中 // ROW1_OPTION1: <精灵ID>, // // // 文字精灵:第1行选项1文字说明 // ROW1_OPTION1_TEXT: <精灵ID>, // // // ... 按实际选项行数继续定义 // } // } // }; // ============================================================================ // 游戏主界面精灵定义 (Layer xxx) // ============================================================================ // /** // * GameView_Sprites - 游戏主界面精灵定义 // */ // var GameView_Sprites = {}; // // /** // * 牌桌主体 // * 图层:Layer <在编辑器查到的图层ID> // */ // GameView_Sprites.GAME_VIEW = { // LAYER: <图层ID>, // // // 中央信息群组 // // 用途:牌桌中央区域,方向指示器、剩余牌数、倒计时等 // CENTER_INFO_GROUP: { // GROUP_ID: <群组ID>, // SPRITES: { // // 图片精灵:方向面板背景,资源=ImageResources.XXX,4帧(帧1–4对应庄家方向) // DIRECTION_PANEL_BG: <精灵ID>, // // // 图片精灵:倒计时数字,资源=ImageResources.XXX,10帧(帧1–10对应数字0–9) // COUNTDOWN_NUMBER: <精灵ID>, // // // 图片精灵:剩余牌数数字,资源=ImageResources.XXX,10帧(帧1–10对应数字0–9) // REMAIN_COUNT: <精灵ID> // } // }, // // // 玩家1手牌群组(下方/自己) // // 用途:显示自己手牌,支持点击选牌出牌 // PLAYER1_HAND_GROUP: { // GROUP_ID: <群组ID>, // SPRITES: { // // 图片精灵×13:手牌1–13,资源=ImageResources.CARD_FACE,帧=当前牌值对应帧 // HAND_CARD_1: <精灵ID>, // // ... HAND_CARD_2 至 HAND_CARD_13 // HAND_CARD_13: <精灵ID>, // // // 图片精灵:摸牌(最右端,与手牌略有间距) // DRAW_CARD: <精灵ID> // } // }, // // // 玩家2手牌群组(右方) // // 用途:显示右方玩家牌背(侧面透视角度) // PLAYER2_HAND_GROUP: { // GROUP_ID: <群组ID>, // SPRITES: { // HAND_CARD_1: <精灵ID>, // // ... // DRAW_CARD: <精灵ID> // } // } // // // 玩家3(上方)、玩家4(左方)结构同上... // }; // // /** // * 游戏操作按钮 // * 图层:Layer <在编辑器查到的图层ID> // * 用途:玩家可操作时显示的吃/碰/杠/胡/过/听按钮 // */ // GameView_Sprites.GAME_ACTIONS_UI = { // LAYER: <图层ID>, // // ACTION_BUTTONS_GROUP: { // GROUP_ID: <群组ID>, // SPRITES: { // // 图片精灵:吃牌按钮,资源=ImageResources.BTN_CHI,1帧 // BTN_CHI: <精灵ID>, // BTN_PONG: <精灵ID>, // BTN_KONG: <精灵ID>, // BTN_HU: <精灵ID>, // BTN_PASS: <精灵ID>, // BTN_TING: <精灵ID>, // // // 图片精灵:操作文字弹出动画,资源=ImageResources.OPERATION_EFFECT_XXX // ACTION_EFFECT_CHI: <精灵ID>, // ACTION_EFFECT_PONG: <精灵ID>, // ACTION_EFFECT_KONG: <精灵ID>, // ACTION_EFFECT_HU: <精灵ID> // } // } // }; // ============================================================================ // 弹窗界面精灵定义 (Layer 301+) // ============================================================================ // 子游戏自定义弹窗从 Layer 302+ 开始定义 // Layer 301 建议预留给最高优先级的全局弹窗(如断线重连提示)