Eustia/main.js

968 lines
28 KiB
JavaScript
Raw Normal View History

/// <reference path="./runtime.d.ts" />
function main() {
2025-01-01 14:05:45 +08:00
//------------------------ 用户修改内容 ------------------------//
this.version = "2.10.3"; // 游戏版本号如果更改了游戏内容建议修改此version以免造成缓存问题。
this.useCompress = false; // 是否使用压缩文件
// 当你即将发布你的塔时请使用“JS代码压缩工具”将所有js代码进行压缩然后将这里的useCompress改为true。
// 请注意只有useCompress是false时才会读取floors目录下的文件为true时会直接读取libs目录下的floors.min.js文件。
// 如果要进行剧本的修改请务必将其改成false。
this.bgmRemote = false; // 是否采用远程BGM
this.bgmRemoteRoot = "https://h5mota.com/music/"; // 远程BGM的根目录
this.isCompetition = false; // 是否是比赛模式
this.enableSplitChunks = true; // 允许拆分压缩包
this.savePages = 1000; // 存档页数每页可存5个默认为1000页5000个存档
this.criticalUseLoop = 1; // 循环临界的分界
//------------------------ 用户修改内容 END ------------------------//
this.dom = {
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"),
startBackground: document.getElementById("startBackground"),
startLogo: document.getElementById("startLogo"),
startButtonGroup: document.getElementById("startButtonGroup"),
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"),
CGMode: document.getElementById("CGMode"),
musicMode: document.getElementById("musicMode"),
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"),
};
this.mode = "play";
this.loadList = [
"loader",
"control",
"utils",
"items",
"icons",
"maps",
"enemys",
"events",
"actions",
"data",
"ui",
"extensions",
"core",
];
this.pureData = [
"data",
"enemys",
"icons",
"maps",
"items",
"functions",
"events",
"plugins",
];
this.materials = [
"animates",
"enemys",
"items",
"npcs",
"terrains",
"enemy48",
"npc48",
"icons",
];
this.statusBar = {
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"),
},
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,
},
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 = {};
this.canvas = {};
this.__VERSION__ = "2.10.3";
this.__VERSION_CODE__ = 512;
}
main.prototype.init = function (mode, callback) {
2025-01-01 14:05:45 +08:00
for (var i = 0; i < main.dom.gameCanvas.length; i++) {
main.canvas[main.dom.gameCanvas[i].id] =
main.dom.gameCanvas[i].getContext("2d");
}
main.mode = mode;
main.loadJs("project", main.pureData, function () {
var mainData = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.main;
for (var ii in mainData) main[ii] = mainData[ii];
main.dom.startLogo.style = main.styles.startLogoStyle;
main.dom.startButtonGroup.style = main.styles.startButtonsStyle;
main.levelChoose = main.levelChoose || [];
main.levelChoose.forEach(function (value) {
var span = document.createElement("span");
span.setAttribute("class", "startButton");
span.innerText = value.title || "";
(function (span, str_) {
span.onclick = function () {
core.events.startGame(str_);
};
})(span, value.name || "");
main.dom.levelChooseButtons.appendChild(span);
});
main.createOnChoiceAnimation();
main.importFonts(main.fonts);
main.loadJs("libs", main.loadList, function () {
main.core = core;
for (i = 0; i < main.loadList.length; i++) {
var name = main.loadList[i];
if (name === "core") continue;
main.core[name] = new window[name]();
}
main.loadFloors(function () {
var coreData = {};
[
"dom",
"statusBar",
"canvas",
"images",
"tilesets",
"materials",
"animates",
"bgms",
"sounds",
"floorIds",
"floors",
"floorPartitions",
].forEach(function (t) {
coreData[t] = main[t];
});
2025-01-01 14:05:45 +08:00
main.core.init(coreData, callback);
main.core.resize();
// 自动放缩最大化
if (!main.replayChecking) {
if (core.getLocalStorage("autoScale") == null) {
core.setLocalStorage("autoScale", true);
}
if (core.getLocalStorage("autoScale") && !core.domStyle.isVertical) {
try {
if (main.core) {
var index = main.core.domStyle.availableScale.indexOf(
core.domStyle.scale
);
main.core.control.setDisplayScale(
main.core.domStyle.availableScale.length - 1 - index
);
if (!main.core.isPlaying() && main.core.flags.enableHDCanvas) {
main.core.domStyle.ratio = Math.max(
window.devicePixelRatio || 1,
main.core.domStyle.scale
);
main.core.resize();
}
requestAnimationFrame(function () {
var style = getComputedStyle(main.dom.gameGroup);
var height = parseFloat(style.height);
if (height > window.innerHeight * 0.95) {
main.core.control.setDisplayScale(-1);
if (
2025-01-01 14:05:45 +08:00
!main.core.isPlaying() &&
main.core.flags.enableHDCanvas
) {
2025-01-01 14:05:45 +08:00
main.core.domStyle.ratio = Math.max(
window.devicePixelRatio || 1,
main.core.domStyle.scale
);
main.core.resize();
}
2025-01-01 14:05:45 +08:00
}
});
}
} catch (e) {
console.error(e);
}
}
}
});
});
2025-01-01 14:05:45 +08:00
});
};
////// 动态加载所有核心JS文件 //////
main.prototype.loadJs = function (dir, loadList, callback) {
2025-01-01 14:05:45 +08:00
// 加载js
main.setMainTipsText("正在加载核心js文件...");
2025-01-01 14:05:45 +08:00
if (this.useCompress) {
main.loadMod(dir, dir, function () {
callback();
});
} else {
var instanceNum = 0;
for (var i = 0; i < loadList.length; i++) {
main.loadMod(dir, loadList[i], function (modName) {
main.setMainTipsText(modName + ".js 加载完毕");
instanceNum++;
if (instanceNum === loadList.length) {
callback();
}
2025-01-01 14:05:45 +08:00
});
}
2025-01-01 14:05:45 +08:00
}
};
////// 加载某一个JS文件 //////
main.prototype.loadMod = function (dir, modName, callback, onerror) {
2025-01-01 14:05:45 +08:00
var script = document.createElement("script");
var name = modName;
script.src =
dir +
"/" +
modName +
(this.useCompress ? ".min" : "") +
".js?v=" +
this.version;
script.onload = function () {
callback(name);
};
main.dom.body.appendChild(script);
};
////// 动态加载所有楼层(剧本) //////
main.prototype.loadFloors = function (callback) {
2025-01-01 14:05:45 +08:00
// 加载js
main.setMainTipsText("正在加载楼层文件...");
if (this.useCompress) {
// 读取压缩文件
var script = document.createElement("script");
script.src = "project/floors.min.js?v=" + this.version;
main.dom.body.appendChild(script);
2025-01-01 14:05:45 +08:00
script.onload = function () {
main.dom.mainTips.style.display = "none";
callback();
};
return;
}
// 高层塔优化
var script = document.createElement("script");
script.src =
"__all_floors__.js?v=" + this.version + "&id=" + main.floorIds.join(",");
script.onload = function () {
main.dom.mainTips.style.display = "none";
main.supportBunch = true;
callback();
};
script.onerror =
script.onabort =
script.ontimeout =
function (e) {
// console.clear();
for (var i = 0; i < main.floorIds.length; i++) {
main.loadFloor(main.floorIds[i], function (modName) {
main.setMainTipsText("楼层 " + modName + ".js 加载完毕");
if (Object.keys(main.floors).length === main.floorIds.length) {
main.dom.mainTips.style.display = "none";
callback();
}
});
}
};
main.dom.body.appendChild(script);
};
////// 加载某一个楼层 //////
main.prototype.loadFloor = function (floorId, callback) {
2025-01-01 14:05:45 +08:00
var script = document.createElement("script");
script.src = "project/floors/" + floorId + ".js?v=" + this.version;
main.dom.body.appendChild(script);
script.onload = function () {
callback(floorId);
};
};
////// 加载过程提示 //////
main.prototype.setMainTipsText = function (text) {
2025-01-01 14:05:45 +08:00
main.dom.mainTips.innerHTML = text;
};
main.prototype.log = function (e, error) {
2025-01-01 14:05:45 +08:00
if (e) {
if (error) return console.error(e);
if (main.core && main.core.platform && !main.core.platform.isPC) {
console.log(e.stack || e.toString());
} else {
console.log(e);
}
2025-01-01 14:05:45 +08:00
}
};
main.prototype.createOnChoiceAnimation = function () {
2025-01-01 14:05:45 +08:00
var borderColor =
main.dom.startButtonGroup.style.caretColor || "rgb(255, 215, 0)";
// get rgb value
var rgb = /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*\d+\s*)?\)$/.exec(
borderColor
);
if (rgb != null) {
var value = rgb[1] + ", " + rgb[2] + ", " + rgb[3];
var style = document.createElement("style");
style.type = "text/css";
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;
document.body.appendChild(style);
}
};
////// 选项 //////
main.prototype.selectButton = function (index) {
2025-01-01 14:05:45 +08:00
var select = function (children) {
index = (index + children.length) % children.length;
for (var i = 0; i < children.length; ++i) {
children[i].classList.remove("onChoiceAnimate");
}
children[index].classList.add("onChoiceAnimate");
if (main.selectedButton == index) {
children[index].click();
} else {
main.selectedButton = index;
}
};
2025-01-01 14:05:45 +08:00
if (core.dom.startPanel.style.display != "block") return;
2025-01-01 14:05:45 +08:00
if (main.dom.startButtons.style.display == "block") {
select(main.dom.startButtons.children);
} else if (main.dom.levelChooseButtons.style.display == "block") {
select(main.dom.levelChooseButtons.children);
}
};
////// 创建字体 //////
main.prototype.importFonts = function (fonts) {
2025-01-01 14:05:45 +08:00
if (!(fonts instanceof Array) || fonts.length == 0) return;
var style = document.createElement("style");
style.type = "text/css";
var html = "";
fonts.forEach(function (font) {
html +=
'@font-face { font-family: "' +
font +
'"; src: url("project/fonts/' +
font +
'.ttf") format("truetype"); }';
});
style.innerHTML = html;
document.body.appendChild(style);
};
main.prototype.listen = function () {
2025-01-01 14:05:45 +08:00
////// 窗口大小变化时 //////
window.onresize = function () {
try {
main.core.resize();
} catch (ee) {
console.error(ee);
}
};
////// 在界面上按下某按键时 //////
main.dom.body.onkeydown = function (e) {
if (main.editorOpened) return;
try {
if (main.dom.inputDiv.style.display == "block") return;
if (main.core && (main.core.isPlaying() || main.core.status.lockControl))
main.core.onkeyDown(e);
} catch (ee) {
console.error(ee);
}
};
////// 在界面上放开某按键时 //////
main.dom.body.onkeyup = function (e) {
if (main.editorOpened) return;
try {
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
main.selectButton((main.selectedButton || 0) - 1);
else if (e.keyCode == 40 || e.keyCode == 34)
// down/pgdn
main.selectButton((main.selectedButton || 0) + 1);
else if (e.keyCode == 67 || e.keyCode == 13 || e.keyCode == 32)
// C/Enter/Space
main.selectButton(main.selectedButton);
else if (
e.keyCode == 27 &&
main.dom.levelChooseButtons.style.display == "block"
) {
// ESC
main.core.showStartAnimate(true);
}
e.stopPropagation();
2025-01-01 14:05:45 +08:00
return;
}
if (main.dom.inputDiv.style.display == "block") {
if (e.keyCode == 13) {
setTimeout(function () {
main.dom.inputYes.click();
}, 50);
} else if (e.keyCode == 27) {
setTimeout(function () {
main.dom.inputNo.click();
}, 50);
}
2025-01-01 14:05:45 +08:00
return;
}
if (
main.core &&
main.core.isPlaying &&
main.core.status &&
(main.core.isPlaying() || main.core.status.lockControl)
)
main.core.onkeyUp(e);
} catch (ee) {
console.error(ee);
}
};
2025-01-01 14:05:45 +08:00
[main.dom.startButtons, main.dom.levelChooseButtons].forEach(function (dom) {
dom.onmousemove = function (e) {
for (var i = 0; i < dom.children.length; ++i) {
if (dom.children[i] == e.target && i != (main.selectedButton || 0)) {
main.selectButton(i);
}
2025-01-01 14:05:45 +08:00
}
};
});
////// 开始选择时 //////
main.dom.body.onselectstart = function () {
return false;
};
////// 鼠标按下时 //////
main.dom.data.onmousedown = function (e) {
try {
e.stopPropagation();
var loc = main.core.actions._getClickLoc(e.clientX, e.clientY);
if (loc == null) return;
main.core.ondown(loc);
} catch (ee) {
console.error(ee);
}
};
////// 鼠标移动时 //////
main.dom.data.onmousemove = function (e) {
try {
e.stopPropagation();
var loc = main.core.actions._getClickLoc(e.clientX, e.clientY);
if (loc == null) return;
main.core.onmove(loc);
} catch (ee) {
console.error(ee);
}
};
////// 鼠标放开时 //////
main.dom.data.onmouseup = function (e) {
try {
e.stopPropagation();
var loc = main.core.actions._getClickLoc(e.clientX, e.clientY);
if (loc == null) return;
main.core.onup(loc);
} catch (ee) {
console.error(ee);
}
};
////// 鼠标滑轮滚动时 //////
main.dom.data.onmousewheel = function (e) {
try {
if (e.wheelDelta) main.core.onmousewheel(Math.sign(e.wheelDelta));
else if (e.detail) main.core.onmousewheel(Math.sign(e.detail));
} catch (ee) {
console.error(ee);
}
};
////// 手指在触摸屏开始触摸时 //////
main.dom.data.ontouchstart = function (e) {
try {
e.preventDefault();
var loc = main.core.actions._getClickLoc(
e.targetTouches[0].clientX,
e.targetTouches[0].clientY
);
if (loc == null) return;
main.lastTouchLoc = loc;
main.core.ondown(loc);
} catch (ee) {
console.error(ee);
}
};
////// 手指在触摸屏上移动时 //////
main.dom.data.ontouchmove = function (e) {
try {
e.preventDefault();
var loc = main.core.actions._getClickLoc(
e.targetTouches[0].clientX,
e.targetTouches[0].clientY
);
if (loc == null) return;
main.lastTouchLoc = loc;
main.core.onmove(loc);
} catch (ee) {
console.error(ee);
}
};
////// 手指离开触摸屏时 //////
main.dom.data.ontouchend = function (e) {
try {
e.preventDefault();
if (main.lastTouchLoc == null) return;
var loc = main.lastTouchLoc;
delete main.lastTouchLoc;
main.core.onup(loc);
} catch (e) {
console.error(e);
}
};
main.dom.statusCanvas.onclick = function (e) {
try {
e.preventDefault();
main.core.onStatusBarClick(e);
} catch (e) {
console.error(e);
}
};
2025-01-01 14:05:45 +08:00
////// 点击状态栏中的怪物手册时 //////
main.statusBar.image.book.onclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
if (core.isReplaying()) {
core.triggerReplay();
return;
}
2025-01-01 14:05:45 +08:00
if (main.core.isPlaying()) main.core.openBook(true);
};
2025-01-01 14:05:45 +08:00
////// 点击状态栏中的楼层传送器/装备栏时 //////
main.statusBar.image.fly.onclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
// 播放录像时
if (core.isReplaying()) {
core.stopReplay();
return;
}
2025-01-01 14:05:45 +08:00
if (main.core.isPlaying()) {
if (!main.core.flags.equipboxButton) {
main.core.useFly(true);
} else {
main.core.openEquipbox(true);
}
}
};
2025-01-01 14:05:45 +08:00
////// 点击状态栏中的工具箱时 //////
main.statusBar.image.toolbox.onclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
if (core.isReplaying()) {
core.rewindReplay();
return;
}
2025-01-01 14:05:45 +08:00
if (main.core.isPlaying()) {
main.core.openToolbox(core.status.event.id != "equipbox");
}
};
2025-01-01 14:05:45 +08:00
////// 双击状态栏中的工具箱时 //////
main.statusBar.image.toolbox.ondblclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
if (core.isReplaying()) {
return;
}
2025-01-01 14:05:45 +08:00
if (main.core.isPlaying()) main.core.openEquipbox(true);
};
2025-01-01 14:05:45 +08:00
////// 点击状态栏中的虚拟键盘时 //////
main.statusBar.image.keyboard.onclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
if (core.isReplaying()) {
core.control._replay_book();
return;
}
2025-01-01 14:05:45 +08:00
if (main.core.isPlaying()) main.core.openKeyBoard(true);
};
2025-01-01 14:05:45 +08:00
////// 点击状态栏中的快捷商店时 //////
main.statusBar.image.shop.onclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
if (core.isReplaying()) {
core.control._replay_viewMap();
return;
}
2025-01-01 14:05:45 +08:00
if (main.core.isPlaying()) main.core.openQuickShop(true);
};
2025-01-01 14:05:45 +08:00
////// 点击金币时也可以开启快捷商店 //////
main.statusBar.image.money.onclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
if (main.core.isPlaying()) main.core.openQuickShop(true);
};
2025-01-01 14:05:45 +08:00
////// 点击楼梯图标也可以浏览地图 //////
main.statusBar.image.floor.onclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
if (
main.core &&
main.core.isPlaying() &&
!core.isMoving() &&
!core.status.lockControl
) {
core.ui._drawViewMaps();
}
};
2025-01-01 14:05:45 +08:00
////// 点击状态栏中的存档按钮时 //////
main.statusBar.image.save.onclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
if (core.isReplaying()) {
core.speedDownReplay();
return;
}
2025-01-01 14:05:45 +08:00
if (main.core.isPlaying()) main.core.save(true);
};
2025-01-01 14:05:45 +08:00
////// 点击状态栏中的读档按钮时 //////
main.statusBar.image.load.onclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
if (core.isReplaying()) {
core.speedUpReplay();
return;
}
2025-01-01 14:05:45 +08:00
if (main.core.isPlaying()) main.core.load(true);
};
2025-01-01 14:05:45 +08:00
////// 点击状态栏中的系统菜单时 //////
main.statusBar.image.settings.onclick = function (e) {
e.stopPropagation();
2025-01-01 14:05:45 +08:00
if (core.isReplaying()) {
core.control._replay_SL();
return;
}
2025-01-01 14:05:45 +08:00
if (main.core.isPlaying()) main.core.openSettings(true);
};
2025-01-01 14:05:45 +08:00
////// 点击工具栏时 //////
main.dom.hard.onclick = function () {
main.core.control.setToolbarButton(!core.domStyle.toolbarBtn);
};
2025-01-01 14:05:45 +08:00
////// 手机端的按钮1-7 //////
main.statusBar.image.btn1.onclick = function (e) {
e.stopPropagation();
main.core.onkeyUp({
keyCode: 49,
altKey: core.getLocalStorage("altKey"),
});
};
2025-01-01 14:05:45 +08:00
main.statusBar.image.btn2.onclick = function (e) {
e.stopPropagation();
main.core.onkeyUp({
keyCode: 50,
altKey: core.getLocalStorage("altKey"),
});
};
2025-01-01 14:05:45 +08:00
main.statusBar.image.btn3.onclick = function (e) {
e.stopPropagation();
main.core.onkeyUp({
keyCode: 51,
altKey: core.getLocalStorage("altKey"),
});
};
2025-01-01 14:05:45 +08:00
main.statusBar.image.btn4.onclick = function (e) {
e.stopPropagation();
main.core.onkeyUp({
keyCode: 52,
altKey: core.getLocalStorage("altKey"),
});
};
2025-01-01 14:05:45 +08:00
main.statusBar.image.btn5.onclick = function (e) {
e.stopPropagation();
main.core.onkeyUp({
keyCode: 53,
altKey: core.getLocalStorage("altKey"),
});
};
2025-01-01 14:05:45 +08:00
main.statusBar.image.btn6.onclick = function (e) {
e.stopPropagation();
main.core.onkeyUp({
keyCode: 54,
altKey: core.getLocalStorage("altKey"),
});
};
2025-01-01 14:05:45 +08:00
main.statusBar.image.btn7.onclick = function (e) {
e.stopPropagation();
main.core.onkeyUp({
keyCode: 55,
altKey: core.getLocalStorage("altKey"),
});
};
main.statusBar.image.btn8.onclick = function (e) {
e.stopPropagation();
if (core.getLocalStorage("altKey")) {
core.removeLocalStorage("altKey");
core.drawTip("Alt模式已关闭。");
main.statusBar.image.btn8.style.filter = "";
} else {
core.setLocalStorage("altKey", true);
core.drawTip("Alt模式已开启此模式下1~7按钮视为Alt+1~7。");
main.statusBar.image.btn8.style.filter = "sepia(1) contrast(1.5)";
}
};
2025-01-01 14:05:45 +08:00
////// 点击“开始游戏”时 //////
main.dom.playGame.onclick = function () {
main.dom.startButtons.style.display = "none";
main.core.control.checkBgm();
2025-01-01 14:05:45 +08:00
if (main.levelChoose.length == 0) {
core.events.startGame("");
} else {
main.dom.levelChooseButtons.style.display = "block";
main.selectedButton = null;
main.selectButton(0);
}
};
////// 点击“载入游戏”时 //////
main.dom.loadGame.onclick = function () {
main.core.control.checkBgm();
main.core.load();
};
////// 点击“录像回放”时 //////
main.dom.replayGame.onclick = function () {
main.core.control.checkBgm();
main.core.chooseReplayFile();
};
main.dom.musicBtn.onclick = function () {
try {
if (main.core) main.core.triggerBgm();
} catch (ee) {
console.error(ee);
}
};
2025-01-01 14:05:45 +08:00
window.onblur = function () {
if (main.core && main.core.control) {
try {
main.core.control.checkAutosave();
} catch (e) {}
}
};
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);
};
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);
};
}; //listen end
var main = new main();