删除过时的文件

已经无法工作的editor_file_test.html
旧版的blockly
已经无效的2.0diff
This commit is contained in:
YouWei Zhao 2018-03-10 20:07:16 +08:00
parent 0ef90087d1
commit 628d7eeafa
7 changed files with 39 additions and 2034 deletions

View File

@ -1,149 +0,0 @@
# v2.0目前的改动
## 总体上:
部分重构了运行时
+ 把`libs`中的数据分离出来保存为类似json的js文件,分离后的数据进一步分离为纯数据和注释两部分
+ 更改目录结构,分离后的`libs`一般无需修改,把数据楼层文件声音图片放入`project`目录中
* 需要相应的修改地图生成器和js压缩工具
+ 设置了三个模式`play|editor|replay`在`editor`模式关闭了部分动画,并且角色无法行动
重构editor
+ 重命名为`editor.html`
* 需要相应的修改本地服务的按钮打开的网址,为了兼容,临时加了个内容为`<html><body><script>window.location='editor.html'</script></body></html>`的`drawMapGUI.html`
+ 不再独立的导入数据和画图,尽可能的通过`main.init('editor')`复用代码
+ 能够在本地服务器环境中直接修改`project`中的数据,即全GUI下做塔
+ 把`editor`的代码拆到了`_server/editor.js`中
+ 添加了`_server/css/editor_mode.css`存放编辑模式有关的样式
+ 添加了`_server/editor_mode.js`存放编辑模式的实现
## 具体:
### main.js
用户修改内容转移到了`project/data.js`中
把事件监听打包成了`main.prototype.listen`
`main.listen`和`main.init`改为在`index.html`中执行
添加了`main.prototype.loadPureData`,在`main.init`中先加载纯数据再加载`libs`
### core.js
`core.drawMap`中`editor`模式下不再画图,而是生成画图的函数提供给`editor`
`editor`模式下`GlobalAnimate`可以独立的选择是否播放
`core.playBgm`和`core.playSound`中非`play`模式不再播放声音
`core.show`和`core.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`数组相关的操作
```javascript
editor.file.getFloorFileList
editor.file.loadFloorFile
editor.file.saveFloorFile
editor.file.saveFloorFileAs
```
5个编辑模式有关的查询
```javascript
editor.file.editItem('redJewel',[],function(a){console.log(a)});
editor.file.editEnemy('redBat',[],function(a){console.log(a)});
editor.file.editLoc(2,0,[],function(a){console.log(a)});
editor.file.editFloor([],function(a){console.log(a)});
editor.file.editTower([],function(a){console.log(a)});
```
5个编辑模式有关的编辑
```javascript
editor.info={images: "terrains", y: 9};
editor.file.changeIdAndIdnum('yellowWall2',16,editor.info,function(a){console.log(a)});
editor.file.editItem('book',[["change","['items']['name']","怪物手册的新名字"]],function(a){console.log(a)});
editor.file.editEnemy('redBat',[['change',"['atk']",20]],function(a){console.log(a)});
editor.file.editLoc(2,6,[["change","['afterBattle']",null]],function(a){console.log(a)});
editor.file.editFloor([["change","['title']",'样板 33 层']],function(a){console.log(a)});
editor.file.editTower([["change","['values']['lavaDamage']",200]],function(a){console.log(a)});
```
### editor_mode.js
4个生成表格并绑定事件的函数
```javascript
editor.mode.loc();
editor.mode.emenyitem();
editor.mode.floor();
editor.mode.tower();
```
切换模式
```javascript
editor.mode.onmode('');
editor.mode.onmode('loc');
editor.mode.onmode('emenyitem');
editor.mode.onmode('floor');
editor.mode.onmode('tower');
```
在切换模式时,改动才会保存到文件,并且需要刷新页面使得`editor`能看到改动
表格的`onchange`的实现中,获得当前模式的方式.不注意的话,修改`index.html`中页面的结构,会被坑
```javascript
var node = thisTr.parentNode;
while (!editor_mode._ids.hasOwnProperty(node.getAttribute('id'))) {
node = node.parentNode;
}
editor_mode.onmode(editor_mode._ids[node.getAttribute('id')]);
```
### drawMapGUI.html
重命名为`editor.html`
把`editor`的代码拆到了`_server/editor.js`中
以`display:none`的形式引入了`index.html`的`dom`,修改了原来的`.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
//以下几个中选一个 [
$select(evalstr)$end
渲染成<select>,选项为数组eval(evalstr)['values']
$input(evalstr)$end
渲染成<input>
$textarea(evalstr)$end
渲染成<textarea>
默认选项为$textarea()$end
// ]
```
# todo & 目前的bug
+ `event`,`after...`在地图上没有标记,可以在右下角加类似于无`id`的红问号类似的绿色星号小标记
+ [x] 添加新图块只对地形好使,添加的新物品还是需要手动在`project/items.js`中加东西
+ [x] 目前未做$range(evalstr:thiseval)$end的检查
+ 通过`core.values.redJewel`的方式设置物品加的数值,在全GUI下反而会不直观
+ `idnum`上限改到`999`,不需要在`.js`中手动设置`idnum`的话,根据数字范围来约定类型意义不大,而且`400`内随便输个数就发现已经被占了,体验极差
+ `editor.html`中独立换背景的功能不再需要,待移除
+ 全GUI下编辑要经常保存修改后F5
+ [x] 目前的报错只是throw,如果不开F12注意不到有错误发生,修改没有生效
+ [x] 有待美化,以及做成标签页式的模式切换

View File

@ -6,6 +6,24 @@
## 各组件功能
### 总体上
以`display:none`的形式引入了`index.html`的`dom`,修改了原来的`.gameCanvas #ui #data`等的名字以避免冲突
通过`main.init('editor')`加载数据
`editor`模式关闭了部分动画
`core.drawMap`中`editor`模式下不再画图,而是生成画图的函数提供给`editor`
`editor`模式下`GlobalAnimate`可以独立的选择是否播放
`core.playBgm`和`core.playSound`中非`play`模式不再播放声音
`core.show`和`core.hide`中非`play`模式不再进行动画而是立刻完成并执行回调
`editor`模式不执行`core.resize`
### editor.js
``` js
@ -14,6 +32,8 @@ editor.changeFloor('MT2')//切换地图
editor.guid()//产生一个可以作为id的长随机字符串
```
`editor.updateMap`中画未定义快的报错
### editor_file.js
提供了以下函数进行楼层`map`数组相关的操作
@ -83,6 +103,24 @@ editor_mode.onmode(editor_mode._ids[node.getAttribute('id')]);
`editor.mode.listen`中提供了追加素材的支持.
处理注释的特殊指令
```
$range(evalstr:thiseval)$end
限制取值范围,要求修改后的eval(evalstr)为true
$leaf(evalstr:thiseval)$end
强制指定为叶节点,如果eval(evalstr)为true
//以下几个中选一个 [
$select(evalstr)$end
渲染成<select>,选项为数组eval(evalstr)['values']
$input(evalstr)$end
渲染成<input>
$textarea(evalstr)$end
渲染成<textarea>
默认选项为$textarea()$end
// ]
```
### editor_blockly.js
把选定`id_`的事件用blockly编辑

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,46 +0,0 @@
<!doctype html>
<html>
<head><meta charset="utf-8"></head>
<body>
<pre id='pout'>
</pre>
<script src="fs.js"></script>
<script src="editor_file.js"></script>
<script>
pout.innerHTML='waiting\nwaiting waiting';
var editor={};
editor.fs=fs;
editor_file = editor_file(editor);
editor.file=editor_file;
//代码复制到 http://127.0.0.1:1055/drawMapGUI.html 的console中进行测试
/* editor.file.loadFloorFile('sample0',function(err){console.log(err);
editor.file.saveFloorFileAs('aaa',function(err){console.log(err)});
}); */
//查询
/*
editor.file.editItem('redJewel',[],function(a){console.log(a)});
editor.file.editEnemy('redBat',[],function(a){console.log(a)});
editor.file.editLoc(2,6,[],function(a){console.log(a)});
editor.file.editFloor([],function(a){console.log(a)});
editor.file.editTower([],function(a){console.log(a)});
*/
//编辑
/*
editor.info={images: "terrains", y: 9};
editor.file.changeIdAndIdnum('yellowWall2',16,editor.info,function(a){console.log(a)});
editor.file.editItem('book',[["change","['items']['name']","怪物手册的新名字"]],function(a){console.log(a)});
editor.file.editEnemy('redBat',[['change',"['atk']",20]],function(a){console.log(a)});
editor.file.editLoc(2,6,[["change","['afterBattle']",null]],function(a){console.log(a)});
editor.file.editFloor([["change","['title']",'样板 33 层']],function(a){console.log(a)});
editor.file.editTower([["change","['values']['lavaDamage']",200]],function(a){console.log(a)});
*/
pout.innerHTML='succeed\nsucceed succeed';
</script>
</body>
</html>

View File

@ -113,7 +113,7 @@ main.prototype.init = function (mode, callback) {
for (var i = 0; i < main.dom.gameCanvas.length; i++) {
main.canvas[main.dom.gameCanvas[i].id] = main.dom.gameCanvas[i].getContext('2d');
}
if (({"editor":0,"replay":0}).hasOwnProperty(mode)) {
if (({"editor":0}).hasOwnProperty(mode)) {
main.mode = mode;
if (mode === 'editor')main.editor = {'disableGlobalAnimate':true};
}

View File

@ -1,152 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' content='text/html' charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=Edge, chrome=1'>
<meta name='author' content='ckcz123'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=yes'>
<title></title>
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
<meta name="screen-orientation" content="portrait">
<meta name="full-screen" content="yes">
<meta name="browsermode" content="application">
<meta name="x5-orientation" content="portrait">
<meta name="x5-fullscreen" content="true">
<meta name="x5-page-mode" content="app">
<link type='text/css' href='styles.css' rel='stylesheet'>
</head>
<body>
<div id='gameGroup'>
<p id='mainTips'>请稍后...</p>
<div id='startPanel'>
<div id='startTop'>
<div id='startTopProgressBar'>
<div id='startTopProgress'></div>
</div>
<p id='startTopLoadTips'>资源即将开始加载</p>
</div>
<img id='startBackground' src='project/images/bg.png'>
<!-- 标题界面可以改style的color使标题改变颜色 -->
<p id='startLogo' style="color: black"></p>
<div id='startButtonGroup'>
<div id='startButtons'>
<span class='startButton' id='playGame'>开始游戏</span>
<span class='startButton' id='loadGame'>载入游戏</span>
<span class='startButton' id='aboutGame'>关于本塔</span>
</div>
<div id='levelChooseButtons'>
<span class='startButton' id='easyLevel'>简单</span>
<span class='startButton' id='normalLevel'>普通</span>
<span class='startButton' id='hardLevel'>困难</span>
</div>
</div>
</div>
<div id='floorMsgGroup'>
<p id='logoLabel'></p>
<p id='versionLabel'></p>
<p id='floorNameLabel'></p>
</div>
<div id='statusBar' class="clearfix">
<div class="status" id="floorCol">
<img src='project/images/floor.png' id="img-floor">
<p class='statusLabel' id='floor'></p>
</div>
<div class="status" id="lvCol">
<img src='project/images/lv.png' id="img-lv">
<p class='statusLabel' id='lv'></p>
</div>
<div class="status">
<img src='project/images/hp.png' id="img-hp">
<p class='statusLabel' id='hp'></p>
</div>
<div class="status">
<img src='project/images/atk.png' id="img-atk">
<p class='statusLabel' id='atk'></p>
</div>
<div class="status">
<img src='project/images/def.png' id="img-def">
<p class='statusLabel' id='def'></p>
</div>
<div class="status" id="mdefCol">
<img src='project/images/mdef.png' id="img-mdef">
<p class='statusLabel' id='mdef'></p>
</div>
<div class="status" id="moneyCol">
<img src='project/images/money.png' id="img-money">
<p class='statusLabel' id='money'></p>
</div>
<div class="status" id="expCol">
<img src='project/images/experience.png' id="img-experience">
<p class='statusLabel' id='experience'></p>
</div>
<div class="status" id="upCol">
<img src='project/images/up.png' id="img-up">
<p class='statusLabel' id='up'></p>
</div>
<div class="status">
<span class='statusLabel' id='yellowKey' style="color:#FFCCAA"></span>
<span class='statusLabel' id='blueKey' style="color:#AAAADD"></span>
<span class='statusLabel' id='redKey' style="color:#FF8888"></span>
</div>
<div class="status" id="debuffCol">
<span class='statusLabel' id='poison' style="color: #AFFCA8;"></span>
<span class='statusLabel' id='weak' style="color: #FECCD0;"></span>
<span class='statusLabel' id='curse' style="color: #C2F4E7;"></span>
</div>
</div>
<div id="toolBar" class="clearfix">
<img src="project/images/book.png" class="tools" id='img-book'>
<img src="project/images/fly.png" class="tools" id='img-fly'>
<img src="project/images/toolbox.png" class="tools" id='img-toolbox'>
<img src="project/images/shop.png" class="tools" id='img-shop'>
<img src="project/images/save.png" class="tools" id='img-save'>
<img src="project/images/load.png" class="tools" id='img-load'>
<img src="project/images/settings.png" class="tools" id='img-settings'>
<p class="statusLabel tools" id="hard"></p>
</div>
<div id="curtain"></div>
<canvas class='gameCanvas' id='bg' width='416' height='416'></canvas>
<canvas class='gameCanvas' id='event' width='416' height='416'></canvas>
<canvas class='gameCanvas' id='fg' width='416' height='416'></canvas>
<canvas class='gameCanvas' id='hero' width='416' height='416'></canvas>
<canvas class='gameCanvas' id='ui' width='416' height='416'></canvas>
<canvas class='gameCanvas' id='data' width='416' height='416'>此浏览器不支持HTML5</canvas>
</div>
<script id='mainScript' src='main.js'></script>
<script>
main.init('editor');
//main.init('replay');
main.listen();
var replayActions = function(){
//core.onclick(7,7,[]);
}
var replay = function(){
core.events.startGame('');
//setTimeout(function(){Array.from(Array(200)).forEach(function(){core.onclick(7,7,[]);});console.log(1);},1000);//关开场剧情
//setTimeout(function(){try {Array.from(Array(200)).forEach(function(){core.drawText();})} catch (error){}},3000);//关firstArrive
//console.log(1);
}
var afterInit = function(){
main.editor.disableGlobalAnimate=false;
main.editor.drawMapBg();
main.editor.updateMap();
core.setHeroMoveTriggerInterval();
}
var start = function(){
var hard = 'Hard';
core.resetStatus(core.firstData.hero, hard, core.firstData.floorId, core.initStatus.maps);
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
/* core.setHeroMoveTriggerInterval(); */
afterInit();
});
core.events.setInitData(hard);
}
setTimeout(start, 300);
//setTimeout(replay, 300);
</script>
</body>
</html>