editor实现$range以及细节调整
This commit is contained in:
parent
20fc1f6b53
commit
9ee85323df
11
2.0diff.md
11
2.0diff.md
@ -139,14 +139,11 @@ $textarea(evalstr)$end
|
||||
# todo & 目前的bug
|
||||
|
||||
+ `event`,`after...`在地图上没有标记,可以在右下角加类似于无`id`的红问号类似的绿色星号小标记
|
||||
+ 添加新图块只对地形好使,添加的新物品还是需要手动在`project/items.js`中加东西
|
||||
+ 目前未做$range(evalstr:thiseval)$end的检查
|
||||
+ [x] 添加新图块只对地形好使,添加的新物品还是需要手动在`project/items.js`中加东西
|
||||
+ [x] 目前未做$range(evalstr:thiseval)$end的检查
|
||||
+ 通过`core.values.redJewel`的方式设置物品加的数值,在全GUI下反而会不直观
|
||||
+ `idnum`上限改到`999`,不需要在`.js`中手动设置`idnum`的话,根据数字范围来约定类型意义不大,而且`400`内随便输个数就发现已经被占了,体验极差
|
||||
+ `editor.html`中独立换背景的功能不再需要,待移除
|
||||
+ 全GUI下编辑要经常保存修改后F5
|
||||
+ 目前的报错只是throw,如果不开F12注意不到有错误发生,修改没有生效
|
||||
+ 有待美化,以及做成标签页式的模式切换
|
||||
+ replay模式,这个功能对于魔塔网站以及贴吧活动很有意义
|
||||
|
||||
前三条我会尽快修复(添加)
|
||||
+ [x] 目前的报错只是throw,如果不开F12注意不到有错误发生,修改没有生效
|
||||
+ [x] 有待美化,以及做成标签页式的模式切换
|
||||
@ -18,7 +18,7 @@ editor.file.loadFloorFile
|
||||
editor.file.saveFloorFile
|
||||
editor.file.saveFloorFileAs
|
||||
```
|
||||
6个编辑模式有关的查询
|
||||
编辑模式有关的查询
|
||||
```javascript
|
||||
editor.file.editItem('redJewel',[],function(a){console.log(a)});
|
||||
editor.file.editEnemy('redBat',[],function(a){console.log(a)});
|
||||
@ -27,7 +27,7 @@ editor.file.editFloor([],function(a){console.log(a)});
|
||||
editor.file.editTower([],function(a){console.log(a)});
|
||||
editor.file.editFunctions([],function(a){console.log(a)});
|
||||
```
|
||||
6个编辑模式有关的编辑
|
||||
编辑模式有关的编辑
|
||||
```javascript
|
||||
editor.info={images: "terrains", y: 9};
|
||||
editor.file.changeIdAndIdnum('yellowWall2',16,editor.info,function(a){console.log(a)});
|
||||
@ -50,14 +50,19 @@ editor.mode.functions();
|
||||
```
|
||||
切换模式
|
||||
```javascript
|
||||
editor.mode.onmode('');
|
||||
editor.mode.onmode('');//清空
|
||||
editor.mode.onmode('save');//保存
|
||||
editor.mode.onmode('nextChange');//下次onmode时前端进行切换
|
||||
|
||||
editor.mode.onmode('loc');
|
||||
editor.mode.onmode('emenyitem');
|
||||
editor.mode.onmode('floor');
|
||||
editor.mode.onmode('tower');
|
||||
editor.mode.onmode('functions');
|
||||
editor.mode.onmode('map');
|
||||
editor.mode.onmode('appendpic');
|
||||
```
|
||||
在切换模式时,改动才会保存到文件,并且需要刷新页面使得`editor`能看到改动
|
||||
在`onmode('save')`时,改动才会保存到文件,涉及到图片的改动需要刷新页面使得`editor`能看到
|
||||
|
||||
表格的`onchange`的实现中,获得当前模式的方式.不注意的话,修改`index.html`中页面的结构,会被坑
|
||||
```javascript
|
||||
@ -83,8 +88,8 @@ editor_blockly.confirm();
|
||||
|
||||
### 待调整
|
||||
|
||||
多行文本编辑器独立作为组件
|
||||
editor_multi.js
|
||||
+ [x] 多行文本编辑器独立作为组件
|
||||
+ [x] editor_multi.js
|
||||
|
||||
## z-index
|
||||
|
||||
|
||||
@ -312,7 +312,8 @@ editor_blockly.import = function(id_){
|
||||
"['afterGetItem']":'afterGetItem',
|
||||
"['afterOpenDoor']":'afterOpenDoor',
|
||||
|
||||
"['firstData']['shops']":'shop',
|
||||
//"['firstData']['shops']":'shop',
|
||||
"--shop--未完成数组的处理":'shop',
|
||||
|
||||
"['firstArrive']":'firstArrive',
|
||||
"['firstData']['startText']":'firstArrive',
|
||||
|
||||
@ -38,11 +38,25 @@ editor_mode.prototype.init_dom_ids = function(callback){
|
||||
editor_mode.prototype.objToTable = function(obj,commentObj){
|
||||
var outstr=["\n<tr><td>条目</td><td>注释</td><td>值</td></tr>\n"];
|
||||
var guids=[];
|
||||
var checkIsLeaf = function(obj,commentObj,field){
|
||||
var thiseval = eval('obj'+field);
|
||||
if (thiseval == null || thiseval == undefined)return true;//null,undefined
|
||||
if (typeof(thiseval) == typeof(''))return true;//字符串
|
||||
if (Object.keys(thiseval).length == 0)return true;//数字,true,false,空数组,空对象
|
||||
try {
|
||||
var comment = eval('commentObj'+field);
|
||||
if( comment.indexOf('$leaf') != -1){
|
||||
evalstr = comment.split('$leaf')[1].split('$end')[0];
|
||||
if(eval(evalstr) === true)return true;
|
||||
}
|
||||
} catch (error) {}
|
||||
return false;
|
||||
}
|
||||
//深度优先遍历
|
||||
var recursionParse = function(tfield) {
|
||||
for(var ii in eval("obj"+tfield)){
|
||||
var field = tfield+"['"+ii+"']";
|
||||
var isleaf = editor_mode.checkIsLeaf(obj,commentObj,field);
|
||||
var isleaf = checkIsLeaf(obj,commentObj,field);
|
||||
if (isleaf) {
|
||||
var leafnode = editor_mode.objToTr(obj,commentObj,field);
|
||||
outstr.push(leafnode[0]);
|
||||
@ -54,6 +68,13 @@ editor_mode.prototype.objToTable = function(obj,commentObj){
|
||||
}
|
||||
}
|
||||
recursionParse("");
|
||||
var checkRange = function(comment,thiseval){
|
||||
if( comment.indexOf('$range') !== -1){
|
||||
var evalstr = comment.split('$range')[1].split('$end')[0];
|
||||
return eval(evalstr);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
var listen = function(guids) {
|
||||
guids.forEach(function(guid){
|
||||
// tr>td[title=field]
|
||||
@ -69,12 +90,12 @@ editor_mode.prototype.objToTable = function(obj,commentObj){
|
||||
node = node.parentNode;
|
||||
}
|
||||
editor_mode.onmode(editor_mode._ids[node.getAttribute('id')]);
|
||||
editor_mode.addAction(['change',field,JSON.parse(input.value)]);
|
||||
//尚未完成,不完善,目前还没做$range的检查
|
||||
|
||||
// /*临时*/editor_mode.onmode('');/*临时*/
|
||||
//临时改为立刻写入文件,删去此句的时,切换模式才会真正写入
|
||||
//现阶段这样会更实用,20180218
|
||||
var thiseval = JSON.parse(input.value);
|
||||
if(checkRange(comment,thiseval)){
|
||||
editor_mode.addAction(['change',field,thiseval]);
|
||||
} else {
|
||||
printe('输入的值不合要求,请鼠标放置在注释上查看说明');
|
||||
}
|
||||
}
|
||||
input.ondblclick = function(){
|
||||
if(!editor_blockly.import(guid))
|
||||
@ -86,21 +107,6 @@ editor_mode.prototype.objToTable = function(obj,commentObj){
|
||||
return {"HTML":outstr.join(''),"guids":guids,"listen":listen};
|
||||
}
|
||||
|
||||
editor_mode.prototype.checkIsLeaf = function(obj,commentObj,field){
|
||||
var thiseval = eval('obj'+field);
|
||||
if (thiseval == null || thiseval == undefined)return true;//null,undefined
|
||||
if (typeof(thiseval) == typeof(''))return true;//字符串
|
||||
if (Object.keys(thiseval).length == 0)return true;//数字,true,false,空数组,空对象
|
||||
try {
|
||||
var comment = eval('commentObj'+field);
|
||||
if( comment.indexOf('$leaf') != -1){
|
||||
evalstr = comment.split('$leaf')[1].split('$end')[0];
|
||||
if(eval(evalstr) === true)return true;
|
||||
}
|
||||
} catch (error) {}
|
||||
return false;
|
||||
}
|
||||
|
||||
editor_mode.prototype.objToTr = function(obj,commentObj,field){
|
||||
var guid = editor.guid();
|
||||
var thiseval = eval('obj'+field);
|
||||
@ -197,6 +203,12 @@ editor_mode.prototype.showMode = function (mode) {
|
||||
editor_mode.dom[mode].style='';
|
||||
if(editor_mode[mode])editor_mode[mode]();
|
||||
document.getElementById('editModeSelect').value=mode;
|
||||
var tips = [
|
||||
'涉及图片的更改需要F5刷新浏览器来生效',
|
||||
'文本域可以通过双击,在文本编辑器或事件编辑器中编辑',
|
||||
'事件编辑器中的显示文本和自定义脚本的方块也可以双击',
|
||||
];
|
||||
if(!selectBox.isSelected)printf('tips: '+tips[~~(tips.length*Math.random())]);
|
||||
}
|
||||
|
||||
editor_mode.prototype.loc = function(callback){
|
||||
@ -462,7 +474,7 @@ editor_mode.prototype.listen = function(callback){
|
||||
var imgbase64 = sprite.toDataURL().split(',')[1];
|
||||
fs.writeFile('./project/images/'+editor_mode.appendPic.imageName+'.png',imgbase64,'base64',function(err,data){
|
||||
if(err){printe(err);throw(err)}
|
||||
printe('追加素材成功,请刷新编辑器');
|
||||
printe('追加素材成功,请F5刷新编辑器');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -37,13 +37,13 @@ comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
||||
"name": "显示在状态栏中的层数 ",
|
||||
"canFlyTo": "该楼能否被楼传器飞到(不能的话在该楼也不允许使用楼传器) \n$select({\"values\":[true,false]})$end",
|
||||
"canUseQuickShop": "该层是否允许使用快捷商店 \n$select({\"values\":[true,false]})$end",
|
||||
"defaultGround": "默认地面的图块ID(terrains中) ",
|
||||
"defaultGround": "默认地面的图块ID(terrains中) \n$select({\"values\":Object.keys(editor.core.icons.icons.terrains)})$end",
|
||||
"png": "背景图;你可以选择一张png图片来作为背景素材。详细用法请参见文档“自定义素材”中的说明。 \n$leaf(true)$end",
|
||||
"color": "该层的默认画面色调。本项可不写(代表无色调),如果写需要是一个RGBA数组。 \n$leaf(true)$end",
|
||||
"weather": "该层的默认天气。本项可忽略表示晴天,如果写则第一项为\"rain\"或\"snow\"代表雨雪,第二项为1-10之间的数代表强度。 \n$leaf(true)$end",
|
||||
"bgm": "到达该层后默认播放的BGM。本项可忽略。 ",
|
||||
//"map": "地图数据,需要是13x13,建议使用地图生成器来生成 ",
|
||||
"item_ratio": "每一层的宝石/血瓶效果,即获得宝石和血瓶时框内\"ratio\"的值。",
|
||||
"item_ratio": "每一层的宝石/血瓶效果,即获得宝石和血瓶时框内\"ratio\"的值。$range((thiseval==~~thiseval && thiseval>0)||thiseval==null)$end",
|
||||
"firstArrive": "第一次到该楼层触发的事件 \n$leaf(true)$end",
|
||||
},
|
||||
'loc' : {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user