mota-js/2.0diff.md
2018-01-08 19:28:11 +08:00

4.4 KiB

v2.0目前的改动

总体上:

部分重构了运行时

  • libs中的数据分离出来保存为类似json的js文件,分离后的数据进一步分离为纯数据和注释两部分
  • 更改目录结构,分离后的libs一般无需修改,把数据楼层文件声音图片放入project目录中
    • 需要相应的修改地图生成器和js压缩工具
  • 设置了三个模式play|editor|replayeditor模式关闭了部分动画,并且角色无法行动

重构editor

  • 重命名为editor.html
    • 需要相应的修改本地服务的按钮打开的网址,为了兼容,临时加了个内容为<html><body><script>window.location='editor.html'</script></body></html>drawMapGUI.html
  • 不再独立的导入数据和画图,尽可能的通过main.init('editor')复用代码
  • 能够在本地服务器环境中直接修改project中的数据,目前只完成了文件操作的代码_server/editor_file.js,前端尚未完成
  • editor的代码拆到了_server/editor.js

具体:

main.js

用户修改内容转移到了project/data.js

把事件监听打包成了main.prototype.listen

main.listenmain.init改为在index.html中执行

添加了main.prototype.loadPureData,在main.init中先加载存数据再加载libs

core.js

core.drawMapeditor模式下不再画图,而是生成画图的函数提供给editor

editor模式下GlobalAnimate可以独立的选择是否播放

core.playBgmcore.playSound中非play模式不再播放声音

core.showcore.hide中非play模式不再进行动画而是立刻完成并执行回调

editor模式不执行core.resize

data.js

数据转移到了project/data.js

注释转移到了project/data.comment.js

enemy.js,items.js,maps.js,icons.js

数据转移到了project下的同名文件中

注释转移到了project/comment.js

editor_file.js

提供了以下函数进行楼层map数组相关的操作

editor.file.getFloorFileList
editor.file.loadFloorFile
editor.file.saveFloorFile
editor.file.saveFloorFileAs

5个编辑模式有关的查询

editor.file.editItem(editor,'redJewel',[],function(a){console.log(a)});
editor.file.editEnemy(editor,'redBat',[],function(a){console.log(a)});
editor.file.editLoc(editor,2,0,[],function(a){console.log(a)});
editor.file.editFloor(editor,[],function(a){console.log(a)});
editor.file.editTower(editor,[],function(a){console.log(a)});

5个编辑模式有关的编辑

editor.info={images: "terrains", y: 9};
editor.file.changeIdAndIdnum(editor,'yellowWall2',16,editor.info,function(a){console.log(a)});
editor.file.editItem(editor,'book',[["change","['items']['name']","怪物手册的新名字"]],function(a){console.log(a)});
editor.file.editEnemy(editor,'redBat',[['change',"['atk']",20]],function(a){console.log(a)});
editor.file.editLoc(editor,2,6,[["change","['afterBattle']",null]],function(a){console.log(a)});
editor.file.editFloor(editor,[["change","['title']",'样板 33 层']],function(a){console.log(a)});
editor.file.editTower(editor,[["change","['values']['lavaDamage']",200]],function(a){console.log(a)});

drawMapGUI.html

editor的代码拆到了_server/editor.js

display:none的形式引入了index.htmldom,修改了原来的.gameCanvas #ui #data等的名字以避免冲突

通过main.init('editor')加载数据,移除了原有的editor.loadjs

背景层如果未设置editor.bgY则通过运行时中的代码画背景

editor.updateMap中只画未定义快的报错,其他的由运行时中的代码完成

editor.ids[0] = 0; editor.indexs[0]=[0];

添加了editor.changeFloor用于切换楼层

注释的特殊指令

$range(evalstr:thiseval)$end
  限制取值范围,要求修改后的eval(evalstr)为true
$leaf(evalstr:thiseval)$end
  强制指定为叶节点,如果eval(evalstr)为true

todo:
//以下几个中选一个 [
$select(evalstr)$end
  渲染成<select>,选项为数组eval(evalstr)['values']
$input
  渲染成<input>,此为默认选项
$textarea(evalstr)$end
  渲染成<textarea>,行数为正整数eval(evalstr)['rows']
// ]

目前只出现了以下5种

$range(thiseval in ['keys','items','constants','tools'])$end
$range(thiseval==~~thiseval &&thiseval>0)$end
$range(thiseval in [true,false])$end
$range(false)$end
$leaf(true)$end

todo

  • editor的5个编辑模式(标签页)map|item & enemy|loc|floor|tower
  • replay模式
  • 把js压缩工具改为一键生成发布版