Bgmap & Fgmap events
This commit is contained in:
parent
8bc24c50c3
commit
095aedf1e1
@ -187,12 +187,15 @@ action
|
|||||||
| setValue_s
|
| setValue_s
|
||||||
| show_s
|
| show_s
|
||||||
| hide_s
|
| hide_s
|
||||||
| showFloorImg_s
|
|
||||||
| hideFloorImg_s
|
|
||||||
| trigger_s
|
| trigger_s
|
||||||
| revisit_s
|
| revisit_s
|
||||||
| exit_s
|
| exit_s
|
||||||
| setBlock_s
|
| setBlock_s
|
||||||
|
| showFloorImg_s
|
||||||
|
| hideFloorImg_s
|
||||||
|
| showBgFgMap_s
|
||||||
|
| hideBgFgMap_s
|
||||||
|
| setBgFgBlock_s
|
||||||
| setHeroIcon_s
|
| setHeroIcon_s
|
||||||
| update_s
|
| update_s
|
||||||
| updateEnemys_s
|
| updateEnemys_s
|
||||||
@ -420,6 +423,61 @@ var code = '{"type": "hide"'+floorstr+IdString_0+''+Int_0+'},\n';
|
|||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
|
trigger_s
|
||||||
|
: '触发事件' 'x' PosString ',' 'y' PosString Newline
|
||||||
|
|
||||||
|
|
||||||
|
/* trigger_s
|
||||||
|
tooltip : trigger: 立即触发另一个地点的事件
|
||||||
|
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=trigger%EF%BC%9A%E7%AB%8B%E5%8D%B3%E8%A7%A6%E5%8F%91%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%9C%B0%E7%82%B9%E7%9A%84%E4%BA%8B%E4%BB%B6
|
||||||
|
default : ["0","0"]
|
||||||
|
colour : this.eventColor
|
||||||
|
var code = '{"type": "trigger", "loc": ['+PosString_0+','+PosString_1+']},\n';
|
||||||
|
return code;
|
||||||
|
*/;
|
||||||
|
|
||||||
|
revisit_s
|
||||||
|
: '重启当前事件' Newline
|
||||||
|
|
||||||
|
|
||||||
|
/* revisit_s
|
||||||
|
tooltip : revisit: 立即重启当前事件
|
||||||
|
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=revisit%EF%BC%9A%E7%AB%8B%E5%8D%B3%E9%87%8D%E5%90%AF%E5%BD%93%E5%89%8D%E4%BA%8B%E4%BB%B6
|
||||||
|
colour : this.eventColor
|
||||||
|
var code = '{"type": "revisit"},\n';
|
||||||
|
return code;
|
||||||
|
*/;
|
||||||
|
|
||||||
|
exit_s
|
||||||
|
: '立刻结束当前事件' Newline
|
||||||
|
|
||||||
|
|
||||||
|
/* exit_s
|
||||||
|
tooltip : exit: 立刻结束当前事件
|
||||||
|
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=exit%EF%BC%9A%E7%AB%8B%E5%88%BB%E7%BB%93%E6%9D%9F%E5%BD%93%E5%89%8D%E4%BA%8B%E4%BB%B6
|
||||||
|
colour : this.eventColor
|
||||||
|
var code = '{"type": "exit"},\n';
|
||||||
|
return code;
|
||||||
|
*/;
|
||||||
|
|
||||||
|
setBlock_s
|
||||||
|
: '转变图块为' Int 'x' PosString? ',' 'y' PosString? '楼层' IdString? Newline
|
||||||
|
|
||||||
|
|
||||||
|
/* setBlock_s
|
||||||
|
tooltip : setBlock:设置某个图块,忽略坐标楼层则为当前事件
|
||||||
|
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97
|
||||||
|
colour : this.dataColor
|
||||||
|
default : [0,"","",""]
|
||||||
|
var floorstr = '';
|
||||||
|
if (PosString_0 && PosString_1) {
|
||||||
|
floorstr = ', "loc": ['+PosString_0+','+PosString_1+']';
|
||||||
|
}
|
||||||
|
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
|
||||||
|
var code = '{"type": "setBlock", "number":'+Int_0+floorstr+IdString_0+'},\n';
|
||||||
|
return code;
|
||||||
|
*/;
|
||||||
|
|
||||||
showFloorImg_s
|
showFloorImg_s
|
||||||
: '显示贴图' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? Newline
|
: '显示贴图' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? Newline
|
||||||
|
|
||||||
@ -482,58 +540,83 @@ var code = '{"type": "hideFloorImg"'+floorstr+IdString_0+'},\n';
|
|||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
trigger_s
|
showBgFgMap_s
|
||||||
: '触发事件' 'x' PosString ',' 'y' PosString Newline
|
: '显示图层块' Bg_Fg_List 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? Newline
|
||||||
|
|
||||||
|
|
||||||
/* trigger_s
|
/* showBgFgMap_s
|
||||||
tooltip : trigger: 立即触发另一个地点的事件
|
tooltip : showBgFgMap: 显示图层块,即背景图层/前景图层的某些图块,xy为左上角坐标,可用逗号分隔表示多个点
|
||||||
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=trigger%EF%BC%9A%E7%AB%8B%E5%8D%B3%E8%A7%A6%E5%8F%91%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%9C%B0%E7%82%B9%E7%9A%84%E4%BA%8B%E4%BB%B6
|
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=showFloorImg%ef%bc%9a%e6%98%be%e7%a4%ba%e8%b4%b4%e5%9b%be
|
||||||
default : ["0","0"]
|
default : ["bg","","",""]
|
||||||
colour : this.eventColor
|
colour : this.eventColor
|
||||||
var code = '{"type": "trigger", "loc": ['+PosString_0+','+PosString_1+']},\n';
|
var floorstr = '';
|
||||||
|
if (EvalString_0 && EvalString_1) {
|
||||||
|
var pattern1 = /^flag:[0-9a-zA-Z_][0-9a-zA-Z_\-:]*$/;
|
||||||
|
if(pattern1.test(EvalString_0) || pattern1.test(EvalString_1)){
|
||||||
|
EvalString_0=MotaActionFunctions.PosString_pre(EvalString_0);
|
||||||
|
EvalString_1=MotaActionFunctions.PosString_pre(EvalString_1);
|
||||||
|
EvalString_0=[EvalString_0,EvalString_1]
|
||||||
|
} else {
|
||||||
|
var pattern2 = /^([+-]?\d+)(,[+-]?\d+)*$/;
|
||||||
|
if(!pattern2.test(EvalString_0) || !pattern2.test(EvalString_1))throw new Error('坐标格式错误,请右键点击帮助查看格式');
|
||||||
|
EvalString_0=EvalString_0.split(',');
|
||||||
|
EvalString_1=EvalString_1.split(',');
|
||||||
|
if(EvalString_0.length!==EvalString_1.length)throw new Error('坐标格式错误,请右键点击帮助查看格式');
|
||||||
|
for(var ii=0;ii<EvalString_0.length;ii++)EvalString_0[ii]='['+EvalString_0[ii]+','+EvalString_1[ii]+']';
|
||||||
|
}
|
||||||
|
floorstr = ', "loc": ['+EvalString_0.join(',')+']';
|
||||||
|
}
|
||||||
|
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
|
||||||
|
var code = '{"type": "showBgFgMap", "name": "' + Bg_Fg_List_0 + '"' +floorstr+IdString_0+'},\n';
|
||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
revisit_s
|
hideBgFgMap_s
|
||||||
: '重启当前事件' Newline
|
: '隐藏图层块' Bg_Fg_List 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? Newline
|
||||||
|
|
||||||
|
|
||||||
/* revisit_s
|
/* hideBgFgMap_s
|
||||||
tooltip : revisit: 立即重启当前事件
|
tooltip : hideBgFgMap: 隐藏图层块,即背景图层/前景图层的某些图块,xy为左上角坐标,可用逗号分隔表示多个点
|
||||||
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=revisit%EF%BC%9A%E7%AB%8B%E5%8D%B3%E9%87%8D%E5%90%AF%E5%BD%93%E5%89%8D%E4%BA%8B%E4%BB%B6
|
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=hideFloorImg%ef%bc%9a%e9%9a%90%e8%97%8f%e8%b4%b4%e5%9b%be
|
||||||
|
default : ["bg","","",""]
|
||||||
colour : this.eventColor
|
colour : this.eventColor
|
||||||
var code = '{"type": "revisit"},\n';
|
var floorstr = '';
|
||||||
|
if (EvalString_0 && EvalString_1) {
|
||||||
|
var pattern1 = /^flag:[0-9a-zA-Z_][0-9a-zA-Z_\-:]*$/;
|
||||||
|
if(pattern1.test(EvalString_0) || pattern1.test(EvalString_1)){
|
||||||
|
EvalString_0=MotaActionFunctions.PosString_pre(EvalString_0);
|
||||||
|
EvalString_1=MotaActionFunctions.PosString_pre(EvalString_1);
|
||||||
|
EvalString_0=[EvalString_0,EvalString_1]
|
||||||
|
} else {
|
||||||
|
var pattern2 = /^([+-]?\d+)(,[+-]?\d+)*$/;
|
||||||
|
if(!pattern2.test(EvalString_0) || !pattern2.test(EvalString_1))throw new Error('坐标格式错误,请右键点击帮助查看格式');
|
||||||
|
EvalString_0=EvalString_0.split(',');
|
||||||
|
EvalString_1=EvalString_1.split(',');
|
||||||
|
if(EvalString_0.length!==EvalString_1.length)throw new Error('坐标格式错误,请右键点击帮助查看格式');
|
||||||
|
for(var ii=0;ii<EvalString_0.length;ii++)EvalString_0[ii]='['+EvalString_0[ii]+','+EvalString_1[ii]+']';
|
||||||
|
}
|
||||||
|
floorstr = ', "loc": ['+EvalString_0.join(',')+']';
|
||||||
|
}
|
||||||
|
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
|
||||||
|
var code = '{"type": "hideBgFgMap", "name": "' + Bg_Fg_List_0 + '"' +floorstr+IdString_0+'},\n';
|
||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
exit_s
|
setBgFgBlock_s
|
||||||
: '立刻结束当前事件' Newline
|
: '转变图层块' Bg_Fg_List '为' Int 'x' PosString? ',' 'y' PosString? '楼层' IdString? Newline
|
||||||
|
|
||||||
|
|
||||||
/* exit_s
|
/* setBgFgBlock_s
|
||||||
tooltip : exit: 立刻结束当前事件
|
tooltip : setBgFgBlock:设置某个图层块,忽略坐标楼层则为当前点
|
||||||
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=exit%EF%BC%9A%E7%AB%8B%E5%88%BB%E7%BB%93%E6%9D%9F%E5%BD%93%E5%89%8D%E4%BA%8B%E4%BB%B6
|
|
||||||
colour : this.eventColor
|
|
||||||
var code = '{"type": "exit"},\n';
|
|
||||||
return code;
|
|
||||||
*/;
|
|
||||||
|
|
||||||
setBlock_s
|
|
||||||
: '转变图块为' Int 'x' PosString? ',' 'y' PosString? '楼层' IdString? Newline
|
|
||||||
|
|
||||||
|
|
||||||
/* setBlock_s
|
|
||||||
tooltip : setBlock:设置某个图块,忽略坐标楼层则为当前事件
|
|
||||||
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97
|
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97
|
||||||
colour : this.dataColor
|
colour : this.eventColor
|
||||||
default : [0,"","",""]
|
default : ["bg",0,"","",""]
|
||||||
var floorstr = '';
|
var floorstr = '';
|
||||||
if (PosString_0 && PosString_1) {
|
if (PosString_0 && PosString_1) {
|
||||||
floorstr = ', "loc": ['+PosString_0+','+PosString_1+']';
|
floorstr = ', "loc": ['+PosString_0+','+PosString_1+']';
|
||||||
}
|
}
|
||||||
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
|
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
|
||||||
var code = '{"type": "setBlock", "number":'+Int_0+floorstr+IdString_0+'},\n';
|
var code = '{"type": "setBgFgBlock", "name": "' + Bg_Fg_List_0 + '", "number":'+Int_0+floorstr+IdString_0+'},\n';
|
||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
@ -1355,6 +1438,11 @@ B_1_List
|
|||||||
: '不改变'|'设为粗体'|'取消粗体'
|
: '不改变'|'设为粗体'|'取消粗体'
|
||||||
/*B_1_List ['null','true','false']*/;
|
/*B_1_List ['null','true','false']*/;
|
||||||
|
|
||||||
|
Bg_Fg_List
|
||||||
|
: '背景层'|'前景层'
|
||||||
|
/*Bg_Fg_List ['bg','fg']*/;
|
||||||
|
|
||||||
|
|
||||||
Bool: 'TRUE'
|
Bool: 'TRUE'
|
||||||
| 'FALSE'
|
| 'FALSE'
|
||||||
;
|
;
|
||||||
@ -1609,6 +1697,11 @@ ActionParser.prototype.parseAction = function() {
|
|||||||
this.next = MotaActionBlocks['hide_s'].xmlText([
|
this.next = MotaActionBlocks['hide_s'].xmlText([
|
||||||
x_str.join(','),y_str.join(','),data.floorId||'',data.time||0,this.next]);
|
x_str.join(','),y_str.join(','),data.floorId||'',data.time||0,this.next]);
|
||||||
break;
|
break;
|
||||||
|
case "setBlock": // 设置图块
|
||||||
|
data.loc=data.loc||['',''];
|
||||||
|
this.next = MotaActionBlocks['setBlock_s'].xmlText([
|
||||||
|
data.number||0,data.loc[0],data.loc[1],data.floorId||'',this.next]);
|
||||||
|
break;
|
||||||
case "showFloorImg": // 显示贴图
|
case "showFloorImg": // 显示贴图
|
||||||
data.loc=data.loc||[];
|
data.loc=data.loc||[];
|
||||||
if (!(data.loc[0] instanceof Array))
|
if (!(data.loc[0] instanceof Array))
|
||||||
@ -1633,10 +1726,34 @@ ActionParser.prototype.parseAction = function() {
|
|||||||
this.next = MotaActionBlocks['hideFloorImg_s'].xmlText([
|
this.next = MotaActionBlocks['hideFloorImg_s'].xmlText([
|
||||||
x_str.join(','),y_str.join(','),data.floorId||'',this.next]);
|
x_str.join(','),y_str.join(','),data.floorId||'',this.next]);
|
||||||
break;
|
break;
|
||||||
case "setBlock": // 设置图块
|
case "showBgFgMap": // 显示图层块
|
||||||
|
data.loc=data.loc||[];
|
||||||
|
if (!(data.loc[0] instanceof Array))
|
||||||
|
data.loc = [data.loc];
|
||||||
|
var x_str=[],y_str=[];
|
||||||
|
data.loc.forEach(function (t) {
|
||||||
|
x_str.push(t[0]);
|
||||||
|
y_str.push(t[1]);
|
||||||
|
})
|
||||||
|
this.next = MotaActionBlocks['showBgFgMap_s'].xmlText([
|
||||||
|
data.name||'bg', x_str.join(','),y_str.join(','),data.floorId||'',this.next]);
|
||||||
|
break;
|
||||||
|
case "hideBgFgMap": // 隐藏图层块
|
||||||
|
data.loc=data.loc||[];
|
||||||
|
if (!(data.loc[0] instanceof Array))
|
||||||
|
data.loc = [data.loc];
|
||||||
|
var x_str=[],y_str=[];
|
||||||
|
data.loc.forEach(function (t) {
|
||||||
|
x_str.push(t[0]);
|
||||||
|
y_str.push(t[1]);
|
||||||
|
})
|
||||||
|
this.next = MotaActionBlocks['hideBgFgMap_s'].xmlText([
|
||||||
|
data.name||'bg', x_str.join(','),y_str.join(','),data.floorId||'',this.next]);
|
||||||
|
break;
|
||||||
|
case "setBgFgBlock": // 设置图块
|
||||||
data.loc=data.loc||['',''];
|
data.loc=data.loc||['',''];
|
||||||
this.next = MotaActionBlocks['setBlock_s'].xmlText([
|
this.next = MotaActionBlocks['setBgFgBlock_s'].xmlText([
|
||||||
data.number||0,data.loc[0],data.loc[1],data.floorId||'',this.next]);
|
data.name||"bg", data.number||0,data.loc[0],data.loc[1],data.floorId||'',this.next]);
|
||||||
break;
|
break;
|
||||||
case "setHeroIcon": // 改变勇士
|
case "setHeroIcon": // 改变勇士
|
||||||
this.next = MotaActionBlocks['setHeroIcon_s'].xmlText([
|
this.next = MotaActionBlocks['setHeroIcon_s'].xmlText([
|
||||||
|
|||||||
@ -115,6 +115,9 @@ editor_blockly = function () {
|
|||||||
MotaActionBlocks['hide_s'].xmlText(),
|
MotaActionBlocks['hide_s'].xmlText(),
|
||||||
MotaActionBlocks['showFloorImg_s'].xmlText(),
|
MotaActionBlocks['showFloorImg_s'].xmlText(),
|
||||||
MotaActionBlocks['hideFloorImg_s'].xmlText(),
|
MotaActionBlocks['hideFloorImg_s'].xmlText(),
|
||||||
|
MotaActionBlocks['showBgFgMap_s'].xmlText(),
|
||||||
|
MotaActionBlocks['hideBgFgMap_s'].xmlText(),
|
||||||
|
MotaActionBlocks['setBgFgBlock_s'].xmlText(),
|
||||||
MotaActionBlocks['trigger_s'].xmlText(),
|
MotaActionBlocks['trigger_s'].xmlText(),
|
||||||
MotaActionBlocks['move_s'].xmlText(),
|
MotaActionBlocks['move_s'].xmlText(),
|
||||||
MotaActionBlocks['jump_s'].xmlText(),
|
MotaActionBlocks['jump_s'].xmlText(),
|
||||||
|
|||||||
116
docs/event.md
116
docs/event.md
@ -459,38 +459,6 @@ revisit常常使用在一些商人之类的地方,当用户购买物品后不
|
|||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
### hideFloorImg:隐藏贴图
|
|
||||||
|
|
||||||
使用`{"type":"hideFloorImg"}`可以隐藏某个楼层的贴图。
|
|
||||||
|
|
||||||
有关贴图说明请参见[使用自己的图片作为某层楼的背景/前景素材](personalization#使用自己的图片作为某层楼的背景前景素材)。
|
|
||||||
|
|
||||||
``` js
|
|
||||||
"x,y": [ // 实际执行的事件列表
|
|
||||||
{"type": "hideFloorImg", "loc": [3,6], "floorId": "MT1"}, // 隐藏[3,6]的贴图
|
|
||||||
{"type": "hideFloorImg", "loc": [3,6]}, // 如果是当前层,则可以省略floorId项
|
|
||||||
{"type": "hideFloorImg", "loc": [[3,6],[2,9],[1,2]]} // 我们也可以同时隐藏多个贴图。
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
loc为要隐藏的贴图的左上角坐标,可以简单的写[x,y]代表一个点,也可以写个二维数组[[x1,y1],[x2,y2],...]来同时显示多个点。
|
|
||||||
|
|
||||||
如果同时存在若干个贴图都是是该坐标为左上角,则这些贴图全部会被隐藏。
|
|
||||||
|
|
||||||
floorId为目标点的楼层,如果是当前楼层可以忽略不写。
|
|
||||||
|
|
||||||
### showFloorImg:显示贴图
|
|
||||||
|
|
||||||
使用`{"type":"showFloorImg"}`可以显示某个楼层的贴图。
|
|
||||||
|
|
||||||
其做法和参数,和隐藏贴图是完全一致的。
|
|
||||||
|
|
||||||
``` js
|
|
||||||
"x,y": [ // 实际执行的事件列表
|
|
||||||
{"type": "showFloorImg", "loc": [3,6], "floorId": "MT1"}, // 显示[3,6]的贴图
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
### setBlock:设置某个图块
|
### setBlock:设置某个图块
|
||||||
|
|
||||||
我们可以采用 `{"type": "setBlock"}` 来改变某个地图块。
|
我们可以采用 `{"type": "setBlock"}` 来改变某个地图块。
|
||||||
@ -517,6 +485,90 @@ number为**要更改到的数字**,有关“数字”的定义详见参见[素
|
|||||||
|
|
||||||
图块更改往往与[同一个点的多事件处理](#同一个点的多事件处理)相关。
|
图块更改往往与[同一个点的多事件处理](#同一个点的多事件处理)相关。
|
||||||
|
|
||||||
|
### hideFloorImg:隐藏楼层贴图
|
||||||
|
|
||||||
|
使用`{"type":"hideFloorImg"}`可以隐藏某个楼层的贴图。
|
||||||
|
|
||||||
|
有关贴图说明请参见[使用自己的图片作为某层楼的背景/前景素材](personalization#使用自己的图片作为某层楼的背景前景素材)。
|
||||||
|
|
||||||
|
``` js
|
||||||
|
"x,y": [ // 实际执行的事件列表
|
||||||
|
{"type": "hideFloorImg", "loc": [3,6], "floorId": "MT1"}, // 隐藏[3,6]的贴图
|
||||||
|
{"type": "hideFloorImg", "loc": [3,6]}, // 如果是当前层,则可以省略floorId项
|
||||||
|
{"type": "hideFloorImg", "loc": [[3,6],[2,9],[1,2]]} // 我们也可以同时隐藏多个贴图。
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
loc为要隐藏的贴图的左上角坐标,可以简单的写[x,y]代表一个点,也可以写个二维数组[[x1,y1],[x2,y2],...]来同时显示多个点。
|
||||||
|
|
||||||
|
如果同时存在若干个贴图都是是该坐标为左上角,则这些贴图全部会被隐藏。
|
||||||
|
|
||||||
|
floorId为目标点的楼层,如果是当前楼层可以忽略不写。
|
||||||
|
|
||||||
|
### showFloorImg:显示楼层贴图
|
||||||
|
|
||||||
|
使用`{"type":"showFloorImg"}`可以显示某个楼层的贴图。
|
||||||
|
|
||||||
|
其做法和参数,和隐藏贴图是完全一致的。
|
||||||
|
|
||||||
|
``` js
|
||||||
|
"x,y": [ // 实际执行的事件列表
|
||||||
|
{"type": "showFloorImg", "loc": [3,6], "floorId": "MT1"}, // 显示[3,6]的贴图
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
### hideBgFgMap:隐藏楼层的某些背景或前景图块
|
||||||
|
|
||||||
|
使用`{"type":"hideBgFgMap"}`可以隐藏某个楼层的背景或前景图块。
|
||||||
|
|
||||||
|
从V2.4.1开始,允许绘制三层图层(背景层,事件层和前景层)。使用`hideBgFgMap`可以隐藏背景或前景层中的图块。
|
||||||
|
|
||||||
|
``` js
|
||||||
|
"x,y": [ // 实际执行的事件列表
|
||||||
|
{"type": "hideBgFgMap", "name": "bg", "loc": [3,6], "floorId": "MT1"}, // 隐藏MT1层[3,6]的背景层图块
|
||||||
|
{"type": "hideBgFgMap", "name": "bg", "loc": [3,6]}, // 如果是当前层,则可以省略floorId项
|
||||||
|
{"type": "hideBgFgMap", "name": "fg", "loc": [[3,6],[2,9],[1,2]]} // 我们也可以同时隐藏多个贴图。
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
name为必选的,且只能是`bg`和`fg`之一,分别代表背景图层和前景图层。
|
||||||
|
|
||||||
|
loc为要隐藏的贴图的左上角坐标,可以简单的写[x,y]代表一个点,也可以写个二维数组[[x1,y1],[x2,y2],...]来同时显示多个点。
|
||||||
|
|
||||||
|
floorId为目标点的楼层,如果是当前楼层可以忽略不写。
|
||||||
|
|
||||||
|
### showBgFgMap:显示楼层贴图
|
||||||
|
|
||||||
|
使用`{"type":"showFloorImg"}`可以显示某个楼层的贴图。
|
||||||
|
|
||||||
|
其做法和参数,和隐藏贴图是完全一致的。
|
||||||
|
|
||||||
|
``` js
|
||||||
|
"x,y": [ // 实际执行的事件列表
|
||||||
|
{"type": "showBgFgMap", "name": "bg", "loc": [3,6], "floorId": "MT1"}, // 显示MT1层[3,6]的前景层图块
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
### setBgFgBlock:设置某个背景或前景层图块
|
||||||
|
|
||||||
|
我们可以采用 `{"type": "setBgFgBlock"}` 来改变某个背景或前景层地图块。
|
||||||
|
|
||||||
|
``` js
|
||||||
|
"x,y": [ // 实际执行的事件列表
|
||||||
|
{"type": "setBgFgBlock", "name": "bg", "floorId": "MT1", "loc": [3,3], "number": 233}, // 将MT1层背景层的(3,3)点变成数字233
|
||||||
|
{"type": "setBgFgBlock", "name": "bg", "loc": [2,1], "number": 121}, // 省略floorId则默认为本层
|
||||||
|
{"type": "setBgFgBlock", "name": "fg", "number": 57}, // loc也可省略,默认为当前点
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
name为必选的,且只能是`bg`和`fg`之一,分别代表背景层和前景层。
|
||||||
|
|
||||||
|
floorId为可选的,表示要更改的目标楼层。如果忽略此项,则默认为当前楼层。
|
||||||
|
|
||||||
|
loc为可选的,表示要更改地图块的坐标。如果忽略此项,则默认为当前事件点。
|
||||||
|
|
||||||
|
图块更改后,其隐藏/显示状态不会发生任何改变,即原来是隐藏还是会不显示。可以使用`showBgFgMap`事件将其显示出来。
|
||||||
|
|
||||||
### setHeroIcon:更改角色行走图
|
### setHeroIcon:更改角色行走图
|
||||||
|
|
||||||
使用`{"type": "setHeroIcon"}`可以更改角色行走图。
|
使用`{"type": "setHeroIcon"}`可以更改角色行走图。
|
||||||
|
|||||||
@ -44,6 +44,16 @@ HTML5魔塔是使用画布(canvas)来绘制,存在若干个图层,它们
|
|||||||
|
|
||||||
如果你需要某个素材已经存在,则可以直接将其覆盖images目录下的同名文件,就能看到效果。
|
如果你需要某个素材已经存在,则可以直接将其覆盖images目录下的同名文件,就能看到效果。
|
||||||
|
|
||||||
|
### 背景和前景图层
|
||||||
|
|
||||||
|
从V2.4.1开始,样板允许多个图层叠加,最多支持背景层、事件层和前景层三个图层。
|
||||||
|
|
||||||
|
在地图编辑器中绘图时,下拉框选中“背景层”或“前景层”即可在对应的图层上绘图。
|
||||||
|
|
||||||
|
其中背景层和前景层仅为静态绘图(不支持动画),但可以使用自动元件(autotile)。
|
||||||
|
|
||||||
|
可以使用`showBgFgMap`, `hideBgFgMap`, `setBgFgBlock`等事件对背景和前景图层进行操作。
|
||||||
|
|
||||||
### 使用自己的图片作为某层楼的背景/前景素材
|
### 使用自己的图片作为某层楼的背景/前景素材
|
||||||
|
|
||||||
由于HTML5功能(素材)有限,导致了对很多比较复杂的素材(比如房子内)等无法有着较好的绘图方式。
|
由于HTML5功能(素材)有限,导致了对很多比较复杂的素材(比如房子内)等无法有着较好的绘图方式。
|
||||||
|
|||||||
@ -407,6 +407,7 @@
|
|||||||
<canvas class='gameCanvas' id='hero' width='416' height='416'></canvas>
|
<canvas class='gameCanvas' id='hero' width='416' height='416'></canvas>
|
||||||
<!-- <canvas class='gameCanvas' id='event2' width='416' height='416'></canvas> -->
|
<!-- <canvas class='gameCanvas' id='event2' width='416' height='416'></canvas> -->
|
||||||
<canvas class='gameCanvas' id='fg' width='416' height='416'></canvas>
|
<canvas class='gameCanvas' id='fg' width='416' height='416'></canvas>
|
||||||
|
<canvas class='gameCanvas' id='damage' width='416' height='416'></canvas>
|
||||||
<canvas class='gameCanvas' id='animate' width='416' height='416'></canvas>
|
<canvas class='gameCanvas' id='animate' width='416' height='416'></canvas>
|
||||||
<canvas class='gameCanvas' id='weather' width='416' height='416'></canvas>
|
<canvas class='gameCanvas' id='weather' width='416' height='416'></canvas>
|
||||||
<canvas class='gameCanvas' id='route' width='416' height='416'></canvas>
|
<canvas class='gameCanvas' id='route' width='416' height='416'></canvas>
|
||||||
|
|||||||
@ -392,6 +392,7 @@
|
|||||||
<canvas class='gameCanvas' id='hero' width='416' height='416'></canvas>
|
<canvas class='gameCanvas' id='hero' width='416' height='416'></canvas>
|
||||||
<!-- <canvas class='gameCanvas' id='event2' width='416' height='416'></canvas> -->
|
<!-- <canvas class='gameCanvas' id='event2' width='416' height='416'></canvas> -->
|
||||||
<canvas class='gameCanvas' id='fg' width='416' height='416'></canvas>
|
<canvas class='gameCanvas' id='fg' width='416' height='416'></canvas>
|
||||||
|
<canvas class='gameCanvas' id='damage' width='416' height='416'></canvas>
|
||||||
<canvas class='gameCanvas' id='animate' width='416' height='416'></canvas>
|
<canvas class='gameCanvas' id='animate' width='416' height='416'></canvas>
|
||||||
<canvas class='gameCanvas' id='weather' width='416' height='416'></canvas>
|
<canvas class='gameCanvas' id='weather' width='416' height='416'></canvas>
|
||||||
<canvas class='gameCanvas' id='route' width='416' height='416'></canvas>
|
<canvas class='gameCanvas' id='route' width='416' height='416'></canvas>
|
||||||
|
|||||||
@ -743,6 +743,11 @@ core.prototype.setBlock = function (number, x, y, floorId) {
|
|||||||
core.maps.setBlock(number, x, y, floorId);
|
core.maps.setBlock(number, x, y, floorId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////// 改变图层块 //////
|
||||||
|
core.prototype.setBgFgBlock = function (name, number, x, y, floorId) {
|
||||||
|
core.maps.setBgFgBlock(name, number, x, y, floorId);
|
||||||
|
}
|
||||||
|
|
||||||
////// 添加一个全局动画 //////
|
////// 添加一个全局动画 //////
|
||||||
core.prototype.addGlobalAnimate = function (block) {
|
core.prototype.addGlobalAnimate = function (block) {
|
||||||
core.maps.addGlobalAnimate(block);
|
core.maps.addGlobalAnimate(block);
|
||||||
|
|||||||
@ -399,6 +399,16 @@ events.prototype.doAction = function() {
|
|||||||
}
|
}
|
||||||
else this.doAction();
|
else this.doAction();
|
||||||
break;
|
break;
|
||||||
|
case "setBlock": // 设置某图块
|
||||||
|
{
|
||||||
|
if (core.isset(data.loc)) {
|
||||||
|
x=core.calValue(data.loc[0]);
|
||||||
|
y=core.calValue(data.loc[1]);
|
||||||
|
}
|
||||||
|
core.setBlock(data.number, x, y, data.floorId);
|
||||||
|
this.doAction();
|
||||||
|
break;
|
||||||
|
}
|
||||||
case "showFloorImg": // 显示贴图
|
case "showFloorImg": // 显示贴图
|
||||||
if (!core.isset(data.loc))
|
if (!core.isset(data.loc))
|
||||||
data.loc = [x,y];
|
data.loc = [x,y];
|
||||||
@ -419,13 +429,33 @@ events.prototype.doAction = function() {
|
|||||||
core.events.doAction();
|
core.events.doAction();
|
||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
case "setBlock": // 设置某图块
|
case "showBgFgMap": // 显示图层块
|
||||||
|
if (!core.isset(data.loc))
|
||||||
|
data.loc = [x,y];
|
||||||
|
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])]];
|
||||||
|
core.maps.setBgFgMap("show", data.name, data.loc, data.floorId, function() {
|
||||||
|
core.events.doAction();
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case "hideBgFgMap": // 隐藏图层块
|
||||||
|
if (!core.isset(data.loc))
|
||||||
|
data.loc = [x,y];
|
||||||
|
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])]];
|
||||||
|
core.maps.setBgFgMap("hide", data.name, data.loc, data.floorId, function() {
|
||||||
|
core.events.doAction();
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case "setBgFgBlock": // 设置图层块
|
||||||
{
|
{
|
||||||
if (core.isset(data.loc)) {
|
if (core.isset(data.loc)) {
|
||||||
x=core.calValue(data.loc[0]);
|
x=core.calValue(data.loc[0]);
|
||||||
y=core.calValue(data.loc[1]);
|
y=core.calValue(data.loc[1]);
|
||||||
}
|
}
|
||||||
core.setBlock(data.number, x, y, data.floorId);
|
core.setBgFgBlock(data.name, data.number, x, y, data.floorId);
|
||||||
this.doAction();
|
this.doAction();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
36
libs/maps.js
36
libs/maps.js
@ -350,7 +350,7 @@ maps.prototype.drawBgFgMap = function (floorId, canvas, name) {
|
|||||||
var blockImage = core.material.images.terrains;
|
var blockImage = core.material.images.terrains;
|
||||||
|
|
||||||
var getMapArray = function (name) {
|
var getMapArray = function (name) {
|
||||||
var arr = core.floors[floorId][name+"map"] || [];
|
var arr = core.clone(core.floors[floorId][name+"map"] || []);
|
||||||
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++) {
|
||||||
arr[y] = arr[y] || [];
|
arr[y] = arr[y] || [];
|
||||||
@ -992,6 +992,18 @@ maps.prototype.setBlock = function (number, x, y, floorId) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////// 改变图层块 //////
|
||||||
|
maps.prototype.setBgFgBlock = function (name, number, x, y, floorId) {
|
||||||
|
floorId = floorId || core.status.floorId;
|
||||||
|
if (!core.isset(number) || !core.isset(x) || !core.isset(y)) return;
|
||||||
|
if (x<0 || x>=core.bigmap.width || y<0 || y>=core.bigmap.height) return;
|
||||||
|
if (name!='bg' && name!='fg') return;
|
||||||
|
|
||||||
|
core.setFlag(name+"v_"+floorId+"_"+x+"_"+y, number);
|
||||||
|
if (floorId == core.status.floorId)
|
||||||
|
core.drawMap(floorId);
|
||||||
|
}
|
||||||
|
|
||||||
////// 添加一个全局动画 //////
|
////// 添加一个全局动画 //////
|
||||||
maps.prototype.addGlobalAnimate = function (b) {
|
maps.prototype.addGlobalAnimate = function (b) {
|
||||||
if (main.mode=='editor' && main.editor.disableGlobalAnimate) return;
|
if (main.mode=='editor' && main.editor.disableGlobalAnimate) return;
|
||||||
@ -1140,6 +1152,28 @@ maps.prototype.setFloorImage = function (type, loc, floorId, callback) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maps.prototype.setBgFgMap = function (type, name, loc, floorId, callback) {
|
||||||
|
if (type!='show') type='hide';
|
||||||
|
if (name!='fg') name='bg';
|
||||||
|
if (typeof loc[0] == 'number' && typeof loc[1] == 'number')
|
||||||
|
loc = [loc];
|
||||||
|
floorId = floorId||core.status.floorId;
|
||||||
|
|
||||||
|
if (loc.length==0) return;
|
||||||
|
loc.forEach(function (t) {
|
||||||
|
var x=t[0], y=t[1];
|
||||||
|
var flag = name+"_"+floorId+"_"+x+"_"+y;
|
||||||
|
core.setFlag(flag, type=='show'?false:true);
|
||||||
|
})
|
||||||
|
|
||||||
|
if (floorId==core.status.floorId) {
|
||||||
|
core.drawMap(floorId, callback);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (core.isset(callback)) callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
maps.prototype.resetMap = function(floorId) {
|
maps.prototype.resetMap = function(floorId) {
|
||||||
var floorId = floorId||core.status.floorId;
|
var floorId = floorId||core.status.floorId;
|
||||||
core.status.maps[floorId] = this.loadFloor(floorId);
|
core.status.maps[floorId] = this.loadFloor(floorId);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user