Remove isset
This commit is contained in:
parent
87cd6a09de
commit
415267fc25
@ -92,7 +92,7 @@ actions.prototype.unregisterAction = function (action, name) {
|
|||||||
////// 执行一个用户交互行为 //////
|
////// 执行一个用户交互行为 //////
|
||||||
actions.prototype.doRegisteredAction = function (action) {
|
actions.prototype.doRegisteredAction = function (action) {
|
||||||
var actions = this.actions[action];
|
var actions = this.actions[action];
|
||||||
if (!core.isset(actions)) return false;
|
if (!actions) return false;
|
||||||
for (var i = 0; i < actions.length; ++i) {
|
for (var i = 0; i < actions.length; ++i) {
|
||||||
if (actions[i].func.apply(this, Array.prototype.slice.call(arguments, 1)))
|
if (actions[i].func.apply(this, Array.prototype.slice.call(arguments, 1)))
|
||||||
return true;
|
return true;
|
||||||
@ -118,7 +118,7 @@ actions.prototype.onkeyDown = function (e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
actions.prototype._sys_onkeyDown = function (e) {
|
actions.prototype._sys_onkeyDown = function (e) {
|
||||||
if (!core.isset(core.status.holdingKeys)) core.status.holdingKeys = [];
|
core.status.holdingKeys = core.status.holdingKeys || []
|
||||||
var isArrow = {37: true, 38: true, 39: true, 40: true}[e.keyCode]
|
var isArrow = {37: true, 38: true, 39: true, 40: true}[e.keyCode]
|
||||||
if (isArrow && !core.status.lockControl) {
|
if (isArrow && !core.status.lockControl) {
|
||||||
for (var ii = 0; ii < core.status.holdingKeys.length; ii++) {
|
for (var ii = 0; ii < core.status.holdingKeys.length; ii++) {
|
||||||
@ -382,7 +382,7 @@ actions.prototype._sys_keyUp = function (keyCode, altKey) {
|
|||||||
if (!core.status.played)
|
if (!core.status.played)
|
||||||
return true;
|
return true;
|
||||||
this.actionsdata.onKeyUp(keyCode, altKey);
|
this.actionsdata.onKeyUp(keyCode, altKey);
|
||||||
if (core.isset(core.status.automaticRoute) && core.status.automaticRoute.autoHeroMove) {
|
if (core.status.automaticRoute && core.status.automaticRoute.autoHeroMove) {
|
||||||
core.stopAutomaticRoute();
|
core.stopAutomaticRoute();
|
||||||
}
|
}
|
||||||
core.stopHero();
|
core.stopHero();
|
||||||
@ -712,7 +712,7 @@ actions.prototype._sys_keyDownCtrl = function () {
|
|||||||
}
|
}
|
||||||
if (core.status.event.id == 'action' && core.status.event.data.type == 'sleep'
|
if (core.status.event.id == 'action' && core.status.event.data.type == 'sleep'
|
||||||
&& !core.status.event.data.current.noSkip) {
|
&& !core.status.event.data.current.noSkip) {
|
||||||
if (core.isset(core.timeout.sleepTimeout) && Object.keys(core.animateFrame.asyncId).length == 0) {
|
if (core.timeout.sleepTimeout && Object.keys(core.animateFrame.asyncId).length == 0) {
|
||||||
clearTimeout(core.timeout.sleepTimeout);
|
clearTimeout(core.timeout.sleepTimeout);
|
||||||
core.timeout.sleepTimeout = null;
|
core.timeout.sleepTimeout = null;
|
||||||
core.doAction();
|
core.doAction();
|
||||||
@ -747,7 +747,7 @@ actions.prototype._sys_longClick_lockControl = function (x, y) {
|
|||||||
// 长按可以跳过等待事件
|
// 长按可以跳过等待事件
|
||||||
if (core.status.event.id == 'action' && core.status.event.data.type == 'sleep'
|
if (core.status.event.id == 'action' && core.status.event.data.type == 'sleep'
|
||||||
&& !core.status.event.data.current.noSkip) {
|
&& !core.status.event.data.current.noSkip) {
|
||||||
if (core.isset(core.timeout.sleepTimeout) && Object.keys(core.animateFrame.asyncId).length == 0) {
|
if (core.timeout.sleepTimeout && Object.keys(core.animateFrame.asyncId).length == 0) {
|
||||||
clearTimeout(core.timeout.sleepTimeout);
|
clearTimeout(core.timeout.sleepTimeout);
|
||||||
core.timeout.sleepTimeout = null;
|
core.timeout.sleepTimeout = null;
|
||||||
core.doAction();
|
core.doAction();
|
||||||
@ -824,9 +824,9 @@ actions.prototype._keyUpCenterFly = function (keycode) {
|
|||||||
|
|
||||||
////// 点击确认框时 //////
|
////// 点击确认框时 //////
|
||||||
actions.prototype._clickConfirmBox = function (x, y) {
|
actions.prototype._clickConfirmBox = function (x, y) {
|
||||||
if ((x == 4 || x == 5) && y == 7 && core.isset(core.status.event.data.yes))
|
if ((x == 4 || x == 5) && y == 7 && core.status.event.data.yes)
|
||||||
core.status.event.data.yes();
|
core.status.event.data.yes();
|
||||||
if ((x == 7 || x == 8) && y == 7 && core.isset(core.status.event.data.no))
|
if ((x == 7 || x == 8) && y == 7 && core.status.event.data.no)
|
||||||
core.status.event.data.no();
|
core.status.event.data.no();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -845,12 +845,12 @@ actions.prototype._keyUpConfirmBox = function (keycode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (keycode == 13 || keycode == 32 || keycode == 67) {
|
if (keycode == 13 || keycode == 32 || keycode == 67) {
|
||||||
if (core.status.event.selection == 0 && core.isset(core.status.event.data.yes)) {
|
if (core.status.event.selection == 0 && core.status.event.data.yes) {
|
||||||
core.status.event.selection = null;
|
core.status.event.selection = null;
|
||||||
core.status.event.data.yes();
|
core.status.event.data.yes();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (core.status.event.selection == 1 && core.isset(core.status.event.data.no)) {
|
if (core.status.event.selection == 1 && core.status.event.data.no) {
|
||||||
core.status.event.selection = null;
|
core.status.event.selection = null;
|
||||||
core.status.event.data.no();
|
core.status.event.data.no();
|
||||||
return;
|
return;
|
||||||
@ -948,7 +948,7 @@ actions.prototype._clickBook = function (x, y) {
|
|||||||
}
|
}
|
||||||
// 怪物信息
|
// 怪物信息
|
||||||
var data = core.status.event.data;
|
var data = core.status.event.data;
|
||||||
if (core.isset(data) && y < 12) {
|
if (data != null && y < 12) {
|
||||||
var page = parseInt(data / 6);
|
var page = parseInt(data / 6);
|
||||||
var index = 6 * page + parseInt(y / 2);
|
var index = 6 * page + parseInt(y / 2);
|
||||||
core.ui.drawBook(index);
|
core.ui.drawBook(index);
|
||||||
@ -983,7 +983,7 @@ actions.prototype._keyUpBook = function (keycode) {
|
|||||||
}
|
}
|
||||||
if (keycode == 13 || keycode == 32 || keycode == 67) {
|
if (keycode == 13 || keycode == 32 || keycode == 67) {
|
||||||
var data = core.status.event.data;
|
var data = core.status.event.data;
|
||||||
if (core.isset(data)) {
|
if (data != null) {
|
||||||
this._clickBook(6, 2 * (data % 6));
|
this._clickBook(6, 2 * (data % 6));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -1018,7 +1018,7 @@ actions.prototype._keyDownFly = function (keycode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
actions.prototype._getNextFlyFloor = function (delta, index) {
|
actions.prototype._getNextFlyFloor = function (delta, index) {
|
||||||
if (!core.isset(index)) index = core.status.event.data;
|
if (index == null) index = core.status.event.data;
|
||||||
if (delta == 0) return index;
|
if (delta == 0) return index;
|
||||||
var sign = Math.sign(delta);
|
var sign = Math.sign(delta);
|
||||||
delta = Math.abs(delta);
|
delta = Math.abs(delta);
|
||||||
@ -1047,7 +1047,7 @@ actions.prototype._keyUpFly = function (keycode) {
|
|||||||
|
|
||||||
////// 查看地图界面时的点击操作 //////
|
////// 查看地图界面时的点击操作 //////
|
||||||
actions.prototype._clickViewMaps = function (x, y) {
|
actions.prototype._clickViewMaps = function (x, y) {
|
||||||
if (!core.isset(core.status.event.data)) {
|
if (core.status.event.data == null) {
|
||||||
core.ui.drawMaps(core.floorIds.indexOf(core.status.floorId));
|
core.ui.drawMaps(core.floorIds.indexOf(core.status.floorId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1112,7 +1112,7 @@ actions.prototype._clickViewMaps = function (x, y) {
|
|||||||
|
|
||||||
////// 查看地图界面时,按下某个键的操作 //////
|
////// 查看地图界面时,按下某个键的操作 //////
|
||||||
actions.prototype._keyDownViewMaps = function (keycode) {
|
actions.prototype._keyDownViewMaps = function (keycode) {
|
||||||
if (!core.isset(core.status.event.data)) return;
|
if (core.status.event.data == null) return;
|
||||||
|
|
||||||
var floorId = core.floorIds[core.status.event.data.index], mh = core.floors[floorId].height;
|
var floorId = core.floorIds[core.status.event.data.index], mh = core.floors[floorId].height;
|
||||||
|
|
||||||
@ -1127,7 +1127,7 @@ actions.prototype._keyDownViewMaps = function (keycode) {
|
|||||||
|
|
||||||
////// 查看地图界面时,放开某个键的操作 //////
|
////// 查看地图界面时,放开某个键的操作 //////
|
||||||
actions.prototype._keyUpViewMaps = function (keycode) {
|
actions.prototype._keyUpViewMaps = function (keycode) {
|
||||||
if (!core.isset(core.status.event.data)) {
|
if (core.status.event.data == null) {
|
||||||
core.ui.drawMaps(core.floorIds.indexOf(core.status.floorId));
|
core.ui.drawMaps(core.floorIds.indexOf(core.status.floorId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1200,7 +1200,7 @@ actions.prototype._clickQuickShop = function (x, y) {
|
|||||||
var topIndex = 6 - parseInt(keys.length / 2);
|
var topIndex = 6 - parseInt(keys.length / 2);
|
||||||
if (y >= topIndex && y < topIndex + keys.length) {
|
if (y >= topIndex && y < topIndex + keys.length) {
|
||||||
var reason = core.events.canUseQuickShop(keys[y - topIndex]);
|
var reason = core.events.canUseQuickShop(keys[y - topIndex]);
|
||||||
if (!core.flags.enableDisabledShop && core.isset(reason)) {
|
if (!core.flags.enableDisabledShop && reason) {
|
||||||
core.drawText(reason);
|
core.drawText(reason);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1302,7 +1302,7 @@ actions.prototype._clickToolboxIndex = function (index) {
|
|||||||
|
|
||||||
////// 工具栏界面时,按下某个键的操作 //////
|
////// 工具栏界面时,按下某个键的操作 //////
|
||||||
actions.prototype._keyDownToolbox = function (keycode) {
|
actions.prototype._keyDownToolbox = function (keycode) {
|
||||||
if (!core.isset(core.status.event.data)) return;
|
if (core.status.event.data == null) return;
|
||||||
|
|
||||||
var tools = Object.keys(core.status.hero.items.tools).sort();
|
var tools = Object.keys(core.status.hero.items.tools).sort();
|
||||||
var constants = Object.keys(core.status.hero.items.constants).sort();
|
var constants = Object.keys(core.status.hero.items.constants).sort();
|
||||||
@ -1399,7 +1399,7 @@ actions.prototype._keyUpToolbox = function (keycode) {
|
|||||||
core.ui.closePanel();
|
core.ui.closePanel();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!core.isset(core.status.event.data)) return;
|
if (core.status.event.data == null) return;
|
||||||
|
|
||||||
if (keycode == 13 || keycode == 32 || keycode == 67) {
|
if (keycode == 13 || keycode == 32 || keycode == 67) {
|
||||||
this._clickToolboxIndex(core.status.event.selection);
|
this._clickToolboxIndex(core.status.event.selection);
|
||||||
@ -1459,7 +1459,7 @@ actions.prototype._clickEquipbox = function (x, y) {
|
|||||||
actions.prototype._clickEquipboxIndex = function (index) {
|
actions.prototype._clickEquipboxIndex = function (index) {
|
||||||
if (index < 6) {
|
if (index < 6) {
|
||||||
if (index >= core.status.globalAttribute.equipName.length) return;
|
if (index >= core.status.globalAttribute.equipName.length) return;
|
||||||
if (index == core.status.event.selection && core.isset(core.status.hero.equipment[index])) {
|
if (index == core.status.event.selection && core.status.hero.equipment[index]) {
|
||||||
core.unloadEquip(index);
|
core.unloadEquip(index);
|
||||||
core.status.route.push("unEquip:" + index);
|
core.status.route.push("unEquip:" + index);
|
||||||
}
|
}
|
||||||
@ -1477,7 +1477,7 @@ actions.prototype._clickEquipboxIndex = function (index) {
|
|||||||
|
|
||||||
////// 装备栏界面时,按下某个键的操作 //////
|
////// 装备栏界面时,按下某个键的操作 //////
|
||||||
actions.prototype._keyDownEquipbox = function (keycode) {
|
actions.prototype._keyDownEquipbox = function (keycode) {
|
||||||
if (!core.isset(core.status.event.data)) return;
|
if (core.status.event.data != null) return;
|
||||||
|
|
||||||
var equipCapacity = core.status.globalAttribute.equipName.length;
|
var equipCapacity = core.status.globalAttribute.equipName.length;
|
||||||
var ownEquipment = Object.keys(core.status.hero.items.equips).sort();
|
var ownEquipment = Object.keys(core.status.hero.items.equips).sort();
|
||||||
@ -1563,7 +1563,7 @@ actions.prototype._keyUpEquipbox = function (keycode, altKey) {
|
|||||||
core.ui.closePanel();
|
core.ui.closePanel();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!core.isset(core.status.event.data.selectId)) return;
|
if (!core.status.event.data.selectId) return;
|
||||||
|
|
||||||
if (keycode == 13 || keycode == 32 || keycode == 67) {
|
if (keycode == 13 || keycode == 32 || keycode == 67) {
|
||||||
this._clickEquipboxIndex(core.status.event.selection);
|
this._clickEquipboxIndex(core.status.event.selection);
|
||||||
@ -1905,7 +1905,7 @@ actions.prototype._clickSyncSave = function (x, y) {
|
|||||||
alert("游戏版本不一致!");
|
alert("游戏版本不一致!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!core.isset(obj.data)) {
|
if (!obj.data) {
|
||||||
alert("无效的存档!");
|
alert("无效的存档!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -2023,7 +2023,7 @@ actions.prototype._clickLocalSaveSelect = function (x, y) {
|
|||||||
var selection = y - topIndex;
|
var selection = y - topIndex;
|
||||||
if (selection < 2) {
|
if (selection < 2) {
|
||||||
core.control.getSaves(selection == 0 ? null : core.saves.saveIndex, function (saves) {
|
core.control.getSaves(selection == 0 ? null : core.saves.saveIndex, function (saves) {
|
||||||
if (core.isset(saves)) {
|
if (saves) {
|
||||||
var content = {
|
var content = {
|
||||||
"name": core.firstData.name,
|
"name": core.firstData.name,
|
||||||
"version": core.firstData.version,
|
"version": core.firstData.version,
|
||||||
@ -2408,7 +2408,7 @@ actions.prototype.clearPaint = function () {
|
|||||||
actions.prototype.savePaint = function () {
|
actions.prototype.savePaint = function () {
|
||||||
var data = {};
|
var data = {};
|
||||||
for (var floorId in core.paint) {
|
for (var floorId in core.paint) {
|
||||||
if (core.isset(core.paint[floorId]))
|
if (core.paint[floorId])
|
||||||
data[floorId] = lzw_decode(core.paint[floorId]);
|
data[floorId] = lzw_decode(core.paint[floorId]);
|
||||||
}
|
}
|
||||||
core.download(core.firstData.name + ".h5paint", JSON.stringify({
|
core.download(core.firstData.name + ".h5paint", JSON.stringify({
|
||||||
@ -2423,19 +2423,19 @@ actions.prototype.loadPaint = function () {
|
|||||||
alert("绘图文件和游戏不一致!");
|
alert("绘图文件和游戏不一致!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!core.isset(obj.paint)) {
|
if (!obj.paint) {
|
||||||
alert("无效的绘图文件!");
|
alert("无效的绘图文件!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
core.paint = {};
|
core.paint = {};
|
||||||
for (var floorId in obj.paint) {
|
for (var floorId in obj.paint) {
|
||||||
if (core.isset(obj.paint[floorId]))
|
if (obj.paint[floorId])
|
||||||
core.paint[floorId] = lzw_encode(obj.paint[floorId]);
|
core.paint[floorId] = lzw_encode(obj.paint[floorId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
core.clearMap('paint');
|
core.clearMap('paint');
|
||||||
var value = core.paint[core.status.floorId];
|
var value = core.paint[core.status.floorId];
|
||||||
if (core.isset(value)) value = lzw_decode(value).split(",");
|
if (value) value = lzw_decode(value).split(",");
|
||||||
core.utils.decodeCanvas(value, 32 * core.bigmap.width, 32 * core.bigmap.height);
|
core.utils.decodeCanvas(value, 32 * core.bigmap.width, 32 * core.bigmap.height);
|
||||||
core.drawImage('paint', core.bigmap.tempCanvas.canvas, 0, 0);
|
core.drawImage('paint', core.bigmap.tempCanvas.canvas, 0, 0);
|
||||||
|
|
||||||
|
|||||||
14
libs/core.js
14
libs/core.js
@ -93,8 +93,8 @@ function core() {
|
|||||||
canvas: ["bg", "event", "event2", "fg", "damage"],
|
canvas: ["bg", "event", "event2", "fg", "damage"],
|
||||||
offsetX: 0, // in pixel
|
offsetX: 0, // in pixel
|
||||||
offsetY: 0,
|
offsetY: 0,
|
||||||
width: 13, // map width and height
|
width: this.__SIZE__, // map width and height
|
||||||
height: 13,
|
height: this.__SIZE__,
|
||||||
tempCanvas: null, // A temp canvas for drawing
|
tempCanvas: null, // A temp canvas for drawing
|
||||||
}
|
}
|
||||||
this.paint = {};
|
this.paint = {};
|
||||||
@ -229,7 +229,7 @@ core.prototype.init = function (coreData, callback) {
|
|||||||
if (!core.flags.enableLevelUp)
|
if (!core.flags.enableLevelUp)
|
||||||
core.flags.levelUpLeftMode = false;
|
core.flags.levelUpLeftMode = false;
|
||||||
|
|
||||||
if (core.isset(core.firstData.shops)) {
|
if (core.firstData.shops) {
|
||||||
core.firstData.shops.forEach(function (t) {
|
core.firstData.shops.forEach(function (t) {
|
||||||
core.initStatus.shops[t.id] = t;
|
core.initStatus.shops[t.id] = t;
|
||||||
})
|
})
|
||||||
@ -274,7 +274,7 @@ core.prototype.init = function (coreData, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var chrome = /Chrome\/(\d+)\./i.exec(navigator.userAgent);
|
var chrome = /Chrome\/(\d+)\./i.exec(navigator.userAgent);
|
||||||
if (core.isset(chrome) && parseInt(chrome[1]) >= 50)
|
if (chrome && parseInt(chrome[1]) >= 50)
|
||||||
core.platform.isChrome = true;
|
core.platform.isChrome = true;
|
||||||
core.platform.isSafari = /Safari/i.test(navigator.userAgent) && !/Chrome/i.test(navigator.userAgent);
|
core.platform.isSafari = /Safari/i.test(navigator.userAgent) && !/Chrome/i.test(navigator.userAgent);
|
||||||
core.platform.isQQ = /QQ/i.test(navigator.userAgent);
|
core.platform.isQQ = /QQ/i.test(navigator.userAgent);
|
||||||
@ -327,7 +327,7 @@ core.prototype.init = function (coreData, callback) {
|
|||||||
core.readFileContent(core.platform.fileReader.result);
|
core.readFileContent(core.platform.fileReader.result);
|
||||||
};
|
};
|
||||||
core.platform.fileReader.onerror = function () {
|
core.platform.fileReader.onerror = function () {
|
||||||
if (core.isset(core.platform.errorCallback))
|
if (core.platform.errorCallback)
|
||||||
core.platform.errorCallback();
|
core.platform.errorCallback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -379,7 +379,7 @@ core.prototype.init = function (coreData, callback) {
|
|||||||
if (main.mode == 'play')
|
if (main.mode == 'play')
|
||||||
core.events.initGame();
|
core.events.initGame();
|
||||||
|
|
||||||
if (core.isset(functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.plugins)) {
|
if (functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.plugins) {
|
||||||
core.plugin = new function () {
|
core.plugin = new function () {
|
||||||
this.__renderFrameFuncs = [];
|
this.__renderFrameFuncs = [];
|
||||||
};
|
};
|
||||||
@ -390,7 +390,7 @@ core.prototype.init = function (coreData, callback) {
|
|||||||
|
|
||||||
core.showStartAnimate();
|
core.showStartAnimate();
|
||||||
|
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,7 @@ enemys.prototype.getEnemys = function () {
|
|||||||
|
|
||||||
////// 判断是否含有某特殊属性 //////
|
////// 判断是否含有某特殊属性 //////
|
||||||
enemys.prototype.hasSpecial = function (special, test) {
|
enemys.prototype.hasSpecial = function (special, test) {
|
||||||
if (!core.isset(special)) return false;
|
if (special == null) return false;
|
||||||
|
|
||||||
if (special instanceof Array) {
|
if (special instanceof Array) {
|
||||||
return special.indexOf(test) >= 0;
|
return special.indexOf(test) >= 0;
|
||||||
@ -38,7 +38,7 @@ enemys.prototype.hasSpecial = function (special, test) {
|
|||||||
return this.hasSpecial(core.material.enemys[special], test);
|
return this.hasSpecial(core.material.enemys[special], test);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (core.isset(special.special)) {
|
if (special.special != null) {
|
||||||
return this.hasSpecial(special.special, test);
|
return this.hasSpecial(special.special, test);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,12 +52,12 @@ enemys.prototype.getSpecials = function () {
|
|||||||
////// 获得所有特殊属性的名称 //////
|
////// 获得所有特殊属性的名称 //////
|
||||||
enemys.prototype.getSpecialText = function (enemy) {
|
enemys.prototype.getSpecialText = function (enemy) {
|
||||||
if (typeof enemy == 'string') enemy = core.material.enemys[enemy];
|
if (typeof enemy == 'string') enemy = core.material.enemys[enemy];
|
||||||
if (!core.isset(enemy)) return [];
|
if (!enemy) return [];
|
||||||
var special = enemy.special;
|
var special = enemy.special;
|
||||||
var text = [];
|
var text = [];
|
||||||
|
|
||||||
var specials = this.getSpecials();
|
var specials = this.getSpecials();
|
||||||
if (core.isset(specials)) {
|
if (specials) {
|
||||||
for (var i = 0; i < specials.length; i++) {
|
for (var i = 0; i < specials.length; i++) {
|
||||||
if (this.hasSpecial(special, specials[i][0]))
|
if (this.hasSpecial(special, specials[i][0]))
|
||||||
text.push(this._calSpecialContent(enemy, specials[i][1]));
|
text.push(this._calSpecialContent(enemy, specials[i][1]));
|
||||||
@ -70,8 +70,8 @@ enemys.prototype.getSpecialText = function (enemy) {
|
|||||||
enemys.prototype.getSpecialHint = function (enemy, special) {
|
enemys.prototype.getSpecialHint = function (enemy, special) {
|
||||||
var specials = this.getSpecials();
|
var specials = this.getSpecials();
|
||||||
|
|
||||||
if (!core.isset(special)) {
|
if (special == null) {
|
||||||
if (!core.isset(specials)) return [];
|
if (specials == null) return [];
|
||||||
var hints = [];
|
var hints = [];
|
||||||
for (var i = 0; i < specials.length; i++) {
|
for (var i = 0; i < specials.length; i++) {
|
||||||
if (this.hasSpecial(enemy, specials[i][0]))
|
if (this.hasSpecial(enemy, specials[i][0]))
|
||||||
@ -80,7 +80,7 @@ enemys.prototype.getSpecialHint = function (enemy, special) {
|
|||||||
return hints;
|
return hints;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!core.isset(specials)) return "";
|
if (specials == null) return "";
|
||||||
for (var i = 0; i < specials.length; i++) {
|
for (var i = 0; i < specials.length; i++) {
|
||||||
if (special == specials[i][0])
|
if (special == specials[i][0])
|
||||||
return this._calSpecialContent(enemy, specials[i][1]) + ":" + this._calSpecialContent(enemy, specials[i][2]);
|
return this._calSpecialContent(enemy, specials[i][1]) + ":" + this._calSpecialContent(enemy, specials[i][2]);
|
||||||
@ -304,8 +304,7 @@ enemys.prototype.getCurrentEnemys = function (floorId) {
|
|||||||
var enemys = [], used = {};
|
var enemys = [], used = {};
|
||||||
var mapBlocks = core.status.maps[floorId].blocks;
|
var mapBlocks = core.status.maps[floorId].blocks;
|
||||||
for (var b = 0; b < mapBlocks.length; b++) {
|
for (var b = 0; b < mapBlocks.length; b++) {
|
||||||
if (core.isset(mapBlocks[b].event) && !mapBlocks[b].disable
|
if (!mapBlocks[b].disable && mapBlocks[b].event.cls.indexOf('enemy') == 0) {
|
||||||
&& mapBlocks[b].event.cls.indexOf('enemy') == 0) {
|
|
||||||
this._getCurrentEnemys_addEnemy(mapBlocks[b].event.id, enemys, used, floorId);
|
this._getCurrentEnemys_addEnemy(mapBlocks[b].event.id, enemys, used, floorId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -314,14 +313,10 @@ enemys.prototype.getCurrentEnemys = function (floorId) {
|
|||||||
|
|
||||||
enemys.prototype._getCurrentEnemys_getEnemy = function (enemyId) {
|
enemys.prototype._getCurrentEnemys_getEnemy = function (enemyId) {
|
||||||
var enemy = core.material.enemys[enemyId];
|
var enemy = core.material.enemys[enemyId];
|
||||||
if (!core.isset(enemy)) return null;
|
if (!enemy) return null;
|
||||||
|
|
||||||
// 检查displayIdInBook
|
// 检查displayIdInBook
|
||||||
var tmpId = enemy.displayIdInBook;
|
return core.material.enemys[enemy.displayIdInBook] || enemy;
|
||||||
if (core.isset(core.material.enemys[tmpId])) {
|
|
||||||
enemy = core.material.enemys[tmpId];
|
|
||||||
}
|
|
||||||
return enemy;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enemys.prototype._getCurrentEnemys_addEnemy = function (enemyId, enemys, used, floorId) {
|
enemys.prototype._getCurrentEnemys_addEnemy = function (enemyId, enemys, used, floorId) {
|
||||||
|
|||||||
103
libs/events.js
103
libs/events.js
@ -27,7 +27,7 @@ events.prototype.startGame = function (hard, seed, route, callback) {
|
|||||||
if (main.mode != 'play') return;
|
if (main.mode != 'play') return;
|
||||||
|
|
||||||
// 无动画的开始游戏
|
// 无动画的开始游戏
|
||||||
if (core.flags.startUsingCanvas || core.isset(route)) {
|
if (core.flags.startUsingCanvas || route != null) {
|
||||||
core.dom.startPanel.style.display = 'none';
|
core.dom.startPanel.style.display = 'none';
|
||||||
this._startGame_start(hard, seed, route, callback);
|
this._startGame_start(hard, seed, route, callback);
|
||||||
}
|
}
|
||||||
@ -45,7 +45,7 @@ events.prototype._startGame_start = function (hard, seed, route, callback) {
|
|||||||
core.setHeroLoc('x', -1);
|
core.setHeroLoc('x', -1);
|
||||||
core.setHeroLoc('y', -1);
|
core.setHeroLoc('y', -1);
|
||||||
|
|
||||||
if (core.isset(seed)) {
|
if (seed != null) {
|
||||||
core.setFlag('__seed__', seed);
|
core.setFlag('__seed__', seed);
|
||||||
core.setFlag('__rand__', seed);
|
core.setFlag('__rand__', seed);
|
||||||
}
|
}
|
||||||
@ -67,7 +67,7 @@ events.prototype._startGame_start = function (hard, seed, route, callback) {
|
|||||||
core.events._startGame_afterStart(nowLoc, callback);
|
core.events._startGame_afterStart(nowLoc, callback);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (core.isset(route)) core.startReplay(route);
|
if (route != null) core.startReplay(route);
|
||||||
}
|
}
|
||||||
|
|
||||||
events.prototype._startGame_afterStart = function (nowLoc, callback) {
|
events.prototype._startGame_afterStart = function (nowLoc, callback) {
|
||||||
@ -117,7 +117,7 @@ events.prototype.gameOver = function (ending, fromReplay, norank) {
|
|||||||
core.setWeather();
|
core.setWeather();
|
||||||
core.ui.closePanel();
|
core.ui.closePanel();
|
||||||
|
|
||||||
if (main.isCompetition && core.isset(ending)) {
|
if (main.isCompetition && ending != null) {
|
||||||
if (ending == "") ending = "恭喜通关";
|
if (ending == "") ending = "恭喜通关";
|
||||||
ending += "[比赛]";
|
ending += "[比赛]";
|
||||||
}
|
}
|
||||||
@ -136,7 +136,7 @@ events.prototype.gameOver = function (ending, fromReplay, norank) {
|
|||||||
events.prototype._gameOver_confirmUpload = function (ending, norank) {
|
events.prototype._gameOver_confirmUpload = function (ending, norank) {
|
||||||
core.ui.closePanel();
|
core.ui.closePanel();
|
||||||
|
|
||||||
if (!core.isset(ending)) {
|
if (ending == null) {
|
||||||
this._gameOver_confirmDownload(ending);
|
this._gameOver_confirmDownload(ending);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -153,7 +153,7 @@ events.prototype._gameOver_confirmUpload = function (ending, norank) {
|
|||||||
|
|
||||||
events.prototype._gameOver_doUpload = function (username, ending, norank) {
|
events.prototype._gameOver_doUpload = function (username, ending, norank) {
|
||||||
var hp = core.status.hero.hp;
|
var hp = core.status.hero.hp;
|
||||||
if (!core.isset(username)) hp = 1;
|
if (username == null) hp = 1;
|
||||||
core.ui.closePanel();
|
core.ui.closePanel();
|
||||||
// upload
|
// upload
|
||||||
var formData = new FormData();
|
var formData = new FormData();
|
||||||
@ -206,7 +206,7 @@ events.prototype._gameOver_confirmDownload = function (ending) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
events.prototype._gameOver_askRate = function (ending) {
|
events.prototype._gameOver_askRate = function (ending) {
|
||||||
if (!core.isset(ending)) {
|
if (ending == null) {
|
||||||
core.restart();
|
core.restart();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -275,7 +275,7 @@ events.prototype._trigger = function (x, y) {
|
|||||||
|
|
||||||
events.prototype._trigger_ignoreChangeFloor = function (block) {
|
events.prototype._trigger_ignoreChangeFloor = function (block) {
|
||||||
var able = core.flags.ignoreChangeFloor;
|
var able = core.flags.ignoreChangeFloor;
|
||||||
if (core.isset(block.event.data) && core.isset(block.event.data.ignoreChangeFloor))
|
if (block.event.data && block.event.data.ignoreChangeFloor != null)
|
||||||
able = block.event.data.ignoreChangeFloor;
|
able = block.event.data.ignoreChangeFloor;
|
||||||
if (able) {
|
if (able) {
|
||||||
if (core.isReplaying()) {
|
if (core.isReplaying()) {
|
||||||
@ -302,14 +302,14 @@ events.prototype._sys_battle = function (data, callback) {
|
|||||||
events.prototype.battle = function (id, x, y, force, callback) {
|
events.prototype.battle = function (id, x, y, force, callback) {
|
||||||
core.saveAndStopAutomaticRoute();
|
core.saveAndStopAutomaticRoute();
|
||||||
id = id || core.getBlockId(x, y);
|
id = id || core.getBlockId(x, y);
|
||||||
if (!core.isset(id)) return core.clearContinueAutomaticRoute(callback);
|
if (!id) return core.clearContinueAutomaticRoute(callback);
|
||||||
// 非强制战斗
|
// 非强制战斗
|
||||||
if (!core.enemys.canBattle(id, x, y) && !force && !core.isset(core.status.event.id)) {
|
if (!core.enemys.canBattle(id, x, y) && !force && !core.status.event.id) {
|
||||||
core.drawTip("你打不过此怪物!");
|
core.drawTip("你打不过此怪物!");
|
||||||
return core.clearContinueAutomaticRoute(callback);
|
return core.clearContinueAutomaticRoute(callback);
|
||||||
}
|
}
|
||||||
// 自动存档
|
// 自动存档
|
||||||
if (!core.isset(core.status.event.id)) core.autosave(true);
|
if (!core.status.event.id) core.autosave(true);
|
||||||
// 战前事件
|
// 战前事件
|
||||||
if (!this.beforeBattle(id, x, y))
|
if (!this.beforeBattle(id, x, y))
|
||||||
return core.clearContinueAutomaticRoute(callback);
|
return core.clearContinueAutomaticRoute(callback);
|
||||||
@ -344,7 +344,7 @@ events.prototype.openDoor = function (id, x, y, needKey, callback) {
|
|||||||
events.prototype._openDoor_check = function (id, x, y, needKey) {
|
events.prototype._openDoor_check = function (id, x, y, needKey) {
|
||||||
// 是否存在门或暗墙
|
// 是否存在门或暗墙
|
||||||
if (!core.terrainExists(x, y, id) || !(id.endsWith("Door") || id.endsWith("Wall"))
|
if (!core.terrainExists(x, y, id) || !(id.endsWith("Door") || id.endsWith("Wall"))
|
||||||
|| !core.isset(core.material.icons.animates[id])) {
|
|| !core.material.icons.animates[id]) {
|
||||||
core.clearContinueAutomaticRoute();
|
core.clearContinueAutomaticRoute();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -428,10 +428,8 @@ events.prototype.getNextItem = function () {
|
|||||||
events.prototype._sys_changeFloor = function (data, callback) {
|
events.prototype._sys_changeFloor = function (data, callback) {
|
||||||
data = data.event.data;
|
data = data.event.data;
|
||||||
var heroLoc = {};
|
var heroLoc = {};
|
||||||
if (core.isset(data.loc))
|
if (data.loc) heroLoc = {'x': data.loc[0], 'y': data.loc[1]};
|
||||||
heroLoc = {'x': data.loc[0], 'y': data.loc[1]};
|
if (data.direction) heroLoc.direction = data.direction;
|
||||||
if (core.isset(data.direction))
|
|
||||||
heroLoc.direction = data.direction;
|
|
||||||
if (core.status.event.id != 'action') core.status.event.id = null;
|
if (core.status.event.id != 'action') core.status.event.id = null;
|
||||||
core.changeFloor(data.floorId, data.stair, heroLoc, data.time, callback);
|
core.changeFloor(data.floorId, data.stair, heroLoc, data.time, callback);
|
||||||
}
|
}
|
||||||
@ -473,8 +471,8 @@ events.prototype._changeFloor_getInfo = function (floorId, stair, heroLoc, time)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (main.mode != 'play' || core.isReplaying()) time = 0;
|
if (main.mode != 'play' || core.isReplaying()) time = 0;
|
||||||
if (!core.isset(time)) time = core.values.floorChangeTime;
|
if (time == null) time = core.values.floorChangeTime;
|
||||||
if (!core.isset(time)) time = 800;
|
if (time == null) time = 800;
|
||||||
if (time < 100) time = 0;
|
if (time < 100) time = 0;
|
||||||
time /= 20;
|
time /= 20;
|
||||||
|
|
||||||
@ -486,11 +484,11 @@ events.prototype._changeFloor_getInfo = function (floorId, stair, heroLoc, time)
|
|||||||
}
|
}
|
||||||
|
|
||||||
events.prototype._changeFloor_getHeroLoc = function (floorId, stair, heroLoc) {
|
events.prototype._changeFloor_getHeroLoc = function (floorId, stair, heroLoc) {
|
||||||
if (!core.isset(heroLoc))
|
if (!heroLoc)
|
||||||
heroLoc = core.clone(core.status.hero.loc);
|
heroLoc = core.clone(core.status.hero.loc);
|
||||||
if (core.isset(stair)) {
|
if (stair) {
|
||||||
// 检查该层地图的 upFloor & downFloor
|
// 检查该层地图的 upFloor & downFloor
|
||||||
if (core.isset(core.status.maps[floorId][stair])) {
|
if (core.status.maps[floorId][stair]) {
|
||||||
heroLoc.x = core.status.maps[floorId][stair][0];
|
heroLoc.x = core.status.maps[floorId][stair][0];
|
||||||
heroLoc.y = core.status.maps[floorId][stair][1];
|
heroLoc.y = core.status.maps[floorId][stair][1];
|
||||||
}
|
}
|
||||||
@ -506,7 +504,7 @@ events.prototype._changeFloor_getHeroLoc = function (floorId, stair, heroLoc) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
['x', 'y', 'direction'].forEach(function (name) {
|
['x', 'y', 'direction'].forEach(function (name) {
|
||||||
if (!core.isset(heroLoc[name]))
|
if (!heroLoc[name])
|
||||||
heroLoc[name] = core.getHeroLoc(name);
|
heroLoc[name] = core.getHeroLoc(name);
|
||||||
});
|
});
|
||||||
return heroLoc;
|
return heroLoc;
|
||||||
@ -663,7 +661,7 @@ events.prototype._sys_ski = function (data, callback) {
|
|||||||
|
|
||||||
////// 滑冰 //////
|
////// 滑冰 //////
|
||||||
events.prototype.ski = function (direction) {
|
events.prototype.ski = function (direction) {
|
||||||
if (!core.isset(direction))
|
if (!direction)
|
||||||
direction = core.status.automaticRoute.lastDirection || core.getHeroLoc('direction');
|
direction = core.status.automaticRoute.lastDirection || core.getHeroLoc('direction');
|
||||||
if (core.status.event.id != 'ski') {
|
if (core.status.event.id != 'ski') {
|
||||||
core.waitHeroToStop(function () {
|
core.waitHeroToStop(function () {
|
||||||
@ -688,7 +686,7 @@ events.prototype._sys_action = function (data, callback) {
|
|||||||
if (ex == core.nextX() && ey == core.nextY()) {
|
if (ex == core.nextX() && ey == core.nextY()) {
|
||||||
var dir = {"up": "down", "down": "up", "left": "right", "right": "left"}[core.getHeroLoc('direction')];
|
var dir = {"up": "down", "down": "up", "left": "right", "right": "left"}[core.getHeroLoc('direction')];
|
||||||
var id = data.event.id, toId = (data.event.faceIds || {})[dir];
|
var id = data.event.id, toId = (data.event.faceIds || {})[dir];
|
||||||
if (core.isset(toId) && id != toId) {
|
if (toId && id != toId) {
|
||||||
var number = core.icons.getNumberById(toId);
|
var number = core.icons.getNumberById(toId);
|
||||||
if (number > 0)
|
if (number > 0)
|
||||||
core.setBlock(number, ex, ey);
|
core.setBlock(number, ex, ey);
|
||||||
@ -724,7 +722,7 @@ events.prototype.doEvent = function (data, x, y, prefix) {
|
|||||||
|
|
||||||
////// 开始执行一系列自定义事件 //////
|
////// 开始执行一系列自定义事件 //////
|
||||||
events.prototype.doEvents = function (list, x, y, callback) {
|
events.prototype.doEvents = function (list, x, y, callback) {
|
||||||
if (!core.isset(list)) return;
|
if (!list) return;
|
||||||
if (!(list instanceof Array)) {
|
if (!(list instanceof Array)) {
|
||||||
list = [list];
|
list = [list];
|
||||||
}
|
}
|
||||||
@ -738,11 +736,11 @@ events.prototype.doEvents = function (list, x, y, callback) {
|
|||||||
|
|
||||||
events.prototype.setEvents = function (list, x, y, callback) {
|
events.prototype.setEvents = function (list, x, y, callback) {
|
||||||
var data = core.status.event.data || {};
|
var data = core.status.event.data || {};
|
||||||
if (core.isset(list))
|
if (list)
|
||||||
data.list = [{todo: core.clone(list), total: core.clone(list), condition: "false"}];
|
data.list = [{todo: core.clone(list), total: core.clone(list), condition: "false"}];
|
||||||
if (core.isset(x)) data.x = x;
|
if (x != null) data.x = x;
|
||||||
if (core.isset(y)) data.y = y;
|
if (y != null) data.y = y;
|
||||||
if (core.isset(callback)) data.callback = callback;
|
if (callback) data.callback = callback;
|
||||||
core.status.event = {id: 'action', data: data};
|
core.status.event = {id: 'action', data: data};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -757,7 +755,7 @@ events.prototype.doAction = function () {
|
|||||||
if (this._doAction_finishEvents()) return;
|
if (this._doAction_finishEvents()) return;
|
||||||
// 当前点坐标和前缀
|
// 当前点坐标和前缀
|
||||||
var x = core.status.event.data.x, y = core.status.event.data.y;
|
var x = core.status.event.data.x, y = core.status.event.data.y;
|
||||||
var prefix = [core.status.floorId || "f", core.isset(x) ? x : "x", core.isset(y) ? y : "y"].join("@");
|
var prefix = [core.status.floorId || "f", x != null ? x : "x", y != null ? y : "y"].join("@");
|
||||||
var current = core.status.event.data.list[0];
|
var current = core.status.event.data.list[0];
|
||||||
if (this._popEvents(current, prefix)) return;
|
if (this._popEvents(current, prefix)) return;
|
||||||
// 当前要执行的事件
|
// 当前要执行的事件
|
||||||
@ -775,8 +773,7 @@ events.prototype._doAction_finishEvents = function () {
|
|||||||
if (core.status.event.data.list.length == 0) {
|
if (core.status.event.data.list.length == 0) {
|
||||||
var callback = core.status.event.data.callback;
|
var callback = core.status.event.data.callback;
|
||||||
core.ui.closePanel();
|
core.ui.closePanel();
|
||||||
if (core.isset(callback))
|
if (callback) callback();
|
||||||
callback();
|
|
||||||
core.replay();
|
core.replay();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -804,7 +801,7 @@ events.prototype.insertAction = function (action, x, y, callback) {
|
|||||||
// ------ 判定commonEvent
|
// ------ 判定commonEvent
|
||||||
var commonEvent = this.getCommonEvent(action);
|
var commonEvent = this.getCommonEvent(action);
|
||||||
if (commonEvent instanceof Array) action = commonEvent;
|
if (commonEvent instanceof Array) action = commonEvent;
|
||||||
if (!core.isset(action)) return;
|
if (!action) return;
|
||||||
|
|
||||||
if (core.status.event.id != 'action') {
|
if (core.status.event.id != 'action') {
|
||||||
this.doEvents(action, x, y, callback);
|
this.doEvents(action, x, y, callback);
|
||||||
@ -817,13 +814,13 @@ events.prototype.insertAction = function (action, x, y, callback) {
|
|||||||
|
|
||||||
////// 获得一个公共事件 //////
|
////// 获得一个公共事件 //////
|
||||||
events.prototype.getCommonEvent = function (name) {
|
events.prototype.getCommonEvent = function (name) {
|
||||||
if (!core.isset(name) || typeof name !== 'string') return null;
|
if (!name || typeof name !== 'string') return null;
|
||||||
return this.commonEvent[name] || null;
|
return this.commonEvent[name] || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 恢复一个事件 //////
|
////// 恢复一个事件 //////
|
||||||
events.prototype.recoverEvents = function (data) {
|
events.prototype.recoverEvents = function (data) {
|
||||||
if (core.isset(data)) {
|
if (data) {
|
||||||
core.ui.closePanel();
|
core.ui.closePanel();
|
||||||
core.lockControl();
|
core.lockControl();
|
||||||
core.status.event.id = 'action';
|
core.status.event.id = 'action';
|
||||||
@ -897,16 +894,16 @@ events.prototype._action_comment = function (data, x, y, prefix) {
|
|||||||
|
|
||||||
events.prototype._action_setText = function (data, x, y, prefix) {
|
events.prototype._action_setText = function (data, x, y, prefix) {
|
||||||
["position", "offset", "bold", "titlefont", "textfont", "time"].forEach(function (t) {
|
["position", "offset", "bold", "titlefont", "textfont", "time"].forEach(function (t) {
|
||||||
if (core.isset(data[t])) core.status.textAttribute[t] = data[t];
|
if (data[t] != null) core.status.textAttribute[t] = data[t];
|
||||||
});
|
});
|
||||||
["background", "title", "text"].forEach(function (t) {
|
["background", "title", "text"].forEach(function (t) {
|
||||||
if (core.isset(data[t]) && (data[t] instanceof Array) && data[t].length >= 3) {
|
if ((data[t] instanceof Array) && data[t].length >= 3) {
|
||||||
if (data[t].length == 3) data[t].push(1);
|
if (data[t].length == 3) data[t].push(1);
|
||||||
core.status.textAttribute[t] = data[t];
|
core.status.textAttribute[t] = data[t];
|
||||||
}
|
}
|
||||||
if (t == 'background' && core.isset(data[t])) {
|
if (t == 'background') {
|
||||||
var img = core.material.images.images[data[t]];
|
var img = core.material.images.images[data[t]];
|
||||||
if (core.isset(img) && img.width == 192 && img.height == 128) {
|
if (img && img.width == 192 && img.height == 128) {
|
||||||
core.status.textAttribute[t] = data[t];
|
core.status.textAttribute[t] = data[t];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1035,10 +1032,8 @@ events.prototype._action_changePos = function (data, x, y, prefix) {
|
|||||||
events.prototype._action_showImage = function (data, x, y, prefix) {
|
events.prototype._action_showImage = function (data, x, y, prefix) {
|
||||||
var loc = this.__action_getLoc(data.loc, 0, 0, prefix);
|
var loc = this.__action_getLoc(data.loc, 0, 0, prefix);
|
||||||
if (core.isReplaying()) data.time = 0;
|
if (core.isReplaying()) data.time = 0;
|
||||||
var image = core.material.images.images[data.image];
|
|
||||||
if (!core.isset(image)) return core.doAction();
|
|
||||||
this.__action_doAsyncFunc(data.async || data.time == 0, this.showImage,
|
this.__action_doAsyncFunc(data.async || data.time == 0, this.showImage,
|
||||||
data.code, image, loc[0], loc[1], data.dw, data.dh, data.opacity, data.time);
|
data.code, data.image, loc[0], loc[1], data.dw, data.dh, data.opacity, data.time);
|
||||||
}
|
}
|
||||||
|
|
||||||
events.prototype._action_showTextImage = function (data, x, y, prefix) {
|
events.prototype._action_showTextImage = function (data, x, y, prefix) {
|
||||||
@ -1157,17 +1152,14 @@ events.prototype._action_trigger = function (data, x, y, prefix) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
events.prototype._action_insert = function (data, x, y, prefix) {
|
events.prototype._action_insert = function (data, x, y, prefix) {
|
||||||
if (core.isset(data.name)) { // 公共事件
|
if (data.name) { // 公共事件
|
||||||
core.insertAction(this.getCommonEvent(data.name));
|
core.insertAction(this.getCommonEvent(data.name));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var loc = this.__action_getLoc(data.loc, x, y, prefix);
|
var loc = this.__action_getLoc(data.loc, x, y, prefix);
|
||||||
var floorId = data.floorId || core.status.floorId;
|
var floorId = data.floorId || core.status.floorId;
|
||||||
var event = core.floors[floorId].events[loc[0] + "," + loc[1]];
|
var event = core.floors[floorId].events[loc[0] + "," + loc[1]];
|
||||||
if (core.isset(event)) {
|
if (event) this.insertAction(event.data || event);
|
||||||
if (core.isset(event.data)) event = event.data;
|
|
||||||
this.insertAction(event);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
core.doAction();
|
core.doAction();
|
||||||
}
|
}
|
||||||
@ -1285,8 +1277,7 @@ events.prototype.__action_getInput = function (hint, isText) {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
core.interval.onDownInterval = 'tmp';
|
core.interval.onDownInterval = 'tmp';
|
||||||
value = prompt(core.replaceText(hint));
|
value = prompt(core.replaceText(hint)) || "";
|
||||||
if (!core.isset(value)) value = "";
|
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
@ -1514,7 +1505,7 @@ events.prototype._action_exit = function (data, x, y, prefix) {
|
|||||||
////// 跟随 //////
|
////// 跟随 //////
|
||||||
events.prototype.follow = function (name) {
|
events.prototype.follow = function (name) {
|
||||||
core.status.hero.followers = core.status.hero.followers || [];
|
core.status.hero.followers = core.status.hero.followers || [];
|
||||||
if (core.isset(core.material.images.images[name])
|
if (core.material.images.images[name]
|
||||||
&& core.material.images.images[name].width == 128) {
|
&& core.material.images.images[name].width == 128) {
|
||||||
core.status.hero.followers.push({"img": name});
|
core.status.hero.followers.push({"img": name});
|
||||||
core.control.gatherFollowers();
|
core.control.gatherFollowers();
|
||||||
@ -1526,7 +1517,7 @@ events.prototype.follow = function (name) {
|
|||||||
////// 取消跟随 //////
|
////// 取消跟随 //////
|
||||||
events.prototype.unfollow = function (name) {
|
events.prototype.unfollow = function (name) {
|
||||||
core.status.hero.followers = core.status.hero.followers || [];
|
core.status.hero.followers = core.status.hero.followers || [];
|
||||||
if (!core.isset(name)) {
|
if (!name) {
|
||||||
core.status.heroMoving.followers = [];
|
core.status.heroMoving.followers = [];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -1685,7 +1676,7 @@ events.prototype.moveImage = function (code, to, opacityVal, time, callback) {
|
|||||||
}
|
}
|
||||||
var getOrDefault = function (a, b) {
|
var getOrDefault = function (a, b) {
|
||||||
a = core.calValue(a);
|
a = core.calValue(a);
|
||||||
return core.isset(a) ? a : b;
|
return a != null ? a : b;
|
||||||
}
|
}
|
||||||
var canvas = core.dymCanvas[name].canvas;
|
var canvas = core.dymCanvas[name].canvas;
|
||||||
var fromX = parseFloat(canvas.getAttribute("_left")),
|
var fromX = parseFloat(canvas.getAttribute("_left")),
|
||||||
@ -1728,7 +1719,7 @@ events.prototype.setVolume = function (value, time, callback) {
|
|||||||
if (core.musicStatus.playingBgm)
|
if (core.musicStatus.playingBgm)
|
||||||
core.material.bgms[core.musicStatus.playingBgm].volume = value;
|
core.material.bgms[core.musicStatus.playingBgm].volume = value;
|
||||||
}
|
}
|
||||||
if (!core.isset(time) || time < 100) {
|
if (!time || time < 100) {
|
||||||
set(value);
|
set(value);
|
||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
@ -1753,7 +1744,7 @@ events.prototype.vibrate = function (time, callback) {
|
|||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!core.isset(time) || time < 1000) time = 1000;
|
if (!time || time < 1000) time = 1000;
|
||||||
// --- 将time调整为500的倍数(上整),不然会出错
|
// --- 将time调整为500的倍数(上整),不然会出错
|
||||||
time = Math.ceil(time / 500) * 500;
|
time = Math.ceil(time / 500) * 500;
|
||||||
var shakeInfo = {duration: time * 3 / 50, speed: 5, power: 5, direction: 1, shake: 0};
|
var shakeInfo = {duration: time * 3 / 50, speed: 5, power: 5, direction: 1, shake: 0};
|
||||||
@ -1880,12 +1871,12 @@ events.prototype.checkLvUp = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
events.prototype._checkLvUp_check = function () {
|
events.prototype._checkLvUp_check = function () {
|
||||||
if (!core.flags.enableLevelUp || !core.isset(core.firstData.levelUp)
|
if (!core.flags.enableLevelUp || !core.firstData.levelUp
|
||||||
|| core.status.hero.lv >= core.firstData.levelUp.length) return null;
|
|| core.status.hero.lv >= core.firstData.levelUp.length) return null;
|
||||||
// 计算下一个所需要的数值
|
// 计算下一个所需要的数值
|
||||||
var next = (core.firstData.levelUp[core.status.hero.lv] || {});
|
var next = (core.firstData.levelUp[core.status.hero.lv] || {});
|
||||||
var need = core.calValue(next.need);
|
var need = core.calValue(next.need);
|
||||||
if (!core.isset(need)) return null;
|
if (need == null) return null;
|
||||||
if (core.status.hero.experience >= need) {
|
if (core.status.hero.experience >= need) {
|
||||||
// 升级
|
// 升级
|
||||||
core.status.hero.lv++;
|
core.status.hero.lv++;
|
||||||
|
|||||||
@ -64,7 +64,7 @@ items.prototype.getItemEffectTip = function (itemId) {
|
|||||||
////// 使用道具 //////
|
////// 使用道具 //////
|
||||||
items.prototype.useItem = function (itemId, noRoute, callback) {
|
items.prototype.useItem = function (itemId, noRoute, callback) {
|
||||||
if (!this.canUseItem(itemId)) {
|
if (!this.canUseItem(itemId)) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 执行道具效果
|
// 执行道具效果
|
||||||
@ -73,7 +73,7 @@ items.prototype.useItem = function (itemId, noRoute, callback) {
|
|||||||
this._afterUseItem(itemId);
|
this._afterUseItem(itemId);
|
||||||
// 记录路线
|
// 记录路线
|
||||||
if (!noRoute) core.status.route.push("item:" + itemId);
|
if (!noRoute) core.status.route.push("item:" + itemId);
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
items.prototype._useItemEffect = function (itemId) {
|
items.prototype._useItemEffect = function (itemId) {
|
||||||
@ -127,8 +127,7 @@ items.prototype.canUseItem = function (itemId) {
|
|||||||
|
|
||||||
////// 获得某个物品的个数 //////
|
////// 获得某个物品的个数 //////
|
||||||
items.prototype.itemCount = function (itemId) {
|
items.prototype.itemCount = function (itemId) {
|
||||||
if (!core.isset(core.status.hero)) return 0;
|
if (!core.material.items[itemId]) return 0;
|
||||||
if (!core.isset(itemId) || !core.isset(core.material.items[itemId])) return 0;
|
|
||||||
var itemCls = core.material.items[itemId].cls;
|
var itemCls = core.material.items[itemId].cls;
|
||||||
if (itemCls == "items") return 0;
|
if (itemCls == "items") return 0;
|
||||||
return core.status.hero.items[itemCls][itemId] || 0;
|
return core.status.hero.items[itemCls][itemId] || 0;
|
||||||
@ -141,12 +140,9 @@ items.prototype.hasItem = function (itemId) {
|
|||||||
|
|
||||||
////// 是否装备某件装备 //////
|
////// 是否装备某件装备 //////
|
||||||
items.prototype.hasEquip = function (itemId) {
|
items.prototype.hasEquip = function (itemId) {
|
||||||
if (!core.isset(core.status.hero)) return null;
|
if (!(core.material.items[itemId] || {}).equip) return null;
|
||||||
|
|
||||||
if (!core.isset(itemId)) return null;
|
for (var i in core.status.hero.equipment)
|
||||||
if (!core.isset((core.material.items[itemId] || {}).equip)) return null;
|
|
||||||
|
|
||||||
for (var i in core.status.hero.equipment || [])
|
|
||||||
if (core.status.hero.equipment[i] == itemId)
|
if (core.status.hero.equipment[i] == itemId)
|
||||||
return true;
|
return true;
|
||||||
return false
|
return false
|
||||||
@ -154,19 +150,15 @@ items.prototype.hasEquip = function (itemId) {
|
|||||||
|
|
||||||
////// 获得某个装备类型的当前装备 //////
|
////// 获得某个装备类型的当前装备 //////
|
||||||
items.prototype.getEquip = function (equipType) {
|
items.prototype.getEquip = function (equipType) {
|
||||||
if (!core.isset(core.status.hero)) return null;
|
return core.status.hero.equipment[equipType] || null;
|
||||||
return (core.status.hero.equipment || [])[equipType] || null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 设置某个物品的个数 //////
|
////// 设置某个物品的个数 //////
|
||||||
items.prototype.setItem = function (itemId, itemNum) {
|
items.prototype.setItem = function (itemId, itemNum) {
|
||||||
if (!core.isset(core.status.hero)) return null;
|
|
||||||
itemNum = itemNum || 0;
|
itemNum = itemNum || 0;
|
||||||
var itemCls = core.material.items[itemId].cls;
|
var itemCls = core.material.items[itemId].cls;
|
||||||
if (itemCls == 'items') return;
|
if (itemCls == 'items') return;
|
||||||
if (!core.isset(core.status.hero.items[itemCls])) {
|
|
||||||
core.status.hero.items[itemCls] = {};
|
|
||||||
}
|
|
||||||
core.status.hero.items[itemCls][itemId] = itemNum;
|
core.status.hero.items[itemCls][itemId] = itemNum;
|
||||||
if (core.status.hero.items[itemCls][itemId] <= 0) {
|
if (core.status.hero.items[itemCls][itemId] <= 0) {
|
||||||
if (itemCls != 'keys') delete core.status.hero.items[itemCls][itemId];
|
if (itemCls != 'keys') delete core.status.hero.items[itemCls][itemId];
|
||||||
@ -177,8 +169,7 @@ items.prototype.setItem = function (itemId, itemNum) {
|
|||||||
|
|
||||||
////// 删除某个物品 //////
|
////// 删除某个物品 //////
|
||||||
items.prototype.removeItem = function (itemId, itemNum) {
|
items.prototype.removeItem = function (itemId, itemNum) {
|
||||||
if (!core.isset(core.status.hero)) return null;
|
if (itemNum == null) itemNum = 1;
|
||||||
if (!core.isset(itemNum)) itemNum = 1;
|
|
||||||
if (!core.hasItem(itemId)) return false;
|
if (!core.hasItem(itemId)) return false;
|
||||||
var itemCls = core.material.items[itemId].cls;
|
var itemCls = core.material.items[itemId].cls;
|
||||||
core.status.hero.items[itemCls][itemId] -= itemNum;
|
core.status.hero.items[itemCls][itemId] -= itemNum;
|
||||||
@ -192,16 +183,11 @@ items.prototype.removeItem = function (itemId, itemNum) {
|
|||||||
|
|
||||||
////// 增加某个物品的个数 //////
|
////// 增加某个物品的个数 //////
|
||||||
items.prototype.addItem = function (itemId, itemNum) {
|
items.prototype.addItem = function (itemId, itemNum) {
|
||||||
if (!core.isset(core.status.hero)) return null;
|
if (itemNum == null) itemNum = 1;
|
||||||
if (!core.isset(itemNum)) itemNum = 1;
|
|
||||||
var itemData = core.material.items[itemId];
|
var itemData = core.material.items[itemId];
|
||||||
var itemCls = itemData.cls;
|
var itemCls = itemData.cls;
|
||||||
if (itemCls == 'items') return;
|
if (itemCls == 'items') return;
|
||||||
if (!core.isset(core.status.hero.items[itemCls])) {
|
if (core.status.hero.items[itemCls][itemId] == null) {
|
||||||
core.status.hero.items[itemCls] = {};
|
|
||||||
core.status.hero.items[itemCls][itemId] = 0;
|
|
||||||
}
|
|
||||||
else if (!core.isset(core.status.hero.items[itemCls][itemId])) {
|
|
||||||
core.status.hero.items[itemCls][itemId] = 0;
|
core.status.hero.items[itemCls][itemId] = 0;
|
||||||
}
|
}
|
||||||
core.status.hero.items[itemCls][itemId] += itemNum;
|
core.status.hero.items[itemCls][itemId] += itemNum;
|
||||||
@ -227,7 +213,7 @@ items.prototype.getEquipTypeById = function (equipId) {
|
|||||||
items.prototype.getEquipTypeByName = function (name) {
|
items.prototype.getEquipTypeByName = function (name) {
|
||||||
var names = core.status.globalAttribute.equipName;
|
var names = core.status.globalAttribute.equipName;
|
||||||
for (var i = 0; i < names.length; ++i) {
|
for (var i = 0; i < names.length; ++i) {
|
||||||
if (names[i] === name && !core.isset((core.status.hero.equipment || [])[i])) {
|
if (names[i] === name && !core.status.hero.equipment[i]) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -238,7 +224,7 @@ items.prototype.getEquipTypeByName = function (name) {
|
|||||||
items.prototype.canEquip = function (equipId, hint) {
|
items.prototype.canEquip = function (equipId, hint) {
|
||||||
// 装备是否合法
|
// 装备是否合法
|
||||||
var equip = core.material.items[equipId] || {};
|
var equip = core.material.items[equipId] || {};
|
||||||
if (!core.isset(equip.equip)) {
|
if (!equip.equip) {
|
||||||
if (hint) core.drawTip("不合法的装备!");
|
if (hint) core.drawTip("不合法的装备!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -251,7 +237,7 @@ items.prototype.canEquip = function (equipId, hint) {
|
|||||||
|
|
||||||
// 可装备条件
|
// 可装备条件
|
||||||
var condition = this.equipCondition[equipId];
|
var condition = this.equipCondition[equipId];
|
||||||
if (core.isset(condition) && condition.length > 0) {
|
if (condition) {
|
||||||
try {
|
try {
|
||||||
if (!eval(condition)) {
|
if (!eval(condition)) {
|
||||||
if (hint) core.drawTip("当前不可换上" + equip.name);
|
if (hint) core.drawTip("当前不可换上" + equip.name);
|
||||||
@ -268,10 +254,8 @@ items.prototype.canEquip = function (equipId, hint) {
|
|||||||
|
|
||||||
////// 换上 //////
|
////// 换上 //////
|
||||||
items.prototype.loadEquip = function (equipId, callback) {
|
items.prototype.loadEquip = function (equipId, callback) {
|
||||||
if (!core.isset(core.status.hero)) return null;
|
|
||||||
if (!core.isset(core.status.hero.equipment)) core.status.hero.equipment = [];
|
|
||||||
if (!this.canEquip(equipId, true)) {
|
if (!this.canEquip(equipId, true)) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,7 +263,7 @@ items.prototype.loadEquip = function (equipId, callback) {
|
|||||||
var type = this.getEquipTypeById(equipId);
|
var type = this.getEquipTypeById(equipId);
|
||||||
if (type < 0) {
|
if (type < 0) {
|
||||||
core.drawTip("当前没有" + loadEquip.equip.type + "的空位!");
|
core.drawTip("当前没有" + loadEquip.equip.type + "的空位!");
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -288,12 +272,9 @@ items.prototype.loadEquip = function (equipId, callback) {
|
|||||||
|
|
||||||
////// 卸下 //////
|
////// 卸下 //////
|
||||||
items.prototype.unloadEquip = function (equipType, callback) {
|
items.prototype.unloadEquip = function (equipType, callback) {
|
||||||
if (!core.isset(core.status.hero)) return null;
|
|
||||||
if (!core.isset(core.status.hero.equipment)) core.status.hero.equipment = [];
|
|
||||||
|
|
||||||
var unloadEquipId = core.status.hero.equipment[equipType];
|
var unloadEquipId = core.status.hero.equipment[equipType];
|
||||||
if (!core.isset(unloadEquipId)) {
|
if (!unloadEquipId) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,13 +283,13 @@ items.prototype.unloadEquip = function (equipType, callback) {
|
|||||||
|
|
||||||
items.prototype.compareEquipment = function (compareEquipId, beComparedEquipId) {
|
items.prototype.compareEquipment = function (compareEquipId, beComparedEquipId) {
|
||||||
var compareAtk = 0, compareDef = 0, compareMdef = 0;
|
var compareAtk = 0, compareDef = 0, compareMdef = 0;
|
||||||
if (core.isset(compareEquipId)) {
|
if (compareEquipId) {
|
||||||
var compareEquip = core.material.items[compareEquipId];
|
var compareEquip = core.material.items[compareEquipId];
|
||||||
compareAtk += (compareEquip.equip || {}).atk || 0;
|
compareAtk += (compareEquip.equip || {}).atk || 0;
|
||||||
compareDef += (compareEquip.equip || {}).def || 0;
|
compareDef += (compareEquip.equip || {}).def || 0;
|
||||||
compareMdef += (compareEquip.equip || {}).mdef || 0;
|
compareMdef += (compareEquip.equip || {}).mdef || 0;
|
||||||
}
|
}
|
||||||
if (core.isset(beComparedEquipId)) {
|
if (beComparedEquipId) {
|
||||||
var beComparedEquip = core.material.items[beComparedEquipId];
|
var beComparedEquip = core.material.items[beComparedEquipId];
|
||||||
compareAtk -= (beComparedEquip.equip || {}).atk || 0;
|
compareAtk -= (beComparedEquip.equip || {}).atk || 0;
|
||||||
compareDef -= (beComparedEquip.equip || {}).def || 0;
|
compareDef -= (beComparedEquip.equip || {}).def || 0;
|
||||||
@ -334,15 +315,15 @@ items.prototype._loadEquipEffect = function (equipId, unloadEquipId, isPercentag
|
|||||||
|
|
||||||
items.prototype._realLoadEquip = function (type, loadId, unloadId, callback) {
|
items.prototype._realLoadEquip = function (type, loadId, unloadId, callback) {
|
||||||
var loadEquip = core.material.items[loadId] || {}, unloadEquip = core.material.items[unloadId] || {};
|
var loadEquip = core.material.items[loadId] || {}, unloadEquip = core.material.items[unloadId] || {};
|
||||||
if (!core.isset(loadEquip.equip)) loadEquip.equip = {};
|
loadEquip.equip = loadEquip.equip || {};
|
||||||
if (!core.isset(unloadEquip.equip)) unloadEquip.equip = {};
|
unloadEquip.equip = unloadEquip.equip || {}
|
||||||
|
|
||||||
var loadPercentage = loadEquip.equip.percentage, unloadPercentage = unloadEquip.equip.percentage;
|
var loadPercentage = loadEquip.equip.percentage, unloadPercentage = unloadEquip.equip.percentage;
|
||||||
|
|
||||||
if (loadPercentage != null && unloadPercentage != null && loadPercentage != unloadPercentage) {
|
if (loadPercentage != null && unloadPercentage != null && loadPercentage != unloadPercentage) {
|
||||||
this.unloadEquip(type);
|
this.unloadEquip(type);
|
||||||
this.loadEquip(loadId);
|
this.loadEquip(loadId);
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,12 +342,11 @@ items.prototype._realLoadEquip = function (type, loadId, unloadId, callback) {
|
|||||||
if (loadId) core.drawTip("已装备上" + loadEquip.name, core.material.icons.items[loadId]);
|
if (loadId) core.drawTip("已装备上" + loadEquip.name, core.material.icons.items[loadId]);
|
||||||
else if (unloadId) core.drawTip("已卸下" + unloadEquip.name, core.material.icons.items[unloadId]);
|
else if (unloadId) core.drawTip("已卸下" + unloadEquip.name, core.material.icons.items[unloadId]);
|
||||||
|
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 保存装备 //////
|
////// 保存装备 //////
|
||||||
items.prototype.quickSaveEquip = function (index) {
|
items.prototype.quickSaveEquip = function (index) {
|
||||||
if (!core.isset(core.status.hero.equipment)) core.status.hero.equipment = [];
|
|
||||||
var saveEquips = core.getFlag("saveEquips", []);
|
var saveEquips = core.getFlag("saveEquips", []);
|
||||||
saveEquips[index] = core.clone(core.status.hero.equipment);
|
saveEquips[index] = core.clone(core.status.hero.equipment);
|
||||||
core.setFlag("saveEquips", saveEquips);
|
core.setFlag("saveEquips", saveEquips);
|
||||||
@ -376,7 +356,7 @@ items.prototype.quickSaveEquip = function (index) {
|
|||||||
////// 读取装备 //////
|
////// 读取装备 //////
|
||||||
items.prototype.quickLoadEquip = function (index) {
|
items.prototype.quickLoadEquip = function (index) {
|
||||||
var current = core.getFlag("saveEquips", [])[index];
|
var current = core.getFlag("saveEquips", [])[index];
|
||||||
if (!core.isset(current)) {
|
if (!current) {
|
||||||
core.drawTip(index + "号套装不存在");
|
core.drawTip(index + "号套装不存在");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -384,21 +364,20 @@ items.prototype.quickLoadEquip = function (index) {
|
|||||||
var equipSize = core.status.globalAttribute.equipName.length;
|
var equipSize = core.status.globalAttribute.equipName.length;
|
||||||
for (var i = 0; i < equipSize; i++) {
|
for (var i = 0; i < equipSize; i++) {
|
||||||
var v = current[i];
|
var v = current[i];
|
||||||
if (core.isset(v) && !this.canEquip(v, true))
|
if (v && !this.canEquip(v, true))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 快速换装
|
// 快速换装
|
||||||
if (!core.isset(core.status.hero.equipment)) core.status.hero.equipment = [];
|
|
||||||
for (var i = 0; i < equipSize; i++) {
|
for (var i = 0; i < equipSize; i++) {
|
||||||
var now = core.status.hero.equipment[i] || null;
|
var now = core.status.hero.equipment[i];
|
||||||
if (now != null) {
|
if (now) {
|
||||||
this.unloadEquip(i);
|
this.unloadEquip(i);
|
||||||
core.status.route.push("unEquip:" + i);
|
core.status.route.push("unEquip:" + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var i = 0; i < equipSize; i++) {
|
for (var i = 0; i < equipSize; i++) {
|
||||||
var to = current[i] || null;
|
var to = current[i];
|
||||||
if (to != null) {
|
if (to) {
|
||||||
this.loadEquip(to);
|
this.loadEquip(to);
|
||||||
core.status.route.push("equip:" + to);
|
core.status.route.push("equip:" + to);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,7 +42,7 @@ loader.prototype._loadIcons = function () {
|
|||||||
for (var key in core.statusBar.icons) {
|
for (var 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.isset(core.statusBar.image[key]))
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -82,7 +82,7 @@ loader.prototype._loadAutotiles = function (callback) {
|
|||||||
|
|
||||||
loader.prototype._loadTilesets = function (callback) {
|
loader.prototype._loadTilesets = function (callback) {
|
||||||
core.material.images.tilesets = {};
|
core.material.images.tilesets = {};
|
||||||
if (!core.isset(core.tilesets)) core.tilesets = [];
|
core.tilesets = core.tilesets || [];
|
||||||
core.loader.loadImages(core.clone(core.tilesets), core.material.images.tilesets, function () {
|
core.loader.loadImages(core.clone(core.tilesets), core.material.images.tilesets, function () {
|
||||||
// 检查宽高是32倍数,如果出错在控制台报错
|
// 检查宽高是32倍数,如果出错在控制台报错
|
||||||
for (var imgName in core.material.images.tilesets) {
|
for (var imgName in core.material.images.tilesets) {
|
||||||
@ -99,8 +99,8 @@ loader.prototype._loadTilesets = function (callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loader.prototype.loadImages = function (names, toSave, callback) {
|
loader.prototype.loadImages = function (names, toSave, callback) {
|
||||||
if (!core.isset(names) || names.length == 0) {
|
if (!names || names.length == 0) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var items = 0;
|
var items = 0;
|
||||||
@ -111,7 +111,7 @@ loader.prototype.loadImages = function (names, toSave, callback) {
|
|||||||
items++;
|
items++;
|
||||||
core.loader._setStartProgressVal(items * (100 / names.length));
|
core.loader._setStartProgressVal(items * (100 / names.length));
|
||||||
if (items == names.length) {
|
if (items == names.length) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -144,7 +144,7 @@ loader.prototype._loadAnimates = function () {
|
|||||||
data.images = [];
|
data.images = [];
|
||||||
data.images_rev = [];
|
data.images_rev = [];
|
||||||
content.bitmaps.forEach(function (t2) {
|
content.bitmaps.forEach(function (t2) {
|
||||||
if (!core.isset(t2) || t2 == "") {
|
if (!t2) {
|
||||||
data.images.push(null);
|
data.images.push(null);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -238,7 +238,7 @@ loader.prototype.loadOneSound = function (name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loader.prototype.loadBgm = function (name) {
|
loader.prototype.loadBgm = function (name) {
|
||||||
if (!core.isset(core.material.bgms[name])) return;
|
if (!core.material.bgms[name]) return;
|
||||||
// 如果没开启音乐,则不预加载
|
// 如果没开启音乐,则不预加载
|
||||||
if (!core.musicStatus.bgmStatus) return;
|
if (!core.musicStatus.bgmStatus) return;
|
||||||
// 是否已经预加载过
|
// 是否已经预加载过
|
||||||
@ -265,7 +265,7 @@ loader.prototype._preloadBgm = function (bgm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loader.prototype.freeBgm = function (name) {
|
loader.prototype.freeBgm = function (name) {
|
||||||
if (!core.isset(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;
|
||||||
|
|||||||
179
libs/maps.js
179
libs/maps.js
@ -10,7 +10,7 @@ maps.prototype._init = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
maps.prototype._setFloorSize = function (floorId) {
|
maps.prototype._setFloorSize = function (floorId) {
|
||||||
if (!core.isset(floorId)) {
|
if (!floorId) {
|
||||||
core.floorIds.forEach(function (floorId) {
|
core.floorIds.forEach(function (floorId) {
|
||||||
core.maps._setFloorSize(floorId);
|
core.maps._setFloorSize(floorId);
|
||||||
});
|
});
|
||||||
@ -25,14 +25,14 @@ maps.prototype._setFloorSize = function (floorId) {
|
|||||||
////// 加载某个楼层(从剧本或存档中) //////
|
////// 加载某个楼层(从剧本或存档中) //////
|
||||||
maps.prototype.loadFloor = function (floorId, map) {
|
maps.prototype.loadFloor = function (floorId, map) {
|
||||||
var floor = core.floors[floorId];
|
var floor = core.floors[floorId];
|
||||||
if (!core.isset(map)) map = floor.map;
|
if (!map) map = floor.map;
|
||||||
if (map instanceof Array) {
|
if (map instanceof Array) {
|
||||||
map = {"map": map};
|
map = {"map": map};
|
||||||
}
|
}
|
||||||
var content = {};
|
var content = {};
|
||||||
["floorId", "title", "name", "canFlyTo", "canUseQuickShop", "cannotViewMap", "cannotMoveDirectly", "color", "weather",
|
["floorId", "title", "name", "canFlyTo", "canUseQuickShop", "cannotViewMap", "cannotMoveDirectly", "color", "weather",
|
||||||
"defaultGround", "images", "item_ratio", "upFloor", "bgm", "downFloor", "underGround"].forEach(function (e) {
|
"defaultGround", "images", "item_ratio", "upFloor", "bgm", "downFloor", "underGround"].forEach(function (e) {
|
||||||
if (core.isset(map[e])) content[e] = core.clone(map[e]);
|
if (map[e] != null) content[e] = core.clone(map[e]);
|
||||||
else content[e] = core.clone(floor[e]);
|
else content[e] = core.clone(floor[e]);
|
||||||
});
|
});
|
||||||
map = this.decompressMap(map.map, floorId);
|
map = this.decompressMap(map.map, floorId);
|
||||||
@ -98,18 +98,18 @@ maps.prototype.initBlock = function (x, y, id, addInfo, eventFloor) {
|
|||||||
|
|
||||||
////// 添加一些信息到block上 //////
|
////// 添加一些信息到block上 //////
|
||||||
maps.prototype._addInfo = function (block) {
|
maps.prototype._addInfo = function (block) {
|
||||||
if (block.event.cls.indexOf("enemy") == 0 && !core.isset(block.event.trigger)) {
|
if (block.event.cls.indexOf("enemy") == 0 && !block.event.trigger) {
|
||||||
block.event.trigger = 'battle';
|
block.event.trigger = 'battle';
|
||||||
}
|
}
|
||||||
if (block.event.cls == 'items' && !core.isset(block.event.trigger)) {
|
if (block.event.cls == 'items' && !block.event.trigger) {
|
||||||
block.event.trigger = 'getItem';
|
block.event.trigger = 'getItem';
|
||||||
}
|
}
|
||||||
if (!core.isset(block.event.noPass)) {
|
if (block.event.noPass == null) {
|
||||||
if (block.event.cls != 'items') {
|
if (block.event.cls != 'items') {
|
||||||
block.event.noPass = true;
|
block.event.noPass = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!core.isset(block.event.animate)) {
|
if (block.event.animate == null) {
|
||||||
block.event.animate = core.icons._getAnimateFrames(block.event.cls, false);
|
block.event.animate = core.icons._getAnimateFrames(block.event.cls, false);
|
||||||
}
|
}
|
||||||
block.event.height = 32;
|
block.event.height = 32;
|
||||||
@ -119,7 +119,7 @@ maps.prototype._addInfo = function (block) {
|
|||||||
|
|
||||||
////// 向该楼层添加剧本的自定义事件 //////
|
////// 向该楼层添加剧本的自定义事件 //////
|
||||||
maps.prototype._addEvent = function (block, x, y, event) {
|
maps.prototype._addEvent = function (block, x, y, event) {
|
||||||
if (!core.isset(event)) return;
|
if (!event) return;
|
||||||
// event是字符串或数组?
|
// event是字符串或数组?
|
||||||
if (typeof event == "string") {
|
if (typeof event == "string") {
|
||||||
event = {"data": [event]};
|
event = {"data": [event]};
|
||||||
@ -127,11 +127,10 @@ maps.prototype._addEvent = function (block, x, y, event) {
|
|||||||
else if (event instanceof Array) {
|
else if (event instanceof Array) {
|
||||||
event = {"data": event};
|
event = {"data": event};
|
||||||
}
|
}
|
||||||
if (!core.isset(event.data))
|
event.data = event.data || [];
|
||||||
event.data = [];
|
|
||||||
|
|
||||||
// 覆盖enable
|
// 覆盖enable
|
||||||
if (!core.isset(block.disable) && core.isset(event.enable)) {
|
if (block.disable == null && event.enable != null) {
|
||||||
block.disable = !event.enable;
|
block.disable = !event.enable;
|
||||||
}
|
}
|
||||||
// 覆盖animate
|
// 覆盖animate
|
||||||
@ -140,12 +139,12 @@ maps.prototype._addEvent = function (block, x, y, event) {
|
|||||||
}
|
}
|
||||||
// 覆盖所有属性
|
// 覆盖所有属性
|
||||||
for (var key in event) {
|
for (var key in event) {
|
||||||
if (key != "enable" && key != "animate" && core.isset(event[key])) {
|
if (key != "enable" && key != "animate" && event[key] != null) {
|
||||||
block.event[key] = core.clone(event[key]);
|
block.event[key] = core.clone(event[key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 给无trigger的增加trigger:action
|
// 给无trigger的增加trigger:action
|
||||||
if (!core.isset(block.event.trigger)) {
|
if (!block.event.trigger) {
|
||||||
block.event.trigger = 'action';
|
block.event.trigger = 'action';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,12 +166,12 @@ maps.prototype._initFloorMap = function (floorId) {
|
|||||||
var mh = core.floors[floorId].height;
|
var mh = core.floors[floorId].height;
|
||||||
|
|
||||||
for (var x = 0; x < mh; x++) {
|
for (var x = 0; x < mh; x++) {
|
||||||
if (!core.isset(map[x])) map[x] = [];
|
if (map[x] == null) map[x] = [];
|
||||||
for (var y = 0; y < mw; y++) {
|
for (var y = 0; y < mw; y++) {
|
||||||
if (!core.isset(map[x][y])) map[x][y] = 0;
|
if (map[x][y] == null) map[x][y] = 0;
|
||||||
// check "disable"
|
// check "disable"
|
||||||
var event = core.floors[floorId].events[y + "," + x];
|
var event = core.floors[floorId].events[y + "," + x];
|
||||||
if (core.isset(event) && event.enable === false && main.mode == 'play') {
|
if (event && event.enable === false && main.mode == 'play') {
|
||||||
map[x][y] += ":f";
|
map[x][y] += ":f";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -208,7 +207,7 @@ maps.prototype.compressMap = function (mapArr, floorId) {
|
|||||||
////// 解压缩地图
|
////// 解压缩地图
|
||||||
maps.prototype.decompressMap = function (mapArr, floorId) {
|
maps.prototype.decompressMap = function (mapArr, floorId) {
|
||||||
var floorMap = this._initFloorMap(floorId);
|
var floorMap = this._initFloorMap(floorId);
|
||||||
if (!core.isset(mapArr)) return floorMap;
|
if (!mapArr) return floorMap;
|
||||||
|
|
||||||
var mw = core.floors[floorId].width;
|
var mw = core.floors[floorId].width;
|
||||||
var mh = core.floors[floorId].height;
|
var mh = core.floors[floorId].height;
|
||||||
@ -230,7 +229,7 @@ maps.prototype.decompressMap = function (mapArr, floorId) {
|
|||||||
////// 将当前地图重新变成数字,以便于存档 //////
|
////// 将当前地图重新变成数字,以便于存档 //////
|
||||||
maps.prototype.saveMap = function (floorId) {
|
maps.prototype.saveMap = function (floorId) {
|
||||||
var maps = core.status.maps;
|
var maps = core.status.maps;
|
||||||
if (!core.isset(floorId)) {
|
if (!floorId) {
|
||||||
var map = {};
|
var map = {};
|
||||||
for (var id in maps) {
|
for (var id in maps) {
|
||||||
map[id] = this.saveMap(id);
|
map[id] = this.saveMap(id);
|
||||||
@ -262,7 +261,7 @@ maps.prototype._compressFloorData = function (map, floor) {
|
|||||||
|
|
||||||
////// 将存档中的地图信息重新读取出来 //////
|
////// 将存档中的地图信息重新读取出来 //////
|
||||||
maps.prototype.loadMap = function (data, floorId) {
|
maps.prototype.loadMap = function (data, floorId) {
|
||||||
if (!core.isset(floorId)) {
|
if (!floorId) {
|
||||||
var map = {};
|
var map = {};
|
||||||
core.floorIds.forEach(function (id) {
|
core.floorIds.forEach(function (id) {
|
||||||
map[id] = core.maps.loadFloor(id, data[id]);
|
map[id] = core.maps.loadFloor(id, data[id]);
|
||||||
@ -275,7 +274,7 @@ maps.prototype.loadMap = function (data, floorId) {
|
|||||||
////// 更改地图画布的尺寸
|
////// 更改地图画布的尺寸
|
||||||
maps.prototype.resizeMap = function (floorId) {
|
maps.prototype.resizeMap = function (floorId) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
core.bigmap.width = core.floors[floorId].width;
|
core.bigmap.width = core.floors[floorId].width;
|
||||||
core.bigmap.height = core.floors[floorId].height;
|
core.bigmap.height = core.floors[floorId].height;
|
||||||
var cwidth = core.bigmap.width * 32;
|
var cwidth = core.bigmap.width * 32;
|
||||||
@ -334,11 +333,11 @@ maps.prototype.getMapBlocksObj = function (floorId, showDisable) {
|
|||||||
////// 将背景前景层变成二维数组的形式 //////
|
////// 将背景前景层变成二维数组的形式 //////
|
||||||
maps.prototype.getBgFgMapArray = function (name, floorId, useCache) {
|
maps.prototype.getBgFgMapArray = function (name, floorId, useCache) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return [];
|
if (!floorId) return [];
|
||||||
var width = core.floors[floorId].width;
|
var width = core.floors[floorId].width;
|
||||||
var height = core.floors[floorId].height;
|
var height = core.floors[floorId].height;
|
||||||
|
|
||||||
if (useCache && core.isset(core.status[name + "maps"][floorId]))
|
if (useCache && core.status[name + "maps"][floorId])
|
||||||
return core.status[name + "maps"][floorId];
|
return core.status[name + "maps"][floorId];
|
||||||
|
|
||||||
var arr = core.clone(core.floors[floorId][name + "map"] || []);
|
var arr = core.clone(core.floors[floorId][name + "map"] || []);
|
||||||
@ -363,7 +362,7 @@ maps.prototype.getBgFgMapArray = function (name, floorId, useCache) {
|
|||||||
////// 生成全图的当前可移动信息 //////
|
////// 生成全图的当前可移动信息 //////
|
||||||
maps.prototype.generateMovableArray = function (floorId, x, y) {
|
maps.prototype.generateMovableArray = function (floorId, x, y) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return null;
|
if (!floorId) return null;
|
||||||
var width = core.floors[floorId].width, height = core.floors[floorId].height;
|
var width = core.floors[floorId].width, height = core.floors[floorId].height;
|
||||||
var bgArray = this.getBgFgMapArray('bg', floorId, true),
|
var bgArray = this.getBgFgMapArray('bg', floorId, true),
|
||||||
fgArray = this.getBgFgMapArray('fg', floorId, true),
|
fgArray = this.getBgFgMapArray('fg', floorId, true),
|
||||||
@ -377,7 +376,7 @@ maps.prototype.generateMovableArray = function (floorId, x, y) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (core.isset(x) && core.isset(y)) return generate(x, y);
|
if (x != null && y != null) return generate(x, y);
|
||||||
var array = [];
|
var array = [];
|
||||||
for (var x = 0; x < width; x++) {
|
for (var x = 0; x < width; x++) {
|
||||||
array[x] = [];
|
array[x] = [];
|
||||||
@ -390,9 +389,9 @@ maps.prototype.generateMovableArray = function (floorId, x, y) {
|
|||||||
|
|
||||||
////// 勇士能否前往某方向 //////
|
////// 勇士能否前往某方向 //////
|
||||||
maps.prototype.canMoveHero = function (x, y, direction, floorId) {
|
maps.prototype.canMoveHero = function (x, y, direction, floorId) {
|
||||||
if (!core.isset(x)) x = core.getHeroLoc('x');
|
if (x == null) x = core.getHeroLoc('x');
|
||||||
if (!core.isset(y)) y = core.getHeroLoc('y');
|
if (y == null) y = core.getHeroLoc('y');
|
||||||
if (!core.isset(direction)) direction = core.getHeroLoc('direction');
|
direction = direction || core.getHeroLoc('direction');
|
||||||
return core.inArray(this.generateMovableArray(floorId, x, y), direction);
|
return core.inArray(this.generateMovableArray(floorId, x, y), direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -513,7 +512,7 @@ maps.prototype._canMoveDirectly_checkNextPoint = function (blocksObj, x, y) {
|
|||||||
////// 绘制一个图块 //////
|
////// 绘制一个图块 //////
|
||||||
maps.prototype.drawBlock = function (block, animate) {
|
maps.prototype.drawBlock = function (block, animate) {
|
||||||
if (block.event.id == 'none') return;
|
if (block.event.id == 'none') return;
|
||||||
var redraw = core.isset(animate);
|
var redraw = animate != null;
|
||||||
if (!redraw) animate = 0;
|
if (!redraw) animate = 0;
|
||||||
var x = block.x, y = block.y;
|
var x = block.x, y = block.y;
|
||||||
// --- 在界面外的动画不绘制
|
// --- 在界面外的动画不绘制
|
||||||
@ -526,7 +525,7 @@ maps.prototype.drawBlock = function (block, animate) {
|
|||||||
var blockInfo = this.getBlockInfo(block);
|
var blockInfo = this.getBlockInfo(block);
|
||||||
if (blockInfo == null) return;
|
if (blockInfo == null) return;
|
||||||
if (blockInfo.cls != 'tileset') blockInfo.posX = animate % block.event.animate;
|
if (blockInfo.cls != 'tileset') blockInfo.posX = animate % block.event.animate;
|
||||||
if (!core.isset(block.name))
|
if (!block.name)
|
||||||
this._drawBlockInfo(blockInfo, block.x, block.y);
|
this._drawBlockInfo(blockInfo, block.x, block.y);
|
||||||
else
|
else
|
||||||
this._drawBlockInfo_bgfg(blockInfo, block.name, block.x, block.y);
|
this._drawBlockInfo_bgfg(blockInfo, block.name, block.x, block.y);
|
||||||
@ -571,8 +570,8 @@ maps.prototype.generateGroundPattern = function (floorId) {
|
|||||||
////// 绘制某张地图 //////
|
////// 绘制某张地图 //////
|
||||||
maps.prototype.drawMap = function (floorId, callback) {
|
maps.prototype.drawMap = function (floorId, callback) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) {
|
if (!floorId) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
core.clearMap('all');
|
core.clearMap('all');
|
||||||
@ -581,14 +580,13 @@ maps.prototype.drawMap = function (floorId, callback) {
|
|||||||
core.status.thisMap = core.status.maps[floorId];
|
core.status.thisMap = core.status.maps[floorId];
|
||||||
|
|
||||||
this._drawMap_drawAll();
|
this._drawMap_drawAll();
|
||||||
if (core.isset(core.status.curtainColor)) {
|
if (core.status.curtainColor) {
|
||||||
core.fillRect('curtain', 0, 0, core.__PIXELS__, core.__PIXELS__,
|
core.fillRect('curtain', 0, 0, core.__PIXELS__, core.__PIXELS__,
|
||||||
core.arrayToRGBA(core.status.curtainColor));
|
core.arrayToRGBA(core.status.curtainColor));
|
||||||
}
|
}
|
||||||
core.drawHero();
|
core.drawHero();
|
||||||
core.updateStatusBar();
|
core.updateStatusBar();
|
||||||
if (core.isset(callback))
|
if (callback) callback();
|
||||||
callback();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
maps.prototype._drawMap_drawAll = function (floorId) {
|
maps.prototype._drawMap_drawAll = function (floorId) {
|
||||||
@ -616,7 +614,7 @@ maps.prototype._drawMap_drawBlockInfo = function (ctx, block, blockInfo, arr, on
|
|||||||
|
|
||||||
////// 绘制背景层 //////
|
////// 绘制背景层 //////
|
||||||
maps.prototype.drawBg = function (floorId, ctx) {
|
maps.prototype.drawBg = function (floorId, ctx) {
|
||||||
var onMap = !core.isset(ctx);
|
var onMap = ctx == null;
|
||||||
if (onMap) {
|
if (onMap) {
|
||||||
ctx = core.canvas.bg;
|
ctx = core.canvas.bg;
|
||||||
core.clearMap(ctx);
|
core.clearMap(ctx);
|
||||||
@ -631,7 +629,7 @@ maps.prototype._drawBg_drawBackground = function (floorId, ctx) {
|
|||||||
var width = core.floors[floorId].width, height = core.floors[floorId].height;
|
var width = core.floors[floorId].width, height = core.floors[floorId].height;
|
||||||
var groundId = (core.status.maps || core.floors)[floorId].defaultGround || "ground";
|
var groundId = (core.status.maps || core.floors)[floorId].defaultGround || "ground";
|
||||||
var yOffset = core.material.icons.terrains[groundId];
|
var yOffset = core.material.icons.terrains[groundId];
|
||||||
if (core.isset(yOffset)) {
|
if (yOffset != null) {
|
||||||
for (var i = 0; i < width; i++) {
|
for (var i = 0; i < width; i++) {
|
||||||
for (var j = 0; j < height; j++) {
|
for (var j = 0; j < height; j++) {
|
||||||
ctx.drawImage(core.material.images.terrains, 0, yOffset * 32, 32, 32, i * 32, j * 32, 32, 32);
|
ctx.drawImage(core.material.images.terrains, 0, yOffset * 32, 32, 32, i * 32, j * 32, 32, 32);
|
||||||
@ -643,9 +641,9 @@ maps.prototype._drawBg_drawBackground = function (floorId, ctx) {
|
|||||||
////// 绘制事件层 //////
|
////// 绘制事件层 //////
|
||||||
maps.prototype.drawEvents = function (floorId, blocks, ctx) {
|
maps.prototype.drawEvents = function (floorId, blocks, ctx) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(blocks)) blocks = core.status.maps[floorId].blocks;
|
if (!blocks) blocks = core.status.maps[floorId].blocks;
|
||||||
var arr = this.getMapArray(blocks, core.floors[floorId].width, core.floors[floorId].height);
|
var arr = this.getMapArray(blocks, core.floors[floorId].width, core.floors[floorId].height);
|
||||||
var onMap = !core.isset(ctx);
|
var onMap = ctx == null;
|
||||||
if (onMap) ctx = core.canvas.event;
|
if (onMap) ctx = core.canvas.event;
|
||||||
blocks.filter(function (block) {
|
blocks.filter(function (block) {
|
||||||
return block.event && !block.disable;
|
return block.event && !block.disable;
|
||||||
@ -657,7 +655,7 @@ maps.prototype.drawEvents = function (floorId, blocks, ctx) {
|
|||||||
|
|
||||||
////// 绘制前景层 //////
|
////// 绘制前景层 //////
|
||||||
maps.prototype.drawFg = function (floorId, ctx) {
|
maps.prototype.drawFg = function (floorId, ctx) {
|
||||||
var onMap = !core.isset(ctx);
|
var onMap = ctx == null;
|
||||||
if (onMap) ctx = core.canvas.fg;
|
if (onMap) ctx = core.canvas.fg;
|
||||||
// ------ 调整这两行的顺序来控制是先绘制贴图还是先绘制背景图块;后绘制的覆盖先绘制的。
|
// ------ 调整这两行的顺序来控制是先绘制贴图还是先绘制背景图块;后绘制的覆盖先绘制的。
|
||||||
this._drawFloorImages(floorId, ctx, 'fg');
|
this._drawFloorImages(floorId, ctx, 'fg');
|
||||||
@ -667,11 +665,11 @@ maps.prototype.drawFg = function (floorId, ctx) {
|
|||||||
////// 实际的背景/前景图块的绘制 //////
|
////// 实际的背景/前景图块的绘制 //////
|
||||||
maps.prototype._drawBgFgMap = function (floorId, ctx, name, onMap) {
|
maps.prototype._drawBgFgMap = function (floorId, ctx, name, onMap) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
var width = core.floors[floorId].width;
|
var width = core.floors[floorId].width;
|
||||||
var height = core.floors[floorId].height;
|
var height = core.floors[floorId].height;
|
||||||
|
|
||||||
if (!core.isset(core.status[name + "maps"]))
|
if (!core.status[name + "maps"])
|
||||||
core.status[name + "maps"] = {};
|
core.status[name + "maps"] = {};
|
||||||
|
|
||||||
var arr = this.getBgFgMapArray(name, floorId);
|
var arr = this.getBgFgMapArray(name, floorId);
|
||||||
@ -680,7 +678,7 @@ maps.prototype._drawBgFgMap = function (floorId, ctx, name, onMap) {
|
|||||||
var block = this.initBlock(x, y, arr[y][x], true);
|
var block = this.initBlock(x, y, arr[y][x], true);
|
||||||
block.name = name;
|
block.name = name;
|
||||||
var blockInfo = this.getBlockInfo(block);
|
var blockInfo = this.getBlockInfo(block);
|
||||||
if (!core.isset(blockInfo)) continue;
|
if (!blockInfo) continue;
|
||||||
this._drawMap_drawBlockInfo(ctx, block, blockInfo, arr, onMap);
|
this._drawMap_drawBlockInfo(ctx, block, blockInfo, arr, onMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -691,8 +689,8 @@ maps.prototype._drawBgFgMap = function (floorId, ctx, name, onMap) {
|
|||||||
////// 绘制楼层贴图 //////
|
////// 绘制楼层贴图 //////
|
||||||
maps.prototype._drawFloorImages = function (floorId, ctx, name, images, currStatus) {
|
maps.prototype._drawFloorImages = function (floorId, ctx, name, images, currStatus) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(images)) images = this._getFloorImages(floorId);
|
if (!images) images = this._getFloorImages(floorId);
|
||||||
var redraw = core.isset(currStatus);
|
var redraw = currStatus != null;
|
||||||
if (!redraw) core.status.floorAnimateObjs = core.clone(images);
|
if (!redraw) core.status.floorAnimateObjs = core.clone(images);
|
||||||
images.forEach(function (t) {
|
images.forEach(function (t) {
|
||||||
if (typeof t == 'string') t = [0, 0, t];
|
if (typeof t == 'string') t = [0, 0, t];
|
||||||
@ -700,7 +698,7 @@ maps.prototype._drawFloorImages = function (floorId, ctx, name, images, currStat
|
|||||||
var image = core.material.images.images[imageName];
|
var image = core.material.images.images[imageName];
|
||||||
if (redraw && frame == 1) return; // 不重绘
|
if (redraw && frame == 1) return; // 不重绘
|
||||||
|
|
||||||
if (core.isset(dx) && core.isset(dy) && core.isset(image) &&
|
if (core.isset(dx) && core.isset(dy) && image &&
|
||||||
!core.hasFlag("__floorImg__" + floorId + "_" + dx + "_" + dy)) {
|
!core.hasFlag("__floorImg__" + floorId + "_" + dx + "_" + dy)) {
|
||||||
var width = parseInt(image.width / frame), offsetX = (currStatus || 0) % frame * width;
|
var width = parseInt(image.width / frame), offsetX = (currStatus || 0) % frame * width;
|
||||||
if (/.*\.gif/i.test(imageName) && main.mode == 'play') {
|
if (/.*\.gif/i.test(imageName) && main.mode == 'play') {
|
||||||
@ -716,7 +714,7 @@ maps.prototype._drawFloorImages = function (floorId, ctx, name, images, currStat
|
|||||||
maps.prototype._getFloorImages = function (floorId) {
|
maps.prototype._getFloorImages = function (floorId) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
var images = [];
|
var images = [];
|
||||||
if (core.isset((core.status.maps || core.floors)[floorId].images)) {
|
if ((core.status.maps || core.floors)[floorId].images) {
|
||||||
images = (core.status.maps || core.floors)[floorId].images;
|
images = (core.status.maps || core.floors)[floorId].images;
|
||||||
if (typeof images == 'string') {
|
if (typeof images == 'string') {
|
||||||
images = [[0, 0, images]];
|
images = [[0, 0, images]];
|
||||||
@ -897,7 +895,7 @@ maps.prototype._makeAutotileEdges = function () {
|
|||||||
// all:是否绘制全图(默认false);centerX,centerY:截取中心(默认为地图正中心)
|
// all:是否绘制全图(默认false);centerX,centerY:截取中心(默认为地图正中心)
|
||||||
maps.prototype.drawThumbnail = function (floorId, blocks, options, toDraw) {
|
maps.prototype.drawThumbnail = function (floorId, blocks, options, toDraw) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
// Step1:绘制到tempCanvas上
|
// Step1:绘制到tempCanvas上
|
||||||
this._drawThumbnail_drawTempCanvas(floorId, blocks, options);
|
this._drawThumbnail_drawTempCanvas(floorId, blocks, options);
|
||||||
// Step2:从tempCanvas绘制到对应的画布上
|
// Step2:从tempCanvas绘制到对应的画布上
|
||||||
@ -905,8 +903,8 @@ maps.prototype.drawThumbnail = function (floorId, blocks, options, toDraw) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
maps.prototype._drawThumbnail_drawTempCanvas = function (floorId, blocks, options) {
|
maps.prototype._drawThumbnail_drawTempCanvas = function (floorId, blocks, options) {
|
||||||
if (!core.isset(blocks)) blocks = core.status.maps[floorId].blocks;
|
blocks = blocks || core.status.maps[floorId].blocks;
|
||||||
if (!core.isset(options)) options = {};
|
options = options || {}
|
||||||
|
|
||||||
var width = core.floors[floorId].width;
|
var width = core.floors[floorId].width;
|
||||||
var height = core.floors[floorId].height;
|
var height = core.floors[floorId].height;
|
||||||
@ -918,7 +916,7 @@ maps.prototype._drawThumbnail_drawTempCanvas = function (floorId, blocks, option
|
|||||||
tempCanvas.clearRect(0, 0, tempWidth, tempHeight);
|
tempCanvas.clearRect(0, 0, tempWidth, tempHeight);
|
||||||
|
|
||||||
// --- 暂存 flags
|
// --- 暂存 flags
|
||||||
var hasHero = core.isset(core.status.hero), flags = null;
|
var hasHero = core.status.hero != null, flags = null;
|
||||||
if (options.flags) {
|
if (options.flags) {
|
||||||
if (!hasHero) core.status.hero = {};
|
if (!hasHero) core.status.hero = {};
|
||||||
flags = core.status.hero.flags;
|
flags = core.status.hero.flags;
|
||||||
@ -953,15 +951,15 @@ maps.prototype._drawThumbnail_realDrawTempCanvas = function (floorId, blocks, op
|
|||||||
}
|
}
|
||||||
|
|
||||||
maps.prototype._drawThumbnail_drawToTarget = function (floorId, toDraw) {
|
maps.prototype._drawThumbnail_drawToTarget = function (floorId, toDraw) {
|
||||||
if (!core.isset(toDraw)) return;
|
if (toDraw == null) return;
|
||||||
if (typeof toDraw == 'string' || toDraw.canvas) toDraw = {ctx: toDraw};
|
if (typeof toDraw == 'string' || toDraw.canvas) toDraw = {ctx: toDraw};
|
||||||
var ctx = core.getContextByName(toDraw.ctx);
|
var ctx = core.getContextByName(toDraw.ctx);
|
||||||
if (ctx == null) return;
|
if (ctx == null) return;
|
||||||
var x = toDraw.x || 0, y = toDraw.y || 0, size = toDraw.size || core.__PIXELS__;
|
var x = toDraw.x || 0, y = toDraw.y || 0, size = toDraw.size || core.__PIXELS__;
|
||||||
var width = core.floors[floorId].width, height = core.floors[floorId].height;
|
var width = core.floors[floorId].width, height = core.floors[floorId].height;
|
||||||
var centerX = toDraw.centerX, centerY = toDraw.centerY;
|
var centerX = toDraw.centerX, centerY = toDraw.centerY;
|
||||||
if (!core.isset(centerX)) centerX = Math.floor(width / 2);
|
if (centerX == null) centerX = Math.floor(width / 2);
|
||||||
if (!core.isset(centerY)) centerY = Math.floor(height / 2);
|
if (centerY == null) centerY = Math.floor(height / 2);
|
||||||
var tempCanvas = core.bigmap.tempCanvas, tempWidth = 32 * width, tempHeight = 32 * height;
|
var tempCanvas = core.bigmap.tempCanvas, tempWidth = 32 * width, tempHeight = 32 * height;
|
||||||
|
|
||||||
core.clearMap(ctx, x, y, size, size);
|
core.clearMap(ctx, x, y, size, size);
|
||||||
@ -996,7 +994,7 @@ maps.prototype._drawThumbnail_drawToTarget = function (floorId, toDraw) {
|
|||||||
maps.prototype.noPass = function (x, y, floorId) {
|
maps.prototype.noPass = function (x, y, floorId) {
|
||||||
var block = core.getBlock(x, y, floorId);
|
var block = core.getBlock(x, y, floorId);
|
||||||
if (block == null) return false;
|
if (block == null) return false;
|
||||||
return core.isset(block.block.event.noPass) && block.block.event.noPass;
|
return block.block.event.noPass;
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 某个点是否存在NPC //////
|
////// 某个点是否存在NPC //////
|
||||||
@ -1010,7 +1008,7 @@ maps.prototype.npcExists = function (x, y, floorId) {
|
|||||||
maps.prototype.terrainExists = function (x, y, id, floorId) {
|
maps.prototype.terrainExists = function (x, y, id, floorId) {
|
||||||
var block = this.getBlock(x, y, floorId);
|
var block = this.getBlock(x, y, floorId);
|
||||||
if (block == null) return false;
|
if (block == null) return false;
|
||||||
return block.block.event.cls == 'terrains' && (core.isset(id) ? block.block.event.id == id : true);
|
return block.block.event.cls == 'terrains' && (id ? block.block.event.id == id : true);
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 某个点是否存在楼梯 //////
|
////// 某个点是否存在楼梯 //////
|
||||||
@ -1030,16 +1028,16 @@ maps.prototype.nearStair = function () {
|
|||||||
maps.prototype.enemyExists = function (x, y, id, floorId) {
|
maps.prototype.enemyExists = function (x, y, id, floorId) {
|
||||||
var block = this.getBlock(x, y, floorId);
|
var block = this.getBlock(x, y, floorId);
|
||||||
if (block == null) return false;
|
if (block == null) return false;
|
||||||
return block.block.event.cls.indexOf('enemy') == 0 && (core.isset(id) ? block.block.event.id == id : true);
|
return block.block.event.cls.indexOf('enemy') == 0 && (id ? block.block.event.id == id : true);
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 获得某个点的block //////
|
////// 获得某个点的block //////
|
||||||
maps.prototype.getBlock = function (x, y, floorId, showDisable) {
|
maps.prototype.getBlock = function (x, y, floorId, showDisable) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return null;
|
if (!floorId) return null;
|
||||||
var blocks = core.status.maps[floorId].blocks;
|
var blocks = core.status.maps[floorId].blocks;
|
||||||
for (var n = 0; n < blocks.length; n++) {
|
for (var n = 0; n < blocks.length; n++) {
|
||||||
if (blocks[n].x == x && blocks[n].y == y && core.isset(blocks[n].event)) {
|
if (blocks[n].x == x && blocks[n].y == y) {
|
||||||
if (!showDisable && blocks[n].disable) return null;
|
if (!showDisable && blocks[n].disable) return null;
|
||||||
return {"index": n, "block": blocks[n]};
|
return {"index": n, "block": blocks[n]};
|
||||||
}
|
}
|
||||||
@ -1061,7 +1059,7 @@ maps.prototype.getBlockCls = function (x, y, floorId, showDisable) {
|
|||||||
|
|
||||||
////// 获得某个图块或素材的信息,包括 ID,cls,图片,坐标,faceIds 等等 //////
|
////// 获得某个图块或素材的信息,包括 ID,cls,图片,坐标,faceIds 等等 //////
|
||||||
maps.prototype.getBlockInfo = function (block) {
|
maps.prototype.getBlockInfo = function (block) {
|
||||||
if (!core.isset(block)) return null;
|
if (!block) return null;
|
||||||
if (typeof block == 'string') { // 参数是ID
|
if (typeof block == 'string') { // 参数是ID
|
||||||
block = this.getNumberById(block);
|
block = this.getNumberById(block);
|
||||||
}
|
}
|
||||||
@ -1075,7 +1073,7 @@ maps.prototype.getBlockInfo = function (block) {
|
|||||||
|
|
||||||
if (id == 'none') return null;
|
if (id == 'none') return null;
|
||||||
else if (id == 'airwall') {
|
else if (id == 'airwall') {
|
||||||
if (!core.isset(core.material.images.airwall)) return null;
|
if (!core.material.images.airwall) return null;
|
||||||
image = core.material.images.airwall;
|
image = core.material.images.airwall;
|
||||||
}
|
}
|
||||||
else if (cls == 'tileset') {
|
else if (cls == 'tileset') {
|
||||||
@ -1121,7 +1119,7 @@ maps.prototype.searchBlock = function (id, floorId, showDisable) {
|
|||||||
////// 将某个块从禁用变成启用状态 //////
|
////// 将某个块从禁用变成启用状态 //////
|
||||||
maps.prototype.showBlock = function (x, y, floorId) {
|
maps.prototype.showBlock = function (x, y, floorId) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
var block = core.getBlock(x, y, floorId, true);
|
var block = core.getBlock(x, y, floorId, true);
|
||||||
if (block == null) return; // 不存在
|
if (block == null) return; // 不存在
|
||||||
block = block.block;
|
block = block.block;
|
||||||
@ -1140,7 +1138,7 @@ maps.prototype.showBlock = function (x, y, floorId) {
|
|||||||
////// 只隐藏但不删除某块 //////
|
////// 只隐藏但不删除某块 //////
|
||||||
maps.prototype.hideBlock = function (x, y, floorId) {
|
maps.prototype.hideBlock = function (x, y, floorId) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
|
|
||||||
var block = core.getBlock(x, y, floorId, true);
|
var block = core.getBlock(x, y, floorId, true);
|
||||||
if (block == null) return; // 不存在
|
if (block == null) return; // 不存在
|
||||||
@ -1161,7 +1159,7 @@ maps.prototype.hideBlock = function (x, y, floorId) {
|
|||||||
////// 将某个块从启用变成禁用状态 //////
|
////// 将某个块从启用变成禁用状态 //////
|
||||||
maps.prototype.removeBlock = function (x, y, floorId) {
|
maps.prototype.removeBlock = function (x, y, floorId) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
|
|
||||||
var block = core.getBlock(x, y, floorId, true);
|
var block = core.getBlock(x, y, floorId, true);
|
||||||
if (block == null) return; // 不存在
|
if (block == null) return; // 不存在
|
||||||
@ -1185,7 +1183,7 @@ maps.prototype.removeBlock = function (x, y, floorId) {
|
|||||||
////// 根据block的索引(尽可能)删除该块 //////
|
////// 根据block的索引(尽可能)删除该块 //////
|
||||||
maps.prototype.removeBlockById = function (index, floorId) {
|
maps.prototype.removeBlockById = function (index, floorId) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
|
|
||||||
var blocks = core.status.maps[floorId].blocks, block = blocks[index];
|
var blocks = core.status.maps[floorId].blocks, block = blocks[index];
|
||||||
|
|
||||||
@ -1213,7 +1211,7 @@ maps.prototype.canRemoveBlock = function (block, floorId) {
|
|||||||
////// 一次性删除多个block //////
|
////// 一次性删除多个block //////
|
||||||
maps.prototype.removeBlockByIds = function (floorId, ids) {
|
maps.prototype.removeBlockByIds = function (floorId, ids) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
ids.sort(function (a, b) {
|
ids.sort(function (a, b) {
|
||||||
return b - a
|
return b - a
|
||||||
}).forEach(function (id) {
|
}).forEach(function (id) {
|
||||||
@ -1258,7 +1256,7 @@ maps.prototype._triggerBgFgMap = function (type, name, loc, floorId, callback) {
|
|||||||
if (typeof loc[0] == 'number' && typeof loc[1] == 'number')
|
if (typeof loc[0] == 'number' && typeof loc[1] == 'number')
|
||||||
loc = [loc];
|
loc = [loc];
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
|
|
||||||
if (loc.length == 0) return;
|
if (loc.length == 0) return;
|
||||||
loc.forEach(function (t) {
|
loc.forEach(function (t) {
|
||||||
@ -1273,7 +1271,7 @@ maps.prototype._triggerBgFgMap = function (type, name, loc, floorId, callback) {
|
|||||||
core.drawMap(floorId, callback);
|
core.drawMap(floorId, callback);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1293,7 +1291,7 @@ maps.prototype._triggerFloorImage = function (type, loc, floorId, callback) {
|
|||||||
if (typeof loc[0] == 'number' && typeof loc[1] == 'number')
|
if (typeof loc[0] == 'number' && typeof loc[1] == 'number')
|
||||||
loc = [loc];
|
loc = [loc];
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
|
|
||||||
if (loc.length == 0) return;
|
if (loc.length == 0) return;
|
||||||
loc.forEach(function (t) {
|
loc.forEach(function (t) {
|
||||||
@ -1307,15 +1305,14 @@ maps.prototype._triggerFloorImage = function (type, loc, floorId, callback) {
|
|||||||
core.drawMap(floorId, callback);
|
core.drawMap(floorId, callback);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 改变图块 //////
|
////// 改变图块 //////
|
||||||
maps.prototype.setBlock = function (number, x, y, floorId) {
|
maps.prototype.setBlock = function (number, x, y, floorId) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId || number == null || x == null || y == null) return;
|
||||||
if (!core.isset(number) || !core.isset(x) || !core.isset(y)) return;
|
|
||||||
if (x < 0 || x >= core.floors[floorId].width || y < 0 || y >= core.floors[floorId].height) return;
|
if (x < 0 || x >= core.floors[floorId].width || y < 0 || y >= core.floors[floorId].height) return;
|
||||||
|
|
||||||
var originBlock = core.getBlock(x, y, floorId, true);
|
var originBlock = core.getBlock(x, y, floorId, true);
|
||||||
@ -1347,8 +1344,7 @@ maps.prototype.setBlock = function (number, x, y, floorId) {
|
|||||||
////// 改变前景背景的图块 //////
|
////// 改变前景背景的图块 //////
|
||||||
maps.prototype.setBgFgBlock = function (name, number, x, y, floorId) {
|
maps.prototype.setBgFgBlock = function (name, number, x, y, floorId) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId || number == null || x == null || y == null) return;
|
||||||
if (!core.isset(number) || !core.isset(x) || !core.isset(y)) return;
|
|
||||||
if (x < 0 || x >= core.floors[floorId].width || y < 0 || y >= core.floors[floorId].height) return;
|
if (x < 0 || x >= core.floors[floorId].width || y < 0 || y >= core.floors[floorId].height) return;
|
||||||
if (name != 'bg' && name != 'fg') return;
|
if (name != 'bg' && name != 'fg') return;
|
||||||
|
|
||||||
@ -1363,7 +1359,7 @@ maps.prototype.setBgFgBlock = function (name, number, x, y, floorId) {
|
|||||||
////// 重置地图 //////
|
////// 重置地图 //////
|
||||||
maps.prototype.resetMap = function (floorId) {
|
maps.prototype.resetMap = function (floorId) {
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId)) return;
|
if (!floorId) return;
|
||||||
if (typeof floorId == 'string') floorId = [floorId];
|
if (typeof floorId == 'string') floorId = [floorId];
|
||||||
var needRefresh = false;
|
var needRefresh = false;
|
||||||
floorId.forEach(function (t) {
|
floorId.forEach(function (t) {
|
||||||
@ -1458,7 +1454,7 @@ maps.prototype.moveBlock = function (x, y, steps, time, keep, callback) {
|
|||||||
time = time || 500;
|
time = time || 500;
|
||||||
var blockArr = this._getAndRemoveBlock(x, y);
|
var blockArr = this._getAndRemoveBlock(x, y);
|
||||||
if (blockArr == null) {
|
if (blockArr == null) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var block = blockArr[0], blockInfo = blockArr[1];
|
var block = blockArr[0], blockInfo = blockArr[1];
|
||||||
@ -1499,9 +1495,9 @@ maps.prototype._moveBlock_moving = function (blockInfo, canvases, moveInfo) {
|
|||||||
moveInfo.y += core.utils.scan[direction].y;
|
moveInfo.y += core.utils.scan[direction].y;
|
||||||
// 根据faceIds修改朝向
|
// 根据faceIds修改朝向
|
||||||
var currid = blockInfo.faceIds[direction];
|
var currid = blockInfo.faceIds[direction];
|
||||||
if (core.isset(currid)) {
|
if (currid) {
|
||||||
var posY = core.material.icons[blockInfo.cls][currid];
|
var posY = core.material.icons[blockInfo.cls][currid];
|
||||||
if (core.isset(posY)) blockInfo.posY = posY;
|
if (posY != null) blockInfo.posY = posY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
moveInfo.step++;
|
moveInfo.step++;
|
||||||
@ -1519,7 +1515,7 @@ maps.prototype.jumpBlock = function (sx, sy, ex, ey, time, keep, callback) {
|
|||||||
time = time || 500;
|
time = time || 500;
|
||||||
var blockArr = this._getAndRemoveBlock(sx, sy);
|
var blockArr = this._getAndRemoveBlock(sx, sy);
|
||||||
if (blockArr == null) {
|
if (blockArr == null) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var block = blockArr[0], blockInfo = blockArr[1];
|
var block = blockArr[0], blockInfo = blockArr[1];
|
||||||
@ -1579,7 +1575,7 @@ maps.prototype._moveJumpBlock_finished = function (blockInfo, canvases, info, an
|
|||||||
core.setBlock(blockInfo.number, info.x, info.y);
|
core.setBlock(blockInfo.number, info.x, info.y);
|
||||||
core.showBlock(info.x, info.y);
|
core.showBlock(info.x, info.y);
|
||||||
}
|
}
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this._moveDetachedBlock(blockInfo, info.px, info.py, info.opacity, canvases);
|
this._moveDetachedBlock(blockInfo, info.px, info.py, info.opacity, canvases);
|
||||||
@ -1593,7 +1589,7 @@ maps.prototype.animateBlock = function (loc, type, time, callback) {
|
|||||||
loc = [loc];
|
loc = [loc];
|
||||||
var list = this._animateBlock_getList(loc);
|
var list = this._animateBlock_getList(loc);
|
||||||
if (list.length == 0) {
|
if (list.length == 0) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this._animateBlock_drawList(list, isHide ? 1 : 0);
|
this._animateBlock_drawList(list, isHide ? 1 : 0);
|
||||||
@ -1615,7 +1611,7 @@ maps.prototype._animateBlock_doAnimate = function (loc, list, isHide, delta, cal
|
|||||||
if (isHide) core.removeBlock(t[0], t[1]);
|
if (isHide) core.removeBlock(t[0], t[1]);
|
||||||
else core.showBlock(t[0], t[1]);
|
else core.showBlock(t[0], t[1]);
|
||||||
});
|
});
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
}, 10);
|
}, 10);
|
||||||
|
|
||||||
@ -1651,14 +1647,14 @@ maps.prototype._animateBlock_drawList = function (list, opacity) {
|
|||||||
|
|
||||||
////// 添加一个全局动画 //////
|
////// 添加一个全局动画 //////
|
||||||
maps.prototype.addGlobalAnimate = function (b) {
|
maps.prototype.addGlobalAnimate = function (b) {
|
||||||
if (!core.isset(b.event) || !core.isset(b.event.animate)) return;
|
if (!b.event || b.event.animate == null) return;
|
||||||
if (b.event.cls == 'autotile') {
|
if (b.event.cls == 'autotile') {
|
||||||
var id = b.event.id, img = core.material.images.autotile[id];
|
var id = b.event.id, img = core.material.images.autotile[id];
|
||||||
if (!core.isset(img) || img.width == 96) return;
|
if (!img || img.width == 96) return;
|
||||||
core.status.autotileAnimateObjs.blocks.push(b);
|
core.status.autotileAnimateObjs.blocks.push(b);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!core.isset(b.event.animate) || b.event.animate == 1) return;
|
if (!b.event.animate || b.event.animate == 1) return;
|
||||||
core.status.globalAnimateObjs.push(b);
|
core.status.globalAnimateObjs.push(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1666,7 +1662,7 @@ maps.prototype.addGlobalAnimate = function (b) {
|
|||||||
////// 删除一个或所有全局动画 //////
|
////// 删除一个或所有全局动画 //////
|
||||||
maps.prototype.removeGlobalAnimate = function (x, y, name) {
|
maps.prototype.removeGlobalAnimate = function (x, y, name) {
|
||||||
// 没有定义xy,则全部删除
|
// 没有定义xy,则全部删除
|
||||||
if (!core.isset(x) || !core.isset(y)) {
|
if (x == null || y == null) {
|
||||||
core.status.globalAnimateStatus = 0;
|
core.status.globalAnimateStatus = 0;
|
||||||
core.status.globalAnimateObjs = [];
|
core.status.globalAnimateObjs = [];
|
||||||
core.status.autotileAnimateObjs = {"blocks": [], "map": null, "bgmap": null, "fgmap": null};
|
core.status.autotileAnimateObjs = {"blocks": [], "map": null, "bgmap": null, "fgmap": null};
|
||||||
@ -1679,7 +1675,7 @@ maps.prototype.removeGlobalAnimate = function (x, y, name) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 检查Autotile
|
// 检查Autotile
|
||||||
if (core.isset(core.status.autotileAnimateObjs.blocks)) {
|
if (core.status.autotileAnimateObjs.blocks) {
|
||||||
core.status.autotileAnimateObjs.blocks = core.status.autotileAnimateObjs.blocks.filter(function (block) {
|
core.status.autotileAnimateObjs.blocks = core.status.autotileAnimateObjs.blocks.filter(function (block) {
|
||||||
return block.x != x || block.y != y || block.name != name;
|
return block.x != x || block.y != y || block.name != name;
|
||||||
});
|
});
|
||||||
@ -1703,13 +1699,13 @@ maps.prototype.drawAnimate = function (name, x, y, callback) {
|
|||||||
|
|
||||||
// 正在播放录像:不显示动画
|
// 正在播放录像:不显示动画
|
||||||
if (core.isReplaying()) {
|
if (core.isReplaying()) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检测动画是否存在
|
// 检测动画是否存在
|
||||||
if (!core.isset(core.material.animates[name]) || !core.isset(x) || !core.isset(y)) {
|
if (!core.material.animates[name] || x == null || y == null) {
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1738,7 +1734,7 @@ maps.prototype._drawAnimateFrame = function (animate, centerX, centerY, index) {
|
|||||||
var ratio = animate.ratio;
|
var ratio = animate.ratio;
|
||||||
frame.forEach(function (t) {
|
frame.forEach(function (t) {
|
||||||
var image = animate.images[t.index];
|
var image = animate.images[t.index];
|
||||||
if (!core.isset(image)) return;
|
if (!image) return;
|
||||||
var realWidth = image.width * ratio * t.zoom / 100;
|
var realWidth = image.width * ratio * t.zoom / 100;
|
||||||
var realHeight = image.height * ratio * t.zoom / 100;
|
var realHeight = image.height * ratio * t.zoom / 100;
|
||||||
core.setAlpha('animate', t.opacity / 255);
|
core.setAlpha('animate', t.opacity / 255);
|
||||||
@ -1771,8 +1767,7 @@ maps.prototype.stopAnimate = function (id, doCallback) {
|
|||||||
if (doCallback) {
|
if (doCallback) {
|
||||||
(function (callback) {
|
(function (callback) {
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
if (core.isset(callback))
|
if (callback) callback();
|
||||||
callback();
|
|
||||||
});
|
});
|
||||||
})(obj.callback);
|
})(obj.callback);
|
||||||
}
|
}
|
||||||
|
|||||||
155
libs/utils.js
155
libs/utils.js
@ -61,7 +61,7 @@ utils.prototype.replaceText = function (text, need, times) {
|
|||||||
|
|
||||||
////// 计算表达式的值 //////
|
////// 计算表达式的值 //////
|
||||||
utils.prototype.calValue = function (value, prefix, need, times) {
|
utils.prototype.calValue = function (value, prefix, need, times) {
|
||||||
if (!core.isset(value)) return value;
|
if (!core.isset(value)) return null;
|
||||||
if (typeof value === 'string') {
|
if (typeof value === 'string') {
|
||||||
value = value.replace(/status:([\w\d_]+)/g, "core.getStatus('$1')");
|
value = value.replace(/status:([\w\d_]+)/g, "core.getStatus('$1')");
|
||||||
value = value.replace(/item:([\w\d_]+)/g, "core.itemCount('$1')");
|
value = value.replace(/item:([\w\d_]+)/g, "core.itemCount('$1')");
|
||||||
@ -77,7 +77,7 @@ utils.prototype.calValue = function (value, prefix, need, times) {
|
|||||||
|
|
||||||
////// 字符串自动换行的分割 //////
|
////// 字符串自动换行的分割 //////
|
||||||
utils.prototype.splitLines = function (canvas, text, maxLength, font) {
|
utils.prototype.splitLines = function (canvas, text, maxLength, font) {
|
||||||
if (core.isset(font)) core.setFont(canvas, font);
|
if (font) core.setFont(canvas, font);
|
||||||
|
|
||||||
var contents = [];
|
var contents = [];
|
||||||
var last = 0;
|
var last = 0;
|
||||||
@ -94,7 +94,7 @@ utils.prototype.splitLines = function (canvas, text, maxLength, font) {
|
|||||||
else {
|
else {
|
||||||
var toAdd = text.substring(last, i + 1);
|
var toAdd = text.substring(last, i + 1);
|
||||||
var width = core.calWidth(canvas, toAdd);
|
var width = core.calWidth(canvas, toAdd);
|
||||||
if (core.isset(maxLength) && width > maxLength) {
|
if (maxLength && width > maxLength) {
|
||||||
contents.push(text.substring(last, i));
|
contents.push(text.substring(last, i));
|
||||||
last = i;
|
last = i;
|
||||||
}
|
}
|
||||||
@ -106,7 +106,7 @@ utils.prototype.splitLines = function (canvas, text, maxLength, font) {
|
|||||||
|
|
||||||
////// 向某个数组前插入另一个数组或元素 //////
|
////// 向某个数组前插入另一个数组或元素 //////
|
||||||
utils.prototype.unshift = function (a, b) {
|
utils.prototype.unshift = function (a, b) {
|
||||||
if (!(a instanceof Array) || !core.isset(b)) return;
|
if (!(a instanceof Array) || b == null) return;
|
||||||
if (b instanceof Array) {
|
if (b instanceof Array) {
|
||||||
core.clone(b).reverse().forEach(function (e) {
|
core.clone(b).reverse().forEach(function (e) {
|
||||||
a.unshift(e);
|
a.unshift(e);
|
||||||
@ -118,7 +118,7 @@ utils.prototype.unshift = function (a, b) {
|
|||||||
|
|
||||||
////// 向某个数组后插入另一个数组或元素 //////
|
////// 向某个数组后插入另一个数组或元素 //////
|
||||||
utils.prototype.push = function (a, b) {
|
utils.prototype.push = function (a, b) {
|
||||||
if (!(a instanceof Array) || !core.isset(b)) return;
|
if (!(a instanceof Array) || b == null) return;
|
||||||
if (b instanceof Array) {
|
if (b instanceof Array) {
|
||||||
core.clone(b).forEach(function (e) {
|
core.clone(b).forEach(function (e) {
|
||||||
a.push(e);
|
a.push(e);
|
||||||
@ -131,7 +131,7 @@ utils.prototype.push = function (a, b) {
|
|||||||
////// 设置本地存储 //////
|
////// 设置本地存储 //////
|
||||||
utils.prototype.setLocalStorage = function (key, value) {
|
utils.prototype.setLocalStorage = function (key, value) {
|
||||||
try {
|
try {
|
||||||
if (!core.isset(value)) {
|
if (value == null) {
|
||||||
this.removeLocalStorage(key);
|
this.removeLocalStorage(key);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -166,15 +166,13 @@ utils.prototype.setLocalStorage = function (key, value) {
|
|||||||
utils.prototype.decompress = function (value) {
|
utils.prototype.decompress = function (value) {
|
||||||
try {
|
try {
|
||||||
var output = lzw_decode(value);
|
var output = lzw_decode(value);
|
||||||
if (core.isset(output) && output.length > 0)
|
if (output) return JSON.parse(output);
|
||||||
return JSON.parse(output);
|
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
var output = LZString.decompress(value);
|
var output = LZString.decompress(value);
|
||||||
if (core.isset(output) && output.length > 0)
|
if (output) return JSON.parse(output);
|
||||||
return JSON.parse(output);
|
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
}
|
}
|
||||||
@ -204,15 +202,15 @@ utils.prototype.setLocalForage = function (key, value, successCallback, errorCal
|
|||||||
|
|
||||||
if (!core.platform.useLocalForage) {
|
if (!core.platform.useLocalForage) {
|
||||||
if (this.setLocalStorage(key, value)) {
|
if (this.setLocalStorage(key, value)) {
|
||||||
if (core.isset(successCallback)) successCallback();
|
if (successCallback) successCallback();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (core.isset(errorCallback)) errorCallback();
|
if (errorCallback) errorCallback();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!core.isset(value)) {
|
if (value == null) {
|
||||||
this.removeLocalForage(key);
|
this.removeLocalForage(key);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -222,13 +220,13 @@ utils.prototype.setLocalForage = function (key, value, successCallback, errorCal
|
|||||||
return "\\u" + ("0000" + chr.charCodeAt(0).toString(16)).substr(-4)
|
return "\\u" + ("0000" + chr.charCodeAt(0).toString(16)).substr(-4)
|
||||||
}));
|
}));
|
||||||
localforage.setItem(core.firstData.name + "_" + key, compressed, function (err) {
|
localforage.setItem(core.firstData.name + "_" + key, compressed, function (err) {
|
||||||
if (core.isset(err)) {
|
if (err) {
|
||||||
if (core.isset(errorCallback)) errorCallback(err);
|
if (errorCallback) errorCallback(err);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (key == 'autoSave') core.saves.ids[0] = true;
|
if (key == 'autoSave') core.saves.ids[0] = true;
|
||||||
else if (/^save\d+$/.test(key)) core.saves.ids[parseInt(key.substring(4))] = true;
|
else if (/^save\d+$/.test(key)) core.saves.ids[parseInt(key.substring(4))] = true;
|
||||||
if (core.isset(successCallback)) successCallback();
|
if (successCallback) successCallback();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -237,19 +235,17 @@ utils.prototype.getLocalForage = function (key, defaultValue, successCallback, e
|
|||||||
|
|
||||||
if (!core.platform.useLocalForage) {
|
if (!core.platform.useLocalForage) {
|
||||||
var value = this.getLocalStorage(key, defaultValue);
|
var value = this.getLocalStorage(key, defaultValue);
|
||||||
if (core.isset(successCallback)) {
|
if (successCallback) successCallback(value);
|
||||||
successCallback(value);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
localforage.getItem(core.firstData.name + "_" + key, function (err, value) {
|
localforage.getItem(core.firstData.name + "_" + key, function (err, value) {
|
||||||
if (core.isset(err)) {
|
if (err) {
|
||||||
if (core.isset(errorCallback)) errorCallback(err);
|
if (errorCallback) errorCallback(err);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!core.isset(successCallback)) return;
|
if (!successCallback) return;
|
||||||
if (core.isset(value)) {
|
if (value != null) {
|
||||||
var res = core.utils.decompress(value);
|
var res = core.utils.decompress(value);
|
||||||
successCallback(res == null ? defaultValue : res);
|
successCallback(res == null ? defaultValue : res);
|
||||||
return;
|
return;
|
||||||
@ -263,25 +259,25 @@ utils.prototype.removeLocalForage = function (key, successCallback, errorCallbac
|
|||||||
|
|
||||||
if (!core.platform.useLocalForage) {
|
if (!core.platform.useLocalForage) {
|
||||||
this.removeLocalStorage(key);
|
this.removeLocalStorage(key);
|
||||||
if (core.isset(successCallback)) successCallback();
|
if (successCallback) successCallback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
localforage.removeItem(core.firstData.name + "_" + key, function (err) {
|
localforage.removeItem(core.firstData.name + "_" + key, function (err) {
|
||||||
if (core.isset(err)) {
|
if (err) {
|
||||||
if (core.isset(errorCallback)) errorCallback(err);
|
if (errorCallback) errorCallback(err);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (key == 'autoSave') delete core.saves.ids[0];
|
if (key == 'autoSave') delete core.saves.ids[0];
|
||||||
else if (/^save\d+$/.test(key)) delete core.saves.ids[parseInt(key.substring(4))];
|
else if (/^save\d+$/.test(key)) delete core.saves.ids[parseInt(key.substring(4))];
|
||||||
if (core.isset(successCallback)) successCallback();
|
if (successCallback) successCallback();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 深拷贝一个对象 //////
|
////// 深拷贝一个对象 //////
|
||||||
utils.prototype.clone = function (data) {
|
utils.prototype.clone = function (data) {
|
||||||
if (!core.isset(data)) return data;
|
if (!core.isset(data)) return null;
|
||||||
// date
|
// date
|
||||||
if (data instanceof Date) {
|
if (data instanceof Date) {
|
||||||
var copy = new Date();
|
var copy = new Date();
|
||||||
@ -334,14 +330,14 @@ utils.prototype.cropImage = function (image, size) {
|
|||||||
|
|
||||||
////// 格式化时间为字符串 //////
|
////// 格式化时间为字符串 //////
|
||||||
utils.prototype.formatDate = function (date) {
|
utils.prototype.formatDate = function (date) {
|
||||||
if (!core.isset(date)) return "";
|
if (!date) date = new Date();
|
||||||
return "" + date.getFullYear() + "-" + core.setTwoDigits(date.getMonth() + 1) + "-" + core.setTwoDigits(date.getDate()) + " "
|
return "" + date.getFullYear() + "-" + core.setTwoDigits(date.getMonth() + 1) + "-" + core.setTwoDigits(date.getDate()) + " "
|
||||||
+ core.setTwoDigits(date.getHours()) + ":" + core.setTwoDigits(date.getMinutes()) + ":" + core.setTwoDigits(date.getSeconds());
|
+ core.setTwoDigits(date.getHours()) + ":" + core.setTwoDigits(date.getMinutes()) + ":" + core.setTwoDigits(date.getSeconds());
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 格式化时间为最简字符串 //////
|
////// 格式化时间为最简字符串 //////
|
||||||
utils.prototype.formatDate2 = function (date) {
|
utils.prototype.formatDate2 = function (date) {
|
||||||
if (!core.isset(date)) return "";
|
if (!date) date = new Date();
|
||||||
return "" + date.getFullYear() + core.setTwoDigits(date.getMonth() + 1) + core.setTwoDigits(date.getDate())
|
return "" + date.getFullYear() + core.setTwoDigits(date.getMonth() + 1) + core.setTwoDigits(date.getDate())
|
||||||
+ core.setTwoDigits(date.getHours()) + core.setTwoDigits(date.getMinutes()) + core.setTwoDigits(date.getSeconds());
|
+ core.setTwoDigits(date.getHours()) + core.setTwoDigits(date.getMinutes()) + core.setTwoDigits(date.getSeconds());
|
||||||
}
|
}
|
||||||
@ -395,7 +391,7 @@ utils.prototype.arrayToRGB = function (color) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
utils.prototype.arrayToRGBA = function (color) {
|
utils.prototype.arrayToRGBA = function (color) {
|
||||||
if (!this.isset(color[3])) color[3] = 1;
|
if (color[3] == null) color[3] = 1;
|
||||||
var nowR = this.clamp(parseInt(color[0]), 0, 255), nowG = this.clamp(parseInt(color[1]), 0, 255),
|
var nowR = this.clamp(parseInt(color[0]), 0, 255), nowG = this.clamp(parseInt(color[1]), 0, 255),
|
||||||
nowB = this.clamp(parseInt(color[2]), 0, 255), nowA = this.clamp(parseFloat(color[3]), 0, 1);
|
nowB = this.clamp(parseInt(color[2]), 0, 255), nowA = this.clamp(parseFloat(color[3]), 0, 1);
|
||||||
return "rgba(" + nowR + "," + nowG + "," + nowB + "," + nowA + ")";
|
return "rgba(" + nowR + "," + nowG + "," + nowB + "," + nowA + ")";
|
||||||
@ -472,12 +468,12 @@ utils.prototype._encodeRoute_encodeOne = function (t) {
|
|||||||
|
|
||||||
////// 解密路线 //////
|
////// 解密路线 //////
|
||||||
utils.prototype.decodeRoute = function (route) {
|
utils.prototype.decodeRoute = function (route) {
|
||||||
if (!core.isset(route)) return route;
|
if (!route) return route;
|
||||||
|
|
||||||
// 解压缩
|
// 解压缩
|
||||||
try {
|
try {
|
||||||
var v = LZString.decompressFromBase64(route);
|
var v = LZString.decompressFromBase64(route);
|
||||||
if (core.isset(v) && /^[a-zA-Z0-9+\/=:]*$/.test(v)) {
|
if (/^[a-zA-Z0-9+\/=:]*$/.test(v)) {
|
||||||
route = v;
|
route = v;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -496,7 +492,7 @@ utils.prototype._decodeRoute_getNumber = function (decodeObj, noparse) {
|
|||||||
num += decodeObj.route.charAt(decodeObj.index++);
|
num += decodeObj.route.charAt(decodeObj.index++);
|
||||||
}
|
}
|
||||||
if (num.length == 0) num = "1";
|
if (num.length == 0) num = "1";
|
||||||
return core.isset(noparse) ? num : parseInt(num);
|
return noparse ? num : parseInt(num);
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.prototype._decodeRoute_getString = function (decodeObj) {
|
utils.prototype._decodeRoute_getString = function (decodeObj) {
|
||||||
@ -511,7 +507,7 @@ utils.prototype._decodeRoute_getString = function (decodeObj) {
|
|||||||
utils.prototype._decodeRoute_number2id = function (number) {
|
utils.prototype._decodeRoute_number2id = function (number) {
|
||||||
if (/^\d+$/.test(number)) {
|
if (/^\d+$/.test(number)) {
|
||||||
var info = core.maps.blocksInfo[number];
|
var info = core.maps.blocksInfo[number];
|
||||||
if (core.isset(info)) return info.id;
|
if (info) return info.id;
|
||||||
}
|
}
|
||||||
return number;
|
return number;
|
||||||
}
|
}
|
||||||
@ -578,17 +574,14 @@ utils.prototype._decodeRoute_decodeOne = function (decodeObj, c) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 判断某对象是否不为undefined也不会null //////
|
////// 判断某对象是否不为null也不为NaN //////
|
||||||
utils.prototype.isset = function (val) {
|
utils.prototype.isset = function (val) {
|
||||||
if (val == undefined || val == null || (typeof val == 'number' && isNaN(val))) {
|
return val != null && !(typeof val == 'number' && isNaN(val));
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 获得子数组 //////
|
////// 获得子数组 //////
|
||||||
utils.prototype.subarray = function (a, b) {
|
utils.prototype.subarray = function (a, b) {
|
||||||
if (!core.isset(a) || !core.isset(b) || !(a instanceof Array) || !(b instanceof Array) || a.length < b.length)
|
if (!(a instanceof Array) || !(b instanceof Array) || a.length < b.length)
|
||||||
return null;
|
return null;
|
||||||
var na = core.clone(a), nb = core.clone(b);
|
var na = core.clone(a), nb = core.clone(b);
|
||||||
while (nb.length > 0) {
|
while (nb.length > 0) {
|
||||||
@ -598,7 +591,7 @@ utils.prototype.subarray = function (a, b) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
utils.prototype.inArray = function (array, element) {
|
utils.prototype.inArray = function (array, element) {
|
||||||
return this.isset(array) && (array instanceof Array) && array.indexOf(element) >= 0;
|
return (array instanceof Array) && array.indexOf(element) >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.prototype.clamp = function (x, a, b) {
|
utils.prototype.clamp = function (x, a, b) {
|
||||||
@ -618,7 +611,7 @@ utils.prototype.expandMoveSteps = function (steps) {
|
|||||||
moveSteps.push(e);
|
moveSteps.push(e);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!core.isset(e.value)) {
|
if (e.value == null) {
|
||||||
moveSteps.push(e.direction)
|
moveSteps.push(e.direction)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -640,7 +633,7 @@ utils.prototype.setStatusBarInnerHTML = function (name, value, css) {
|
|||||||
// 判定是否需要缩放
|
// 判定是否需要缩放
|
||||||
var length = this.strlen(value) || 1;
|
var length = this.strlen(value) || 1;
|
||||||
style += 'font-size: ' + Math.min(1, 7 / length) + 'em; ';
|
style += 'font-size: ' + Math.min(1, 7 / length) + 'em; ';
|
||||||
if (core.isset(css)) style += css;
|
if (css) style += css;
|
||||||
core.statusBar[name].innerHTML = "<span class='_status' style='" + style + "'>" + value + "</span>";
|
core.statusBar[name].innerHTML = "<span class='_status' style='" + style + "'>" + value + "</span>";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -691,7 +684,7 @@ utils.prototype.rand = function (num) {
|
|||||||
rand = this.__next_rand(rand);
|
rand = this.__next_rand(rand);
|
||||||
core.setFlag('__rand__', rand);
|
core.setFlag('__rand__', rand);
|
||||||
var ans = rand / 2147483647;
|
var ans = rand / 2147483647;
|
||||||
if (core.isset(num) && num > 0)
|
if (num && num > 0)
|
||||||
return Math.floor(ans * num);
|
return Math.floor(ans * num);
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
@ -740,7 +733,7 @@ utils.prototype.readFile = function (success, error, readType) {
|
|||||||
core.platform.successCallback = success;
|
core.platform.successCallback = success;
|
||||||
core.platform.errorCallback = error;
|
core.platform.errorCallback = error;
|
||||||
|
|
||||||
if (core.isset(window.jsinterface)) {
|
if (window.jsinterface) {
|
||||||
window.jsinterface.readFile();
|
window.jsinterface.readFile();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -748,14 +741,14 @@ utils.prototype.readFile = function (success, error, readType) {
|
|||||||
// step 0: 不为http/https,直接不支持
|
// step 0: 不为http/https,直接不支持
|
||||||
if (!core.platform.isOnline) {
|
if (!core.platform.isOnline) {
|
||||||
alert("离线状态下不支持文件读取!");
|
alert("离线状态下不支持文件读取!");
|
||||||
if (core.isset(error)) error();
|
if (error) error();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 1: 如果不支持FileReader,直接不支持
|
// Step 1: 如果不支持FileReader,直接不支持
|
||||||
if (core.platform.fileReader == null) {
|
if (core.platform.fileReader == null) {
|
||||||
alert("当前浏览器不支持FileReader!");
|
alert("当前浏览器不支持FileReader!");
|
||||||
if (core.isset(error)) error();
|
if (error) error();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -766,7 +759,7 @@ utils.prototype.readFile = function (success, error, readType) {
|
|||||||
core.platform.fileInput.onchange = function () {
|
core.platform.fileInput.onchange = function () {
|
||||||
var files = core.platform.fileInput.files;
|
var files = core.platform.fileInput.files;
|
||||||
if (files.length == 0) {
|
if (files.length == 0) {
|
||||||
if (core.isset(core.platform.errorCallback))
|
if (core.platform.errorCallback)
|
||||||
core.platform.errorCallback();
|
core.platform.errorCallback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -783,14 +776,14 @@ utils.prototype.readFile = function (success, error, readType) {
|
|||||||
utils.prototype.readFileContent = function (content) {
|
utils.prototype.readFileContent = function (content) {
|
||||||
var obj = null;
|
var obj = null;
|
||||||
if (content.slice(0, 4) === 'data') {
|
if (content.slice(0, 4) === 'data') {
|
||||||
if (core.isset(core.platform.successCallback))
|
if (core.platform.successCallback)
|
||||||
core.platform.successCallback(content);
|
core.platform.successCallback(content);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
obj = JSON.parse(content);
|
obj = JSON.parse(content);
|
||||||
if (core.isset(obj)) {
|
if (obj) {
|
||||||
if (core.isset(core.platform.successCallback))
|
if (core.platform.successCallback)
|
||||||
core.platform.successCallback(obj);
|
core.platform.successCallback(obj);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -801,14 +794,14 @@ utils.prototype.readFileContent = function (content) {
|
|||||||
}
|
}
|
||||||
alert("不是有效的JSON文件!");
|
alert("不是有效的JSON文件!");
|
||||||
|
|
||||||
if (core.isset(core.platform.errorCallback))
|
if (core.platform.errorCallback)
|
||||||
core.platform.errorCallback();
|
core.platform.errorCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 下载文件到本地 //////
|
////// 下载文件到本地 //////
|
||||||
utils.prototype.download = function (filename, content) {
|
utils.prototype.download = function (filename, content) {
|
||||||
|
|
||||||
if (core.isset(window.jsinterface)) {
|
if (window.jsinterface) {
|
||||||
window.jsinterface.download(filename, content);
|
window.jsinterface.download(filename, content);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -873,8 +866,8 @@ utils.prototype.download = function (filename, content) {
|
|||||||
////// 复制一段内容到剪切板 //////
|
////// 复制一段内容到剪切板 //////
|
||||||
utils.prototype.copy = function (data) {
|
utils.prototype.copy = function (data) {
|
||||||
|
|
||||||
if (core.isset(window.jsinterface)) {
|
if (window.jsinterface) {
|
||||||
window.jsinterface.copy(filename, content);
|
window.jsinterface.copy(data);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -909,9 +902,9 @@ utils.prototype.copy = function (data) {
|
|||||||
////// 动画显示某对象 //////
|
////// 动画显示某对象 //////
|
||||||
utils.prototype.show = function (obj, speed, callback) {
|
utils.prototype.show = function (obj, speed, callback) {
|
||||||
obj.style.display = 'block';
|
obj.style.display = 'block';
|
||||||
if (!core.isset(speed) && main.mode != 'play') {
|
if (!speed && main.mode != 'play') {
|
||||||
obj.style.opacity = 1;
|
obj.style.opacity = 1;
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
obj.style.opacity = 0;
|
obj.style.opacity = 0;
|
||||||
@ -921,18 +914,16 @@ utils.prototype.show = function (obj, speed, callback) {
|
|||||||
obj.style.opacity = opacityVal;
|
obj.style.opacity = opacityVal;
|
||||||
if (opacityVal > 1) {
|
if (opacityVal > 1) {
|
||||||
clearInterval(showAnimate);
|
clearInterval(showAnimate);
|
||||||
if (core.isset(callback)) {
|
if (callback) callback();
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, speed);
|
}, speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 动画使某对象消失 //////
|
////// 动画使某对象消失 //////
|
||||||
utils.prototype.hide = function (obj, speed, callback) {
|
utils.prototype.hide = function (obj, speed, callback) {
|
||||||
if (!core.isset(speed) || main.mode != 'play') {
|
if (!speed || main.mode != 'play') {
|
||||||
obj.style.display = 'none';
|
obj.style.display = 'none';
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
obj.style.opacity = 1;
|
obj.style.opacity = 1;
|
||||||
@ -943,9 +934,7 @@ utils.prototype.hide = function (obj, speed, callback) {
|
|||||||
if (opacityVal < 0) {
|
if (opacityVal < 0) {
|
||||||
obj.style.display = 'none';
|
obj.style.display = 'none';
|
||||||
clearInterval(hideAnimate);
|
clearInterval(hideAnimate);
|
||||||
if (core.isset(callback)) {
|
if (callback) callback();
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, speed);
|
}, speed);
|
||||||
}
|
}
|
||||||
@ -984,7 +973,7 @@ utils.prototype.decodeCanvas = function (arr, width, height) {
|
|||||||
tempCanvas.canvas.height = height;
|
tempCanvas.canvas.height = height;
|
||||||
tempCanvas.clearRect(0, 0, width, height);
|
tempCanvas.clearRect(0, 0, width, height);
|
||||||
|
|
||||||
if (!core.isset(arr)) return null;
|
if (!arr) return null;
|
||||||
// to byte array
|
// to byte array
|
||||||
var curr = 0, list = [];
|
var curr = 0, list = [];
|
||||||
arr.forEach(function (x) {
|
arr.forEach(function (x) {
|
||||||
@ -1028,8 +1017,8 @@ utils.prototype.hashCode = function (obj) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
utils.prototype.same = function (a, b) {
|
utils.prototype.same = function (a, b) {
|
||||||
if (!core.isset(a) && !core.isset(b)) return true;
|
if (a == null && b == null) return true;
|
||||||
if (!core.isset(a) || !core.isset(b)) return false;
|
if (a == null || b == null) return false;
|
||||||
if (a === b) return true;
|
if (a === b) return true;
|
||||||
if (a instanceof Array && b instanceof Array) {
|
if (a instanceof Array && b instanceof Array) {
|
||||||
if (a.length != b.length) return false;
|
if (a.length != b.length) return false;
|
||||||
@ -1051,14 +1040,14 @@ utils.prototype.same = function (a, b) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
utils.prototype._export = function (floorIds) {
|
utils.prototype._export = function (floorIds) {
|
||||||
if (!core.isset(floorIds)) floorIds = [core.status.floorId];
|
if (!floorIds) floorIds = [core.status.floorId];
|
||||||
else if (floorIds == 'all') floorIds = core.clone(core.floorIds);
|
else if (floorIds == 'all') floorIds = core.clone(core.floorIds);
|
||||||
else if (typeof floorIds == 'string') floorIds = [floorIds];
|
else if (typeof floorIds == 'string') floorIds = [floorIds];
|
||||||
|
|
||||||
var monsterMap = {};
|
var monsterMap = {};
|
||||||
|
|
||||||
// map
|
// map
|
||||||
var content = floorIds.length + "\n13 13\n\n";
|
var content = floorIds.length + "\n" + core.__SIZE__ + " " + core.__SIZE__ + "\n\n";
|
||||||
floorIds.forEach(function (floorId) {
|
floorIds.forEach(function (floorId) {
|
||||||
var arr = core.maps.getMapArray(core.status.maps[floorId].blocks, 13, 13);
|
var arr = core.maps.getMapArray(core.status.maps[floorId].blocks, 13, 13);
|
||||||
content += arr.map(function (x) {
|
content += arr.map(function (x) {
|
||||||
@ -1098,34 +1087,26 @@ utils.prototype._export = function (floorIds) {
|
|||||||
utils.prototype.http = function (type, url, formData, success, error, mimeType, responseType) {
|
utils.prototype.http = function (type, url, formData, success, error, mimeType, responseType) {
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
xhr.open(type, url, true);
|
xhr.open(type, url, true);
|
||||||
if (core.isset(mimeType))
|
if (mimeType) xhr.overrideMimeType(mimeType);
|
||||||
xhr.overrideMimeType(mimeType);
|
if (responseType) xhr.responseType = responseType;
|
||||||
if (core.isset(responseType))
|
|
||||||
xhr.responseType = responseType;
|
|
||||||
xhr.onload = function (e) {
|
xhr.onload = function (e) {
|
||||||
if (xhr.status == 200) {
|
if (xhr.status == 200) {
|
||||||
if (core.isset(success)) {
|
if (success) success(xhr.response);
|
||||||
success(xhr.response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (core.isset(error))
|
if (error) error("HTTP " + xhr.status);
|
||||||
error("HTTP " + xhr.status);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
xhr.onabort = function () {
|
xhr.onabort = function () {
|
||||||
if (core.isset(error))
|
if (error) error("Abort");
|
||||||
error("Abort");
|
|
||||||
}
|
}
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
if (core.isset(error))
|
if (error) error("Timeout");
|
||||||
error("Timeout");
|
|
||||||
}
|
}
|
||||||
xhr.onerror = function () {
|
xhr.onerror = function () {
|
||||||
if (core.isset(error))
|
if (error) error("Error on Connection");
|
||||||
error("Error on Connection");
|
|
||||||
}
|
}
|
||||||
if (core.isset(formData))
|
if (formData)
|
||||||
xhr.send(formData);
|
xhr.send(formData);
|
||||||
else xhr.send();
|
else xhr.send();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,25 +122,23 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
core.drawMap(floorId);
|
core.drawMap(floorId);
|
||||||
|
|
||||||
// 切换楼层BGM
|
// 切换楼层BGM
|
||||||
if (core.isset(core.status.maps[floorId].bgm)) {
|
if (core.status.maps[floorId].bgm) {
|
||||||
var bgm = core.status.maps[floorId].bgm;
|
var bgm = core.status.maps[floorId].bgm;
|
||||||
if (bgm instanceof Array) bgm = bgm[0];
|
if (bgm instanceof Array) bgm = bgm[0];
|
||||||
core.playBgm(bgm);
|
core.playBgm(bgm);
|
||||||
}
|
}
|
||||||
// 更改画面色调
|
// 更改画面色调
|
||||||
var color = core.getFlag('__color__', null);
|
var color = core.getFlag('__color__', null);
|
||||||
if (!core.isset(color) && core.isset(core.status.maps[floorId].color))
|
if (!color && core.status.maps[floorId].color)
|
||||||
color = core.status.maps[floorId].color;
|
color = core.status.maps[floorId].color;
|
||||||
core.clearMap('curtain');
|
core.clearMap('curtain');
|
||||||
core.status.curtainColor = color;
|
core.status.curtainColor = color;
|
||||||
if (core.isset(color)) {
|
if (color) core.fillRect('curtain', 0, 0, core.__SIZE__, core.__SIZE__, core.arrayToRGBA(color));
|
||||||
core.fillRect('curtain',0,0,416,416,core.arrayToRGBA(color));
|
|
||||||
}
|
|
||||||
// 更改天气
|
// 更改天气
|
||||||
var weather = core.getFlag('__weather__', null);
|
var weather = core.getFlag('__weather__', null);
|
||||||
if (!core.isset(weather) && core.isset(core.status.maps[floorId].weather))
|
if (!weather && core.status.maps[floorId].weather)
|
||||||
weather = core.status.maps[floorId].weather;
|
weather = core.status.maps[floorId].weather;
|
||||||
if (core.isset(weather))
|
if (weather)
|
||||||
core.setWeather(weather[0], weather[1]);
|
core.setWeather(weather[0], weather[1]);
|
||||||
else core.setWeather();
|
else core.setWeather();
|
||||||
|
|
||||||
@ -172,7 +170,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
// 返回true则将继续战斗,返回false将不再战斗。
|
// 返回true则将继续战斗,返回false将不再战斗。
|
||||||
|
|
||||||
// ------ 支援技能 ------ //
|
// ------ 支援技能 ------ //
|
||||||
if (core.isset(x) && core.isset(y)) {
|
if (x != null && y != null) {
|
||||||
var index = x + "," + y,
|
var index = x + "," + y,
|
||||||
cache = (core.status.checkBlock.cache || {})[index] || {},
|
cache = (core.status.checkBlock.cache || {})[index] || {},
|
||||||
guards = cache.guards || [];
|
guards = cache.guards || [];
|
||||||
@ -204,13 +202,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
// 播放战斗音效和动画
|
// 播放战斗音效和动画
|
||||||
var equipAnimate = 'hand',
|
var equipAnimate = 'hand',
|
||||||
equipId = (core.status.hero.equipment || [])[0];
|
equipId = (core.status.hero.equipment || [])[0];
|
||||||
if (core.isset(equipId) && core.isset((core.material.items[equipId].equip || {}).animate))
|
if (equipId && (core.material.items[equipId].equip || {}).animate)
|
||||||
equipAnimate = core.material.items[equipId].equip.animate;
|
equipAnimate = core.material.items[equipId].equip.animate;
|
||||||
// 检查equipAnimate是否存在SE,如果不存在则使用默认音效
|
// 检查equipAnimate是否存在SE,如果不存在则使用默认音效
|
||||||
if (!core.isset((core.material.animates[equipAnimate] || {}).se))
|
if (!(core.material.animates[equipAnimate] || {}).se)
|
||||||
core.playSound('attack.mp3');
|
core.playSound('attack.mp3');
|
||||||
// 强制战斗的战斗动画
|
// 强制战斗的战斗动画
|
||||||
core.drawAnimate(equipAnimate, core.isset(x) ? x : core.getHeroLoc('x'), core.isset(y) ? y : core.getHeroLoc('y'));
|
core.drawAnimate(equipAnimate, x != null ? x : core.getHeroLoc('x'), y != null ? y : core.getHeroLoc('y'));
|
||||||
|
|
||||||
var damage = core.enemys.getDamage(enemyId, x, y);
|
var damage = core.enemys.getDamage(enemyId, x, y);
|
||||||
if (damage == null) damage = core.status.hero.hp + 1;
|
if (damage == null) damage = core.status.hero.hp + 1;
|
||||||
@ -231,7 +229,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
|
|
||||||
// 删除该块
|
// 删除该块
|
||||||
var guards = []; // 支援
|
var guards = []; // 支援
|
||||||
if (core.isset(x) && core.isset(y)) {
|
if (x != null && y != null) {
|
||||||
core.removeBlock(x, y);
|
core.removeBlock(x, y);
|
||||||
guards = core.getFlag("__guards__" + x + "_" + y, []);
|
guards = core.getFlag("__guards__" + x + "_" + y, []);
|
||||||
core.removeFlag("__guards__" + x + "_" + y);
|
core.removeFlag("__guards__" + x + "_" + y);
|
||||||
@ -310,15 +308,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
|
|
||||||
// 如果有加点
|
// 如果有加点
|
||||||
var point = core.material.enemys[enemyId].point;
|
var point = core.material.enemys[enemyId].point;
|
||||||
if (core.flags.enableAddPoint && core.isset(point) && point > 0) {
|
if (core.flags.enableAddPoint && point > 0) {
|
||||||
core.push(todo, [{ "type": "setValue", "name": "flag:point", "value": point }]);
|
core.push(todo, [{ "type": "setValue", "name": "flag:point", "value": point }]);
|
||||||
core.push(todo, [{ "type": "insert", "name": "加点事件" }]);
|
core.push(todo, [{ "type": "insert", "name": "加点事件" }]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果该点存在,且有事件 -- V2.5.4 以后阻击怪也可以有战后事件了
|
// 如果该点存在事件 -- V2.5.4 以后阻击怪也可以有战后事件了
|
||||||
if (core.isset(x) && core.isset(y)) {
|
core.push(todo, core.floors[core.status.floorId].afterBattle[x + "," + y]);
|
||||||
core.push(todo, core.floors[core.status.floorId].afterBattle[x + "," + y]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 在这里增加其他的自定义事件需求
|
// 在这里增加其他的自定义事件需求
|
||||||
/*
|
/*
|
||||||
@ -330,58 +326,44 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// 如果事件不为空,将其插入
|
// 如果事件不为空,将其插入
|
||||||
if (todo.length > 0) {
|
if (todo.length > 0) core.insertAction(todo, x, y);
|
||||||
core.events.insertAction(todo, x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果已有事件正在处理中
|
// 如果已有事件正在处理中
|
||||||
if (core.status.event.id == null) {
|
if (core.status.event.id == null)
|
||||||
core.continueAutomaticRoute();
|
core.continueAutomaticRoute();
|
||||||
} else {
|
else
|
||||||
core.clearContinueAutomaticRoute();
|
core.clearContinueAutomaticRoute();
|
||||||
}
|
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
|
|
||||||
},
|
},
|
||||||
"afterOpenDoor": function (doorId, x, y, callback) {
|
"afterOpenDoor": function (doorId, x, y, callback) {
|
||||||
// 开一个门后触发的事件
|
// 开一个门后触发的事件
|
||||||
|
|
||||||
var todo = [];
|
var todo = [];
|
||||||
if (core.isset(x) && core.isset(y)) {
|
var event = core.floors[core.status.floorId].afterOpenDoor[x + "," + y];
|
||||||
var event = core.floors[core.status.floorId].afterOpenDoor[x + "," + y];
|
if (event) core.unshift(todo, event);
|
||||||
if (core.isset(event)) {
|
|
||||||
core.unshift(todo, event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (todo.length > 0) {
|
if (todo.length > 0) core.insertAction(todo, x, y);
|
||||||
core.events.insertAction(todo, x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (core.status.event.id == null) {
|
if (core.status.event.id == null)
|
||||||
core.continueAutomaticRoute();
|
core.continueAutomaticRoute();
|
||||||
} else {
|
else
|
||||||
core.clearContinueAutomaticRoute();
|
core.clearContinueAutomaticRoute();
|
||||||
}
|
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
},
|
},
|
||||||
"afterGetItem": function (itemId, x, y, callback) {
|
"afterGetItem": function (itemId, x, y, callback) {
|
||||||
// 获得一个道具后触发的事件
|
// 获得一个道具后触发的事件
|
||||||
core.playSound('item.mp3');
|
core.playSound('item.mp3');
|
||||||
|
|
||||||
var todo = [];
|
var todo = [];
|
||||||
if (core.isset(x) && core.isset(y)) {
|
var event = core.floors[core.status.floorId].afterGetItem[x + "," + y];
|
||||||
var event = core.floors[core.status.floorId].afterGetItem[x + "," + y];
|
if (event) core.unshift(todo, event);
|
||||||
if (core.isset(event)) {
|
|
||||||
core.unshift(todo, event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (todo.length > 0) {
|
if (todo.length > 0) core.insertAction(todo, x, y);
|
||||||
core.events.insertAction(todo, x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (core.isset(callback)) callback();
|
if (callback) callback();
|
||||||
},
|
},
|
||||||
"afterChangeLight": function(x,y) {
|
"afterChangeLight": function(x,y) {
|
||||||
// 改变亮灯之后,可以触发的事件
|
// 改变亮灯之后,可以触发的事件
|
||||||
@ -516,10 +498,10 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
// ------ 支援 ------
|
// ------ 支援 ------
|
||||||
var guards = [];
|
var guards = [];
|
||||||
// 检查光环缓存
|
// 检查光环缓存
|
||||||
if (!core.isset(core.status.checkBlock.cache)) core.status.checkBlock.cache = {};
|
if (!core.status.checkBlock.cache) core.status.checkBlock.cache = {};
|
||||||
var index = core.isset(x) && core.isset(y) ? (x + "," + y) : "floor";
|
var index = x != null && y != null ? (x + "," + y) : "floor";
|
||||||
var cache = core.status.checkBlock.cache[index];
|
var cache = core.status.checkBlock.cache[index];
|
||||||
if (!core.isset(cache)) {
|
if (!cache) {
|
||||||
// 没有该点的缓存,则遍历每个图块
|
// 没有该点的缓存,则遍历每个图块
|
||||||
core.status.maps[floorId].blocks.forEach(function (block) {
|
core.status.maps[floorId].blocks.forEach(function (block) {
|
||||||
if (!block.disable) {
|
if (!block.disable) {
|
||||||
@ -527,7 +509,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
var id = block.event.id,
|
var id = block.event.id,
|
||||||
enemy = core.material.enemys[id];
|
enemy = core.material.enemys[id];
|
||||||
// 检查是不是怪物,且是否拥有该特殊属性
|
// 检查是不是怪物,且是否拥有该特殊属性
|
||||||
if (core.isset(enemy) && core.hasSpecial(enemy.special, 25)) {
|
if (enemy && core.hasSpecial(enemy.special, 25)) {
|
||||||
// 检查是否可叠加
|
// 检查是否可叠加
|
||||||
if (enemy.add || cnt == 0) {
|
if (enemy.add || cnt == 0) {
|
||||||
hp_buff += enemy.value || 0;
|
hp_buff += enemy.value || 0;
|
||||||
@ -537,10 +519,10 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 检查【支援】技能
|
// 检查【支援】技能
|
||||||
if (core.isset(enemy) && core.hasSpecial(enemy.special, 26) &&
|
if (enemy && core.hasSpecial(enemy.special, 26) &&
|
||||||
// 检查支援条件,坐标存在,距离为1,且不能是自己
|
// 检查支援条件,坐标存在,距离为1,且不能是自己
|
||||||
// 其他类型的支援怪,比如十字之类的话.... 看着做是一样的
|
// 其他类型的支援怪,比如十字之类的话.... 看着做是一样的
|
||||||
core.isset(x) && core.isset(y) && Math.abs(block.x - x) <= 1 && Math.abs(block.y - y) <= 1 && !(x == block.x && y == block.y)) {
|
x != null && y != null && Math.abs(block.x - x) <= 1 && Math.abs(block.y - y) <= 1 && !(x == block.x && y == block.y)) {
|
||||||
// 记录怪物的x,y,ID
|
// 记录怪物的x,y,ID
|
||||||
guards.push([block.x, block.y, id]);
|
guards.push([block.x, block.y, id]);
|
||||||
}
|
}
|
||||||
@ -959,8 +941,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
var statusList = ['hpmax', 'hp', 'mana', 'atk', 'def', 'mdef', 'money', 'experience'];
|
var statusList = ['hpmax', 'hp', 'mana', 'atk', 'def', 'mdef', 'money', 'experience'];
|
||||||
statusList.forEach(function (item) {
|
statusList.forEach(function (item) {
|
||||||
// 向下取整
|
// 向下取整
|
||||||
if (core.isset(core.status.hero[item]))
|
core.status.hero[item] = Math.floor(core.status.hero[item]);
|
||||||
core.status.hero[item] = Math.floor(core.status.hero[item]);
|
|
||||||
// 大数据格式化
|
// 大数据格式化
|
||||||
core.setStatusBarInnerHTML(item, core.getRealStatus(item));
|
core.setStatusBarInnerHTML(item, core.getRealStatus(item));
|
||||||
});
|
});
|
||||||
@ -1022,7 +1003,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
"updateCheckBlock": function (floorId) {
|
"updateCheckBlock": function (floorId) {
|
||||||
// 领域、夹击、阻击等的伤害值计算
|
// 领域、夹击、阻击等的伤害值计算
|
||||||
floorId = floorId || core.status.floorId;
|
floorId = floorId || core.status.floorId;
|
||||||
if (!core.isset(floorId) || !core.isset(core.status.maps)) return;
|
if (!floorId || !core.status.maps) return;
|
||||||
|
|
||||||
var blocks = core.status.maps[floorId].blocks;
|
var blocks = core.status.maps[floorId].blocks;
|
||||||
var width = core.floors[floorId].width, height = core.floors[floorId].height;
|
var width = core.floors[floorId].width, height = core.floors[floorId].height;
|
||||||
|
|
||||||
@ -1035,9 +1017,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
if (!block.disable && block.event.cls.indexOf('enemy') == 0) {
|
if (!block.disable && block.event.cls.indexOf('enemy') == 0) {
|
||||||
var id = block.event.id,
|
var id = block.event.id,
|
||||||
enemy = core.material.enemys[id];
|
enemy = core.material.enemys[id];
|
||||||
if (core.isset(enemy)) {
|
if (enemy) core.status.checkBlock.map[block.x + width * block.y] = id;
|
||||||
core.status.checkBlock.map[block.x + width * block.y] = id;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 血网
|
// 血网
|
||||||
if (!block.disable &&
|
if (!block.disable &&
|
||||||
@ -1054,7 +1034,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
for (var x = 0; x < width; x++) {
|
for (var x = 0; x < width; x++) {
|
||||||
for (var y = 0; y < height; y++) {
|
for (var y = 0; y < height; y++) {
|
||||||
var id = core.status.checkBlock.map[x + width * y];
|
var id = core.status.checkBlock.map[x + width * y];
|
||||||
if (core.isset(id)) {
|
if (id) {
|
||||||
|
|
||||||
// 如果是血网,直接加上伤害值
|
// 如果是血网,直接加上伤害值
|
||||||
if (id == "lavaNet") {
|
if (id == "lavaNet") {
|
||||||
@ -1070,7 +1050,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
var range = enemy.range || 1;
|
var range = enemy.range || 1;
|
||||||
// 是否是九宫格领域
|
// 是否是九宫格领域
|
||||||
var zoneSquare = false;
|
var zoneSquare = false;
|
||||||
if (core.isset(enemy.zoneSquare)) zoneSquare = enemy.zoneSquare;
|
if (enemy.zoneSquare != null) zoneSquare = enemy.zoneSquare;
|
||||||
// 在范围内进行搜索,增加领域伤害值
|
// 在范围内进行搜索,增加领域伤害值
|
||||||
for (var dx = -range; dx <= range; dx++) {
|
for (var dx = -range; dx <= range; dx++) {
|
||||||
for (var dy = -range; dy <= range; dy++) {
|
for (var dy = -range; dy <= range; dy++) {
|
||||||
@ -1115,7 +1095,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
var nx = x + core.utils.scan[dir].x,
|
var nx = x + core.utils.scan[dir].x,
|
||||||
ny = y + core.utils.scan[dir].y;
|
ny = y + core.utils.scan[dir].y;
|
||||||
if (nx < 0 || nx >= width || ny < 0 || ny >= height) continue;
|
if (nx < 0 || nx >= width || ny < 0 || ny >= height) continue;
|
||||||
if (!core.isset(core.status.checkBlock.ambush[nx + ny * width]))
|
if (!core.status.checkBlock.ambush[nx + ny * width])
|
||||||
core.status.checkBlock.ambush[nx + ny * width] = [];
|
core.status.checkBlock.ambush[nx + ny * width] = [];
|
||||||
core.status.checkBlock.ambush[nx + ny * width].push([x, y, id, dir]);
|
core.status.checkBlock.ambush[nx + ny * width].push([x, y, id, dir]);
|
||||||
}
|
}
|
||||||
@ -1136,9 +1116,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
if (x > 0 && x < width - 1) {
|
if (x > 0 && x < width - 1) {
|
||||||
var id1 = core.status.checkBlock.map[x - 1 +width * y],
|
var id1 = core.status.checkBlock.map[x - 1 +width * y],
|
||||||
id2 = core.status.checkBlock.map[x + 1 + width * y];
|
id2 = core.status.checkBlock.map[x + 1 + width * y];
|
||||||
if (core.isset(id1) && core.isset(id2) && id1 == id2) {
|
if (id1 != null && id2 != null && id1 == id2) {
|
||||||
var enemy = core.material.enemys[id1];
|
var enemy = core.material.enemys[id1];
|
||||||
if (core.isset(enemy) && core.enemys.hasSpecial(enemy.special, 16)) {
|
if (enemy && core.enemys.hasSpecial(enemy.special, 16)) {
|
||||||
has = true;
|
has = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1147,9 +1127,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
if (y > 0 && y < height - 1) {
|
if (y > 0 && y < height - 1) {
|
||||||
var id1 = core.status.checkBlock.map[x + width * (y - 1)],
|
var id1 = core.status.checkBlock.map[x + width * (y - 1)],
|
||||||
id2 = core.status.checkBlock.map[x + width * (y + 1)];
|
id2 = core.status.checkBlock.map[x + width * (y + 1)];
|
||||||
if (core.isset(id1) && core.isset(id2) && id1 == id2) {
|
if (id1 != null && id2 != null && id1 == id2) {
|
||||||
var enemy = core.material.enemys[id1];
|
var enemy = core.material.enemys[id1];
|
||||||
if (core.isset(enemy) && core.enemys.hasSpecial(enemy.special, 16)) {
|
if (enemy && core.enemys.hasSpecial(enemy.special, 16)) {
|
||||||
has = true;
|
has = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1308,7 +1288,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
if (!core.isPlaying()) return;
|
if (!core.isPlaying()) return;
|
||||||
|
|
||||||
// 执行当前楼层的并行事件处理
|
// 执行当前楼层的并行事件处理
|
||||||
if (core.isset(core.status.floorId)) {
|
if (core.status.floorId) {
|
||||||
try {
|
try {
|
||||||
eval(core.floors[core.status.floorId].parallelDo);
|
eval(core.floors[core.status.floorId].parallelDo);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -1377,7 +1357,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
|
|
||||||
core.clearMap(name);
|
core.clearMap(name);
|
||||||
// 绘制色调层,默认不透明度
|
// 绘制色调层,默认不透明度
|
||||||
if (!core.isset(color)) color = 0.9;
|
if (color == null) color = 0.9;
|
||||||
ctx.fillStyle = "rgba(0,0,0,"+color+")";
|
ctx.fillStyle = "rgba(0,0,0,"+color+")";
|
||||||
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
|
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user