diff --git a/_server/README.md b/_server/README.md index 542c70a6..4079db9c 100644 --- a/_server/README.md +++ b/_server/README.md @@ -179,8 +179,6 @@ fs.readdir(path, callback) ## z-index -目前主体部分使用了 0,75,100 +目前主体部分使用了 0-15,75,100 -暂定blockly使用 200 ,多行文本编辑器使用 300 - -完成后再调整 \ No newline at end of file +blockly使用 200 ,多行文本编辑器使用 300 \ No newline at end of file diff --git a/_server/blockly/MotaAction.g4 b/_server/blockly/MotaAction.g4 index 5212a16f..f1d873eb 100644 --- a/_server/blockly/MotaAction.g4 +++ b/_server/blockly/MotaAction.g4 @@ -712,25 +712,25 @@ return code; */ win_s - : '游戏胜利,原因' ':' EvalString Newline + : '游戏胜利,原因' ':' EvalString? Newline ; /* win_s tooltip : win: 获得胜利, 该事件会显示获胜页面, 并重新游戏 helpUrl : https://ckcz123.github.io/mota-js/#/event?id=win-%e8%8e%b7%e5%be%97%e8%83%9c%e5%88%a9 -default : [" "] +default : [""] var code = '{"type": "win", "reason": "'+EvalString_0+'"},\n'; return code; */ lose_s - : '游戏失败,原因' ':' EvalString Newline + : '游戏失败,原因' ':' EvalString? Newline ; /* lose_s tooltip : lose: 游戏失败, 该事件会显示失败页面, 并重新开始游戏 helpUrl : https://ckcz123.github.io/mota-js/#/event?id=lose-%e6%b8%b8%e6%88%8f%e5%a4%b1%e8%b4%a5 -default : [" "] +default : [""] var code = '{"type": "lose", "reason": "'+EvalString_0+'"},\n'; return code; */ diff --git a/_server/editor_mode.js b/_server/editor_mode.js index 555a7ab7..8d9918d2 100644 --- a/_server/editor_mode.js +++ b/_server/editor_mode.js @@ -325,7 +325,8 @@ editor_mode.prototype.listen = function(callback){ selectFloor.innerHTML=outstr.join(''); selectFloor.value=core.status.floorId; selectFloor.onchange = function(){ - editor_mode.onmode(''); + editor_mode.onmode('nextChange'); + editor_mode.onmode('floor'); editor.changeFloor(selectFloor.value); } }); diff --git a/docs/editor.md b/docs/editor.md new file mode 100644 index 00000000..3b5470b8 --- /dev/null +++ b/docs/editor.md @@ -0,0 +1,51 @@ +# 地图编辑器使用说明 + +## 地图编辑器 + +UI界面分为3个区域,左侧的编辑区,中间的画布区,右侧的素材区,以及两个弹窗形式的分别是事件编辑器和文本编辑器. + +画布区下方有切换地图和编辑器模式的下拉菜单,点击`保存地图`后画布的内容才会写入到文件中.同时一个显示信息的tips区. + +在素材区点击图块时,会选中该图块,此时tips会显示该图块的信息,编辑区会进入图块属性模式,怪物或物品可以直接在里面编辑数值.如果地图的数字和ID未被定义,可以在左侧定义,定义新图块需要刷新才能生效. + +在tips中有图块信息时,在画布上点击或拖拽可以把图块画上去,可以使用ctrl+Z撤销操作以及对应的ctrl+Y恢复撤销.擦除方块可以使用素材区最左上角的擦除块. + +点击界面中的空白,tips中的图块信息会被清空,此时再点击画布上的点,编辑器会进入地图选点模式.此时可以编辑改点的`events`,`afterBattle`,`changeFloor`等事件或者是`canMove`来改变各方向的通行状态. + +切换地图会使编辑区进入楼层属性模式,这里可以修改首次到达该楼层时会触发的事件`firstArrive`,楼层显示的名称,默认的前景背景图片,默认天气和色调,是否允许使用快捷商店等等.注:这里不允许编辑楼层的ID,需要修改ID的场合请直接改js文件,并保持注释中的三个标识符一致. + +全塔属性中编辑整个塔为单位的属性,例如起始剧情`startText`,塔的ID,提供哪些难度,主角的起始属性起始道具,全局商店,各种数值以及系统FLAG.创建新塔时需要认真编辑这里面的所有选项. + +脚本编辑模式可以修改常用的需要更改的函数.例如,给不同的难度设置不同的内容,加点,推箱子达成后的触发,以及修改游戏中的`关于`界面. + +追加素材模式可以导入一个图片到该标签的画板中,然后依次点击画板中的图块,点追加就可以按顺序把这些图片添加到对应的画布区素材的最下方,需要刷新来生效. + +地图编辑模式中可以导入来自地图生成器的地图数组,同时创建新楼层需要在这里通过另存为来实现,可以点清除地图把另存为出的新楼层清空. + +> 编辑区的表格可以直接修改,推荐通过双击,在事件编辑器和文本编辑器中进行编辑.编辑区中的修改需要点保存才会生效. + +## 事件编辑器 + +地图选点中的表格,以及楼层属性中的`firstArrive`和全塔属性的`startText`,在双击时会进入事件编辑器,是由[antlr-blockly](https://github.com/zhaouv/antlr-blockly)生成的图块式的可视化编辑器. + +把左侧的方块拖到面板中,下方就会实时的显示对应的js的代码(以及数值不正确时的提示). + +每个方块点击右键会展开一个菜单,点帮助可以跳转到此文档中对应的内容.利用好复制功能可以极大提高编辑的效率.注释选项请不要使用,编辑器并不会保留这里的注释. + +template中提供了一些模板事件,例如战前剧情,打怪开门. + +`显示文章`的两个方块,以及`自动剧情文本`,`选项`和`自定义JS脚本`这5个方块,可以通过双击方块,在文本编辑器中(以多行的方式)编辑其中的文字. + +## 文本编辑器 + +事件编辑器之外的内容双击后由文本编辑器来编辑,是有js高亮支持的多行文本编辑器[CodeMirror](https://github.com/codemirror/CodeMirror),点confirm即可使编辑的文本替换到表格中 + +## 拓展地图编辑器 + +> 面向有一定编程基础的用户 + +修改`project/`下的`*comment.js`可以让地图编辑器对自己添加的属性有更好的支持.例如: ++ 给`comment.js`中`enemys`加入新的键值对,就可以更方便的给怪物在UI界面中添加对应的值. ++ 在`data.comment.js`中把自己添加的内容标记为叶节点,不再在表格中展开到最末端. + +地图编辑器的部分API见`_server/README.md` \ No newline at end of file