Compare commits

...

21 Commits

Author SHA1 Message Date
274375cd42 Merge branch 'status-itcfangye' into map 2025-01-27 00:16:00 +08:00
4609a85797 backlog制作完毕,cgText重构 2025-01-27 00:07:59 +08:00
4936449f67 winskin增加缩放倍率,楼传修复,部分战斗动画 2025-01-25 22:25:57 +08:00
1eec945d93 Merge branch 'story' into status-itcfangye 2025-01-24 21:50:12 +08:00
d5fde8eaca git屏蔽_save和config.json改动记录 2025-01-24 19:25:13 +08:00
6c4515a3ef _save和config.json移除git列表 2025-01-24 19:21:50 +08:00
089956431f 字体修改 2025-01-24 19:18:55 +08:00
13f3a69173 捕获点击 2025-01-24 00:05:25 +08:00
df22828641 修复music隐藏列表 2025-01-23 23:59:06 +08:00
4ef2280dc1 gitgnore 2025-01-23 23:53:30 +08:00
egamerainy1022
a10e4018b4 BUG二次修复 2025-01-23 23:50:40 +08:00
d36f936f6f 修复music bug 2025-01-23 22:53:29 +08:00
f2c4d83671 默认第一手显示 2025-01-23 22:30:25 +08:00
83dfd91c2a 事件描述 2025-01-23 22:28:35 +08:00
e7413191f9 更改事件颜色 2025-01-23 22:27:02 +08:00
38979d5040 隐藏歌单 2025-01-23 22:25:18 +08:00
c1263db1af Merge branch 'story' of https://gitea.mota.press/Dove/Eustia into story 2025-01-23 21:47:03 +08:00
c5c1e12d8b 音乐拼接等 2025-01-23 21:46:59 +08:00
egamerainy1022
6ba9415c32 补充剧情音乐 2025-01-23 21:10:20 +08:00
b3da61870c Merge branch 'main' into status-itcfangye 2025-01-22 16:25:05 +08:00
24807dffe0 getDamageInfo+getEnemyInfo 2025-01-12 21:32:54 +08:00
27 changed files with 15247 additions and 11978 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
_saves/
_server/config.json

View File

@ -1 +0,0 @@
1

View File

@ -1 +0,0 @@
N4IgZgNg9lBOCSATEAuEBPAlgRwK4CYQAaEACwFNYpVRMBbAQwHNzUzKoA6Ad3ICMADsRAMAdvQYAXVijAMIAZ3IlRDOjJABhBvWEQAbqgCMJUgMYAPYwAZbpoSiO3rJRqss3XYhqhcjJANaeIIjkYMF0oeGOfnRQouToviTkFg5+5HiY5uSikqgA2gC6JJjSdAo0IADG8QqSYpKVKKB8MEGOJJBJjgC+JJIwilXo5BDQ3ADSiagALCR8ELjk0z1G/SCZuNnNwL0b0NVVVigAnCQ98yGYsOTVkpjxbLhCG5DMuyBl5HQAIuQNTAQVCSWDLEi4JQAIQBvFyABlMExSPkUKDwSAAPqYpTkRDY4z4ADMRlmADZ8GSyQB2EjY2BifGYwkk8mUmkkBi3BjNAqgdwaAA6uFm5GsfGFAFZqrNCF4BLytDo6KQoOoQEV+vy1EKRWKJbhpbLhIwFYUQAArTC4Ji4MQarUgAVsYWi8VSmVykCmxWTAAqADUHURteq0MLqZT8BH8GAjCaGGaUAUQP6AwAxQiakNOnUu3CRikxuMJpMpphQCCIAIzbOh3Vug1Gr0+818TCkSG4ah13NhkCusUMD3G+WKq0MKANURMYP1/Nu4eGz2lxUKCgz0T6VXq3vO8N66xL5ur83rzBbnesPd5g+F6MF2Pxsfmq14ydzvu6+/F5/exNrqC5AAtYf71LcIFeraYhMNUpAwcI0EznBMFehYmCTuhMGgcIWFQFhM7WGhGH4RhM5EsIWB4H+VEEJ++6iLg4wvsmGA4LgFE3mGjHMf+ZZsXgsz0bePEQCxKa0ZKwncUxYl8YqtFktJMiieJAkFspqCqfJ5q0QAHJpKDaa2rG0achnGQBunsU4DolCACgBNkqByIoyhkFyyAoH42LwbAiCaJWcAEmgtzIHSmLfHQAASF6SCFxQRRA5AMPo5DwlA1QhaAtHxi01y3PcjyiM8QgkCcfg9NS+wRfomAKN8TIjDZIJgu5tGEGibUbHwsLAaIACCkgNNUAS/FIPhGbJEWIPVDCLHi2XqZ1BQFEYRiSkQ63zE4LjrUSRBkiY1KzCUxTZh5QFefgJCOUCwLebdTnjAAcreA64GSkpiiAbyVhMlC8vZ9TkEmZJeIEyQOQIwFeU4t2gsEzCYMEcXBLUJUxF4TCYEcsjyEoCNSPVDzVJ8gwNBAfr0DIkbWFSpycKczMs8zsybTUuCwLA1NhgzjN6c4Qu2LMtJkOkCxSJIyXGK48QzI9mxpFDfBS8l42MCwUMCFA9XxBrzAyBkFiggwBta4rcRpb8Nx3NLPTg18TCiHA5AAMrSEm+Bi/UXKolSkqzKcZKcLMNUef5bCnvlHVVKahQuInRAuAUAC0Jjp0QmfZxnudZ3nLg5/nZ1F6Xedl8n+dV+nJQpxX9flyYheNyXjfV23RdJ83teV4nmobFQuDSGw8LwFCTAABoDdFA3YAomgALKSEwADy3BQgAogN6ADQGK+SgA4rgAYKAN8KTKfABS6DppKARb7gACqACaACKA0ALxf8I+jyMsuwbDSrABqTwDynHIESRAUo+CSmsBGBgpwoG4FOEROBho9KBw9NYMAwpg5GHCCQW0mAvIgBpHwWYswjD4ElJiIk5B8D4ExLMBBNCYGIHxNScgkoA5EgYEaAhIAHhhiMNSIkZI9JfVONSawelqR6V6EAA=

View File

@ -854,6 +854,8 @@ action
| waitAsync_s | waitAsync_s
| stopAsync_s | stopAsync_s
| op_s | op_s
| setmusics_s
| introAndLoop_s
| battle_s | battle_s
| battle_1_s | battle_1_s
| openDoor_s | openDoor_s
@ -963,8 +965,7 @@ action
| animationDrawable_s | animationDrawable_s
| over_s | over_s
| overlist_s | overlist_s
| playStereo_s | cgtextList_s
| moveStereo_s
| pass_s | pass_s
; ;
@ -1123,22 +1124,33 @@ overtextEmpty
var code = []; var code = [];
return code; return code;
*/; */;
cgtextList_s
: '切换剧情文本库' EvalString Newline
/* cgtextList_s
tooltip : cgtextList设置cg剧情文本库
helpUrl : /_docs/#/instruction
default : ["chapter0"]
var code = '{"type": "cgtextList", "textList":"'+EvalString_0+'"},\n';
return code;
*/;
cgtext_s cgtext_s
: '背景' EvalString? '回忆滤镜' Bool? '移除对话框' Bool? '头像' EvalString?'名字' EvalString?'坐标PX' Number'打字间隔' Int? BGNL? Newline : '背景' EvalString? '回忆滤镜' Bool? '移除对话框' Bool? '剧情库序列' Int '头像' EvalString?'坐标PX' Number'打字间隔' Int? BGNL? Newline
'自动等待时长' Int '音频文件(需在全塔属性——使用音效注册)'EvalString? BGNL? Newline '自动等待时长' Int '音频文件(需在全塔属性——使用音效注册)'EvalString? BGNL? Newline
EvalString? BGNL? Newline textcgDrawingList+? Newline textcgDrawingList+? Newline
/* cgtext_s /* cgtext_s
tooltip : cgtext显示一段包含cg的文字剧情 tooltip : cgtext显示一段包含cg的文字剧情
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
allImages : ['EvalString_0','EvalString_1'] allImages : ['EvalString_0','EvalString_1']
allSounds : ['EvalString_3'] allSounds : ['EvalString_2']
default : ["bg_5043.webp",false,"face_050445.webp",false,"菲奥奈",-300,0,2000,"","这句话显示在对话框内",[{ "name":"tati_050145a.webp" , "px": 100,"filter":false }]] default : ["bg_5043.webp",false,false,0,"face_050445.webp",-300,0,2000,"","这句话显示在对话框内",[{ "name":"tati_050145a.webp" , "px": 100,"filter":false }]]
var head ='{ "name": "'+EvalString_1+'", "px": '+Number_0+' }' var head ='{ "name": "'+EvalString_1+'", "px": '+Number_0+' }'
var list=',"bodyList": [\n'+textcgDrawingList_0.slice(0,-1)+'\n]' var list=',"bodyList": [\n'+textcgDrawingList_0.slice(0,-1)+'\n]'
var code = '{"type": "cgtext", "bg":"'+EvalString_0+'","memory":'+Bool_0+',"WindowSkin":'+Bool_1+',"head":'+head+' ,"name":"'+EvalString_2+'","time":'+Int_0+',"wait":'+Int_1+',"sound":"'+EvalString_3+'","text": "'+EvalString_4+'"'+list+' },\n'; var code = '{"type": "cgtext", "bg":"'+EvalString_0+'","memory":'+Bool_0+',"WindowSkin":'+Bool_1+',"head":'+head+' ,"index":"'+Int_0+'","time":'+Int_1+',"wait":'+Int_2+',"sound":"'+EvalString_2+'"'+list+' },\n';
return code; return code;
*/; */;
textcgDrawingList textcgDrawingList
@ -2612,6 +2624,23 @@ var code = '{"type": "setq"'+IdString_0+'},\n';
return code; return code;
*/; */;
introAndLoop_s
: '前奏音乐文件'EvalString? '前奏音乐文件播放时长(可填小数,单位为秒)'EvalString'循环音乐文件'EvalString? Newline
/* introAndLoop_s
tooltip : introAndLoop设置任务目标楼层显示在小地图
helpUrl : /_docs/#/instruction
default : ["",1,""]
allBgms : ['EvalString_0','EvalString_2']
colour :this.imageColor
if(EvalString_1&&!/^(0|([1-9][0-9]*))(\.[\d]+)?$/.test(EvalString_1))throw new Error("此项仅能填写小数或整数,单位为秒");
EvalString_0 = EvalString_0 ? (', "intro": "'+EvalString_0+'"') : '';
EvalString_1= EvalString_1 ? (', "time": '+EvalString_1+'') : '';
EvalString_2 = EvalString_2 ? (', "loop": "'+EvalString_2+'"') : '';
var code = '{"type": "introAndLoop"'+EvalString_0+EvalString_1+EvalString_2+'},\n';
return code;
*/;
setcgs_s setcgs_s
: 'cg回廊获取cg 文件名'EvalString?'不填为清空cg获取记录' Newline : 'cg回廊获取cg 文件名'EvalString?'不填为清空cg获取记录' Newline
@ -2621,12 +2650,26 @@ tooltip : setcgscg回廊中的cg获取
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : [""] default : [""]
allImages : ['EvalString_0'] allImages : ['EvalString_0']
colour : this.imageColor colour : this.soundColor
EvalString_0 = EvalString_0 ? (', "img": "'+EvalString_0+'"') : ''; EvalString_0 = EvalString_0 ? (', "img": "'+EvalString_0+'"') : '';
var code = '{"type": "setcgs"'+EvalString_0+'},\n'; var code = '{"type": "setcgs"'+EvalString_0+'},\n';
return code; return code;
*/; */;
setmusics_s
: '音乐鉴赏music 文件名'EvalString?'不填为清空music获取记录' Newline
/* setmusics_s
tooltip : setmusics音乐鉴赏中的隐藏music获取
helpUrl : /_docs/#/instruction
default : [""]
allBgms : ['EvalString_0']
colour : this.soundColor
EvalString_0 = EvalString_0 ? (', "bgm": "'+EvalString_0+'"') : '';
var code = '{"type": "setmusics"'+EvalString_0+'},\n';
return code;
*/;
scaleImage_s scaleImage_s
: '图片放缩' '图片编号' NInt '中心点像素' 'x' PosString? 'y' PosString? '移动方式' MoveMode_List BGNL? '放缩比例' Number '动画时间' Int '不等待执行完毕' Bool Newline : '图片放缩' '图片编号' NInt '中心点像素' 'x' PosString? 'y' PosString? '移动方式' MoveMode_List BGNL? '放缩比例' Number '动画时间' Int '不等待执行完毕' Bool Newline
@ -3045,39 +3088,8 @@ var code = '{"type": "playSound", "name": "'+EvalString_0+'"'+Bool_0+IntString_0
return code; return code;
*/; */;
playStereo_s
: '播放音效(立体音)' EvalString '左声道音量' Int '右声道音量' Int '启用立体音' Bool? Newline
/* playStereo_s
tooltip : playSound: 播放音效(立体音)
helpUrl : /_docs/#/instruction
default : ["item.mp3",1,1,true]
colour : this.imageColor
allSounds : ['EvalString_0']
material : ["./project/sounds/", "EvalString_0"]
var code = '{"type": "playStereo", "name": "'+EvalString_0+'", "left": '+Int_0+', "right": '+Int_1+', "split": '+Bool_0+'},\n';
return code;
*/;
moveStereo_s
: '播放渐变音效(立体音)' EvalString '左声道音量' Int '右声道音量' Int '启用立体音' Bool? BGNL? Newline
'左声道目标音量' Int '右声道目标音量' Int '渐变时长'Int Newline
/* moveStereo_s
tooltip : playSound: 播放渐变音效(立体音)
helpUrl : /_docs/#/instruction
default : ["item.mp3",1,1,true,10,10,1000]
colour : this.imageColor
allSounds : ['EvalString_0']
material : ["./project/sounds/", "EvalString_0"]
var code = '{"type": "moveStereo", "name": "'+EvalString_0+'", "left": '+Int_0+', "right": '+Int_1+', "split": '+Bool_0+', "leftTo": '+Int_2+', "rightTo": '+Int_3+', "time": '+Int_4+'},\n';
return code;
*/;
playSound_1_s playSound_1_s
: '播放系统音效' NameMap_List '停止之前音效' Bool? '音调' IntString? '等待播放完毕' Bool? Newline : '播放系统音效' NameMap_List '停止之前音效' Bool? '音调' IntString? '等待播放完毕' Bool? Newline

View File

@ -542,6 +542,12 @@ MotaActionParser = function () {
); );
} }
break; break;
case "cgtextList":
this.next = MotaActionBlocks["cgtextList_s"].xmlText([
data.textList,
this.next,
]);
break;
case "cgtext": // cg对话框 case "cgtext": // cg对话框
var buildcgDrawing = function (obj) { var buildcgDrawing = function (obj) {
obj = MotaActionFunctions.processcgDrawing(obj || []); obj = MotaActionFunctions.processcgDrawing(obj || []);
@ -563,13 +569,12 @@ MotaActionParser = function () {
data.bg, data.bg,
data.memory, data.memory,
data.WindowSkin, data.WindowSkin,
data.index,
data.head.name, data.head.name,
data.name || "",
data.head.px || -300, data.head.px || -300,
data.time, data.time,
data.wait, data.wait,
data.sound, data.sound,
data.text,
buildcgDrawing(data.bodyList), buildcgDrawing(data.bodyList),
this.next, this.next,
]); ]);
@ -620,6 +625,20 @@ MotaActionParser = function () {
case "setcgs": case "setcgs":
this.next = MotaActionBlocks["setcgs_s"].xmlText([data.img, this.next]); this.next = MotaActionBlocks["setcgs_s"].xmlText([data.img, this.next]);
break; break;
case "setmusics":
this.next = MotaActionBlocks["setmusics_s"].xmlText([
data.bgm,
this.next,
]);
break;
case "introAndLoop":
this.next = MotaActionBlocks["introAndLoop_s"].xmlText([
data.intro,
data.time,
data.loop,
this.next,
]);
break;
case "comment": // 注释 case "comment": // 注释
this.next = MotaActionBlocks["comment_s"].xmlText([ this.next = MotaActionBlocks["comment_s"].xmlText([
this.EvalString_Multi(data.text), this.EvalString_Multi(data.text),
@ -1506,27 +1525,6 @@ MotaActionParser = function () {
]); ]);
} }
break; break;
case "playStereo":
this.next = MotaActionBlocks["playStereo_s"].xmlText([
data.name,
data.left,
data.right,
data.split || true,
this.next,
]);
break;
case "moveStereo":
this.next = MotaActionBlocks["moveStereo_s"].xmlText([
data.name,
data.left,
data.right,
data.split || true,
data.leftTo,
data.rightTo,
data.time,
this.next,
]);
break;
case "playSound": case "playSound":
var knownItems = MotaActionBlocks["NameMap_List"].options.map(function ( var knownItems = MotaActionBlocks["NameMap_List"].options.map(function (
one one

File diff suppressed because one or more lines are too long

View File

@ -389,7 +389,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
} }
} }
}, },
"enemys_template": { 'name': '新敌人', 'hp': 0, 'atk': 0, 'def': 0, 'money': 0, 'exp': 0, 'point': 0, 'special': [] }, "enemys_template": { 'name': '新敌人', 'hp': 0, 'atk': 0, 'def': 0, 'mdef': 0, 'speed': 0, 'money': 0, 'exp': 0, 'point': 0, 'special': [] },
// --------------------------- 【图块属性】相关的表格配置 --------------------------- // // --------------------------- 【图块属性】相关的表格配置 --------------------------- //

View File

@ -122,6 +122,12 @@ var plugins_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_type": "textarea", "_type": "textarea",
"_range": "typeof(thiseval)=='string' || thiseval==null", "_range": "typeof(thiseval)=='string' || thiseval==null",
"_data": "音乐鉴赏" "_data": "音乐鉴赏"
},
"intro&loop": {
"_leaf": true,
"_type": "textarea",
"_range": "typeof(thiseval)=='string' || thiseval==null",
"_data": "背景音乐拼接"
} }
} }
if (obj[key]) return obj[key]; if (obj[key]) return obj[key];

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +1,24 @@
/* /*
loader.js负责对资源的加载 loader.js负责对资源的加载
*/ */
"use strict"; "use strict";
function loader () { function loader() {
this._init(); this._init();
} }
loader.prototype._init = function () { loader.prototype._init = function () {};
}
////// 设置加载进度条进度 ////// ////// 设置加载进度条进度 //////
loader.prototype._setStartProgressVal = function (val) { loader.prototype._setStartProgressVal = function (val) {
core.dom.startTopProgress.style.width = val + '%'; core.dom.startTopProgress.style.width = val + "%";
} };
////// 设置加载进度条提示文字 ////// ////// 设置加载进度条提示文字 //////
loader.prototype._setStartLoadTipText = function (text) { loader.prototype._setStartLoadTipText = function (text) {
core.dom.startTopLoadTips.innerText = text; core.dom.startTopLoadTips.innerText = text;
} };
loader.prototype._load = function (callback) { loader.prototype._load = function (callback) {
this._loadMusics(); this._loadMusics();
@ -30,7 +27,7 @@ loader.prototype._load = function (callback) {
} else { } else {
this._load_sync(callback); this._load_sync(callback);
} }
} };
loader.prototype._load_sync = function (callback) { loader.prototype._load_sync = function (callback) {
this._loadAnimates_sync(); this._loadAnimates_sync();
@ -39,13 +36,13 @@ loader.prototype._load_sync = function (callback) {
core.loader._loadExtraImages_sync(function () { core.loader._loadExtraImages_sync(function () {
core.loader._loadAutotiles_sync(function () { core.loader._loadAutotiles_sync(function () {
core.loader._loadTilesets_sync(callback); core.loader._loadTilesets_sync(callback);
})
})
}); });
} });
});
};
loader.prototype._load_async = function (callback) { loader.prototype._load_async = function (callback) {
core.loader._setStartLoadTipText('正在加载资源文件...'); core.loader._setStartLoadTipText("正在加载资源文件...");
const all = {}; const all = {};
const _makeOnProgress = function (name) { const _makeOnProgress = function (name) {
@ -53,24 +50,31 @@ loader.prototype._load_async = function (callback) {
return (loaded, total) => { return (loaded, total) => {
all[name].loaded = loaded; all[name].loaded = loaded;
all[name].total = total; all[name].total = total;
let allLoaded = 0, allTotal = 0; let allLoaded = 0,
allTotal = 0;
for (const one of Object.values(all)) { for (const one of Object.values(all)) {
allLoaded += one.loaded; allLoaded += one.loaded;
allTotal += one.total; allTotal += one.total;
} }
console.log(allLoaded. allTotal); console.log(allLoaded.allTotal);
if (allTotal > 0) { if (allTotal > 0) {
if (allLoaded == allTotal) { if (allLoaded == allTotal) {
core.loader._setStartLoadTipText("正在处理资源文件... 请稍候..."); core.loader._setStartLoadTipText("正在处理资源文件... 请稍候...");
} else { } else {
core.loader._setStartLoadTipText('正在加载资源文件... ' + core.loader._setStartLoadTipText(
core.formatSize(allLoaded) + " / " + core.formatSize(allTotal) + "正在加载资源文件... " +
" (" + (allLoaded / allTotal * 100).toFixed(2) + "%)"); core.formatSize(allLoaded) +
" / " +
core.formatSize(allTotal) +
" (" +
((allLoaded / allTotal) * 100).toFixed(2) +
"%)"
);
} }
core.loader._setStartProgressVal(allLoaded / allTotal * 100); core.loader._setStartProgressVal((allLoaded / allTotal) * 100);
} }
}; };
} };
const _makeOnFinished = function (name) { const _makeOnFinished = function (name) {
return () => { return () => {
setTimeout(() => { setTimeout(() => {
@ -80,58 +84,121 @@ loader.prototype._load_async = function (callback) {
} }
callback(); callback();
}); });
} };
} };
if (main.splitChunkMap) { if (main.splitChunkMap) {
this._loadAnimates_chunked(main.splitChunkMap.animates, _makeOnProgress, _makeOnFinished); this._loadAnimates_chunked(
this._loadSounds_chunked(main.splitChunkMap.sounds, _makeOnProgress, _makeOnFinished); main.splitChunkMap.animates,
this._loadMaterials_chunked(main.splitChunkMap.materials, _makeOnProgress, _makeOnFinished); _makeOnProgress,
this._loadExtraImages_chunked(main.splitChunkMap.images, _makeOnProgress, _makeOnFinished); _makeOnFinished
this._loadAutotiles_chunked(main.splitChunkMap.autotiles, _makeOnProgress, _makeOnFinished); );
this._loadTilesets_chunked(main.splitChunkMap.tilesets, _makeOnProgress, _makeOnFinished); this._loadSounds_chunked(
main.splitChunkMap.sounds,
_makeOnProgress,
_makeOnFinished
);
this._loadMaterials_chunked(
main.splitChunkMap.materials,
_makeOnProgress,
_makeOnFinished
);
this._loadExtraImages_chunked(
main.splitChunkMap.images,
_makeOnProgress,
_makeOnFinished
);
this._loadAutotiles_chunked(
main.splitChunkMap.autotiles,
_makeOnProgress,
_makeOnFinished
);
this._loadTilesets_chunked(
main.splitChunkMap.tilesets,
_makeOnProgress,
_makeOnFinished
);
} else { } else {
this._loadAnimates_async(_makeOnProgress('animates'), _makeOnFinished('animates')); this._loadAnimates_async(
this._loadSounds_async(_makeOnProgress('sounds'), _makeOnFinished('sounds')); _makeOnProgress("animates"),
this._loadMaterials_async(_makeOnProgress('materials'), _makeOnFinished('materials')); _makeOnFinished("animates")
this._loadExtraImages_async(_makeOnProgress('images'), _makeOnFinished('images')); );
this._loadAutotiles_async(_makeOnProgress('autotiles'), _makeOnFinished('autotiles')); this._loadSounds_async(
this._loadTilesets_async(_makeOnProgress('tilesets'), _makeOnFinished('tilesets')); _makeOnProgress("sounds"),
_makeOnFinished("sounds")
);
this._loadMaterials_async(
_makeOnProgress("materials"),
_makeOnFinished("materials")
);
this._loadExtraImages_async(
_makeOnProgress("images"),
_makeOnFinished("images")
);
this._loadAutotiles_async(
_makeOnProgress("autotiles"),
_makeOnFinished("autotiles")
);
this._loadTilesets_async(
_makeOnProgress("tilesets"),
_makeOnFinished("tilesets")
);
} }
} };
// ----- 加载资源文件 ------ // // ----- 加载资源文件 ------ //
loader.prototype._loadMaterials_sync = function (callback) { loader.prototype._loadMaterials_sync = function (callback) {
this._setStartLoadTipText("正在加载资源文件..."); this._setStartLoadTipText("正在加载资源文件...");
this.loadImages("materials", core.materials, core.material.images, function () { this.loadImages(
"materials",
core.materials,
core.material.images,
function () {
core.loader._loadMaterials_afterLoad(); core.loader._loadMaterials_afterLoad();
callback(); callback();
}); }
} );
};
loader.prototype._loadMaterials_async = function (onprogress, onfinished) { loader.prototype._loadMaterials_async = function (onprogress, onfinished) {
this.loadImagesFromZip('project/materials/materials.h5data', core.materials, core.material.images, onprogress, function () { this.loadImagesFromZip(
"project/materials/materials.h5data",
core.materials,
core.material.images,
onprogress,
function () {
core.loader._loadMaterials_afterLoad(); core.loader._loadMaterials_afterLoad();
onfinished(); onfinished();
}); }
} );
};
loader.prototype._loadMaterials_chunked = async function (chunks, makeOnProgress, makeOnFinished) { loader.prototype._loadMaterials_chunked = async function (
await this._loadImagesFromChunks(chunks, core.materials, core.material.images, makeOnProgress, makeOnFinished); chunks,
makeOnProgress,
makeOnFinished
) {
await this._loadImagesFromChunks(
chunks,
core.materials,
core.material.images,
makeOnProgress,
makeOnFinished
);
core.loader._loadMaterials_afterLoad(); core.loader._loadMaterials_afterLoad();
} };
loader.prototype._loadMaterials_afterLoad = function () { loader.prototype._loadMaterials_afterLoad = function () {
const images = core.splitImage(core.material.images['icons']); const images = core.splitImage(core.material.images["icons"]);
for (let key in core.statusBar.icons) { for (let key in core.statusBar.icons) {
if (typeof core.statusBar.icons[key] == 'number') { if (typeof core.statusBar.icons[key] == "number") {
core.statusBar.icons[key] = images[core.statusBar.icons[key]]; core.statusBar.icons[key] = images[core.statusBar.icons[key]];
if (core.statusBar.image[key] != null) if (core.statusBar.image[key] != null)
core.statusBar.image[key].src = core.statusBar.icons[key].src; core.statusBar.image[key].src = core.statusBar.icons[key].src;
} }
} }
} };
// ------ 加载使用的图片 ------ // // ------ 加载使用的图片 ------ //
@ -139,38 +206,54 @@ loader.prototype._loadExtraImages_sync = function (callback) {
core.material.images.images = {}; core.material.images.images = {};
this._setStartLoadTipText("正在加载图片文件..."); this._setStartLoadTipText("正在加载图片文件...");
core.loadImages("images", core.images, core.material.images.images, callback); core.loadImages("images", core.images, core.material.images.images, callback);
} };
loader.prototype._loadExtraImages_async = function (onprogress, onfinished) { loader.prototype._loadExtraImages_async = function (onprogress, onfinished) {
core.material.images.images = {}; core.material.images.images = {};
// Check .gif // Check .gif
const gifs = images.filter(function (name) { const gifs = images.filter(function (name) {
return name.toLowerCase().endsWith('.gif'); return name.toLowerCase().endsWith(".gif");
}); });
// gif没有被压缩在zip中延迟加载... // gif没有被压缩在zip中延迟加载...
this._loadExtraImages_loadLazy(gifs); this._loadExtraImages_loadLazy(gifs);
images = images.filter((name) => !name.toLowerCase().endsWith('.gif')); images = images.filter((name) => !name.toLowerCase().endsWith(".gif"));
this.loadImagesFromZip('project/images/images.h5data', images, core.material.images.images, onprogress, onfinished); this.loadImagesFromZip(
} "project/images/images.h5data",
images,
core.material.images.images,
onprogress,
onfinished
);
};
loader.prototype._loadExtraImages_chunked = function (chunks, makeOnProgress, makeOnFinished) { loader.prototype._loadExtraImages_chunked = function (
chunks,
makeOnProgress,
makeOnFinished
) {
core.material.images.images = {}; core.material.images.images = {};
let images = core.images; let images = core.images;
// Check .gif // Check .gif
const gifs = images.filter(function (name) { const gifs = images.filter(function (name) {
return name.toLowerCase().endsWith('.gif'); return name.toLowerCase().endsWith(".gif");
}); });
// gif没有被压缩在zip中延迟加载... // gif没有被压缩在zip中延迟加载...
this._loadExtraImages_loadLazy(gifs); this._loadExtraImages_loadLazy(gifs);
images = images.filter((name) => !name.toLowerCase().endsWith('.gif')); images = images.filter((name) => !name.toLowerCase().endsWith(".gif"));
this._loadImagesFromChunks(chunks, images, core.material.images.images, makeOnProgress, makeOnFinished); this._loadImagesFromChunks(
} chunks,
images,
core.material.images.images,
makeOnProgress,
makeOnFinished
);
};
loader.prototype._loadExtraImages_loadLazy = function (list) { loader.prototype._loadExtraImages_loadLazy = function (list) {
list.forEach(function (gif) { list.forEach(function (gif) {
@ -180,7 +263,7 @@ loader.prototype._loadExtraImages_loadLazy = function (list) {
} }
}); });
}, this); }, this);
} };
// ------ 加载自动元件 ------ // // ------ 加载自动元件 ------ //
@ -194,27 +277,43 @@ loader.prototype._loadAutotiles_sync = function (callback) {
core.loader._loadAutotiles_afterLoad(keys, autotiles); core.loader._loadAutotiles_afterLoad(keys, autotiles);
callback(); callback();
}); });
} };
loader.prototype._loadAutotiles_async = function (onprogress, onfinished) { loader.prototype._loadAutotiles_async = function (onprogress, onfinished) {
core.material.images.autotile = {}; core.material.images.autotile = {};
var keys = Object.keys(core.material.icons.autotile); var keys = Object.keys(core.material.icons.autotile);
var autotiles = {}; var autotiles = {};
this.loadImagesFromZip('project/autotiles/autotiles.h5data', keys, autotiles, onprogress, function () { this.loadImagesFromZip(
"project/autotiles/autotiles.h5data",
keys,
autotiles,
onprogress,
function () {
core.loader._loadAutotiles_afterLoad(keys, autotiles); core.loader._loadAutotiles_afterLoad(keys, autotiles);
onfinished(); onfinished();
}); }
} );
};
loader.prototype._loadAutotiles_chunked = async function (chunks, makeOnProgress, makeOnFinished) { loader.prototype._loadAutotiles_chunked = async function (
chunks,
makeOnProgress,
makeOnFinished
) {
core.material.images.autotile = {}; core.material.images.autotile = {};
const keys = Object.keys(core.material.icons.autotile); const keys = Object.keys(core.material.icons.autotile);
const autotiles = {}; const autotiles = {};
await this._loadImagesFromChunks(chunks, keys, autotiles, makeOnProgress, makeOnFinished); await this._loadImagesFromChunks(
chunks,
keys,
autotiles,
makeOnProgress,
makeOnFinished
);
core.loader._loadAutotiles_afterLoad(keys, autotiles); core.loader._loadAutotiles_afterLoad(keys, autotiles);
} };
loader.prototype._loadAutotiles_afterLoad = function (keys, autotiles) { loader.prototype._loadAutotiles_afterLoad = function (keys, autotiles) {
// autotile需要保证顺序 // autotile需要保证顺序
@ -225,33 +324,53 @@ loader.prototype._loadAutotiles_afterLoad = function (keys, autotiles) {
setTimeout(function () { setTimeout(function () {
core.maps._makeAutotileEdges(); core.maps._makeAutotileEdges();
}); });
};
}
// ------ 加载额外素材 ------ // // ------ 加载额外素材 ------ //
loader.prototype._loadTilesets_sync = function (callback) { loader.prototype._loadTilesets_sync = function (callback) {
core.material.images.tilesets = {}; core.material.images.tilesets = {};
this._setStartLoadTipText("正在加载额外素材..."); this._setStartLoadTipText("正在加载额外素材...");
this.loadImages("tilesets", core.tilesets, core.material.images.tilesets, function () { this.loadImages(
"tilesets",
core.tilesets,
core.material.images.tilesets,
function () {
core.loader._loadTilesets_afterLoad(); core.loader._loadTilesets_afterLoad();
callback(); callback();
}); }
} );
};
loader.prototype._loadTilesets_async = function (onprogress, onfinished) { loader.prototype._loadTilesets_async = function (onprogress, onfinished) {
core.material.images.tilesets = {}; core.material.images.tilesets = {};
this.loadImagesFromZip('project/tilesets/tilesets.h5data', core.tilesets, core.material.images.tilesets, onprogress, function () { this.loadImagesFromZip(
"project/tilesets/tilesets.h5data",
core.tilesets,
core.material.images.tilesets,
onprogress,
function () {
core.loader._loadTilesets_afterLoad(); core.loader._loadTilesets_afterLoad();
onfinished(); onfinished();
}); }
} );
};
loader.prototype._loadTilesets_chunked = async function (chunks, makeOnProgress, makeOnFinished) { loader.prototype._loadTilesets_chunked = async function (
chunks,
makeOnProgress,
makeOnFinished
) {
core.material.images.tilesets = {}; core.material.images.tilesets = {};
await this._loadImagesFromChunks(chunks, core.tilesets, core.material.images.tilesets, makeOnProgress, makeOnFinished); await this._loadImagesFromChunks(
chunks,
core.tilesets,
core.material.images.tilesets,
makeOnProgress,
makeOnFinished
);
core.loader._loadTilesets_afterLoad(); core.loader._loadTilesets_afterLoad();
} };
loader.prototype._loadTilesets_afterLoad = function () { loader.prototype._loadTilesets_afterLoad = function () {
// 检查宽高是32倍数如果出错在控制台报错 // 检查宽高是32倍数如果出错在控制台报错
@ -264,7 +383,7 @@ loader.prototype._loadTilesets_afterLoad = function () {
console.warn("警告!" + imgName + "上的图块素材个数大于3000"); console.warn("警告!" + imgName + "上的图块素材个数大于3000");
} }
} }
} };
// ------ 实际加载一系列图片 ------ // // ------ 实际加载一系列图片 ------ //
@ -276,10 +395,9 @@ loader.prototype.loadImages = function (dir, names, toSave, callback) {
var items = 0; var items = 0;
for (var i = 0; i < names.length; i++) { for (var i = 0; i < names.length; i++) {
this.loadImage(dir, names[i], function (id, image) { this.loadImage(dir, names[i], function (id, image) {
core.loader._setStartLoadTipText('正在加载图片 ' + id + "..."); core.loader._setStartLoadTipText("正在加载图片 " + id + "...");
if (toSave[id] !== undefined) { if (toSave[id] !== undefined) {
if (image != null) if (image != null) toSave[id] = image;
toSave[id] = image;
return; return;
} }
toSave[id] = image; toSave[id] = image;
@ -288,46 +406,51 @@ loader.prototype.loadImages = function (dir, names, toSave, callback) {
if (items == names.length) { if (items == names.length) {
if (callback) callback(); if (callback) callback();
} }
}) });
} }
} };
loader.prototype.loadImage = function (dir, imgName, callback) { loader.prototype.loadImage = function (dir, imgName, callback) {
try { try {
var name = imgName; var name = imgName;
if (name.indexOf(".") < 0) if (name.indexOf(".") < 0) name = name + ".png";
name = name + ".png";
var image = new Image(); var image = new Image();
image.onload = function () { image.onload = function () {
image.setAttribute('_width', image.width); image.setAttribute("_width", image.width);
image.setAttribute('_height', image.height); image.setAttribute("_height", image.height);
callback(imgName, image); callback(imgName, image);
} };
image.onerror = function () { image.onerror = function () {
callback(imgName, null); callback(imgName, null);
} };
image.src = 'project/' + dir + '/' + name + "?v=" + main.version; image.src = "project/" + dir + "/" + name + "?v=" + main.version;
if (name.endsWith('.gif')) if (name.endsWith(".gif")) callback(imgName, null);
callback(imgName, null); } catch (e) {
}
catch (e) {
console.error(e); console.error(e);
} }
} };
// ------ 从zip中加载一系列图片 ------ // // ------ 从zip中加载一系列图片 ------ //
loader.prototype.loadImagesFromZip = function (url, names, toSave, onprogress, onfinished) { loader.prototype.loadImagesFromZip = function (
url,
names,
toSave,
onprogress,
onfinished
) {
if (!names || names.length == 0) { if (!names || names.length == 0) {
if (onfinished) onfinished(); if (onfinished) onfinished();
return; return;
} }
core.unzip(url + "?v=" + main.version, function (data) { core.unzip(
url + "?v=" + main.version,
function (data) {
var cnt = 1; var cnt = 1;
names.forEach(function (name) { names.forEach(function (name) {
var imgName = name; var imgName = name;
if (imgName.indexOf('.') < 0) imgName += '.png'; if (imgName.indexOf(".") < 0) imgName += ".png";
if (imgName in data) { if (imgName in data) {
var img = new Image(); var img = new Image();
var url = URL.createObjectURL(data[imgName]); var url = URL.createObjectURL(data[imgName]);
@ -335,21 +458,32 @@ loader.prototype.loadImagesFromZip = function (url, names, toSave, onprogress, o
img.onload = function () { img.onload = function () {
cnt--; cnt--;
URL.revokeObjectURL(url); URL.revokeObjectURL(url);
img.setAttribute('_width', img.width); img.setAttribute("_width", img.width);
img.setAttribute('_height', img.height); img.setAttribute("_height", img.height);
if (cnt == 0 && onfinished) onfinished(); if (cnt == 0 && onfinished) onfinished();
} };
img.src = url; img.src = url;
toSave[name] = img; toSave[name] = img;
} }
}); });
cnt--; cnt--;
if (cnt == 0 && onfinished) onfinished(); if (cnt == 0 && onfinished) onfinished();
}, null, false, onprogress); },
} null,
false,
onprogress
);
};
loader.prototype._loadImagesFromChunks = async function (chunks, names, toSave, makeOnProgress, makeOnFinished) { loader.prototype._loadImagesFromChunks = async function (
await Promise.all(chunks.map((chunk) => { chunks,
names,
toSave,
makeOnProgress,
makeOnFinished
) {
await Promise.all(
chunks.map((chunk) => {
const onfinished = makeOnFinished(chunk); const onfinished = makeOnFinished(chunk);
const onprogress = makeOnProgress(chunk); const onprogress = makeOnProgress(chunk);
return new Promise((resolve) => { return new Promise((resolve) => {
@ -358,8 +492,9 @@ loader.prototype._loadImagesFromChunks = async function (chunks, names, toSave,
resolve(); resolve();
}); });
}); });
})); })
} );
};
// ------ 加载动画文件 ------ // // ------ 加载动画文件 ------ //
@ -368,37 +503,67 @@ loader.prototype._loadAnimates_sync = function () {
if (main.supportBunch) { if (main.supportBunch) {
if (core.animates.length > 0) { if (core.animates.length > 0) {
core.http('GET', '__all_animates__?v=' + main.version + '&id=' + core.animates.join(','), null, function (content) { core.http(
var u = content.split('@@@~~~###~~~@@@'); "GET",
"__all_animates__?v=" + main.version + "&id=" + core.animates.join(","),
null,
function (content) {
var u = content.split("@@@~~~###~~~@@@");
for (var i = 0; i < core.animates.length; ++i) { for (var i = 0; i < core.animates.length; ++i) {
if (u[i] != '') { if (u[i] != "") {
core.material.animates[core.animates[i]] = core.loader._loadAnimate(u[i]); core.material.animates[core.animates[i]] =
core.loader._loadAnimate(u[i]);
} else { } else {
console.error('无法找到动画文件' + core.animates[i] + ''); console.error("无法找到动画文件" + core.animates[i] + "");
} }
} }
}, "text/plain; charset=x-user-defined"); },
"text/plain; charset=x-user-defined"
);
} }
return; return;
} }
core.animates.forEach(function (t) { core.animates.forEach(function (t) {
core.http('GET', 'project/animates/' + t + ".animate?v=" + main.version, null, function (content) { core.http(
"GET",
"project/animates/" + t + ".animate?v=" + main.version,
null,
function (content) {
core.material.animates[t] = core.loader._loadAnimate(content); core.material.animates[t] = core.loader._loadAnimate(content);
}, function (e) { },
function (e) {
console.error(e); console.error(e);
core.material.animates[t] = null; core.material.animates[t] = null;
}, "text/plain; charset=x-user-defined") },
"text/plain; charset=x-user-defined"
);
}); });
} };
loader.prototype._loadAnimates_async = function (onprogress, onfinished) { loader.prototype._loadAnimates_async = function (onprogress, onfinished) {
this._loadFileFromZip('project/animates/animates.h5data', this._saveAnimate, true, onprogress, onfinished); this._loadFileFromZip(
} "project/animates/animates.h5data",
this._saveAnimate,
true,
onprogress,
onfinished
);
};
loader.prototype._loadAnimates_chunked = function (chunks, makeOnProgress, makeOnFinished) { loader.prototype._loadAnimates_chunked = function (
this._loadFileFromChunks(chunks, this._saveAnimate, true, makeOnProgress, makeOnFinished); chunks,
} makeOnProgress,
makeOnFinished
) {
this._loadFileFromChunks(
chunks,
this._saveAnimate,
true,
makeOnProgress,
makeOnFinished
);
};
loader.prototype._saveAnimate = function (animates, onfinished) { loader.prototype._saveAnimate = function (animates, onfinished) {
for (var name in animates) { for (var name in animates) {
@ -409,7 +574,7 @@ loader.prototype._saveAnimate = function (animates, onfinished) {
} }
} }
onfinished(); onfinished();
} };
loader.prototype._loadAnimate = function (content) { loader.prototype._loadAnimate = function (content) {
try { try {
@ -422,8 +587,7 @@ loader.prototype._loadAnimate = function (content) {
content.bitmaps.forEach(function (t2) { content.bitmaps.forEach(function (t2) {
if (!t2) { if (!t2) {
data.images.push(null); data.images.push(null);
} } else {
else {
try { try {
var image = new Image(); var image = new Image();
image.src = t2; image.src = t2;
@ -433,31 +597,30 @@ loader.prototype._loadAnimate = function (content) {
data.images.push(null); data.images.push(null);
} }
} }
}) });
data.frame = content.frame_max; data.frame = content.frame_max;
data.frames = []; data.frames = [];
content.frames.forEach(function (t2) { content.frames.forEach(function (t2) {
var info = []; var info = [];
t2.forEach(function (t3) { t2.forEach(function (t3) {
info.push({ info.push({
'index': t3[0], index: t3[0],
'x': t3[1], x: t3[1],
'y': t3[2], y: t3[2],
'zoom': t3[3], zoom: t3[3],
'opacity': t3[4], opacity: t3[4],
'mirror': t3[5] || 0, mirror: t3[5] || 0,
'angle': t3[6] || 0, angle: t3[6] || 0,
}) });
}) });
data.frames.push(info); data.frames.push(info);
}); });
return data; return data;
} } catch (e) {
catch (e) {
console.error(e); console.error(e);
return null; return null;
} }
} };
// ------ 加载音乐和音效 ------ // // ------ 加载音乐和音效 ------ //
@ -467,22 +630,38 @@ loader.prototype._loadMusics = function () {
}); });
// 直接开始播放 // 直接开始播放
core.playBgm(main.startBgm); core.playBgm(main.startBgm);
} };
loader.prototype._loadSounds_sync = function () { loader.prototype._loadSounds_sync = function () {
this._setStartLoadTipText("正在加载音效文件..."); this._setStartLoadTipText("正在加载音效文件...");
core.sounds.forEach(function (t) { core.sounds.forEach(function (t) {
core.loader.loadOneSound(t); core.loader.loadOneSound(t);
}); });
} };
loader.prototype._loadSounds_async = function (onprogress, onfinished) { loader.prototype._loadSounds_async = function (onprogress, onfinished) {
this._loadFileFromZip('project/sounds/sounds.h5data', this._saveSounds, false, onprogress, onfinished); this._loadFileFromZip(
} "project/sounds/sounds.h5data",
this._saveSounds,
false,
onprogress,
onfinished
);
};
loader.prototype._loadSounds_chunked = function (chunks, makeOnProgress, makeOnFinished) { loader.prototype._loadSounds_chunked = function (
this._loadFileFromChunks(chunks, this._saveSounds, false, makeOnProgress, makeOnFinished); chunks,
} makeOnProgress,
makeOnFinished
) {
this._loadFileFromChunks(
chunks,
this._saveSounds,
false,
makeOnProgress,
makeOnFinished
);
};
loader.prototype._saveSounds = function (data, onfinished) { loader.prototype._saveSounds = function (data, onfinished) {
// 延迟解析 // 延迟解析
@ -494,25 +673,34 @@ loader.prototype._saveSounds = function (data, onfinished) {
} }
onfinished(); onfinished();
}); });
} };
loader.prototype.loadOneMusic = function (name) { loader.prototype.loadOneMusic = function (name) {
var music = new Audio(); var music = new Audio();
music.preload = 'none'; music.preload = "none";
if (main.bgmRemote) music.src = main.bgmRemoteRoot + core.firstData.name + '/' + name; if (main.bgmRemote)
else music.src = 'project/bgms/' + name; music.src = main.bgmRemoteRoot + core.firstData.name + "/" + name;
music.loop = 'loop'; else music.src = "project/bgms/" + name;
music.loop = "loop";
core.material.bgms[name] = music; core.material.bgms[name] = music;
} };
loader.prototype.loadOneSound = function (name) { loader.prototype.loadOneSound = function (name) {
core.http('GET', 'project/sounds/' + name + "?v=" + main.version, null, function (data) { core.http(
"GET",
"project/sounds/" + name + "?v=" + main.version,
null,
function (data) {
core.loader._loadOneSound_decodeData(name, data); core.loader._loadOneSound_decodeData(name, data);
}, function (e) { },
function (e) {
console.error(e); console.error(e);
core.material.sounds[name] = null; core.material.sounds[name] = null;
}, null, 'arraybuffer'); },
} null,
"arraybuffer"
);
};
loader.prototype._loadOneSound_decodeData = function (name, data) { loader.prototype._loadOneSound_decodeData = function (name, data) {
if (data instanceof Blob) { if (data instanceof Blob) {
@ -520,23 +708,26 @@ loader.prototype._loadOneSound_decodeData = function (name, data) {
blobReader.init(function () { blobReader.init(function () {
blobReader.readUint8Array(0, blobReader.size, function (uint8) { blobReader.readUint8Array(0, blobReader.size, function (uint8) {
core.loader._loadOneSound_decodeData(name, uint8.buffer); core.loader._loadOneSound_decodeData(name, uint8.buffer);
}) });
}); });
return; return;
} }
try { try {
core.musicStatus.audioContext.decodeAudioData(data, function (buffer) { core.musicStatus.audioContext.decodeAudioData(
data,
function (buffer) {
core.material.sounds[name] = buffer; core.material.sounds[name] = buffer;
}, function (e) { },
console.error(e); function (e) {
core.material.sounds[name] = null;
})
}
catch (e) {
console.error(e); console.error(e);
core.material.sounds[name] = null; core.material.sounds[name] = null;
} }
} );
} catch (e) {
console.error(e);
core.material.sounds[name] = null;
}
};
loader.prototype.loadBgm = function (name) { loader.prototype.loadBgm = function (name) {
name = core.getMappedName(name); name = core.getMappedName(name);
@ -547,8 +738,7 @@ loader.prototype.loadBgm = function (name) {
var index = core.musicStatus.cachedBgms.indexOf(name); var index = core.musicStatus.cachedBgms.indexOf(name);
if (index >= 0) { if (index >= 0) {
core.musicStatus.cachedBgms.splice(index, 1); core.musicStatus.cachedBgms.splice(index, 1);
} } else {
else {
// 预加载BGM // 预加载BGM
this._preloadBgm(core.material.bgms[name]); this._preloadBgm(core.material.bgms[name]);
// core.material.bgms[name].load(); // core.material.bgms[name].load();
@ -559,18 +749,20 @@ loader.prototype.loadBgm = function (name) {
} }
// 移动到缓存最前方 // 移动到缓存最前方
core.musicStatus.cachedBgms.unshift(name); core.musicStatus.cachedBgms.unshift(name);
} };
loader.prototype._preloadBgm = function (bgm) { loader.prototype._preloadBgm = function (bgm) {
bgm.volume = 0; bgm.volume = 0;
bgm.play(); bgm.play();
} };
loader.prototype.freeBgm = function (name) { loader.prototype.freeBgm = function (name) {
name = core.getMappedName(name); name = core.getMappedName(name);
if (!core.material.bgms[name]) return; if (!core.material.bgms[name]) return;
// 从cachedBgms中删除 // 从cachedBgms中删除
core.musicStatus.cachedBgms = core.musicStatus.cachedBgms.filter(function (t) { core.musicStatus.cachedBgms = core.musicStatus.cachedBgms.filter(function (
t
) {
return t != name; return t != name;
}); });
// 清掉缓存 // 清掉缓存
@ -584,16 +776,35 @@ loader.prototype.freeBgm = function (name) {
setTimeout(function () { setTimeout(function () {
core.loader.loadOneMusic(name); core.loader.loadOneMusic(name);
}, 3000); }, 3000);
} };
loader.prototype._loadFileFromZip = function (url, save, convertToText, onprogress, onfinished) { loader.prototype._loadFileFromZip = function (
core.unzip(url + '?v=' + main.version, function (data) { url,
save,
convertToText,
onprogress,
onfinished
) {
core.unzip(
url + "?v=" + main.version,
function (data) {
save(data, onfinished); save(data, onfinished);
}, null, convertToText, onprogress); },
} null,
convertToText,
onprogress
);
};
loader.prototype._loadFileFromChunks = async function (chunks, save, convertToText, makeOnProgress, makeOnFinished) { loader.prototype._loadFileFromChunks = async function (
await Promise.all(chunks.map((chunk) => { chunks,
save,
convertToText,
makeOnProgress,
makeOnFinished
) {
await Promise.all(
chunks.map((chunk) => {
const onfinished = makeOnFinished(chunk); const onfinished = makeOnFinished(chunk);
const onprogress = makeOnProgress(chunk); const onprogress = makeOnProgress(chunk);
return new Promise((resolve) => { return new Promise((resolve) => {
@ -602,5 +813,6 @@ loader.prototype._loadFileFromChunks = async function (chunks, save, convertToTe
resolve(); resolve();
}); });
}); });
})); })
} );
};

View File

@ -492,7 +492,6 @@ main.prototype.selectButton = function (index) {
main.prototype.importFonts = function (fonts) { main.prototype.importFonts = function (fonts) {
if (!(fonts instanceof Array) || fonts.length == 0) return; if (!(fonts instanceof Array) || fonts.length == 0) return;
var style = document.createElement("style"); var style = document.createElement("style");
style.type = "text/css";
var html = ""; var html = "";
fonts.forEach(function (font) { fonts.forEach(function (font) {
html += html +=
@ -910,7 +909,7 @@ main.prototype.listen = function () {
////// 点击“开始游戏”时 ////// ////// 点击“开始游戏”时 //////
main.dom.playGame.onclick = function () { main.dom.playGame.onclick = function () {
main.dom.startButtons.style.display = "none"; main.dom.startButtons.style.display = "none";
main.core.control.checkBgm(); main.core.checkBgm();
if (main.levelChoose.length == 0) { if (main.levelChoose.length == 0) {
core.events.startGame(""); core.events.startGame("");
@ -923,13 +922,13 @@ main.prototype.listen = function () {
////// 点击“载入游戏”时 ////// ////// 点击“载入游戏”时 //////
main.dom.loadGame.onclick = function () { main.dom.loadGame.onclick = function () {
main.core.control.checkBgm(); main.core.checkBgm();
main.core.load(); main.core.load();
}; };
////// 点击“录像回放”时 ////// ////// 点击“录像回放”时 //////
main.dom.replayGame.onclick = function () { main.dom.replayGame.onclick = function () {
main.core.control.checkBgm(); main.core.checkBgm();
main.core.chooseReplayFile(); main.core.chooseReplayFile();
}; };

BIN
project/bgms/Ascension.opus Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
project/bgms/Halbmond.opus Normal file

Binary file not shown.

BIN
project/bgms/ed.opus Normal file

Binary file not shown.

Binary file not shown.

View File

@ -903,9 +903,13 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"zone" "zone"
], ],
"bgms": [ "bgms": [
"Ascension.opus",
"Asphodelus_Ceui.opus", "Asphodelus_Ceui.opus",
"Blind_Alley.opus", "Blind_Alley.opus",
"Blood_Stain.opus",
"Crawler.opus", "Crawler.opus",
"Halbmond.opus",
"ed.opus",
"op.opus", "op.opus",
"theme.opus" "theme.opus"
], ],
@ -1000,7 +1004,6 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"aiy820000010.opus", "aiy820000010.opus",
"aiy820000020.opus", "aiy820000020.opus",
"attack.opus", "attack.opus",
"attack.opus",
"bomb.opus", "bomb.opus",
"cancel.opus", "cancel.opus",
"centerFly.opus", "centerFly.opus",
@ -1025,6 +1028,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
], ],
"fonts": [ "fonts": [
"HATTEN", "HATTEN",
"Verdana",
"number", "number",
"pala", "pala",
"simhei" "simhei"
@ -1447,7 +1451,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
}, },
{ {
"type": "function", "type": "function",
"function": "function(){\ncore.control.checkBgm()\n}" "function": "function(){\ncore.checkBgm()\n}"
}, },
{ {
"type": "if", "type": "if",
@ -1495,6 +1499,10 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"type": "setValue", "type": "setValue",
"name": "item:fly", "name": "item:fly",
"value": "1" "value": "1"
},
{
"type": "insert",
"name": "强制横屏"
} }
], ],
"shops": [ "shops": [

View File

@ -1,7 +1,7 @@
var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
{ {
"greenSlime": {"name":"绿头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "greenSlime": {"name":"绿头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0,"magic":false},
"redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"value":10}, "redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"value":10,"magic":false},
"blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0},
"slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[1,9]}, "slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[1,9]},
"bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"exp":0,"point":0,"special":[1]}, "bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"exp":0,"point":0,"special":[1]},

File diff suppressed because it is too large Load Diff

BIN
project/fonts/Verdana.ttf Normal file

Binary file not shown.

View File

@ -160,7 +160,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// ...可以新增一些其他内容,比如创建个画布在右上角显示什么内容等等 // ...可以新增一些其他内容,比如创建个画布在右上角显示什么内容等等
}, },
"afterChangeFloor": function (floorId) { "afterChangeFloor": function (floorId) {
// 转换楼层结束的事件;此函数会在整个楼层切换完全结束后再执行 // 转换楼层结束的事件;此函数会在整个楼层切换完全结束后再执行
// floorId是切换到的楼层 // floorId是切换到的楼层
@ -531,15 +531,21 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
var hero_hp = core.getRealStatusOrDefault(hero, 'hp'), var hero_hp = core.getRealStatusOrDefault(hero, 'hp'),
hero_atk = core.getRealStatusOrDefault(hero, 'atk'), hero_atk = core.getRealStatusOrDefault(hero, 'atk'),
hero_def = core.getRealStatusOrDefault(hero, 'def'), hero_def = core.getRealStatusOrDefault(hero, 'def'),
hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'); hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'),
hero_speed = core.getRealStatusOrDefault(hero, 'speed');
var mon_hp = core.getEnemyValue(enemy, 'hp', x, y, floorId), var mon_hp = core.getEnemyValue(enemy, 'hp', x, y, floorId),
mon_atk = core.getEnemyValue(enemy, 'atk', x, y, floorId), mon_atk = core.getEnemyValue(enemy, 'atk', x, y, floorId),
mon_def = core.getEnemyValue(enemy, 'def', x, y, floorId), mon_def = core.getEnemyValue(enemy, 'def', x, y, floorId),
mon_mdef = core.getEnemyValue(enemy, 'mdef', x, y, floorId),
mon_speed = core.getEnemyValue(enemy, 'speed', x, y, floorId),
mon_special = core.getEnemyValue(enemy, 'special', x, y, floorId); mon_special = core.getEnemyValue(enemy, 'special', x, y, floorId);
var mon_money = core.getEnemyValue(enemy, 'money', x, y, floorId), var mon_money = core.getEnemyValue(enemy, 'money', x, y, floorId),
mon_exp = core.getEnemyValue(enemy, 'exp', x, y, floorId), mon_exp = core.getEnemyValue(enemy, 'exp', x, y, floorId),
mon_point = core.getEnemyValue(enemy, 'point', x, y, floorId); mon_point = core.getEnemyValue(enemy, 'point', x, y, floorId);
var mon_barrier = 0,
mon_absorb_damage = 0,
mon_magic = core.getEnemyValue(enemy, 'magic', x, y, floorId);
// 模仿 // 模仿
if (core.hasSpecial(mon_special, 10)) { if (core.hasSpecial(mon_special, 10)) {
mon_atk = hero_atk; mon_atk = hero_atk;
@ -633,10 +639,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
"hp": Math.floor(mon_hp), "hp": Math.floor(mon_hp),
"atk": Math.floor(mon_atk), "atk": Math.floor(mon_atk),
"def": Math.floor(mon_def), "def": Math.floor(mon_def),
"mdef": Math.floor(mon_mdef),
"speed": Math.floor(mon_speed),
"barrier": Math.floor(mon_barrier),
"absorb": Math.floor(mon_absorb_damage),
"money": Math.floor(mon_money), "money": Math.floor(mon_money),
"exp": Math.floor(mon_exp), "exp": Math.floor(mon_exp),
"point": Math.floor(mon_point), "point": Math.floor(mon_point),
"special": mon_special, "special": mon_special,
"magic": mon_magic,
"guards": guards, // 返回支援情况 "guards": guards, // 返回支援情况
}; };
}, },
@ -655,15 +666,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
hero_atk = core.getRealStatusOrDefault(hero, 'atk'), hero_atk = core.getRealStatusOrDefault(hero, 'atk'),
hero_def = core.getRealStatusOrDefault(hero, 'def'), hero_def = core.getRealStatusOrDefault(hero, 'def'),
hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'), hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'),
hero_speed = core.getRealStatusOrDefault(hero, 'speed'),
hero_magic = core.getRealStatusOrDefault(hero, 'magic'),
origin_hero_hp = core.getStatusOrDefault(hero, 'hp'), origin_hero_hp = core.getStatusOrDefault(hero, 'hp'),
origin_hero_atk = core.getStatusOrDefault(hero, 'atk'), origin_hero_atk = core.getStatusOrDefault(hero, 'atk'),
origin_hero_def = core.getStatusOrDefault(hero, 'def'); origin_hero_def = core.getStatusOrDefault(hero, 'def');
// 勇士的负属性都按0计算
hero_hp = Math.max(0, hero_hp);
hero_atk = Math.max(0, hero_atk);
hero_def = Math.max(0, hero_def);
hero_mdef = Math.max(0, hero_mdef);
// 怪物的各项数据 // 怪物的各项数据
// 对坚固模仿等处理扔到了脚本编辑-getEnemyInfo之中 // 对坚固模仿等处理扔到了脚本编辑-getEnemyInfo之中
@ -671,23 +680,34 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
var mon_hp = enemyInfo.hp, var mon_hp = enemyInfo.hp,
mon_atk = enemyInfo.atk, mon_atk = enemyInfo.atk,
mon_def = enemyInfo.def, mon_def = enemyInfo.def,
mon_special = enemyInfo.special; mon_mdef = enemyInfo.mdef,
mon_speed = enemyInfo.speed,
mon_special = enemyInfo.special,
mon_absorb_damage = enemyInfo.absorb,
mon_barrier = enemyInfo.barrier;
//---第一部分:静态属性修正---
//此处写入静态影响勇士属性的勇士或怪物技能静态影响怪物属性的技能于getEnemyInfo中写入
// 技能的处理 // 技能的处理
if (core.getFlag('skill', 0) == 1) { // 开启了技能1二倍斩 if (core.getFlag('skill', 0) == 1) { // 开启了技能1二倍斩
hero_atk *= 2; // 计算时攻击力翻倍 hero_atk *= 2; // 计算时攻击力翻倍
} }
//勇士属性取整
hero_atk = Math.max(0, Math.floor(hero_atk));
hero_def = Math.max(0, Math.floor(hero_def));
hero_mdef = Math.max(0, Math.floor(hero_mdef));
hero_speed = Math.max(0, Math.floor(hero_speed));
// 如果是无敌属性,且勇士未持有十字架 // 如果是无敌属性,且勇士未持有十字架
if (core.hasSpecial(mon_special, 20) && !core.hasItem("cross")) if (core.hasSpecial(mon_special, 20) && !core.hasItem("cross"))
return null; // 不可战斗 return null; // 不可战斗
// 战前造成的额外伤害(可被护盾抵消) // 战前造成的额外伤害(可被护盾抵消)
var init_damage = 0; let init_damage = 0;
// 吸血 // 吸血
if (core.hasSpecial(mon_special, 11)) { if (core.hasSpecial(mon_special, 11)) {
var vampire_damage = hero_hp * enemy.vampire; let vampire_damage = hero_hp * enemy.vampire;
// 如果有神圣盾免疫吸血等可以在这里写 // 如果有神圣盾免疫吸血等可以在这里写
// 也可以用hasItem和hasEquip来判定装备 // 也可以用hasItem和hasEquip来判定装备
@ -701,17 +721,60 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
init_damage += vampire_damage; init_damage += vampire_damage;
} }
//——第二部分:变量定义和初始赋值——
// 每回合怪物对勇士造成的战斗伤害 // 每回合怪物对勇士造成的战斗伤害
var per_damage = mon_atk - hero_def; let per_damage = Math.max(mon_atk - hero_def, 0);
if (enemyInfo.magic) per_damage = Math.max(mon_atk - hero_mdef, 0);
// 战斗伤害不能为负值 //
if (per_damage < 0) per_damage = 0; let hero_per_damage = Math.max(hero_atk - mon_def, 0);
if (hero_magic) hero_per_damage = Math.max(hero_atk - mon_mdef, 0);
let damage = 0,
hero_turn = 0,
mon_turn = 0;
//---第三部分:递归开始---
let length = hero_speed * mon_speed;
for (let now_mon_hp = mon_hp, last_mon_hp = mon_hp, mon_length = length, hero_length = length, mon_time = 0, hero_time = 0; now_mon_hp > 0;) { //勇士和怪物的长度
mon_time = mon_length / mon_speed;
hero_time = hero_length / hero_speed;
if ((mon_time < hero_time) || ((mon_time = hero_time) && (mon_speed > hero_speed))) { //怪物攻击的回合
//这里计算怪物攻击时发生的各种变化
//伤害与回合增加
damage += per_damage;
if (core.hasSpecial(mon_special, 6)) {
mon_turn += enemy.n;
} else {
mon_turn += 1;
}
//重新为长度赋值
mon_length = length;
hero_length = hero_length - mon_time * hero_speed;
} else { //勇士攻击的回合
// 这里计算勇士攻击时发生的各种变化
// 伤害与回合数增加
now_mon_hp -= hero_per_damage;
hero_turn += 1; //勇士回合+1如果有勇士每回合多次攻击的情况在这里写判断
// 无法战斗计算
if (hero_turn % 50 == 0) {
if (now_mon_hp >= last_mon_hp) return null;
last_mon_hp = now_mon_hp;
}
//重新为长度赋值
hero_length = length;
mon_length = mon_length - hero_time * mon_speed;
}
}
//下面这些还没修改
// 连击 // 连击
if (core.hasSpecial(mon_special, 6)) per_damage *= (enemy.n || 2); if (core.hasSpecial(mon_special, 6)) per_damage *= (enemy.n || 2);
// 每回合的反击伤害;反击是按照勇士的攻击次数来计算回合 // 每回合的反击伤害;反击是按照勇士的攻击次数来计算回合
var counterDamage = 0; let counterDamage = 0;
if (core.hasSpecial(mon_special, 8)) if (core.hasSpecial(mon_special, 8))
counterDamage += Math.floor((enemy.counterAttack || core.values.counterAttack) * hero_atk); counterDamage += Math.floor((enemy.counterAttack || core.values.counterAttack) * hero_atk);
@ -725,19 +788,14 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// 净化 // 净化
if (core.hasSpecial(mon_special, 9)) if (core.hasSpecial(mon_special, 9))
init_damage += Math.floor((enemy.purify || core.values.purify) * hero_mdef); init_damage += Math.floor((enemy.purify || core.values.purify) * hero_mdef);
//上面这些还没修改
// 勇士每回合对怪物造成的伤害 //勇士护盾计算
var hero_per_damage = Math.max(hero_atk - mon_def, 0); let barrier = hero_mdef;
if (enemyInfo.magic) barrier = hero_def;
// 如果没有破防,则不可战斗
if (hero_per_damage <= 0) return null;
// 勇士的攻击回合数;为怪物生命除以每回合伤害向上取整
var turn = Math.ceil(mon_hp / hero_per_damage);
// ------ 支援 ----- // // ------ 支援 ----- //
// 这个递归最好想明白为什么flag:__extraTurn__是怎么用的 // 这个递归最好想明白为什么flag:__extraTurn__是怎么用的
var guards = core.getFlag("__guards__" + x + "_" + y, enemyInfo.guards); /*var guards = core.getFlag("__guards__" + x + "_" + y, enemyInfo.guards);
var guard_before_current_enemy = false; // ------ 支援怪是先打(true)还是后打(false) var guard_before_current_enemy = false; // ------ 支援怪是先打(true)还是后打(false)
turn += core.getFlag("__extraTurn__", 0); turn += core.getFlag("__extraTurn__", 0);
if (guards.length > 0) { if (guards.length > 0) {
@ -764,13 +822,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
turn += core.getFlag("__extraTurn__", 0); turn += core.getFlag("__extraTurn__", 0);
} }
} }
core.removeFlag("__extraTurn__"); core.removeFlag("__extraTurn__");*/
// ------ 支援END ------ // // ------ 支援END ------ //
// 最终伤害:初始伤害 + 怪物对勇士造成的伤害 + 反击伤害 // 最终伤害:初始伤害 + 怪物对勇士造成的伤害 + 反击伤害
var damage = init_damage + (turn - 1) * per_damage + turn * counterDamage; damage += init_damage + hero_turn * counterDamage;
// 再扣去护盾 // 再扣去护盾
damage -= hero_mdef; damage -= barrier;
// 检查是否允许负伤 // 检查是否允许负伤
if (!core.flags.enableNegativeDamage) if (!core.flags.enableNegativeDamage)
@ -788,12 +846,18 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
"mon_hp": Math.floor(mon_hp), "mon_hp": Math.floor(mon_hp),
"mon_atk": Math.floor(mon_atk), "mon_atk": Math.floor(mon_atk),
"mon_def": Math.floor(mon_def), "mon_def": Math.floor(mon_def),
"mon_mdef": Math.floor(mon_mdef),
"init_damage": Math.floor(init_damage), "init_damage": Math.floor(init_damage),
"per_damage": Math.floor(per_damage), "per_damage": Math.floor(per_damage),
"hero_per_damage": Math.floor(hero_per_damage), "hero_per_damage": Math.floor(hero_per_damage),
"turn": Math.floor(turn), "turn": Math.floor(hero_turn),
"mon_turn": Math.floor(mon_turn),
"damage": Math.floor(damage) "damage": Math.floor(damage)
}; };
/*TODO:return
1. 显示怪物是魔攻还是物攻在怪物名字上做颜色变化物攻是黄色魔攻是蓝色
2. 一防减伤是物防还是魔防由怪物是物攻还是魔攻来转换
3. 特殊战斗的怪物在怪物手册里伤害写为特殊战*/
} }
}, },
"actions": { "actions": {
@ -824,7 +888,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
core.openBook(true); core.openBook(true);
break; break;
case 71: // G使用楼传器 case 71: // G使用楼传器
core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId)); flags.canMoveFloor = core.canMoveFloor()
if (core.isPlaying()) core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId));
core.status.route.push("key:71");
break; break;
case 65: // A读取自动存档回退 case 65: // A读取自动存档回退
core.doSL("autoSave", "load"); core.doSL("autoSave", "load");

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -332,7 +332,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
"text": "可以自由往来去过的楼层", "text": "可以自由往来去过的楼层",
"hideInReplay": true, "hideInReplay": true,
"hideInToolbox": true, "hideInToolbox": true,
"useItemEffect": "//core.ui.drawFly(core.floorIds.indexOf(core.status.floorId));\ncore.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId));", "useItemEffect": "//core.ui.drawFly(core.floorIds.indexOf(core.status.floorId));\nflags.canMoveFloor = core.canMoveFloor()\nif (core.isPlaying()) core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId));",
"canUseItemEffect": "(function () {\n\tif (core.flags.flyNearStair && !core.nearStair() && !core.canMoveFloor())\n\t\treturn false;\n\treturn core.status.maps[core.status.floorId].canFlyFrom;\n})();" "canUseItemEffect": "(function () {\n\tif (core.flags.flyNearStair && !core.nearStair() && !core.canMoveFloor())\n\t\treturn false;\n\treturn core.status.maps[core.status.floorId].canFlyFrom;\n})();"
}, },
"coin": { "coin": {

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
html, body { html,
body {
margin: 0; margin: 0;
padding: 0; padding: 0;
width: 100%; width: 100%;
@ -89,7 +90,7 @@
} }
#startTopHint { #startTopHint {
color: #66CCFF; color: #66ccff;
position: absolute; position: absolute;
bottom: 0; bottom: 0;
left: 5%; left: 5%;
@ -98,12 +99,12 @@
} }
#startBackground { #startBackground {
position:absolute; position: absolute;
top:50%; top: 50%;
left:50%; left: 50%;
height: 100%; height: 100%;
width: 100%; width: 100%;
transform:translate(-50%,-50%); transform: translate(-50%, -50%);
z-index: 260; z-index: 260;
} }
@ -144,8 +145,8 @@
/* default value */ /* default value */
background-color: #000000; background-color: #000000;
opacity: 0.55; opacity: 0.55;
color: #FFFFFF; color: #ffffff;
border: #FFFFFF 0px solid; border: #ffffff 0px solid;
caret-color: #ffffff; caret-color: #ffffff;
border-radius: 0px; border-radius: 0px;
} }
@ -161,7 +162,7 @@
.startButton { .startButton {
width: 100%; width: 100%;
margin: 0; margin: 0;
font:1.2rem "pala", sans-serif; font: 1.2rem pala, sans-serif;
font-weight: normal; font-weight: normal;
display: block; display: block;
cursor: pointer; cursor: pointer;
@ -216,19 +217,19 @@
left: 0; left: 0;
padding: 3px; padding: 3px;
} }
#statusBar .status{ #statusBar .status {
position: relative; position: relative;
display: block; display: block;
float: left; float: left;
width: 100%; width: 100%;
} }
.status img{ .status img {
vertical-align: middle; vertical-align: middle;
width: auto; width: auto;
height: 100%; height: 100%;
max-height: 1.6em; max-height: 1.6em;
} }
#statusBar span{ #statusBar span {
font: bold italic 1.1em Verdana; font: bold italic 1.1em Verdana;
display: inline; display: inline;
} }
@ -251,7 +252,7 @@
display: none; display: none;
padding: 3px; padding: 3px;
} }
#toolBar .tools{ #toolBar .tools {
position: relative; position: relative;
display: block; display: block;
float: left; float: left;
@ -268,7 +269,12 @@ p#hard {
word-break: keep-all; word-break: keep-all;
} }
span#poison, span#weak, span#curse, span#pickaxe, span#bomb, span#fly { span#poison,
span#weak,
span#curse,
span#pickaxe,
span#bomb,
span#fly {
font-style: normal; font-style: normal;
font-size: 1em; font-size: 1em;
} }
@ -350,8 +356,8 @@ p#name {
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
background: rgba(127,127,127,0.6); background: rgba(127, 127, 127, 0.6);
z-index: 2000 z-index: 2000;
} }
#inputDialog { #inputDialog {
@ -377,7 +383,7 @@ p#name {
margin-bottom: 10px; margin-bottom: 10px;
padding: 5px 3px; padding: 5px 3px;
border: 1px solid; border: 1px solid;
background: #F0F0F0; background: #f0f0f0;
} }
#inputYes { #inputYes {
@ -386,24 +392,37 @@ p#name {
} }
#inputNo { #inputNo {
float:right; float: right;
margin-right: 10%; margin-right: 10%;
} }
#_selector, ._uievent_selector { #_selector,
._uievent_selector {
animation: selector 2s ease-in-out 0s infinite normal none running; animation: selector 2s ease-in-out 0s infinite normal none running;
} }
@-webkit-keyframes selector { @-webkit-keyframes selector {
0% { opacity: 0.95; } 0% {
50% { opacity: 0.55; } opacity: 0.95;
100% { opacity: 0.95; } }
50% {
opacity: 0.55;
}
100% {
opacity: 0.95;
}
} }
@keyframes selector { @keyframes selector {
0% { opacity: 0.95; } 0% {
50% { opacity: 0.55; } opacity: 0.95;
100% { opacity: 0.95; } }
50% {
opacity: 0.55;
}
100% {
opacity: 0.95;
}
} }
#next { #next {
@ -416,8 +435,8 @@ p#name {
border-bottom-style: solid; border-bottom-style: solid;
border-right-width: 4px; border-right-width: 4px;
border-right-style: solid; border-right-style: solid;
-webkit-animation: next .5s ease-in-out alternate infinite; -webkit-animation: next 0.5s ease-in-out alternate infinite;
animation: next .5s ease-in-out alternate infinite; animation: next 0.5s ease-in-out alternate infinite;
left: 0; left: 0;
top: 0; top: 0;
opacity: 0.7; opacity: 0.7;
@ -467,15 +486,27 @@ p#name {
} }
@-webkit-keyframes startImage { @-webkit-keyframes startImage {
0% { opacity: 0; } 0% {
60% { opacity: 1; } opacity: 0;
100% { opacity: 0; } }
60% {
opacity: 1;
}
100% {
opacity: 0;
}
} }
@keyframes startImage { @keyframes startImage {
0% { opacity: 0; } 0% {
60% { opacity: 1; } opacity: 0;
100% { opacity: 0; } }
60% {
opacity: 1;
}
100% {
opacity: 0;
}
} }
.startImageDivAnimation { .startImageDivAnimation {
@ -484,13 +515,21 @@ p#name {
} }
@-webkit-keyframes startImageDivDisappear { @-webkit-keyframes startImageDivDisappear {
0% { opacity: 1 } 0% {
100% { opacity: 0 } opacity: 1;
}
100% {
opacity: 0;
}
} }
@keyframes startImageDivDisappear { @keyframes startImageDivDisappear {
0% { opacity: 1 } 0% {
100% { opacity: 0 } opacity: 1;
}
100% {
opacity: 0;
}
} }
#ui-editor { #ui-editor {
z-index: 9999; z-index: 9999;
@ -517,15 +556,27 @@ p#name {
} }
@keyframes warning { @keyframes warning {
0 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);} 0 % {
50 % { text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);} text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
100 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);} }
50 % {
text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);
}
100 % {
text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
}
} }
@-webkit - keyframes warning { @-webkit - keyframes warning {
0 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);} 0 % {
50 % { text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);} text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
100 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);} }
50 % {
text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);
}
100 % {
text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
}
} }
.gameCanvas { .gameCanvas {