Support flag in loc & Replay 6x

This commit is contained in:
oc 2018-05-05 01:28:43 +08:00
parent c4a5c5889c
commit 9beec9f3ce
5 changed files with 55 additions and 39 deletions

View File

@ -650,7 +650,7 @@ return code;
*/
animateImage_0_s
: '图片淡入' EvalString '起点像素位置' 'x' Number 'y' Number '动画时间' Int Newline
: '图片淡入' EvalString '起点像素位置' 'x' PosString 'y' PosString '动画时间' Int Newline
;
/* animateImage_0_s
@ -658,12 +658,12 @@ tooltip : animageImage图片淡入
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=animateimage%ef%bc%9a%e5%9b%be%e7%89%87%e6%b7%a1%e5%85%a5%e6%b7%a1%e5%87%b
default : ["bg.jpg",0,0,500]
colour : this.printColor
var code = '{"type": "animateImage", "action": "show", "name": "'+EvalString_0+'", "loc": ['+Number_0+','+Number_1+'], "time": '+Int_0+'},\n';
var code = '{"type": "animateImage", "action": "show", "name": "'+EvalString_0+'", "loc": ['+PosString_0+','+PosString_1+'], "time": '+Int_0+'},\n';
return code;
*/
animateImage_1_s
: '图片淡出' EvalString '起点像素位置' 'x' Number 'y' Number '动画时间' Int Newline
: '图片淡出' EvalString '起点像素位置' 'x' PosString 'y' PosString '动画时间' Int Newline
;
/* animateImage_1_s
@ -671,12 +671,12 @@ tooltip : animageImage图片淡出
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=animateimage%ef%bc%9a%e5%9b%be%e7%89%87%e6%b7%a1%e5%85%a5%e6%b7%a1%e5%87%b
default : ["bg.jpg",0,0,500]
colour : this.printColor
var code = '{"type": "animateImage", "action": "hide", "name": "'+EvalString_0+'", "loc": ['+Number_0+','+Number_1+'], "time": '+Int_0+'},\n';
var code = '{"type": "animateImage", "action": "hide", "name": "'+EvalString_0+'", "loc": ['+PosString_0+','+PosString_1+'], "time": '+Int_0+'},\n';
return code;
*/
showGif_0_s
: '显示动图' EvalString '起点像素位置' 'x' Number 'y' Number Newline
: '显示动图' EvalString '起点像素位置' 'x' PosString 'y' PosString Newline
;
/* showGif_0_s
@ -684,7 +684,7 @@ tooltip : showGif显示动图
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=showgif%ef%bc%9a%e6%98%be%e7%a4%ba%e5%8a%a8%e5%9b%be
default : ["bg.gif",0,0]
colour : this.printColor
var code = '{"type": "showGif", "name": "'+EvalString_0+'", "loc": ['+Number_0+','+Number_1+']},\n';
var code = '{"type": "showGif", "name": "'+EvalString_0+'", "loc": ['+PosString_0+','+PosString_1+']},\n';
return code;
*/

View File

@ -583,9 +583,14 @@ control.prototype.setHeroMoveInterval = function (direction, x, y, callback) {
'down': {'x': 0, 'y': 1},
'right': {'x': 1, 'y': 0}
};
var toAdd = 1;
if (core.status.replay.speed>3)
toAdd = 2;
core.interval.heroMoveInterval = window.setInterval(function () {
core.status.heroMoving++;
if (core.status.heroMoving==8) {
core.status.heroMoving+=toAdd;
if (core.status.heroMoving>=8) {
core.setHeroLoc('x', x+scan[direction].x);
core.setHeroLoc('y', y+scan[direction].y);
core.moveOneStep();
@ -595,7 +600,7 @@ control.prototype.setHeroMoveInterval = function (direction, x, y, callback) {
core.status.heroMoving = 0;
if (core.isset(callback)) callback();
}
}, 12.5 / core.status.replay.speed);
}, 12.5 * toAdd / core.status.replay.speed);
}
////// 实际每一步的行走过程 //////
@ -1428,8 +1433,9 @@ control.prototype.resumeReplay = function () {
control.prototype.speedUpReplay = function () {
if (core.status.event.id=='save') return;
if (!core.status.replay.replaying) return;
core.status.replay.speed = parseInt(10*core.status.replay.speed + 1)/10;
if (core.status.replay.speed>3.0) core.status.replay.speed=3.0;
var toAdd = core.status.replay.speed>2?2:1;
core.status.replay.speed = parseInt(10*core.status.replay.speed + toAdd)/10;
if (core.status.replay.speed>6.0) core.status.replay.speed=6.0;
core.drawTip("x"+core.status.replay.speed+"倍");
}
@ -1437,7 +1443,8 @@ control.prototype.speedUpReplay = function () {
control.prototype.speedDownReplay = function () {
if (core.status.event.id=='save') return;
if (!core.status.replay.replaying) return;
core.status.replay.speed = parseInt(10*core.status.replay.speed - 1)/10;
var toAdd = core.status.replay.speed>2?2:1;
core.status.replay.speed = parseInt(10*core.status.replay.speed - toAdd)/10;
if (core.status.replay.speed<0.3) core.status.replay.speed=0.3;
core.drawTip("x"+core.status.replay.speed+"倍");
}

View File

@ -310,8 +310,9 @@ events.prototype.doAction = function() {
core.events.doAction();
break;
case "show": // 显示
if (typeof data.loc[0] == 'number' && typeof data.loc[1] == 'number')
data.loc = [data.loc];
if ((typeof data.loc[0] == 'number' || typeof data.loc[0] == 'string')
&& (typeof data.loc[1] == 'number' || typeof data.loc[1] == 'string'))
data.loc = [[core.calValue(data.loc[0]), core.calValue(data.loc[1])]];
if (core.isset(data.time) && data.time>0 && (!core.isset(data.floorId) || data.floorId==core.status.floorId)) {
core.animateBlock(data.loc,'show', data.time, function () {
data.loc.forEach(function (t) {
@ -330,8 +331,9 @@ events.prototype.doAction = function() {
case "hide": // 消失
if (!core.isset(data.loc))
data.loc = [x,y];
if (typeof data.loc[0] == 'number' && typeof data.loc[1] == 'number')
data.loc = [data.loc];
if ((typeof data.loc[0] == 'number' || typeof data.loc[0] == 'string')
&& (typeof data.loc[1] == 'number' || typeof data.loc[1] == 'string'))
data.loc = [[core.calValue(data.loc[0]), core.calValue(data.loc[1])]];
data.loc.forEach(function (t) {
core.removeBlock(t[0],t[1],data.floorId);
})
@ -345,8 +347,8 @@ events.prototype.doAction = function() {
case "setBlock": // 设置某图块
{
if (core.isset(data.loc)) {
x=data.loc[0];
y=data.loc[1];
x=core.calValue(data.loc[0]);
y=core.calValue(data.loc[1]);
}
var floorId = data.floorId||core.status.floorId;
var originBlock=core.getBlock(x,y,floorId,false);
@ -378,8 +380,8 @@ events.prototype.doAction = function() {
y=core.getHeroLoc('y');
}
else if (data.loc instanceof Array) {
x=data.loc[0];
y=data.loc[1];
x=core.calValue(data.loc[0]);
y=core.calValue(data.loc[1]);
}
}
core.drawAnimate(data.name, x, y, function () {
@ -388,8 +390,8 @@ events.prototype.doAction = function() {
break;
case "move": // 移动事件
if (core.isset(data.loc)) {
x=data.loc[0];
y=data.loc[1];
x=core.calValue(data.loc[0]);
y=core.calValue(data.loc[1]);
}
core.moveBlock(x,y,data.steps,data.time,data.immediateHide,function() {
core.events.doAction();
@ -402,7 +404,7 @@ events.prototype.doAction = function() {
break;
case "changeFloor": // 楼层转换
{
var heroLoc = {"x": data.loc[0], "y": data.loc[1]};
var heroLoc = {"x": core.calValue(data.loc[0]), "y": core.calValue(data.loc[1])};
if (core.isset(data.direction)) heroLoc.direction=data.direction;
core.changeFloor(data.floorId||core.status.floorId, null, heroLoc, data.time, function() {
core.lockControl();
@ -413,8 +415,8 @@ events.prototype.doAction = function() {
case "changePos": // 直接更换勇士位置,不切换楼层
core.clearMap('hero', 0, 0, 416, 416);
if (core.isset(data.loc)) {
core.setHeroLoc('x', data.loc[0]);
core.setHeroLoc('y', data.loc[1]);
core.setHeroLoc('x', core.calValue(data.loc[0]));
core.setHeroLoc('y', core.calValue(data.loc[1]));
}
if (core.isset(data.direction)) core.setHeroLoc('direction', data.direction);
core.drawHero();
@ -422,7 +424,8 @@ events.prototype.doAction = function() {
break;
case "showImage": // 显示图片
if (core.isset(data.loc) && core.isset(core.material.images.images[data.name])) {
core.canvas.animate.drawImage(core.material.images.images[data.name], data.loc[0], data.loc[1]);
core.canvas.animate.drawImage(core.material.images.images[data.name],
core.calValue(data.loc[0]), core.calValue(data.loc[1]));
}
else core.clearMap('animate', 0, 0, 416, 416);
this.doAction();
@ -447,8 +450,8 @@ events.prototype.doAction = function() {
var gif = new Image();
gif.src = core.material.images.images[data.name].src;
gif.style.position = 'absolute';
gif.style.left = (data.loc[0]*core.domStyle.scale)+"px";
gif.style.top = (data.loc[1]*core.domStyle.scale)+"px";
gif.style.left = (core.calValue(data.loc[0])*core.domStyle.scale)+"px";
gif.style.top = (core.calValue(data.loc[1])*core.domStyle.scale)+"px";
core.dom.gif2.appendChild(gif);
}
else {
@ -468,7 +471,7 @@ events.prototype.doAction = function() {
case "openDoor": // 开一个门,包括暗墙
{
var floorId=data.floorId || core.status.floorId;
var block=core.getBlock(data.loc[0], data.loc[1], floorId);
var block=core.getBlock(core.calValue(data.loc[0]), core.calValue(data.loc[1]), floorId);
if (block!=null) {
if (floorId==core.status.floorId)
core.openDoor(block.block.event.id, block.block.x, block.block.y, false, function() {
@ -503,7 +506,7 @@ events.prototype.doAction = function() {
break;
case "trigger": // 触发另一个事件;当前事件会被立刻结束。需要另一个地点的事件是有效的
{
var toX=data.loc[0], toY=data.loc[1];
var toX=core.calValue(data.loc[0]), toY=core.calValue(data.loc[1]);
var block=core.getBlock(toX, toY);
if (block!=null) {
block = block.block;
@ -1031,7 +1034,7 @@ events.prototype.animateImage = function (type, image, loc, time, callback) {
if (type == 'hide') opacityVal = 1;
core.setOpacity('data', opacityVal);
core.canvas.data.drawImage(image, loc[0], loc[1]);
core.canvas.data.drawImage(image, core.calValue(loc[0]), core.calValue(loc[1]));
core.status.replay.animate=true;
var animate = setInterval(function () {
if (type=='show') opacityVal += 0.1;

View File

@ -20,6 +20,12 @@ utils.prototype.replaceText = function (text) {
////// 计算表达式的值 //////
utils.prototype.calValue = function (value) {
if (typeof value == 'number') {
return value;
}
if (value instanceof Function) {
return value();
}
value=value.replace(/status:([\w\d_]+)/g, "core.getStatus('$1')");
value=value.replace(/item:([\w\d_]+)/g, "core.itemCount('$1')");
value=value.replace(/flag:([\w\d_]+)/g, "core.getFlag('$1', 0)");

View File

@ -1,20 +1,20 @@
HTML5魔塔样板V2.2
事件坐标可用变量指定
全局商店也可以使用图块编辑
事件坐标可用变量指定
全局商店也可以使用图块编辑
高亮显示有事件的格子
自动注册所有未注册的素材
等待用户点击事件
等待用户点击事件
图片移动事件
事件设置BGM音量
事件设置BGM音量
提供core.random函数提供随机数
作弊处理
状态栏绘制
六倍速播放
六倍速播放
播放视频时可以C键查看怪物手册
修复标题文字太长导致无法开始游戏的问题
新增纯新手简易造塔流程
部分效果和性能的优化
修复标题文字太长导致无法开始游戏的问题
新增纯新手简易造塔流程
部分效果和性能的优化
-----------------------------------------------------------------------