HumanBreak/public/main.js

822 lines
26 KiB
JavaScript
Raw Normal View History

2023-02-28 19:39:34 +08:00
///<reference path="../src/types/core.d.ts" />
2022-11-14 17:11:23 +08:00
function main() {
2022-11-13 18:02:05 +08:00
//------------------------ 用户修改内容 ------------------------//
2023-02-28 19:39:34 +08:00
this.version = '1.0.0'; // 游戏版本号如果更改了游戏内容建议修改此version以免造成缓存问题。
2022-11-13 18:02:05 +08:00
this.useCompress = false; // 是否使用压缩文件
2023-04-16 17:30:22 +08:00
this.pluginUseCompress = false;
2022-11-13 18:02:05 +08:00
// 当你即将发布你的塔时请使用“JS代码压缩工具”将所有js代码进行压缩然后将这里的useCompress改为true。
// 请注意只有useCompress是false时才会读取floors目录下的文件为true时会直接读取libs目录下的floors.min.js文件。
// 如果要进行剧本的修改请务必将其改成false。
this.bgmRemote = false; // 是否采用远程BGM
2022-11-14 17:11:23 +08:00
this.bgmRemoteRoot = 'https://h5mota.com/music/'; // 远程BGM的根目录
2022-11-13 18:02:05 +08:00
this.isCompetition = false; // 是否是比赛模式
this.savePages = 1000; // 存档页数每页可存5个默认为1000页5000个存档
this.criticalUseLoop = 1; // 循环临界的分界
//------------------------ 用户修改内容 END ------------------------//
this.dom = {
2022-11-14 17:11:23 +08:00
body: document.body,
gameGroup: document.getElementById('gameGroup'),
mainTips: document.getElementById('mainTips'),
musicBtn: document.getElementById('musicBtn'),
enlargeBtn: document.createElement('img'),
startPanel: document.getElementById('startPanel'),
startTop: document.getElementById('startTop'),
startTopProgressBar: document.getElementById('startTopProgressBar'),
startTopProgress: document.getElementById('startTopProgress'),
startTopLoadTips: document.getElementById('startTopLoadTips'),
floorMsgGroup: document.getElementById('floorMsgGroup'),
logoLabel: document.getElementById('logoLabel'),
versionLabel: document.getElementById('versionLabel'),
floorNameLabel: document.getElementById('floorNameLabel'),
statusBar: document.getElementById('statusBar'),
status: document.getElementsByClassName('status'),
toolBar: document.getElementById('toolBar'),
tools: document.getElementsByClassName('tools'),
gameCanvas: document.getElementsByClassName('gameCanvas'),
gif: document.getElementById('gif'),
gif2: document.getElementById('gif2'),
gameDraw: document.getElementById('gameDraw'),
startButtons: document.getElementById('startButtons'),
playGame: document.getElementById('playGame'),
loadGame: document.getElementById('loadGame'),
replayGame: document.getElementById('replayGame'),
levelChooseButtons: document.getElementById('levelChooseButtons'),
data: document.getElementById('data'),
statusLabels: document.getElementsByClassName('statusLabel'),
statusTexts: document.getElementsByClassName('statusText'),
floorCol: document.getElementById('floorCol'),
nameCol: document.getElementById('nameCol'),
lvCol: document.getElementById('lvCol'),
hpmaxCol: document.getElementById('hpmaxCol'),
hpCol: document.getElementById('hpCol'),
manaCol: document.getElementById('manaCol'),
atkCol: document.getElementById('atkCol'),
defCol: document.getElementById('defCol'),
mdefCol: document.getElementById('mdefCol'),
moneyCol: document.getElementById('moneyCol'),
expCol: document.getElementById('expCol'),
upCol: document.getElementById('upCol'),
keyCol: document.getElementById('keyCol'),
pzfCol: document.getElementById('pzfCol'),
debuffCol: document.getElementById('debuffCol'),
skillCol: document.getElementById('skillCol'),
hard: document.getElementById('hard'),
statusCanvas: document.getElementById('statusCanvas'),
statusCanvasCtx: document
.getElementById('statusCanvas')
.getContext('2d'),
inputDiv: document.getElementById('inputDiv'),
inputMessage: document.getElementById('inputMessage'),
inputBox: document.getElementById('inputBox'),
inputYes: document.getElementById('inputYes'),
inputNo: document.getElementById('inputNo'),
next: document.getElementById('next')
2022-11-13 18:02:05 +08:00
};
this.mode = 'play';
this.loadList = [
2022-11-14 17:11:23 +08:00
'loader',
'control',
'utils',
'items',
'icons',
'maps',
'enemys',
'events',
'actions',
'data',
'ui',
'extensions',
'core'
2022-11-13 18:02:05 +08:00
];
this.pureData = [
2022-11-14 17:11:23 +08:00
'data',
'enemys',
'icons',
'maps',
'items',
'functions',
'events',
'plugins'
2022-11-13 18:02:05 +08:00
];
this.materials = [
2022-11-14 17:11:23 +08:00
'animates',
'enemys',
'items',
'npcs',
'terrains',
'enemy48',
'npc48',
'icons'
2022-11-13 18:02:05 +08:00
];
this.statusBar = {
2022-11-14 17:11:23 +08:00
image: {
floor: document.getElementById('img-floor'),
name: document.getElementById('img-name'),
lv: document.getElementById('img-lv'),
hpmax: document.getElementById('img-hpmax'),
hp: document.getElementById('img-hp'),
mana: document.getElementById('img-mana'),
atk: document.getElementById('img-atk'),
def: document.getElementById('img-def'),
mdef: document.getElementById('img-mdef'),
money: document.getElementById('img-money'),
exp: document.getElementById('img-exp'),
up: document.getElementById('img-up'),
skill: document.getElementById('img-skill'),
book: document.getElementById('img-book'),
fly: document.getElementById('img-fly'),
toolbox: document.getElementById('img-toolbox'),
keyboard: document.getElementById('img-keyboard'),
shop: document.getElementById('img-shop'),
save: document.getElementById('img-save'),
load: document.getElementById('img-load'),
settings: document.getElementById('img-settings'),
btn1: document.getElementById('img-btn1'),
btn2: document.getElementById('img-btn2'),
btn3: document.getElementById('img-btn3'),
btn4: document.getElementById('img-btn4'),
btn5: document.getElementById('img-btn5'),
btn6: document.getElementById('img-btn6'),
btn7: document.getElementById('img-btn7'),
btn8: document.getElementById('img-btn8')
2022-11-13 18:02:05 +08:00
},
2022-11-14 17:11:23 +08:00
icons: {
floor: 0,
name: null,
lv: 1,
hpmax: 2,
hp: 3,
atk: 4,
def: 5,
mdef: 6,
money: 7,
exp: 8,
up: 9,
book: 10,
fly: 11,
toolbox: 12,
keyboard: 13,
shop: 14,
save: 15,
load: 16,
settings: 17,
play: 18,
pause: 19,
stop: 20,
speedDown: 21,
speedUp: 22,
rewind: 23,
equipbox: 24,
mana: 25,
skill: 26,
btn1: 27,
btn2: 28,
btn3: 29,
btn4: 30,
btn5: 31,
btn6: 32,
btn7: 33,
btn8: 34
2022-11-13 18:02:05 +08:00
},
2022-11-14 17:11:23 +08:00
floor: document.getElementById('floor'),
name: document.getElementById('name'),
lv: document.getElementById('lv'),
hpmax: document.getElementById('hpmax'),
hp: document.getElementById('hp'),
mana: document.getElementById('mana'),
atk: document.getElementById('atk'),
def: document.getElementById('def'),
mdef: document.getElementById('mdef'),
money: document.getElementById('money'),
exp: document.getElementById('exp'),
up: document.getElementById('up'),
skill: document.getElementById('skill'),
yellowKey: document.getElementById('yellowKey'),
blueKey: document.getElementById('blueKey'),
redKey: document.getElementById('redKey'),
greenKey: document.getElementById('greenKey'),
poison: document.getElementById('poison'),
weak: document.getElementById('weak'),
curse: document.getElementById('curse'),
pickaxe: document.getElementById('pickaxe'),
bomb: document.getElementById('bomb'),
fly: document.getElementById('fly'),
hard: document.getElementById('hard')
};
this.floors = {};
2022-11-13 18:02:05 +08:00
this.canvas = {};
2022-11-14 17:11:23 +08:00
this.__VERSION__ = '2.10.0';
2022-11-13 18:02:05 +08:00
this.__VERSION_CODE__ = 510;
}
2023-02-28 18:21:29 +08:00
// >>>> body end
2022-11-13 18:02:05 +08:00
2023-04-16 17:30:22 +08:00
main.prototype.loadScript = async function (src, module) {
2023-02-28 19:39:34 +08:00
const script = document.createElement('script');
script.src = src;
2023-04-16 17:30:22 +08:00
if (module) script.type = 'module';
2023-02-28 19:39:34 +08:00
document.body.appendChild(script);
2023-04-21 11:34:08 +08:00
return new Promise((res, rej) => {
2023-02-28 19:39:34 +08:00
script.addEventListener('load', res);
2023-04-21 11:34:08 +08:00
script.addEventListener('error', rej);
2023-02-28 19:39:34 +08:00
});
};
main.prototype.init = async function (mode, callback) {
2023-01-11 09:45:18 +08:00
try {
2023-04-20 19:49:38 +08:00
const a = {};
const b = {};
2023-01-11 09:45:18 +08:00
new Proxy(a, b);
2023-02-28 18:21:29 +08:00
new Promise(res => res());
2023-02-28 19:39:34 +08:00
eval('`${123}`');
} catch {
2023-01-11 09:45:18 +08:00
alert('浏览器版本过低,无法游玩本塔!');
2023-03-04 20:21:12 +08:00
alert('建议使用Edge浏览器或Chrome浏览器游玩');
2023-01-11 09:45:18 +08:00
return;
}
2022-11-13 18:02:05 +08:00
for (var i = 0; i < main.dom.gameCanvas.length; i++) {
2022-11-14 17:11:23 +08:00
main.canvas[main.dom.gameCanvas[i].id] =
main.dom.gameCanvas[i].getContext('2d');
2022-11-13 18:02:05 +08:00
}
main.mode = mode;
2023-02-28 19:39:34 +08:00
// 加载全塔属性代码
if (main.useCompress) {
await main.loadScript(`project/project.min.js?v=${main.version}`);
} else {
await Promise.all(
main.pureData.map(v =>
main.loadScript(`project/${v}.js?v=${main.version}`)
)
);
}
const mainData = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.main;
Object.assign(main, mainData);
2023-02-28 18:21:29 +08:00
2023-02-28 19:39:34 +08:00
main.importFonts(main.fonts);
2022-11-13 18:02:05 +08:00
2023-02-28 19:39:34 +08:00
// 加载核心js代码
if (main.useCompress) {
await main.loadScript(`libs/libs.min.js?v=${main.version}`);
} else {
await Promise.all(
main.loadList.map(v =>
main.loadScript(`libs/${v}.js?v=${main.version}`)
)
);
}
2022-11-13 18:02:05 +08:00
2023-02-28 19:39:34 +08:00
for (const name of main.loadList) {
if (name === 'core') continue;
core[name] = new window[name]();
}
2022-11-13 18:02:05 +08:00
2023-02-28 19:39:34 +08:00
// 加载楼层
main.setMainTipsText('正在加载楼层文件...');
if (main.useCompress) {
await main.loadScript(`project/floors.min.js?v=${main.version}`);
main.dom.mainTips.style.display = 'none';
} else {
2023-04-21 11:34:08 +08:00
await new Promise(res => {
main.loadScript(
2023-02-28 19:39:34 +08:00
`/all/__all_floors__.js?v=${
main.version
}&id=${main.floorIds.join(',')}`
2023-04-21 11:34:08 +08:00
).then(
() => {
main.dom.mainTips.style.display = 'none';
main.supportBunch = true;
res();
},
async () => {
await Promise.all(
mainData.floorIds.map(v =>
main.loadScript(`project/floors/${v}.js`)
)
);
res();
}
2023-02-28 19:39:34 +08:00
);
2023-04-21 11:34:08 +08:00
});
2023-02-28 19:39:34 +08:00
}
2022-11-13 18:02:05 +08:00
2023-02-28 19:39:34 +08:00
// 初始化core
const coreData = {};
[
'dom',
'statusBar',
'canvas',
'images',
'tilesets',
'materials',
'animates',
'bgms',
'sounds',
'floorIds',
'floors',
'floorPartitions'
].forEach(function (t) {
coreData[t] = main[t];
2022-11-13 18:02:05 +08:00
});
2023-02-28 19:39:34 +08:00
core.init(coreData, callback);
core.resize();
2023-02-28 20:39:39 +08:00
main.core = core;
2023-02-28 19:39:34 +08:00
// 自动放缩最大化
const auto = core.getLocalStorage('autoScale');
if (auto == null) {
core.setLocalStorage('autoScale', true);
2022-11-13 18:02:05 +08:00
}
2023-02-28 19:39:34 +08:00
if (auto && !core.domStyle.isVertical) {
try {
core.plugin.utils.maxGameScale();
if (!core.getLocalStorage('fullscreen', false)) {
requestAnimationFrame(() => {
var style = getComputedStyle(main.dom.gameGroup);
var height = parseFloat(style.height);
if (height > window.innerHeight * 0.95) {
core.control.setDisplayScale(-1);
if (!core.isPlaying() && core.flags.enableHDCanvas) {
core.domStyle.ratio = Math.max(
window.devicePixelRatio || 1,
core.domStyle.scale
);
core.resize();
2022-11-14 17:11:23 +08:00
}
2023-02-28 19:39:34 +08:00
}
});
}
} catch {}
}
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 加载过程提示 //////
main.prototype.setMainTipsText = function (text) {
main.dom.mainTips.innerHTML = text;
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
main.prototype.createOnChoiceAnimation = function () {
2022-11-14 17:11:23 +08:00
var borderColor =
main.dom.startButtonGroup.style.caretColor || 'rgb(255, 215, 0)';
2022-11-13 18:02:05 +08:00
// get rgb value
2022-11-14 17:11:23 +08:00
var rgb =
/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*\d+\s*)?\)$/.exec(
borderColor
);
2022-11-13 18:02:05 +08:00
if (rgb != null) {
2022-11-14 17:11:23 +08:00
var value = rgb[1] + ', ' + rgb[2] + ', ' + rgb[3];
var style = document.createElement('style');
2022-11-13 18:02:05 +08:00
style.type = 'text/css';
2022-11-14 17:11:23 +08:00
var keyFrames =
'onChoice { ' +
'0% { border-color: rgba(' +
value +
', 0.9); } ' +
'50% { border-color: rgba(' +
value +
', 0.3); } ' +
'100% { border-color: rgba(' +
value +
', 0.9); } ' +
'}';
style.innerHTML =
'@-webkit-keyframes ' + keyFrames + ' @keyframes ' + keyFrames;
2022-11-13 18:02:05 +08:00
document.body.appendChild(style);
}
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 创建字体 //////
main.prototype.importFonts = function (fonts) {
if (!(fonts instanceof Array) || fonts.length == 0) return;
var style = document.createElement('style');
style.type = 'text/css';
var html = '';
fonts.forEach(function (font) {
2022-11-14 17:11:23 +08:00
html +=
'@font-face { font-family: "' +
font +
'"; src: url("project/fonts/' +
font +
'.ttf") format("truetype"); }';
2022-11-13 18:02:05 +08:00
});
style.innerHTML = html;
document.body.appendChild(style);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
main.prototype.listen = function () {
////// 窗口大小变化时 //////
window.onresize = function () {
try {
2023-02-28 19:39:34 +08:00
core.resize();
2022-11-14 17:11:23 +08:00
} catch (ee) {
console.error(ee);
}
};
2022-11-13 18:02:05 +08:00
////// 在界面上按下某按键时 //////
main.dom.body.onkeydown = function (e) {
if (main.editorOpened) return;
try {
2023-02-23 23:10:57 +08:00
if (e.keyCode === 27) e.preventDefault();
2022-11-13 18:02:05 +08:00
if (main.dom.inputDiv.style.display == 'block') return;
2023-02-28 19:39:34 +08:00
if (core && (core.isPlaying() || core.status.lockControl))
core.onkeyDown(e);
2022-11-14 17:11:23 +08:00
} catch (ee) {
console.error(ee);
}
};
2022-11-13 18:02:05 +08:00
////// 在界面上放开某按键时 //////
main.dom.body.onkeyup = function (e) {
if (main.editorOpened) return;
try {
2022-11-14 17:11:23 +08:00
if (
main.dom.startPanel.style.display == 'block' &&
(main.dom.startButtons.style.display == 'block' ||
main.dom.levelChooseButtons.style.display == 'block')
) {
if (e.keyCode == 38 || e.keyCode == 33)
// up/pgup
2022-11-13 18:02:05 +08:00
main.selectButton((main.selectedButton || 0) - 1);
2022-11-14 17:11:23 +08:00
else if (e.keyCode == 40 || e.keyCode == 34)
// down/pgdn
2022-11-13 18:02:05 +08:00
main.selectButton((main.selectedButton || 0) + 1);
2022-11-14 17:11:23 +08:00
else if (e.keyCode == 67 || e.keyCode == 13 || e.keyCode == 32)
// C/Enter/Space
2022-11-13 18:02:05 +08:00
main.selectButton(main.selectedButton);
2022-11-14 17:11:23 +08:00
else if (
e.keyCode == 27 &&
main.dom.levelChooseButtons.style.display == 'block'
) {
// ESC
2023-02-28 19:39:34 +08:00
core.showStartAnimate(true);
2023-02-23 23:10:57 +08:00
e.preventDefault();
2022-11-13 18:02:05 +08:00
}
e.stopPropagation();
return;
}
if (main.dom.inputDiv.style.display == 'block') {
if (e.keyCode == 13) {
setTimeout(function () {
main.dom.inputYes.click();
}, 50);
2022-11-14 17:11:23 +08:00
} else if (e.keyCode == 27) {
2022-11-13 18:02:05 +08:00
setTimeout(function () {
main.dom.inputNo.click();
}, 50);
}
return;
}
2022-11-14 17:11:23 +08:00
if (
2023-02-28 19:39:34 +08:00
core &&
core.isPlaying &&
core.status &&
(core.isPlaying() || core.status.lockControl)
2022-11-14 17:11:23 +08:00
)
2023-02-28 19:39:34 +08:00
core.onkeyUp(e);
2022-11-14 17:11:23 +08:00
} catch (ee) {
console.error(ee);
}
2022-11-13 18:02:05 +08:00
};
////// 开始选择时 //////
main.dom.body.onselectstart = function () {
return false;
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 鼠标按下时 //////
main.dom.data.onmousedown = function (e) {
try {
e.stopPropagation();
2023-02-28 19:39:34 +08:00
var loc = core.actions._getClickLoc(e.clientX, e.clientY);
2022-11-13 18:02:05 +08:00
if (loc == null) return;
2023-02-28 19:39:34 +08:00
core.ondown(loc);
2022-11-14 17:11:23 +08:00
} catch (ee) {
console.error(ee);
}
};
2022-11-13 18:02:05 +08:00
////// 鼠标移动时 //////
main.dom.data.onmousemove = function (e) {
try {
2023-02-28 19:39:34 +08:00
var loc = core.actions._getClickLoc(e.clientX, e.clientY);
2022-11-13 18:02:05 +08:00
if (loc == null) return;
2023-02-28 19:39:34 +08:00
core.onmove(loc);
2022-11-14 17:11:23 +08:00
} catch (ee) {
console.error(ee);
}
};
2022-11-13 18:02:05 +08:00
////// 鼠标放开时 //////
main.dom.data.onmouseup = function (e) {
try {
2023-02-28 19:39:34 +08:00
var loc = core.actions._getClickLoc(e.clientX, e.clientY);
2022-11-13 18:02:05 +08:00
if (loc == null) return;
2023-02-28 19:39:34 +08:00
core.onup(loc);
2022-11-14 17:11:23 +08:00
} catch (ee) {
console.error(ee);
}
};
2022-11-13 18:02:05 +08:00
////// 鼠标滑轮滚动时 //////
main.dom.data.onmousewheel = function (e) {
try {
2023-02-28 19:39:34 +08:00
if (e.wheelDelta) core.onmousewheel(Math.sign(e.wheelDelta));
else if (e.detail) core.onmousewheel(Math.sign(e.detail));
2022-11-14 17:11:23 +08:00
} catch (ee) {
console.error(ee);
}
};
2022-11-13 18:02:05 +08:00
////// 手指在触摸屏开始触摸时 //////
main.dom.data.ontouchstart = function (e) {
try {
e.preventDefault();
2023-02-28 19:39:34 +08:00
var loc = core.actions._getClickLoc(
2022-11-14 17:11:23 +08:00
e.targetTouches[0].clientX,
e.targetTouches[0].clientY
);
2022-11-13 18:02:05 +08:00
if (loc == null) return;
main.lastTouchLoc = loc;
2023-02-28 19:39:34 +08:00
core.ondown(loc);
2022-11-14 17:11:23 +08:00
} catch (ee) {
console.error(ee);
}
};
2022-11-13 18:02:05 +08:00
////// 手指在触摸屏上移动时 //////
main.dom.data.ontouchmove = function (e) {
try {
e.preventDefault();
2023-02-28 19:39:34 +08:00
var loc = core.actions._getClickLoc(
2022-11-14 17:11:23 +08:00
e.targetTouches[0].clientX,
e.targetTouches[0].clientY
);
2022-11-13 18:02:05 +08:00
if (loc == null) return;
main.lastTouchLoc = loc;
2023-02-28 19:39:34 +08:00
core.onmove(loc);
2022-11-14 17:11:23 +08:00
} catch (ee) {
console.error(ee);
}
};
2022-11-13 18:02:05 +08:00
////// 手指离开触摸屏时 //////
main.dom.data.ontouchend = function (e) {
try {
e.preventDefault();
if (main.lastTouchLoc == null) return;
var loc = main.lastTouchLoc;
delete main.lastTouchLoc;
2023-02-28 19:39:34 +08:00
core.onup(loc);
2022-11-13 18:02:05 +08:00
} catch (e) {
console.error(e);
}
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击状态栏中的怪物手册时 //////
main.statusBar.image.book.onclick = function (e) {
e.stopPropagation();
if (core.isReplaying()) {
core.triggerReplay();
return;
}
2023-02-28 19:39:34 +08:00
if (core.isPlaying()) core.openBook(true);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击状态栏中的楼层传送器/装备栏时 //////
main.statusBar.image.fly.onclick = function (e) {
e.stopPropagation();
// 播放录像时
if (core.isReplaying()) {
core.stopReplay();
return;
}
2023-02-28 19:39:34 +08:00
if (core.isPlaying()) {
if (!core.flags.equipboxButton) {
core.useFly(true);
2022-11-14 17:11:23 +08:00
} else {
2023-02-28 19:39:34 +08:00
core.openEquipbox(true);
2022-11-13 18:02:05 +08:00
}
}
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击状态栏中的工具箱时 //////
main.statusBar.image.toolbox.onclick = function (e) {
e.stopPropagation();
if (core.isReplaying()) {
core.rewindReplay();
return;
}
2023-02-28 19:39:34 +08:00
if (core.isPlaying()) {
core.openToolbox(core.status.event.id != 'equipbox');
2022-11-13 18:02:05 +08:00
}
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 双击状态栏中的工具箱时 //////
main.statusBar.image.toolbox.ondblclick = function (e) {
e.stopPropagation();
if (core.isReplaying()) {
return;
}
2023-02-28 19:39:34 +08:00
if (core.isPlaying()) core.openEquipbox(true);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击状态栏中的虚拟键盘时 //////
main.statusBar.image.keyboard.onclick = function (e) {
e.stopPropagation();
if (core.isReplaying()) {
core.control._replay_book();
return;
}
2023-02-28 19:39:34 +08:00
if (core.isPlaying()) core.openKeyBoard(true);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击状态栏中的快捷商店时 //////
main.statusBar.image.shop.onclick = function (e) {
e.stopPropagation();
if (core.isReplaying()) {
core.control._replay_viewMap();
return;
}
2023-02-28 19:39:34 +08:00
if (core.isPlaying()) core.openQuickShop(true);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击金币时也可以开启快捷商店 //////
main.statusBar.image.money.onclick = function (e) {
e.stopPropagation();
2023-02-28 19:39:34 +08:00
if (core.isPlaying()) core.openQuickShop(true);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击楼梯图标也可以浏览地图 //////
main.statusBar.image.floor.onclick = function (e) {
e.stopPropagation();
2022-11-14 17:11:23 +08:00
if (
2023-02-28 19:39:34 +08:00
core &&
core.isPlaying() &&
2022-11-14 17:11:23 +08:00
!core.isMoving() &&
!core.status.lockControl
) {
2022-11-13 18:02:05 +08:00
core.ui._drawViewMaps();
}
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击状态栏中的存档按钮时 //////
main.statusBar.image.save.onclick = function (e) {
e.stopPropagation();
if (core.isReplaying()) {
core.speedDownReplay();
return;
}
2023-02-28 19:39:34 +08:00
if (core.isPlaying()) core.save(true);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击状态栏中的读档按钮时 //////
main.statusBar.image.load.onclick = function (e) {
e.stopPropagation();
if (core.isReplaying()) {
core.speedUpReplay();
return;
}
2023-02-28 19:39:34 +08:00
if (core.isPlaying()) core.load(true);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击状态栏中的系统菜单时 //////
main.statusBar.image.settings.onclick = function (e) {
e.stopPropagation();
if (core.isReplaying()) {
core.control._replay_SL();
return;
}
2023-02-28 19:39:34 +08:00
if (core.isPlaying()) core.openSettings(true);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 点击工具栏时 //////
main.dom.hard.onclick = function () {
2023-02-28 19:39:34 +08:00
core.control.setToolbarButton(!core.domStyle.toolbarBtn);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
////// 手机端的按钮1-7 //////
main.statusBar.image.btn1.onclick = function (e) {
e.stopPropagation();
2023-02-28 19:39:34 +08:00
core.onkeyUp({
2022-11-14 17:11:23 +08:00
keyCode: 49,
altKey: core.getLocalStorage('altKey')
});
2022-11-13 18:02:05 +08:00
};
main.statusBar.image.btn2.onclick = function (e) {
e.stopPropagation();
2023-02-28 19:39:34 +08:00
core.onkeyUp({
2022-11-14 17:11:23 +08:00
keyCode: 50,
altKey: core.getLocalStorage('altKey')
});
2022-11-13 18:02:05 +08:00
};
main.statusBar.image.btn3.onclick = function (e) {
e.stopPropagation();
2023-02-28 19:39:34 +08:00
core.onkeyUp({
2022-11-14 17:11:23 +08:00
keyCode: 51,
altKey: core.getLocalStorage('altKey')
});
2022-11-13 18:02:05 +08:00
};
main.statusBar.image.btn4.onclick = function (e) {
e.stopPropagation();
2023-02-28 19:39:34 +08:00
core.onkeyUp({
2022-11-14 17:11:23 +08:00
keyCode: 52,
altKey: core.getLocalStorage('altKey')
});
2022-11-13 18:02:05 +08:00
};
main.statusBar.image.btn5.onclick = function (e) {
e.stopPropagation();
2023-02-28 19:39:34 +08:00
core.onkeyUp({
2022-11-14 17:11:23 +08:00
keyCode: 53,
altKey: core.getLocalStorage('altKey')
});
2022-11-13 18:02:05 +08:00
};
main.statusBar.image.btn6.onclick = function (e) {
e.stopPropagation();
2023-02-28 19:39:34 +08:00
core.onkeyUp({
2022-11-14 17:11:23 +08:00
keyCode: 54,
altKey: core.getLocalStorage('altKey')
});
2022-11-13 18:02:05 +08:00
};
main.statusBar.image.btn7.onclick = function (e) {
e.stopPropagation();
2023-02-28 19:39:34 +08:00
core.onkeyUp({
2022-11-14 17:11:23 +08:00
keyCode: 55,
altKey: core.getLocalStorage('altKey')
});
2022-11-13 18:02:05 +08:00
};
main.statusBar.image.btn8.onclick = function (e) {
e.stopPropagation();
if (core.getLocalStorage('altKey')) {
core.removeLocalStorage('altKey');
2022-11-14 17:11:23 +08:00
core.drawTip('Alt模式已关闭。');
2022-11-13 18:02:05 +08:00
main.statusBar.image.btn8.style.filter = '';
2022-11-14 17:11:23 +08:00
} else {
2022-11-13 18:02:05 +08:00
core.setLocalStorage('altKey', true);
2022-11-14 17:11:23 +08:00
core.drawTip('Alt模式已开启此模式下1~7按钮视为Alt+1~7。');
2022-11-13 18:02:05 +08:00
main.statusBar.image.btn8.style.filter = 'sepia(1) contrast(1.5)';
}
};
window.onblur = function () {
2023-02-28 19:39:34 +08:00
if (core && core.control) {
2022-11-13 18:02:05 +08:00
try {
2023-02-28 19:39:34 +08:00
core.control.checkAutosave();
2022-11-14 17:11:23 +08:00
} catch (e) {}
2022-11-13 18:02:05 +08:00
}
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
main.dom.inputYes.onclick = function () {
main.dom.inputDiv.style.display = 'none';
var func = core.platform.successCallback;
core.platform.successCallback = core.platform.errorCallback = null;
if (func) func(main.dom.inputBox.value);
2022-11-14 17:11:23 +08:00
};
2022-11-13 18:02:05 +08:00
main.dom.inputNo.onclick = function () {
main.dom.inputDiv.style.display = 'none';
var func = core.platform.errorCallback;
core.platform.successCallback = core.platform.errorCallback = null;
if (func) func(null);
2022-11-14 17:11:23 +08:00
};
}; //listen end
2022-11-13 18:02:05 +08:00
2022-11-14 17:11:23 +08:00
var main = new main();