StartText events
This commit is contained in:
parent
ca1c5a00ec
commit
71f5d366dc
@ -257,7 +257,7 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
||||
"_type": "event",
|
||||
"_event": "firstArrive",
|
||||
"_range": "thiseval==null || thiseval instanceof Array",
|
||||
"_data": "游戏开始前剧情。\n可以双击进入事件编辑器。\n如果无剧情直接留一个空数组即可。"
|
||||
"_data": "游戏开始前剧情,可以执行任意自定义事件。\n双击进入事件编辑器。\n如果无剧情直接留一个空数组即可。"
|
||||
},
|
||||
"shops": {
|
||||
"_leaf": true,
|
||||
|
||||
@ -1587,6 +1587,7 @@ core.insertAction([
|
||||
"icon": "blueShop", // 商店图标,blueShop为蓝色商店,pinkShop为粉色商店
|
||||
"textInList": "1F金币商店", // 在快捷商店栏中显示的名称
|
||||
"use": "money", // 商店所要使用的。只能是"money"或"experience"。
|
||||
"commonTimes": true, // 是否使用全局次数
|
||||
"need": "20+10*times*(times+1)", // 商店需要的金币/经验数值;可以是一个表达式,以times作为参数计算。
|
||||
// 这里用到的times为该商店的已经的访问次数。首次访问该商店时times的值为0。
|
||||
// 上面的例子是50层商店的计算公式。你也可以写任意其他的计算公式,只要以times作为参数即可。
|
||||
@ -1634,6 +1635,7 @@ core.insertAction([
|
||||
- icon 为商店的图标,在icons.js的npcs中定义。如woman可代表一个商人。
|
||||
- textInList 为其在快捷商店栏中显示的名称,如"3楼金币商店"等
|
||||
- use 为消耗的类型,是金币(money)还是经验(experience)。
|
||||
- commonTimes 是否使用全局次数;如果为true则可以多个快捷商店共享相同的次数
|
||||
- need 是一个表达式,计算商店所需要用到的数值。
|
||||
- 可以将times作为参数,times为该商店已经访问过的次数,第一次访问时times是0。
|
||||
- 如果对于每个选项都需要不同的数值,这里设为"-1";可参见下面经验商店的例子。
|
||||
@ -1873,8 +1875,6 @@ core.insertAction([
|
||||
|
||||
它将显示全塔属性中的startText内容(可以修改成自己的),提供战斗动画开启选择,设置初始福利,并正式开始游戏。
|
||||
|
||||
全塔属性的startText只能使用纯文本类型,其他的事件均无效。
|
||||
|
||||
我们可以修改脚本编辑`setInitData`函数来对于不同难度分别设置初始属性。
|
||||
|
||||
其参数hard分为对应全塔属性中levelChooseButtons中的第二项,分别对应不同的难度,并会在游戏中传输,在状态栏显示。
|
||||
|
||||
@ -2216,15 +2216,8 @@ actions.prototype.clickReplay = function (x, y) {
|
||||
case 0:
|
||||
{
|
||||
core.ui.closePanel();
|
||||
var hard=core.status.hard, route=core.clone(core.status.route);
|
||||
var seed = core.getFlag('seed');
|
||||
core.resetStatus(core.firstData.hero, hard, core.firstData.floorId, null, core.initStatus.maps);
|
||||
core.events.setInitData(hard);
|
||||
core.setFlag('seed', seed);
|
||||
core.setFlag('rand', seed);
|
||||
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
|
||||
core.startReplay(route);
|
||||
}, true);
|
||||
var hard=core.status.hard, seed = core.getFlag('seed');
|
||||
core.startGame(hard, seed, core.clone(core.status.route));
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
|
||||
@ -318,32 +318,6 @@ control.prototype.resetStatus = function(hero, hard, floorId, route, maps, value
|
||||
core.status.played = true;
|
||||
}
|
||||
|
||||
////// 开始游戏 //////
|
||||
control.prototype.startGame = function (hard, callback) {
|
||||
console.log('开始游戏');
|
||||
|
||||
this.resetStatus(core.firstData.hero, hard, core.firstData.floorId, null, core.initStatus.maps);
|
||||
|
||||
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
|
||||
if (core.isset(callback)) callback();
|
||||
}, true);
|
||||
|
||||
setTimeout(function () {
|
||||
// Upload
|
||||
var formData = new FormData();
|
||||
formData.append('type', 'people');
|
||||
formData.append('name', core.firstData.name);
|
||||
formData.append('version', core.firstData.version);
|
||||
formData.append('platform', core.platform.isPC?"PC":core.platform.isAndroid?"Android":core.platform.isIOS?"iOS":"");
|
||||
formData.append('hard', core.encodeBase64(hard));
|
||||
formData.append('hardCode', core.getFlag('hard', 0));
|
||||
formData.append('base64', 1);
|
||||
|
||||
core.utils.http("POST", "/games/upload.php", formData);
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
////// 重新开始游戏;此函数将回到标题页面 //////
|
||||
control.prototype.restart = function() {
|
||||
this.showStartAnimate();
|
||||
@ -1041,7 +1015,7 @@ control.prototype.updateViewport = function() {
|
||||
////// 绘制勇士 //////
|
||||
control.prototype.drawHero = function (direction, x, y, status, offset) {
|
||||
|
||||
if (!core.isPlaying()) return;
|
||||
if (!core.isPlaying() || core.status.isStarting) return;
|
||||
|
||||
var scan = {
|
||||
'up': {'x': 0, 'y': -1},
|
||||
@ -1679,14 +1653,7 @@ control.prototype.chooseReplayFile = function () {
|
||||
return;
|
||||
}
|
||||
|
||||
core.dom.startPanel.style.display = 'none';
|
||||
core.resetStatus(core.firstData.hero, obj.hard, core.firstData.floorId, null, core.initStatus.maps);
|
||||
core.setFlag('seed', obj.seed);
|
||||
core.setFlag('rand', obj.seed);
|
||||
core.events.setInitData(obj.hard);
|
||||
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
|
||||
core.startReplay(core.decodeRoute(obj.route));
|
||||
}, true);
|
||||
core.startGame(obj.hard, obj.seed, core.decode(obj.route));
|
||||
}, function () {
|
||||
|
||||
})
|
||||
@ -2263,15 +2230,7 @@ control.prototype.doSL = function (id, type) {
|
||||
if (data.version != core.firstData.version) {
|
||||
// core.drawTip("存档版本不匹配");
|
||||
if (confirm("存档版本不匹配!\n你想回放此存档的录像吗?\n可以随时停止录像播放以继续游戏。")) {
|
||||
core.dom.startPanel.style.display = 'none';
|
||||
var seed = data.hero.flags.seed;
|
||||
core.resetStatus(core.firstData.hero, data.hard, core.firstData.floorId, null, core.initStatus.maps);
|
||||
core.events.setInitData(data.hard);
|
||||
core.setFlag('seed', seed);
|
||||
core.setFlag('rand', seed);
|
||||
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
|
||||
core.startReplay(core.decodeRoute(data.route));
|
||||
}, true);
|
||||
core.startGame(data.hard, data.hero.flags.seed, core.decodeRoute(data.route));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -356,8 +356,8 @@ core.prototype.resetStatus = function(hero, hard, floorId, route, maps, values)
|
||||
}
|
||||
|
||||
////// 开始游戏 //////
|
||||
core.prototype.startGame = function (hard, callback) {
|
||||
core.control.startGame(hard, callback);
|
||||
core.prototype.startGame = function (hard, seed, route, callback) {
|
||||
core.events.startGame(hard, seed, route, callback);
|
||||
}
|
||||
|
||||
////// 重新开始游戏;此函数将回到标题页面 //////
|
||||
|
||||
@ -76,38 +76,83 @@ events.prototype.initGame = function () {
|
||||
}
|
||||
|
||||
////// 游戏开始事件 //////
|
||||
events.prototype.startGame = function (hard) {
|
||||
events.prototype.startGame = function (hard, seed, route, callback) {
|
||||
|
||||
if (core.status.isStarting) return;
|
||||
core.status.isStarting = true;
|
||||
|
||||
core.hideStartAnimate(function() {
|
||||
core.drawText(core.clone(core.firstData.startText), function() {
|
||||
if (core.flags.showBattleAnimateConfirm) { // 是否提供“开启战斗动画”的选择项
|
||||
var start = function () {
|
||||
console.log('开始游戏');
|
||||
core.resetStatus(core.firstData.hero, hard, core.firstData.floorId, null, core.initStatus.maps);
|
||||
|
||||
core.status.isStarting = true;
|
||||
|
||||
if (core.isset(seed)) {
|
||||
core.setFlag('seed', seed);
|
||||
core.setFlag('rand', seed);
|
||||
}
|
||||
else core.utils.__init_seed();
|
||||
|
||||
core.events.setInitData(hard);
|
||||
core.clearMap('all');
|
||||
core.clearStatusBar();
|
||||
|
||||
var post_start = function () {
|
||||
|
||||
core.status.isStarting = false;
|
||||
|
||||
core.changeFloor(core.status.floorId, null, core.status.hero.loc, null, function() {
|
||||
if (core.isset(callback)) callback();
|
||||
}, true);
|
||||
|
||||
setTimeout(function () {
|
||||
// Upload
|
||||
var formData = new FormData();
|
||||
formData.append('type', 'people');
|
||||
formData.append('name', core.firstData.name);
|
||||
formData.append('version', core.firstData.version);
|
||||
formData.append('platform', core.platform.isPC?"PC":core.platform.isAndroid?"Android":core.platform.isIOS?"iOS":"");
|
||||
formData.append('hard', core.encodeBase64(hard));
|
||||
formData.append('hardCode', core.getFlag('hard', 0));
|
||||
formData.append('base64', 1);
|
||||
|
||||
core.utils.http("POST", "/games/upload.php", formData);
|
||||
})
|
||||
}
|
||||
|
||||
core.insertAction(core.clone(core.firstData.startText), null, null, function() {
|
||||
if (!core.status.replay.replaying && core.flags.showBattleAnimateConfirm) { // 是否提供“开启战斗动画”的选择项
|
||||
core.status.event.selection = core.flags.battleAnimate ? 0 : 1;
|
||||
core.ui.drawConfirmBox("你想开启战斗动画吗?\n之后可以在菜单栏中开启或关闭。\n(强烈建议新手开启此项)", function () {
|
||||
core.data.flags.battleAnimate = true;
|
||||
core.flags.battleAnimate = true;
|
||||
core.setLocalStorage('battleAnimate', true);
|
||||
core.startGame(hard);
|
||||
core.utils.__init_seed();
|
||||
core.events.setInitData(hard);
|
||||
post_start();
|
||||
}, function () {
|
||||
core.data.flags.battleAnimate = false;
|
||||
core.flags.battleAnimate = false;
|
||||
core.setLocalStorage('battleAnimate', false);
|
||||
core.startGame(hard);
|
||||
core.utils.__init_seed();
|
||||
core.events.setInitData(hard);
|
||||
post_start();
|
||||
});
|
||||
}
|
||||
else {
|
||||
core.startGame(hard);
|
||||
core.utils.__init_seed();
|
||||
core.events.setInitData(hard);
|
||||
post_start();
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
if (core.isset(route)) {
|
||||
core.startReplay(route);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (core.isset(route)) {
|
||||
core.dom.startPanel.style.display = 'none';
|
||||
start();
|
||||
}
|
||||
else {
|
||||
core.hideStartAnimate(function() {
|
||||
start();
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
////// 不同难度分别设置初始属性 //////
|
||||
@ -589,11 +634,8 @@ events.prototype.doAction = function() {
|
||||
this.doAction();
|
||||
break;
|
||||
case "showImage": // 显示图片
|
||||
if (core.isset(data.loc) && core.isset(core.material.images.images[data.name])) {
|
||||
core.canvas.image.drawImage(core.material.images.images[data.name],
|
||||
core.calValue(data.loc[0]), core.calValue(data.loc[1]));
|
||||
}
|
||||
else core.clearMap('image');
|
||||
if (!core.isset(data.loc)) data.loc=[];
|
||||
core.events.showImage(data.name, data.loc[0], data.loc[1]);
|
||||
this.doAction();
|
||||
break;
|
||||
case "animateImage": // 淡入淡出图片
|
||||
@ -1361,6 +1403,14 @@ events.prototype.changeFloor = function (floorId, stair, heroLoc, time, callback
|
||||
}, 25);
|
||||
}
|
||||
|
||||
////// 绘制图片 //////
|
||||
events.prototype.showImage = function (name, x, y) {
|
||||
if (core.isset(name) && core.isset(x) && core.isset(y) && core.isset(core.material.images.images[name])) {
|
||||
core.canvas.image.drawImage(core.material.images.images[name], x, y);
|
||||
}
|
||||
else core.clearMap('image');
|
||||
}
|
||||
|
||||
////// 图片淡入/淡出 //////
|
||||
events.prototype.animateImage = function (type, image, loc, time, keep, callback) {
|
||||
time = time||0;
|
||||
|
||||
@ -20,6 +20,7 @@ utils.prototype.replaceText = function (text) {
|
||||
|
||||
////// 计算表达式的值 //////
|
||||
utils.prototype.calValue = function (value) {
|
||||
if (!core.isset(value)) return value;
|
||||
if (typeof value == 'number') {
|
||||
return value;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user