HumanBreak/main.js
2023-02-28 10:23:39 +00:00

220 lines
20 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function main() {
//------------------------ 用户修改内容 ------------------------//
this.version = '2.10.0'; // 游戏版本号如果更改了游戏内容建议修改此version以免造成缓存问题。
this.useCompress = false; // 是否使用压缩文件
this.pluginUseCompress = true; // 仅限于gh-pages使用
// 当你即将发布你的塔时请使用“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.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'),
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')
};
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.0';
this.__VERSION_CODE__ = 510;
}
main.prototype.init=function(mode,callback){try{var a={};var b={};new Proxy(a,b);new Promise(function(res){return res()});var aa="".concat(123);aa}catch(e){alert("\u6D4F\u89C8\u5668\u7248\u672C\u8FC7\u4F4E\uFF0C\u65E0\u6CD5\u6E38\u73A9\u672C\u5854\uFF01");return}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;Promise.all();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.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]});core.init(coreData,callback);core.resize();if(core.getLocalStorage("autoScale")==null){core.setLocalStorage("autoScale",true)}if(core.getLocalStorage("autoScale")&&!core.domStyle.isVertical){try{if(core){core.plugin.maxGameScale();if(!core.getLocalStorage("fullscreen",false)){requestAnimationFrame(function(){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()}}})}}}catch(e){console.error(e)}}})})})};main.prototype.loadJs=function(dir,loadList,callback){main.setMainTipsText("\u6B63\u5728\u52A0\u8F7D\u6838\u5FC3js\u6587\u4EF6...");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 \u52A0\u8F7D\u5B8C\u6BD5");instanceNum++;if(instanceNum===loadList.length){callback()}})}}};main.prototype.loadMod=function(dir,modName,callback,onerror){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){main.setMainTipsText("\u6B63\u5728\u52A0\u8F7D\u697C\u5C42\u6587\u4EF6...");if(this.useCompress){var script=document.createElement("script");script.src="project/floors.min.js?v="+this.version;main.dom.body.appendChild(script);script.onload=function(){main.dom.mainTips.style.display="none";callback()};return}var script=document.createElement("script");script.src="/all/__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){for(var i=0;i<main.floorIds.length;i++){main.loadFloor(main.floorIds[i],function(modName){main.setMainTipsText("\u697C\u5C42 "+modName+".js \u52A0\u8F7D\u5B8C\u6BD5");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){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){main.dom.mainTips.innerHTML=text};main.prototype.log=function(e,error){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)}}};main.prototype.createOnChoiceAnimation=function(){var borderColor=main.dom.startButtonGroup.style.caretColor||"rgb(255, 215, 0)";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.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){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(){window.onresize=function(){try{main.core.resize()}catch(ee){console.error(ee)}};main.dom.body.onkeydown=function(e){if(main.editorOpened)return;try{if(e.keyCode===27)e.preventDefault();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)main.selectButton((main.selectedButton||0)-1);else if(e.keyCode==40||e.keyCode==34)main.selectButton((main.selectedButton||0)+1);else if(e.keyCode==67||e.keyCode==13||e.keyCode==32)main.selectButton(main.selectedButton);else if(e.keyCode==27&&main.dom.levelChooseButtons.style.display=="block"){main.core.showStartAnimate(true);e.preventDefault()}e.stopPropagation();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)}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)}};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{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{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.statusBar.image.book.onclick=function(e){e.stopPropagation();if(core.isReplaying()){core.triggerReplay();return}if(main.core.isPlaying())main.core.openBook(true)};main.statusBar.image.fly.onclick=function(e){e.stopPropagation();if(core.isReplaying()){core.stopReplay();return}if(main.core.isPlaying()){if(!main.core.flags.equipboxButton){main.core.useFly(true)}else{main.core.openEquipbox(true)}}};main.statusBar.image.toolbox.onclick=function(e){e.stopPropagation();if(core.isReplaying()){core.rewindReplay();return}if(main.core.isPlaying()){main.core.openToolbox(core.status.event.id!="equipbox")}};main.statusBar.image.toolbox.ondblclick=function(e){e.stopPropagation();if(core.isReplaying()){return}if(main.core.isPlaying())main.core.openEquipbox(true)};main.statusBar.image.keyboard.onclick=function(e){e.stopPropagation();if(core.isReplaying()){core.control._replay_book();return}if(main.core.isPlaying())main.core.openKeyBoard(true)};main.statusBar.image.shop.onclick=function(e){e.stopPropagation();if(core.isReplaying()){core.control._replay_viewMap();return}if(main.core.isPlaying())main.core.openQuickShop(true)};main.statusBar.image.money.onclick=function(e){e.stopPropagation();if(main.core.isPlaying())main.core.openQuickShop(true)};main.statusBar.image.floor.onclick=function(e){e.stopPropagation();if(main.core&&main.core.isPlaying()&&!core.isMoving()&&!core.status.lockControl){core.ui._drawViewMaps()}};main.statusBar.image.save.onclick=function(e){e.stopPropagation();if(core.isReplaying()){core.speedDownReplay();return}if(main.core.isPlaying())main.core.save(true)};main.statusBar.image.load.onclick=function(e){e.stopPropagation();if(core.isReplaying()){core.speedUpReplay();return}if(main.core.isPlaying())main.core.load(true)};main.statusBar.image.settings.onclick=function(e){e.stopPropagation();if(core.isReplaying()){core.control._replay_SL();return}if(main.core.isPlaying())main.core.openSettings(true)};main.dom.hard.onclick=function(){main.core.control.setToolbarButton(!core.domStyle.toolbarBtn)};main.statusBar.image.btn1.onclick=function(e){e.stopPropagation();main.core.onkeyUp({keyCode:49,altKey:core.getLocalStorage("altKey")})};main.statusBar.image.btn2.onclick=function(e){e.stopPropagation();main.core.onkeyUp({keyCode:50,altKey:core.getLocalStorage("altKey")})};main.statusBar.image.btn3.onclick=function(e){e.stopPropagation();main.core.onkeyUp({keyCode:51,altKey:core.getLocalStorage("altKey")})};main.statusBar.image.btn4.onclick=function(e){e.stopPropagation();main.core.onkeyUp({keyCode:52,altKey:core.getLocalStorage("altKey")})};main.statusBar.image.btn5.onclick=function(e){e.stopPropagation();main.core.onkeyUp({keyCode:53,altKey:core.getLocalStorage("altKey")})};main.statusBar.image.btn6.onclick=function(e){e.stopPropagation();main.core.onkeyUp({keyCode:54,altKey:core.getLocalStorage("altKey")})};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\u6A21\u5F0F\u5DF2\u5173\u95ED\u3002");main.statusBar.image.btn8.style.filter=""}else{core.setLocalStorage("altKey",true);core.drawTip("Alt\u6A21\u5F0F\u5DF2\u5F00\u542F\uFF1B\u6B64\u6A21\u5F0F\u4E0B1~7\u6309\u94AE\u89C6\u4E3AAlt+1~7\u3002");main.statusBar.image.btn8.style.filter="sepia(1) contrast(1.5)"}};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)}};var main=new main;