diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 7d1e0732..f1badb3e 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -756,6 +756,7 @@ action | setGlobalAttribute_s | setGlobalValue_s | setGlobalFlag_s + | setNameMap_s | show_s | hide_s | trigger_s @@ -1261,6 +1262,20 @@ return code; */; +setNameMap_s + : '设置文件别名' ':' EvalString '为' EvalString? Newline + + +/* setNameMap_s +tooltip : setNameMap:设置文件别名 +helpUrl : /_docs/#/instruction +default : ["背景音乐",""] +colour : this.dataColor +EvalString_1 = EvalString_1 ? (', "value": "' + EvalString_1 + '"') : ''; +var code = '{"type": "setNameMap", "name": "'+EvalString_0+'"'+EvalString_1+'},\n'; +return code; +*/; + show_s : '显示事件' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '动画时间' IntString? '不等待执行完毕' Bool? Newline diff --git a/_server/MotaActionParser.js b/_server/MotaActionParser.js index d3331c4c..7ba294f9 100644 --- a/_server/MotaActionParser.js +++ b/_server/MotaActionParser.js @@ -719,6 +719,10 @@ ActionParser.prototype.parseAction = function() { this.next = MotaActionBlocks['setGlobalFlag_s'].xmlText([ data.name, data.value, this.next]); break; + case "setNameMap": + this.next = MotaActionBlocks['setNameMap_s'].xmlText([ + data.name, data.value, this.next]); + break; case "input": this.next = MotaActionBlocks['input_s'].xmlText([ data.text,this.next]); diff --git a/_server/editor_blocklyconfig.js b/_server/editor_blocklyconfig.js index be426c5f..fea6aaa9 100644 --- a/_server/editor_blocklyconfig.js +++ b/_server/editor_blocklyconfig.js @@ -128,6 +128,7 @@ editor_blocklyconfig=(function(){ MotaActionBlocks['setGlobalAttribute_s'].xmlText(), MotaActionBlocks['setGlobalValue_s'].xmlText(), MotaActionBlocks['setGlobalFlag_s'].xmlText(), + MotaActionBlocks['setNameMap_s'].xmlText(), MotaActionBlocks['input_s'].xmlText(), MotaActionBlocks['input2_s'].xmlText(), MotaActionBlocks['update_s'].xmlText(), diff --git a/libs/control.js b/libs/control.js index 8d25ef3b..343404cd 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2513,7 +2513,7 @@ control.prototype.checkRouteFolding = function () { // ------ 天气,色调,BGM ------ // control.prototype.getMappedName = function (name) { - return (main.nameMap || {})[name] || name; + return core.getFlag('__nameMap__', {})[name] || (main.nameMap || {})[name] || name; } ////// 更改天气效果 ////// diff --git a/libs/events.js b/libs/events.js index c0dc4a76..5eed254f 100644 --- a/libs/events.js +++ b/libs/events.js @@ -1806,6 +1806,11 @@ events.prototype._action_setGlobalFlag = function (data, x, y, prefix) { core.doAction(); } +events.prototype._action_setNameMap = function (data, x, y, floorId) { + this.setNameMap(data.name, data.value); + core.doAction(); +} + events.prototype._action_setHeroIcon = function (data, x, y, prefix) { this.setHeroIcon(data.name, data.noDraw); core.doAction(); @@ -2883,6 +2888,12 @@ events.prototype.setGlobalFlag = function (name, value) { core.drawMap(); } +////// 设置文件别名 ////// +events.prototype.setNameMap = function (name, value) { + if (!core.hasFlag('__nameMap__')) core.setFlag('__nameMap__', {}); + flags.__nameMap__[name] = value; +} + events.prototype.closeDoor = function (x, y, id, callback) { id = id || ""; if ((core.material.icons.animates[id] == null && core.material.icons.npc48[id] == null)