别名设置

This commit is contained in:
ckcz123 2021-07-23 19:31:03 +08:00
parent 0b9e6ad0fd
commit ead209ddad
6 changed files with 109 additions and 32 deletions

View File

@ -640,12 +640,12 @@ return JSON.stringify(code);
*/;
nameMap_m
: '文件别名设置 此项可对每个素材(背景音乐、音效、使用图片、使用动画)进行一个别名设置,然后可以游戏中使用此别名代替原始文件名。' BGNL? Newline nameMapList+ BEND
: '文件别名设置' '(可以游戏中使用此别名代替原始文件名)' BGNL? Newline nameMapList+ BEND
/* nameMap_m
tooltip : 文件别名设置
helpUrl : /_docs/#/instruction
var value = doorKeyList_0.trim();
var value = nameMapList_0.trim();
if (value.startsWith(',')) value = value.substring(1);
return '{'+value+'}';
*/;
@ -665,26 +665,32 @@ nameMapBgm
/* nameMapBgm
tooltip : 映射背景音乐
default : ['背景音乐', 'bgm.mp3']
allBgms : ['EvalString_1']
material : ["./project/bgms/", "EvalString_1"]
helpUrl : /_docs/#/instruction
return ',"'+EvalString_0+'":"'+EvalString_1+'"';
*/;
nameMapSound1
nameMapSoundKnown
: '映射系统音效' '名称' NameMap_List '映射到文件' EvalString BEND
/* nameMapSound1
/* nameMapSoundKnown
tooltip : 映射系统音效
default : ['确定', 'confirm.mp3']
allSounds : ['EvalString_0']
material : ["./project/sounds/", "EvalString_0"]
helpUrl : /_docs/#/instruction
return ',"'+NameMap_List_0+'":"'+EvalString_0+'"';
*/;
nameMapSound2
nameMapSoundUnknown
: '映射音效' '名称' EvalString '映射到文件' EvalString BEND
/* nameMapSound2
/* nameMapSoundUnknown
tooltip : 映射音效
default : ['攻击', 'attack.mp3']
allSounds : ['EvalString_1']
material : ["./project/sounds/", "EvalString_1"]
helpUrl : /_docs/#/instruction
return ',"'+EvalString_0+'":"'+EvalString_1+'"';
*/;
@ -695,16 +701,20 @@ nameMapImage
/* nameMapImage
tooltip : 映射图片
default : ['背景图', 'bg.jpg']
allImages : ['EvalString_1']
material : ["./project/images/", "EvalString_1"]
helpUrl : /_docs/#/instruction
return ',"'+EvalString_0+'":"'+EvalString_1+'"';
*/;
nameMapImage
nameMapAnimate
: '映射动画' '名称' EvalString '映射到文件' IdString BEND
/* nameMapImage
/* nameMapAnimate
tooltip : 映射图片
default : ['剑技', 'jianji']
default : ['领域', 'zone']
allAnimates : ['IdString_0']
material : ["./project/animates/", "IdString_0"]
helpUrl : /_docs/#/instruction
return ',"'+EvalString_0+'":"'+IdString_0+'"';
*/;
@ -714,7 +724,7 @@ nameMapUnknown
/* nameMapUnknown
tooltip : 未知映射
default : ['文件名', 'test.jpg']
default : ['文件名', 'file.jpg']
helpUrl : /_docs/#/instruction
return ',"'+EvalString_0+'":"'+EvalString_1+'"';
*/;
@ -723,7 +733,7 @@ nameMapEmpty
: Newline
/* nameMapEmpty
return '';
return ' \n';
*/;
//为了避免关键字冲突,全部加了_s
@ -809,6 +819,7 @@ action
| loadBgm_s
| freeBgm_s
| playSound_s
| playSound_1_s
| stopSound_s
| setVolume_s
| win_s
@ -2451,6 +2462,20 @@ var code = '{"type": "playSound", "name": "'+EvalString_0+'"'+Bool_0+'},\n';
return code;
*/;
playSound_1_s
: '播放系统音效' NameMap_List '停止之前音效' Bool? Newline
/* playSound_1_s
tooltip : playSound: 播放系统音效
helpUrl : /_docs/#/instruction
default : ["确认",false]
colour : this.soundColor
Bool_0 = Bool_0 ? ', "stop": true' : '';
var code = '{"type": "playSound", "name": "'+NameMap_List_0+'"'+Bool_0+'},\n';
return code;
*/;
stopSound_s
: '停止所有音效' Newline

View File

@ -127,18 +127,32 @@ ActionParser.prototype.parse = function (obj,type) {
if (!obj) obj={};
var items = Object.keys(obj);
var result = null;
for (var ii=items.length,one;one=items[ii];ii--) {
for (var ii=items.length-1,one;one=items[ii];ii--) {
var value = obj[one];
var knownItems = MotaActionBlocks['NameMap_List'].options.map(function (one) {return one[1];})
if (knownItems.indexOf(one) >= 0) {
result = MotaActionBlocks['nameMapSound1'].xmlText([
])
result = MotaActionBlocks['nameMapSoundKnown'].xmlText([one, value, result]);
continue;
}
var value = obj[ii];
if (main.bgms.indexOf(value) >= 0) {
result = MotaActionBlocks['nameMapBgm'].xmlText([one, value, result]);
continue;
}
if (main.sounds.indexOf(value) >= 0) {
result = MotaActionBlocks['nameMapSoundUnknown'].xmlText([one, value, result]);
continue;
}
if (main.images.indexOf(value) >= 0) {
result = MotaActionBlocks['nameMapImage'].xmlText([one, value, result]);
continue;
}
if (main.animates.indexOf(value) >= 0) {
result = MotaActionBlocks['nameMapAnimate'].xmlText([one, value, result]);
continue;
}
result = MotaActionBlocks['nameMapUnknown'].xmlText([one, value, result]);
}
return MotaActionBlocks['nameMap_m'].xmlText([result]);
case 'shop':
var buildsub = function(obj,parser,next){
@ -625,8 +639,14 @@ ActionParser.prototype.parseAction = function() {
}
break;
case "playSound":
var knownItems = MotaActionBlocks['NameMap_List'].options.map(function (one) {return one[1];});
if (knownItems.indexOf(data.name) >= 0) {
this.next = MotaActionBlocks['playSound_1_s'].xmlText([
data.name,data.stop,this.next]);
} else {
this.next = MotaActionBlocks['playSound_s'].xmlText([
data.name,data.stop,this.next]);
}
break;
case "playBgm":
this.next = MotaActionBlocks['playBgm_s'].xmlText([

View File

@ -343,14 +343,28 @@ editor_blockly = function () {
}
editor_blockly.selectMaterial = function(b,material){
editor.uievent.selectMaterial([b.getFieldValue(material[1])], '请选择素材', material[0], function (one) {
if (b.type == 'animate_s' || b.type == 'animate_1_s') {
var value = b.getFieldValue(material[1]);
value = main.nameMap[value] || value;
editor.uievent.selectMaterial([value], '请选择素材', material[0], function (one) {
if (b.type == 'animate_s' || b.type == 'animate_1_s' || b.type == 'nameMapAnimate') {
return /^[-A-Za-z0-9_.]+\.animate$/.test(one) ? one.substring(0, one.length - 8) : null;
}
return /^[-A-Za-z0-9_.]+$/.test(one) ? one : null;
}, function (value) {
if (value instanceof Array && value.length > 0) {
b.setFieldValue(value[0], material[1]);
value = value[0];
// 检测是否别名替换
for (var name in main.nameMap) {
if (main.nameMap[name] == value) {
if (confirm("检测到该文件存在别名:"+name+"\n是否使用别名进行替换")) {
b.setFieldValue(name, material[1]);
return;
} else {
break;
}
}
}
b.setFieldValue(value, material[1]);
}
});
}
@ -650,7 +664,8 @@ editor_blockly = function () {
namesObj.allIconIds = namesObj.allIds.concat(Object.keys(core.statusBar.icons).filter(function (x) {
return core.statusBar.icons[x] instanceof Image;
}));
namesObj.allImages = Object.keys(core.material.images.images);
namesObj.allImages = Object.keys(core.material.images.images)
.concat(Object.keys(main.nameMap).filter(function (one) {return core.material.images.images[main.nameMap[one]];}));
namesObj.allEnemys = Object.keys(core.material.enemys);
if (MotaActionFunctions && !MotaActionFunctions.disableReplace) {
namesObj.allEnemys = namesObj.allEnemys.concat(MotaActionFunctions.pattern.replaceEnemyList.map(function (x) {
@ -663,9 +678,12 @@ editor_blockly = function () {
return x[1];
}))
}
namesObj.allAnimates = Object.keys(core.material.animates);
namesObj.allBgms = Object.keys(core.material.bgms);
namesObj.allSounds = Object.keys(core.material.sounds);
namesObj.allAnimates = Object.keys(core.material.animates)
.concat(Object.keys(main.nameMap).filter(function (one) {return core.material.animates[main.nameMap[one]];}));
namesObj.allBgms = Object.keys(core.material.bgms)
.concat(Object.keys(main.nameMap).filter(function (one) {return core.material.bgms[main.nameMap[one]];}));
namesObj.allSounds = Object.keys(core.material.sounds)
.concat(Object.keys(main.nameMap).filter(function (one) {return core.material.sounds[main.nameMap[one]];}));;
namesObj.allShops = Object.keys(core.status.shops);
namesObj.allFloorIds = core.floorIds;
namesObj.allColors = ["aqua青色", "black黑色", "blue蓝色", "fuchsia品红色", "gray灰色", "green深绿色", "lime绿色",

View File

@ -88,8 +88,8 @@ editor_blocklyconfig=(function(){
MotaActionBlocks['faceIds_m'].xmlText(),
MotaActionBlocks['mainStyle_m'].xmlText(),
MotaActionFunctions.actionParser.parse({
"背景音乐": "bgm.mp3", "确定": "confirm.mp3", "攻击": "attack.mp3", "背景图": "bg.jpg", "剑技": "jianji"
}, 'nameMap')
"背景音乐": "bgm.mp3", "确定": "confirm.mp3", "攻击": "attack.mp3", "背景图": "bg.jpg", "领域": "zone", "文件名": "file.jpg"
}, 'nameMap'),
],
'显示文字':[
MotaActionBlocks['text_0_s'].xmlText(),
@ -209,6 +209,7 @@ editor_blocklyconfig=(function(){
MotaActionBlocks['loadBgm_s'].xmlText(),
MotaActionBlocks['freeBgm_s'].xmlText(),
MotaActionBlocks['playSound_s'].xmlText(),
MotaActionBlocks['playSound_1_s'].xmlText(),
MotaActionBlocks['stopSound_s'].xmlText(),
MotaActionBlocks['setVolume_s'].xmlText(),
MotaActionBlocks['callBook_s'].xmlText(),

View File

@ -76,7 +76,16 @@ utils.prototype._init = function () {
return this;
}
}
if (typeof Array.prototype.includes != "function") {
Array.prototype.includes = function (value) {
return this.indexOf(value) >= 0;
}
}
if (typeof Object.values != "function") {
Object.values = function (obj) {
return Object.keys(obj).map(function (one) { return obj[one]; });
}
}
}
////// 将文字中的${和}(表达式)进行替换 //////

View File

@ -63,7 +63,11 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"跳跃": "jump.mp3",
"破墙镐": "pickaxe.mp3",
"阻激夹域": "zone.mp3",
"穿脱装备": "equip.mp3"
"穿脱装备": "equip.mp3",
"背景音乐": "bgm.mp3",
"攻击": "attack.mp3",
"背景图": "bg.jpg",
"领域": "zone"
},
"levelChoose": [
{