feat: 初始化西安旅行记忆互动地图游戏项目
完成项目基础搭建:配置 Vite 开发构建环境,集成 Phaser 3 与虚拟摇杆插件,实现地图漫游、景点触发、拍立得弹窗、进度存档等核心功能,添加占位资源与批量生成脚本,配置项目元数据与忽略规则。
This commit is contained in:
commit
a404e42ca8
42 files changed
+5489
No files matched your search
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* @fileoverview DOM UI 层管理器(dom-layer)。
|
||||
*
|
||||
* 文件用途:
|
||||
* - 挂载并协调全部 DOM UI 组件(封面 / 拍立得弹窗 / HUD / 纪念页 / 竖屏提示)。
|
||||
*
|
||||
* 核心职责:
|
||||
* 1. 组件生命周期:mount 后由各组件自行监听 eventBus 事件驱动显示;
|
||||
* 2. 维护 inputReleased 标志:封面"开始旅行"放行输入(MapScene 可能晚于
|
||||
* 事件创建,需在 create 时回查该标志,避免输入锁死);
|
||||
* 3. 组件互斥由组件自身在 show/hide 时控制,层管理器只负责装配。
|
||||
*
|
||||
* 主要流程:
|
||||
* main.js 调用 mountUi() → 各组件挂载到 #ui 容器 → TitleOverlay 首屏
|
||||
* 显示 → 用户交互 → 各组件 show/hide 并通过 eventBus 通知 Phaser 层。
|
||||
*/
|
||||
|
||||
import { eventBus } from '../event-bus.js';
|
||||
import * as gameState from '../game-state.js';
|
||||
import { TitleOverlay } from './TitleOverlay.js';
|
||||
import { PhotoModal } from './PhotoModal.js';
|
||||
import { Hud } from './Hud.js';
|
||||
import { CompleteOverlay } from './CompleteOverlay.js';
|
||||
import { initRotateHint } from './rotate-hint.js';
|
||||
|
||||
/**
|
||||
* 游戏输入是否已被 UI 放行(封面页"开始旅行"后为 true)。
|
||||
*
|
||||
* @type {boolean}
|
||||
*/
|
||||
export let inputReleased = false;
|
||||
|
||||
/**
|
||||
* 放行游戏输入并广播 ui:closed(MapScene create 晚于事件时回查本标志)。
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
export function releaseInput() {
|
||||
inputReleased = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 装配 DOM UI 层:创建根节点并挂载全部组件。
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
export function mountUi() {
|
||||
const root = document.getElementById('ui');
|
||||
|
||||
// 事件桥上暴露放行动作,供封面页调用。
|
||||
eventBus.on('ui:release-input', () => releaseInput());
|
||||
|
||||
const hud = new Hud(root);
|
||||
const title = new TitleOverlay(root);
|
||||
const photoModal = new PhotoModal(root);
|
||||
const complete = new CompleteOverlay(root);
|
||||
|
||||
// 组件装配后初始化:封面首屏显示(覆盖资源加载过程),其余待事件驱动。
|
||||
title.show({
|
||||
hasSave: gameState.hasSave(),
|
||||
snapshot: gameState.loadProgress(),
|
||||
});
|
||||
hud.init();
|
||||
|
||||
initRotateHint();
|
||||
}
|
||||
Reference in new issue
Block a user