Merge pull request #308 from zhaouv/editor-table-add-delete
Editor table
This commit is contained in:
commit
85e924af70
@ -1,14 +1,14 @@
|
|||||||
var comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
var comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
||||||
{
|
{
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"items": {
|
"items": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"items": {
|
"items": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"cls": {
|
"cls": {
|
||||||
@ -89,7 +89,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
},
|
},
|
||||||
"items_template" : {'cls': 'items', 'name': '新物品'},
|
"items_template" : {'cls': 'items', 'name': '新物品'},
|
||||||
"enemys": {
|
"enemys": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"name": {
|
"name": {
|
||||||
@ -197,7 +197,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
},
|
},
|
||||||
"enemys_template" : {'name': '新敌人', 'hp': 0, 'atk': 0, 'def': 0, 'money': 0, 'experience': 0, 'point': 0, 'special': 0},
|
"enemys_template" : {'name': '新敌人', 'hp': 0, 'atk': 0, 'def': 0, 'money': 0, 'experience': 0, 'point': 0, 'special': 0},
|
||||||
"maps": {
|
"maps": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"id": {
|
"id": {
|
||||||
@ -271,11 +271,11 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"floors": {
|
"floors": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"floor": {
|
"floor": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"floorId": {
|
"floorId": {
|
||||||
@ -407,7 +407,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"loc": {
|
"loc": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"events": {
|
"events": {
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
||||||
{
|
{
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"main": {
|
"main": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"floorIds": {
|
"floorIds": {
|
||||||
@ -125,7 +125,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"firstData": {
|
"firstData": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"title": {
|
"title": {
|
||||||
@ -154,7 +154,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
"_data": "初始楼层的ID"
|
"_data": "初始楼层的ID"
|
||||||
},
|
},
|
||||||
"hero": {
|
"hero": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"name": {
|
"name": {
|
||||||
@ -214,7 +214,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
"_data": "初始装上的装备,此处建议请直接留空数组"
|
"_data": "初始装上的装备,此处建议请直接留空数组"
|
||||||
},
|
},
|
||||||
"items": {
|
"items": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"keys": {
|
"keys": {
|
||||||
@ -245,7 +245,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
"_data": "初始可飞的楼层;一般留空数组即可"
|
"_data": "初始可飞的楼层;一般留空数组即可"
|
||||||
},
|
},
|
||||||
"loc": {
|
"loc": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"direction": {
|
"direction": {
|
||||||
@ -316,7 +316,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"values": {
|
"values": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"lavaDamage": {
|
"lavaDamage": {
|
||||||
@ -407,7 +407,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags": {
|
"flags": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"enableFloor": {
|
"enableFloor": {
|
||||||
|
|||||||
@ -82,7 +82,7 @@ editor_file = function (editor, callback) {
|
|||||||
callback('未选中文件或无数据');
|
callback('未选中文件或无数据');
|
||||||
} */
|
} */
|
||||||
var filename = 'project/floors/' + editor.currentFloorId + '.js';
|
var filename = 'project/floors/' + editor.currentFloorId + '.js';
|
||||||
var datastr = ['main.floors.', editor.currentFloorId, '=\n{'];
|
var datastr = ['main.floors.', editor.currentFloorId, '=\n'];
|
||||||
if (editor.currentFloorData.map == 'new') {
|
if (editor.currentFloorData.map == 'new') {
|
||||||
/*
|
/*
|
||||||
editor.currentFloorData.map = editor.map.map(function (v) {
|
editor.currentFloorData.map = editor.map.map(function (v) {
|
||||||
@ -108,14 +108,18 @@ editor_file = function (editor, callback) {
|
|||||||
editor.currentFloorData[name]=mapArray;
|
editor.currentFloorData[name]=mapArray;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var ii in editor.currentFloorData)
|
// format 更改实现方式以支持undefined删除
|
||||||
if (editor.currentFloorData.hasOwnProperty(ii)) {
|
var tempJsonObj=Object.assign({},editor.currentFloorData);
|
||||||
if (['map','bgmap','fgmap'].indexOf(ii)!==-1)
|
var tempMap=[['map',editor.guid()],['bgmap',editor.guid()],['fgmap',editor.guid()]];
|
||||||
datastr = datastr.concat(['\n"', ii, '": [\n', formatMap(editor.currentFloorData[ii],ii!='map'), '\n],']);
|
tempMap.forEach(function(v){
|
||||||
else
|
v[2]=tempJsonObj[v[0]];
|
||||||
datastr = datastr.concat(['\n"', ii, '": ', JSON.stringify(editor.currentFloorData[ii], null, 4), ',']);
|
tempJsonObj[v[0]]=v[1];
|
||||||
}
|
});
|
||||||
datastr = datastr.concat(['\n}']);
|
var tempJson=JSON.stringify(tempJsonObj, null, 4);
|
||||||
|
tempMap.forEach(function(v){
|
||||||
|
tempJson=tempJson.replace('"'+v[1]+'"','[\n'+ formatMap(v[2],v[0]!='map')+ '\n]')
|
||||||
|
});
|
||||||
|
datastr = datastr.concat([tempJson]);
|
||||||
datastr = datastr.join('');
|
datastr = datastr.join('');
|
||||||
alertWhenCompress();
|
alertWhenCompress();
|
||||||
fs.writeFile(filename, encode(datastr), 'base64', function (err, data) {
|
fs.writeFile(filename, encode(datastr), 'base64', function (err, data) {
|
||||||
@ -626,7 +630,7 @@ editor_file = function (editor, callback) {
|
|||||||
actionList.forEach(function (value) {
|
actionList.forEach(function (value) {
|
||||||
value[1] = value[1] + "['" + x + "," + y + "']";
|
value[1] = value[1] + "['" + x + "," + y + "']";
|
||||||
});
|
});
|
||||||
saveSetting('floors', actionList, function (err) {
|
saveSetting('floorloc', actionList, function (err) {
|
||||||
callback([
|
callback([
|
||||||
(function () {
|
(function () {
|
||||||
var locObj = {};
|
var locObj = {};
|
||||||
@ -745,7 +749,7 @@ editor_file = function (editor, callback) {
|
|||||||
if (isset(editor.main[v]))
|
if (isset(editor.main[v]))
|
||||||
locObj.main[v] = data_obj.main[v];
|
locObj.main[v] = data_obj.main[v];
|
||||||
else
|
else
|
||||||
locObj[v] = null;
|
locObj.main[v] = null;
|
||||||
});
|
});
|
||||||
return locObj;
|
return locObj;
|
||||||
})(),
|
})(),
|
||||||
@ -761,7 +765,7 @@ editor_file = function (editor, callback) {
|
|||||||
if (isset(editor.main[v]))
|
if (isset(editor.main[v]))
|
||||||
locObj.main[v] = data_obj.main[v];
|
locObj.main[v] = data_obj.main[v];
|
||||||
else
|
else
|
||||||
locObj[v] = null;
|
locObj.main[v] = null;
|
||||||
});
|
});
|
||||||
return locObj;
|
return locObj;
|
||||||
})(),
|
})(),
|
||||||
@ -976,13 +980,18 @@ editor_file = function (editor, callback) {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (file == 'floors') {
|
if (file == 'floorloc') {
|
||||||
actionList.forEach(function (value) {
|
actionList.forEach(function (value) {
|
||||||
// 检测null/undefined
|
// 检测null/undefined
|
||||||
if (core.isset(value[2]))
|
if (!core.isset(value[2]))value[2]=undefined;
|
||||||
|
eval("editor.currentFloorData" + value[1] + '=' + JSON.stringify(value[2]));
|
||||||
|
});
|
||||||
|
editor_file.saveFloorFile(callback);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (file == 'floors') {
|
||||||
|
actionList.forEach(function (value) {
|
||||||
eval("editor.currentFloorData" + value[1] + '=' + JSON.stringify(value[2]));
|
eval("editor.currentFloorData" + value[1] + '=' + JSON.stringify(value[2]));
|
||||||
else
|
|
||||||
eval("delete editor.currentFloorData"+value[1]);
|
|
||||||
});
|
});
|
||||||
editor_file.saveFloorFile(callback);
|
editor_file.saveFloorFile(callback);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -18,6 +18,7 @@ editor_mode = function (editor) {
|
|||||||
this.mode = '';
|
this.mode = '';
|
||||||
this.info = {};
|
this.info = {};
|
||||||
this.appendPic = {};
|
this.appendPic = {};
|
||||||
|
this.doubleClickMode='change';
|
||||||
}
|
}
|
||||||
|
|
||||||
editor_mode.prototype.init = function (callback) {
|
editor_mode.prototype.init = function (callback) {
|
||||||
@ -91,9 +92,25 @@ editor_mode = function (editor) {
|
|||||||
* @param {Object} pcobj
|
* @param {Object} pcobj
|
||||||
*/
|
*/
|
||||||
var recursionParse = function (pfield, pcfield, pvobj, pcobj) {
|
var recursionParse = function (pfield, pcfield, pvobj, pcobj) {
|
||||||
|
var keysForTableOrder={};
|
||||||
|
var voidMark={};
|
||||||
// 1. 按照pcobj排序生成
|
// 1. 按照pcobj排序生成
|
||||||
|
if (pcobj && pcobj['_data']){
|
||||||
|
for (var ii in pcobj['_data']) keysForTableOrder[ii]=voidMark;
|
||||||
|
}
|
||||||
// 2. 对每个pvobj且不在pcobj的,再添加到最后
|
// 2. 对每个pvobj且不在pcobj的,再添加到最后
|
||||||
var generate = function (ii) {
|
keysForTableOrder=Object.assign(keysForTableOrder,pvobj)
|
||||||
|
for (var ii in keysForTableOrder) {
|
||||||
|
// 3. 对于pcobj有但是pvobj中没有的, 弹出提示, (正常情况下editor_file会补全成null)
|
||||||
|
// 事实上能执行到这一步工程没崩掉打不开,就继续吧..
|
||||||
|
if(keysForTableOrder[ii]===voidMark){
|
||||||
|
if(typeof id_815975ad_ee6f_4684_aac7_397b7e392702==="undefined"){
|
||||||
|
alert('comment和data不匹配,请在群 HTML5造塔技术交流群 959329661 内反馈')
|
||||||
|
console.error('comment和data不匹配,请在群 HTML5造塔技术交流群 959329661 内反馈')
|
||||||
|
id_815975ad_ee6f_4684_aac7_397b7e392702=1;
|
||||||
|
}
|
||||||
|
pvobj[ii]=null;
|
||||||
|
}
|
||||||
var field = pfield + "['" + ii + "']";
|
var field = pfield + "['" + ii + "']";
|
||||||
var cfield = pcfield + "['_data']['" + ii + "']";
|
var cfield = pcfield + "['_data']['" + ii + "']";
|
||||||
var vobj = pvobj[ii];
|
var vobj = pvobj[ii];
|
||||||
@ -113,7 +130,7 @@ editor_mode = function (editor) {
|
|||||||
if (cobj[key] instanceof Function) cobj[key] = cobj[key](args);
|
if (cobj[key] instanceof Function) cobj[key] = cobj[key](args);
|
||||||
}
|
}
|
||||||
// 标记为_hide的属性不展示
|
// 标记为_hide的属性不展示
|
||||||
if (cobj._hide) return;
|
if (cobj._hide)continue;
|
||||||
if (!cobj._leaf) {
|
if (!cobj._leaf) {
|
||||||
// 不是叶节点时, 插入展开的标记并继续遍历, 此处可以改成按钮用来添加新项或折叠等
|
// 不是叶节点时, 插入展开的标记并继续遍历, 此处可以改成按钮用来添加新项或折叠等
|
||||||
outstr.push(["<tr><td>----</td><td>----</td><td>", field, "</td></tr>\n"].join(''));
|
outstr.push(["<tr><td>----</td><td>----</td><td>", field, "</td></tr>\n"].join(''));
|
||||||
@ -125,24 +142,18 @@ editor_mode = function (editor) {
|
|||||||
guids.push(leafnode[1]);
|
guids.push(leafnode[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var done = {};
|
|
||||||
if (pcobj && pcobj['_data']) {
|
|
||||||
for (var ii in pcobj['_data']) {
|
|
||||||
generate(ii);
|
|
||||||
done[ii] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (var ii in pvobj) {
|
|
||||||
if (done[ii]) continue;
|
|
||||||
generate(ii);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 开始遍历
|
// 开始遍历
|
||||||
recursionParse("", "", obj, commentObj);
|
recursionParse("", "", obj, commentObj);
|
||||||
var checkRange = function (evalstr, thiseval) {
|
var checkRange = function (cobj, thiseval) {
|
||||||
if (evalstr) {
|
if (cobj._range) {
|
||||||
return eval(evalstr);
|
return eval(cobj._range);
|
||||||
|
}
|
||||||
|
if (cobj._select) {
|
||||||
|
return cobj._select.values.indexOf(thiseval)!==-1;
|
||||||
|
}
|
||||||
|
if (cobj._bool) {
|
||||||
|
return [true,false].indexOf(thiseval)!==-1;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -156,12 +167,12 @@ editor_mode = function (editor) {
|
|||||||
var input = thisTr.children[2].children[0].children[0];
|
var input = thisTr.children[2].children[0].children[0];
|
||||||
var field = thisTr.children[0].getAttribute('title');
|
var field = thisTr.children[0].getAttribute('title');
|
||||||
var cobj = JSON.parse(thisTr.children[1].getAttribute('cobj'));
|
var cobj = JSON.parse(thisTr.children[1].getAttribute('cobj'));
|
||||||
input.onchange = function () {
|
var modeNode = thisTr.parentNode;
|
||||||
var node = thisTr.parentNode;
|
while (!editor_mode._ids.hasOwnProperty(modeNode.getAttribute('id'))) {
|
||||||
while (!editor_mode._ids.hasOwnProperty(node.getAttribute('id'))) {
|
modeNode = modeNode.parentNode;
|
||||||
node = node.parentNode;
|
|
||||||
}
|
}
|
||||||
editor_mode.onmode(editor_mode._ids[node.getAttribute('id')]);
|
input.onchange = function () {
|
||||||
|
editor_mode.onmode(editor_mode._ids[modeNode.getAttribute('id')]);
|
||||||
var thiseval = null;
|
var thiseval = null;
|
||||||
if (input.checked != null) input.value = input.checked;
|
if (input.checked != null) input.value = input.checked;
|
||||||
try {
|
try {
|
||||||
@ -170,17 +181,32 @@ editor_mode = function (editor) {
|
|||||||
printe(field + ' : ' + ee);
|
printe(field + ' : ' + ee);
|
||||||
throw ee;
|
throw ee;
|
||||||
}
|
}
|
||||||
if (checkRange(cobj._range, thiseval)) {
|
if (checkRange(cobj, thiseval)) {
|
||||||
editor_mode.addAction(['change', field, thiseval]);
|
editor_mode.addAction(['change', field, thiseval]);
|
||||||
editor_mode.onmode('save');//自动保存
|
editor_mode.onmode('save');//自动保存 删掉此行的话点保存按钮才会保存
|
||||||
} else {
|
} else {
|
||||||
printe(field + ' : 输入的值不合要求,请鼠标放置在注释上查看说明');
|
printe(field + ' : 输入的值不合要求,请鼠标放置在注释上查看说明');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 双击表格时
|
||||||
|
// 正常编辑: 尝试用事件编辑器或多行文本编辑器打开
|
||||||
|
// 添加: 在该项的同一级创建一个内容为null新的项, 刷新后生效并可以继续编辑
|
||||||
|
// 删除: 删除该项, 刷新后生效
|
||||||
|
// 在点击按钮 添加/删除 后,下一次双击将被视为 添加/删除
|
||||||
var dblclickfunc=function () {
|
var dblclickfunc=function () {
|
||||||
|
if(editor_mode.doubleClickMode==='change'){
|
||||||
if (cobj._type === 'event') editor_blockly.import(guid, {type: cobj._event});
|
if (cobj._type === 'event') editor_blockly.import(guid, {type: cobj._event});
|
||||||
if (cobj._type === 'textarea') editor_multi.import(guid, {lint: cobj._lint, string: cobj._string});
|
if (cobj._type === 'textarea') editor_multi.import(guid, {lint: cobj._lint, string: cobj._string});
|
||||||
}
|
}
|
||||||
|
if(editor_mode.doubleClickMode==='add'){
|
||||||
|
editor_mode.doubleClickMode='change';
|
||||||
|
addfunc()
|
||||||
|
}
|
||||||
|
if(editor_mode.doubleClickMode==='delete'){
|
||||||
|
editor_mode.doubleClickMode='change';
|
||||||
|
deletefunc()
|
||||||
|
}
|
||||||
|
}
|
||||||
input.ondblclick = dblclickfunc
|
input.ondblclick = dblclickfunc
|
||||||
var doubleClickCheck=[0];
|
var doubleClickCheck=[0];
|
||||||
thisTr.onclick = function(){
|
thisTr.onclick = function(){
|
||||||
@ -191,6 +217,46 @@ editor_mode = function (editor) {
|
|||||||
dblclickfunc()
|
dblclickfunc()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var deletefunc=function(){
|
||||||
|
editor_mode.onmode(editor_mode._ids[modeNode.getAttribute('id')]);
|
||||||
|
if (checkRange(cobj, null)) {
|
||||||
|
editor_mode.addAction(['delete', field, undefined]);
|
||||||
|
editor_mode.onmode('save');//自动保存 删掉此行的话点保存按钮才会保存
|
||||||
|
} else {
|
||||||
|
printe(field + ' : 该值不允许为null,无法删除');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var addfunc=function(){
|
||||||
|
editor_mode.onmode(editor_mode._ids[modeNode.getAttribute('id')]);
|
||||||
|
// 1.输入id
|
||||||
|
var newid=prompt('请输入新项的id','newid');
|
||||||
|
// 2.检查id是否符合规范或与已有id重复
|
||||||
|
if (!/^[a-zA-Z0-9_]+$/.test(newid)){
|
||||||
|
printe('id不符合规范, 请使用大小写字母数字下划线来构成');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var conflict=true;
|
||||||
|
var basefield=field.replace(/\[[^\[]*\]$/,'');
|
||||||
|
if (basefield==="['main']"){
|
||||||
|
printe("全塔属性 ~ ['main'] 不允许添加新值");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
var baseobj=eval('obj'+basefield);
|
||||||
|
conflict=newid in baseobj;
|
||||||
|
} catch (ee) {
|
||||||
|
// 理论上这里不会发生错误
|
||||||
|
printe(ee);
|
||||||
|
throw ee;
|
||||||
|
}
|
||||||
|
if (conflict){
|
||||||
|
printe('id已存在, 请直接修改该项的值');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 3.添加
|
||||||
|
editor_mode.addAction(['add',basefield+"['"+newid+"']",null]);
|
||||||
|
editor_mode.onmode('save');//自动保存 删掉此行的话点保存按钮才会保存
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return {"HTML": outstr.join(''), "guids": guids, "listen": listen};
|
return {"HTML": outstr.join(''), "guids": guids, "listen": listen};
|
||||||
@ -212,7 +278,7 @@ editor_mode = function (editor) {
|
|||||||
editor_mode.prototype.objToTr_ = function (obj, commentObj, field, cfield, vobj, cobj) {
|
editor_mode.prototype.objToTr_ = function (obj, commentObj, field, cfield, vobj, cobj) {
|
||||||
var guid = editor.guid();
|
var guid = editor.guid();
|
||||||
var thiseval = vobj;
|
var thiseval = vobj;
|
||||||
var comment = cobj._data;
|
var comment = String(cobj._data);
|
||||||
|
|
||||||
var charlength = 10;
|
var charlength = 10;
|
||||||
// "['a']['b']" => "b"
|
// "['a']['b']" => "b"
|
||||||
@ -239,7 +305,6 @@ editor_mode = function (editor) {
|
|||||||
|
|
||||||
editor_mode.prototype.objToTd_ = function (obj, commentObj, field, cfield, vobj, cobj) {
|
editor_mode.prototype.objToTd_ = function (obj, commentObj, field, cfield, vobj, cobj) {
|
||||||
var thiseval = vobj;
|
var thiseval = vobj;
|
||||||
if (thiseval === undefined) thiseval = null;
|
|
||||||
if (cobj._select) {
|
if (cobj._select) {
|
||||||
var values = cobj._select.values;
|
var values = cobj._select.values;
|
||||||
var outstr = ['<select>\n', "<option value='", JSON.stringify(thiseval), "'>", JSON.stringify(thiseval), '</option>\n'];
|
var outstr = ['<select>\n', "<option value='", JSON.stringify(thiseval), "'>", JSON.stringify(thiseval), '</option>\n'];
|
||||||
@ -362,6 +427,7 @@ editor_mode = function (editor) {
|
|||||||
editor_mode.dom[name].style = 'z-index:-1;opacity: 0;';
|
editor_mode.dom[name].style = 'z-index:-1;opacity: 0;';
|
||||||
}
|
}
|
||||||
editor_mode.dom[mode].style = '';
|
editor_mode.dom[mode].style = '';
|
||||||
|
editor_mode.doubleClickMode='change';
|
||||||
// clear
|
// clear
|
||||||
editor.drawEventBlock();
|
editor.drawEventBlock();
|
||||||
if (editor_mode[mode]) editor_mode[mode]();
|
if (editor_mode[mode]) editor_mode[mode]();
|
||||||
@ -1136,6 +1202,19 @@ editor_mode = function (editor) {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
editor_mode.changeDoubleClickModeByButton=function(mode){
|
||||||
|
({
|
||||||
|
delete:function(){
|
||||||
|
printf('下一次双击表格的项删除, 编辑后刷新浏览器生效 (正常模式下双击是用事件编辑器或文本编辑器编辑)');
|
||||||
|
editor_mode.doubleClickMode=mode;
|
||||||
|
},
|
||||||
|
add:function(){
|
||||||
|
printf('下一次双击表格的项, 在同级添加新项, 编辑后刷新浏览器生效 (正常模式下双击是用事件编辑器或文本编辑器编辑)');
|
||||||
|
editor_mode.doubleClickMode=mode;
|
||||||
|
}
|
||||||
|
}[mode])();
|
||||||
|
}
|
||||||
|
|
||||||
if (Boolean(callback)) callback();
|
if (Boolean(callback)) callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
||||||
{
|
{
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"events": {
|
"events": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"initGame": {
|
"initGame": {
|
||||||
@ -106,7 +106,7 @@ var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"enemys": {
|
"enemys": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"getSpecials": {
|
"getSpecials": {
|
||||||
@ -136,7 +136,7 @@ var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"onKeyUp": {
|
"onKeyUp": {
|
||||||
@ -148,7 +148,7 @@ var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"control": {
|
"control": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"flyTo": {
|
"flyTo": {
|
||||||
@ -178,7 +178,7 @@ var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ui": {
|
"ui": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"drawStatusBar": {
|
"drawStatusBar": {
|
||||||
@ -202,7 +202,7 @@ var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"_leaf": false,
|
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
"_data": {
|
"_data": {
|
||||||
"parallelDo": {
|
"parallelDo": {
|
||||||
|
|||||||
@ -116,7 +116,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left3" class='leftTab' style="z-index:-1;opacity: 0;"><!-- enemyitem -->
|
<div id="left3" class='leftTab' style="z-index:-1;opacity: 0;"><!-- enemyitem -->
|
||||||
<h3 class="leftTabHeader">图块属性 <button onclick="editor.mode.onmode('save')">保存</button>
|
<h3 class="leftTabHeader">图块属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div id='newIdIdnum'><!-- id and idnum -->
|
<div id='newIdIdnum'><!-- id and idnum -->
|
||||||
@ -142,7 +142,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left4" class='leftTab' style="z-index:-1;opacity: 0;"><!-- floor -->
|
<div id="left4" class='leftTab' style="z-index:-1;opacity: 0;"><!-- floor -->
|
||||||
<h3 class="leftTabHeader">楼层属性 <button onclick="editor.mode.onmode('save')">保存</button>
|
<h3 class="leftTabHeader">楼层属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div class='etable'>
|
<div class='etable'>
|
||||||
@ -159,7 +159,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left5" class='leftTab' style="z-index:-1;opacity: 0;"><!-- tower -->
|
<div id="left5" class='leftTab' style="z-index:-1;opacity: 0;"><!-- tower -->
|
||||||
<h3 class="leftTabHeader">全塔属性 <button onclick="editor.mode.onmode('save')">保存</button>
|
<h3 class="leftTabHeader">全塔属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div class='etable'>
|
<div class='etable'>
|
||||||
|
|||||||
@ -112,7 +112,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left3" class='leftTab' style="z-index:-1;opacity: 0;"><!-- enemyitem -->
|
<div id="left3" class='leftTab' style="z-index:-1;opacity: 0;"><!-- enemyitem -->
|
||||||
<h3 class="leftTabHeader">图块属性 <button onclick="editor.mode.onmode('save')">保存</button>
|
<h3 class="leftTabHeader">图块属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div id='newIdIdnum'><!-- id and idnum -->
|
<div id='newIdIdnum'><!-- id and idnum -->
|
||||||
@ -138,7 +138,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left4" class='leftTab' style="z-index:-1;opacity: 0;"><!-- floor -->
|
<div id="left4" class='leftTab' style="z-index:-1;opacity: 0;"><!-- floor -->
|
||||||
<h3 class="leftTabHeader">楼层属性 <button onclick="editor.mode.onmode('save')">保存</button>
|
<h3 class="leftTabHeader">楼层属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div class='etable'>
|
<div class='etable'>
|
||||||
@ -155,7 +155,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left5" class='leftTab' style="z-index:-1;opacity: 0;"><!-- tower -->
|
<div id="left5" class='leftTab' style="z-index:-1;opacity: 0;"><!-- tower -->
|
||||||
<h3 class="leftTabHeader">全塔属性 <button onclick="editor.mode.onmode('save')">保存</button>
|
<h3 class="leftTabHeader">全塔属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div class='etable'>
|
<div class='etable'>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user