Merge pull request #99 from ckcz123/v2.0

V2.0
This commit is contained in:
Zhang Chen 2018-03-22 23:06:20 +08:00 committed by GitHub
commit e83b40e7ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 33 additions and 136 deletions

View File

@ -453,7 +453,7 @@ editor.prototype.listen = function() {
if( e.ctrlKey && ( e.keyCode == 90 || e.keyCode == 89 ) )
e.preventDefault();
//Ctrl+z 撤销上一步undo
if(e.keyCode == 90 && e.ctrlKey && preMapData && currDrawData.pos.length){
if(e.keyCode == 90 && e.ctrlKey && preMapData && currDrawData.pos.length && selectBox.isSelected){
editor.map = JSON.parse(JSON.stringify(preMapData));
editor.updateMap();
reDo = JSON.parse(JSON.stringify(currDrawData));
@ -461,7 +461,7 @@ editor.prototype.listen = function() {
preMapData = null;
}
//Ctrl+y 重做一步redo
if(e.keyCode == 89 && e.ctrlKey && reDo && reDo.pos.length){
if(e.keyCode == 89 && e.ctrlKey && reDo && reDo.pos.length && selectBox.isSelected){
preMapData = JSON.parse(JSON.stringify(editor.map));
for(var j=0; j<reDo.pos.length;j++)
editor.map[reDo.pos[j].y][reDo.pos[j].x] = JSON.parse(JSON.stringify(reDo.info));

View File

@ -235,7 +235,7 @@ document.getElementById('blocklyDiv').onmousewheel = function(e){
//console.log(e);
e.preventDefault();
var hvScroll = e.shiftKey?'hScroll':'vScroll';
workspace.scrollbar[hvScroll].handlePosition_+=( ((e.deltaY||0)+(e.detail||0)) <0?20:-20);
workspace.scrollbar[hvScroll].handlePosition_+=( ((e.deltaY||0)+(e.detail||0)) >0?20:-20);
workspace.scrollbar[hvScroll].onScroll_();
workspace.setScale(workspace.scale);
}
@ -370,6 +370,7 @@ editor_blockly.import = function(id_,args){
var blocklyWidgetDiv = document.getElementsByClassName('blocklyWidgetDiv');
editor_blockly.show = function(){
if(typeof(selectBox)!==typeof(undefined))selectBox.isSelected = false;
document.getElementById('left6').style='';
for(var ii =0,node;node=blocklyWidgetDiv[ii];ii++){
node.style.zIndex = 201;

View File

@ -419,15 +419,17 @@ editor_file = function(editor, callback){
]
[]时只查询不修改
*/
var data_obj = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d;
if (!isset(callback)) {printe('未设置callback');throw('未设置callback')};
if (isset(actionList) && actionList.length > 0){
saveSetting('data',actionList,function (err) {
callback([
(function(){
var locObj=Object.assign({'main':{}},editor.core.data);
//var locObj=Object.assign({'main':{}},editor.core.data);
var locObj=Object.assign({},data_obj,{'main':{}});
Object.keys(editor_file.dataComment._data.main._data).forEach(function(v){
if (isset(editor.main[v]))
locObj.main[v]=editor.main[v];
locObj.main[v]=data_obj.main[v];
else
locObj[v]=null;
});
@ -439,10 +441,11 @@ editor_file = function(editor, callback){
} else {
callback([
(function(){
var locObj=Object.assign({'main':{}},editor.core.data);
//var locObj=Object.assign({'main':{}},editor.core.data);
var locObj=Object.assign({},data_obj,{'main':{}});
Object.keys(editor_file.dataComment._data.main._data).forEach(function(v){
if (isset(editor.main[v]))
locObj.main[v]=editor.main[v];
locObj.main[v]=data_obj.main[v];
else
locObj[v]=null;
});

View File

@ -112,6 +112,7 @@ editor_mode.prototype.objToTable_ = function(obj,commentObj){
}
if(checkRange(cobj._range,thiseval)){
editor_mode.addAction(['change',field,thiseval]);
editor_mode.onmode('save');//自动保存
} else {
printe(field+' : 输入的值不合要求,请鼠标放置在注释上查看说明');
}
@ -170,127 +171,6 @@ editor_mode.prototype.objToTd_ = function(obj,commentObj,field,cfield,vobj,cobj)
}
}
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 = checkIsLeaf(obj,commentObj,field);
if (isleaf) {
var leafnode = editor_mode.objToTr(obj,commentObj,field);
outstr.push(leafnode[0]);
guids.push(leafnode[1]);
} else {
outstr.push(["<tr><td>----</td><td>----</td><td>",field,"</td></tr>\n"].join(''));
recursionParse(field);
}
}
}
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]
// >td[title=comment]
// >td>div>input[value=thsieval]
var thisTr = document.getElementById(guid);
var input = thisTr.children[2].children[0].children[0];
var field = thisTr.children[0].getAttribute('title');
var comment = thisTr.children[1].getAttribute('title');
input.onchange = function(){
var node = thisTr.parentNode;
while (!editor_mode._ids.hasOwnProperty(node.getAttribute('id'))) {
node = node.parentNode;
}
editor_mode.onmode(editor_mode._ids[node.getAttribute('id')]);
var thiseval=null;
try{
thiseval = JSON.parse(input.value);
}catch(ee){
printe(field+' : '+ee);
throw ee;
}
if(checkRange(comment,thiseval)){
editor_mode.addAction(['change',field,thiseval]);
} else {
printe(field+' : 输入的值不合要求,请鼠标放置在注释上查看说明');
}
}
input.ondblclick = function(){
if(!editor_blockly.import(guid))
if(!editor_multi.import(guid)){}
}
});
}
return {"HTML":outstr.join(''),"guids":guids,"listen":listen};
}
editor_mode.prototype.objToTr = function(obj,commentObj,field){
var guid = editor.guid();
var thiseval = eval('obj'+field);
var comment = '';
try {
comment = eval('commentObj'+field);
} catch (error) {}
if(!comment)comment='';
var charlength=10;
var shortField = field.split("']").slice(-2)[0].split("['").slice(-1)[0];
shortField = (shortField.length<charlength?shortField:shortField.slice(0,charlength)+'...');
var commentHTMLescape=editor.HTMLescape(comment);
var shortCommentHTMLescape=(comment.length<charlength?commentHTMLescape:editor.HTMLescape(comment.slice(0,charlength))+'...');
var outstr=['<tr id="',guid,'"><td title="',field,'">',shortField,'</td>',
'<td title="',commentHTMLescape,'">',shortCommentHTMLescape,'</td>',
'<td><div class="etableInputDiv">',editor_mode.objToTd(thiseval,comment,field),'</div></td></tr>\n',
];
return [outstr.join(''),guid];
}
editor_mode.prototype.objToTd = function(thiseval,comment,field){
if( comment.indexOf('$select') != -1){
var evalstr = comment.split('$select')[1].split('$end')[0];
var values = eval(evalstr)['values'];
var outstr = ['<select>\n',"<option value='",JSON.stringify(thiseval),"'>",JSON.stringify(thiseval),'</option>\n'];
values.forEach(function(v){
outstr.push(["<option value='",JSON.stringify(v),"'>",JSON.stringify(v),'</option>\n'].join(''))
});
outstr.push('</select>');
return outstr.join('');
} else if( comment.indexOf('$input') != -1){
return ["<input spellcheck='false' value='",JSON.stringify(thiseval),"'/>\n"].join('');
} else {
//rows='",rows,"'
var num = 0;//editor_mode.indent(field);
return ["<textarea spellcheck='false' >",JSON.stringify(thiseval,null,num),'</textarea>\n'].join('');
}
}
editor_mode.prototype.indent = function(field){
var num = '\t';
if(field.indexOf("['main']")===0)return 0;

View File

@ -31,6 +31,7 @@ editor_multi.isString=false;
editor_multi.lintAutocomplete=false;
editor_multi.show = function(){
if(typeof(selectBox)!==typeof(undefined))selectBox.isSelected = false;
var valueNow = codeEditor.getValue();
//try{eval('function _asdygakufyg_() { return '+valueNow+'\n}');editor_multi.lintAutocomplete=true;}catch(ee){}
if(valueNow.slice(0,8)==='function')editor_multi.lintAutocomplete=true;
@ -49,7 +50,7 @@ editor_multi.toggerLint = function() {
}
editor_multi.indent = function(field){
if(editor && editor.mode && editor.mode.indent)return editor.mode.indent(field);
if(typeof(editor)!==typeof(undefined) && editor && editor.mode && editor.mode.indent)return editor.mode.indent(field);
return '\t';
}

View File

@ -281,7 +281,7 @@ core.prototype.init = function (coreData, callback) {
core.setRequestAnimationFrame();
core.showStartAnimate();
core.events.initGame();
if (core.isset(functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.plugins))
core.plugin = new functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.plugins.plugin();

View File

@ -65,18 +65,18 @@ maps.prototype.initBlock = function (x, y, id) {
////// 添加一些信息到block上 //////
maps.prototype.addInfo = function (block) {
if (core.isset(block.event)) {
if (block.event.cls.indexOf("enemy")==0 && block.event.trigger==undefined) {
if (block.event.cls.indexOf("enemy")==0 && !core.isset(block.event.trigger)) {
block.event.trigger = 'battle';
}
if (block.event.cls == 'items' && block.event.trigger==undefined) {
if (block.event.cls == 'items' && !core.isset(block.event.trigger)) {
block.event.trigger = 'getItem';
}
if (block.event.noPass == undefined) {
if (!core.isset(block.event.noPass)) {
if (block.event.cls.indexOf("enemy")==0 || block.event.cls.indexOf("npc")==0 || block.event.cls=='terrains') {
block.event.noPass = true;
}
}
if (block.event.animate == undefined) {
if (!core.isset(block.event.animate)) {
if (block.event.cls=='enemys' || block.event.cls=='npcs') {
block.event.animate = 2;
}
@ -124,7 +124,7 @@ maps.prototype.addEvent = function (block, x, y, event) {
}
// 覆盖其他属性
for (var key in event) {
if (key!="enable" && key!="trigger") {
if (key!="enable" && key!="trigger" && key!="noPass" && core.isset(event[key])) {
block.event[key]=core.clone(event[key]);
}
}

View File

@ -15,7 +15,19 @@ main.floors.MT0 =
// "bgm": "bgm.mp3", // 到达该层后默认播放的BGM。本项可忽略。
"item_ratio": 1, // 该层的宝石/血瓶倍率
"map": [ // 地图数据需要是13x13建议使用地图生成器来生成
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
],
"firstArrive": [ // 第一次到该楼层触发的事件