59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
// main.js — 游戏入口
|
|
|
|
let engine = null;
|
|
let gestures = null;
|
|
|
|
async function main() {
|
|
TTS.init();
|
|
|
|
// 初始化音频(必须在用户手势后)
|
|
await Snd.init();
|
|
|
|
// 请求屏幕常亮
|
|
try {
|
|
if ('wakeLock' in navigator) {
|
|
window._wakeLock = await navigator.wakeLock.request('screen');
|
|
}
|
|
} catch (_) {}
|
|
|
|
// 绑定手势
|
|
const gameEl = document.getElementById('game');
|
|
gestures = new GestureDetector(gameEl);
|
|
|
|
// 创建并启动引擎
|
|
engine = new GameEngine();
|
|
engine.init(gestures);
|
|
await engine.start();
|
|
|
|
if (DEV) {
|
|
document.getElementById('dbg').style.display = 'block';
|
|
document.title = '林夏 [DEV]';
|
|
}
|
|
}
|
|
|
|
// 防止双重启动
|
|
let _started = false;
|
|
function startGame(el) {
|
|
if (_started) return;
|
|
_started = true;
|
|
el.style.transition = 'opacity 0.8s';
|
|
el.style.opacity = '0';
|
|
setTimeout(() => { el.style.display = 'none'; }, 800);
|
|
main();
|
|
}
|
|
|
|
// 触摸启动(手机)
|
|
document.getElementById('start').addEventListener('touchend', function(e) {
|
|
e.preventDefault();
|
|
startGame(this);
|
|
}, { once: true });
|
|
|
|
// 鼠标点击(电脑调试)
|
|
document.getElementById('start').addEventListener('click', function() {
|
|
startGame(this);
|
|
}, { once: true });
|
|
|
|
// 防止页面滚动/缩放
|
|
document.addEventListener('touchmove', e => e.preventDefault(), { passive: false });
|
|
document.addEventListener('gesturestart', e => e.preventDefault());
|