diff --git a/_server/blockly/MotaAction.g4 b/_server/blockly/MotaAction.g4 index 5cdf8049..1fedbba2 100644 --- a/_server/blockly/MotaAction.g4 +++ b/_server/blockly/MotaAction.g4 @@ -214,6 +214,8 @@ action | tip_s | setValue_s | setFloor_s + | setGlobalAttribute_s + | setGlobalValue_s | show_s | hide_s | trigger_s @@ -437,6 +439,34 @@ return code; */; +setGlobalAttribute_s + : '设置全局属性' ':' Global_Attribute_List '值' EvalString Newline + + +/* setGlobalAttribute_s +tooltip : setGlobalAttribute:设置全局属性 +helpUrl : https://h5mota.com/games/template/docs/#/event?id=setFloor%ef%bc%9a%e8%ae%be%e7%bd%ae%e6%a5%bc%e5%b1%82%e5%b1%9e%e6%80%a7 +default : ["font","Verdana"] +colour : this.dataColor +var code = '{"type": "setGlobalAttribute", "name": "'+Global_Attribute_List_0+'", "value": "'+EvalString_0+'"},\n'; +return code; +*/; + + +setGlobalValue_s + : '设置全局数值' ':' Global_Value_List '值' EvalString Newline + + +/* setGlobalValue_s +tooltip : setGlobalValue:设置全局属性 +helpUrl : https://h5mota.com/games/template/docs/#/event?id=setFloor%ef%bc%9a%e8%ae%be%e7%bd%ae%e6%a5%bc%e5%b1%82%e5%b1%9e%e6%80%a7 +default : ["lavaDamage","100"] +colour : this.dataColor +var code = '{"type": "setGlobalValue", "name": "'+Global_Value_List_0+'", "value": '+EvalString_0+'},\n'; +return code; +*/; + + show_s : '显示事件' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '动画时间' Int? Newline @@ -1583,6 +1613,14 @@ Floor_Meta_List : '楼层中文名'|'状态栏名称'|'能否使用楼传'|'能否打开快捷商店'|'是否不可浏览地图'|'默认地面ID'|'楼层贴图'|'宝石血瓶效果'|'上楼点坐标'|'下楼点坐标'|'背景音乐'|'画面色调'|'天气和强度'|'是否地下层' /*Floor_Meta_List ['title','name','canFlyTo', 'canUseQuickShop', 'cannotViewMap', 'defaultGround', 'images', 'item_ratio', 'upFloor', 'downFloor', 'bgm', 'color', 'weather', 'underGround']*/; +Global_Attribute_List + : '全局字体'|'横屏左侧状态栏背景'|'竖屏上方状态栏背景'|'竖屏下方道具栏背景'|'边框颜色'|'状态栏文字色'|'难度显示文字色'|'楼层转换背景'|'楼层转换文字色' + /*Global_Attribute_List ['font','statusLeftBackground','statusTopBackground', 'toolsBackground', 'borderColor', 'statusBarColor', 'hardLabelColor', 'floorChangingBackground', 'floorChangingTextColor']*/; + +Global_Value_List + : '血网伤害'|'中毒伤害'|'衰弱效果'|'红宝石效果'|'蓝宝石效果'|'绿宝石效果'|'红血瓶效果'|'蓝血瓶效果'|'黄血瓶效果'|'绿血瓶效果'|'破甲比例'|'反击比例'|'净化比例'|'仇恨增加值'|'最大合法HP'|'动画时间' + /*Global_Value_List ['lavaDamage','poisonDamage','weakValue', 'redJewel', 'blueJewel', 'greenJewel', 'redPotion', 'bluePotion', 'yellowPotion', 'greenPotion', 'breakArmor', 'counterAttack', 'purify', 'hatred', 'maxValidHp', 'animateSpeed']*/; + Bool: 'TRUE' | 'FALSE' ; @@ -2064,6 +2102,14 @@ ActionParser.prototype.parseAction = function() { this.next = MotaActionBlocks['setFloor_s'].xmlText([ data.name, data.floorId||null, data.value, this.next]); break; + case "setGlobalAttribute": + this.next = MotaActionBlocks['setGlobalAttribute_s'].xmlText([ + data.name, data.value, this.next]); + break; + case "setGlobalValue": + this.next = MotaActionBlocks['setGlobalValue_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/data.comment.js b/_server/data.comment.js index 3cfa62e4..681abdf8 100644 --- a/_server/data.comment.js +++ b/_server/data.comment.js @@ -353,11 +353,6 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "_type": "textarea", "_data": "绿血瓶加血数值" }, - "moneyPocket": { - "_leaf": true, - "_type": "textarea", - "_data": "金钱袋加金币的数值" - }, "breakArmor": { "_leaf": true, "_type": "textarea", diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 86e8466c..4b0212e4 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -84,6 +84,8 @@ editor_blockly = function () { MotaActionBlocks['idString_1_e'].xmlText(['status','hp']) ]), MotaActionBlocks['setFloor_s'].xmlText(), + MotaActionBlocks['setGlobalAttribute_s'].xmlText(), + MotaActionBlocks['setGlobalValue_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 b3633da2..2ded4a97 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2447,6 +2447,11 @@ control.prototype.loadData = function (data, callback) { } core.status.textAttribute = core.getFlag('textAttribute', core.status.textAttribute); + var toAttribute = core.getFlag('globalAttribute', core.status.globalAttribute); + if (core.utils.hashCode(toAttribute) != core.utils.hashCode(core.status.globalAttribute)) { + core.status.globalAttribute = toAttribute; + core.control.updateGlobalAttribute(Object.keys(toAttribute)); + } // load icons var icon = core.getFlag("heroIcon", "hero.png"); @@ -2685,7 +2690,7 @@ control.prototype.updateStatusBar = function () { // 回放 if (core.status.replay.replaying) { - core.statusBar.image.book.src = core.status.replay.pausing?core.statusBar.icons.play.src:core.statusBar.icons.pause.src; + core.statusBar.image.book.src = core.status.replay.pausing ? core.statusBar.icons.play.src : core.statusBar.icons.pause.src; core.statusBar.image.book.style.opacity = 1; core.statusBar.image.fly.src = core.statusBar.icons.stop.src; @@ -2704,11 +2709,11 @@ control.prototype.updateStatusBar = function () { } else { core.statusBar.image.book.src = core.statusBar.icons.book.src; - core.statusBar.image.book.style.opacity = core.hasItem('book')?1:0.3; + core.statusBar.image.book.style.opacity = core.hasItem('book') ? 1 : 0.3; if (!core.flags.equipboxButton) { core.statusBar.image.fly.src = core.statusBar.icons.fly.src; - core.statusBar.image.fly.style.opacity = core.hasItem('fly')?1:0.3; + core.statusBar.image.fly.style.opacity = core.hasItem('fly') ? 1 : 0.3; } else { core.statusBar.image.fly.src = core.statusBar.icons.equipbox.src; @@ -2747,6 +2752,64 @@ control.prototype.updateHeroIcon = function (name) { } +control.prototype.updateGlobalAttribute = function (name) { + if (!core.isset(name)) return; + if (name instanceof Array) { + name.forEach(function (t) { + core.control.updateGlobalAttribute(t); + }); + return; + } + var attribute = core.status.globalAttribute || core.initStatus.globalAttribute; + if (!core.isset(attribute)) return; + switch (name) { + case 'statusLeftBackground': + if (core.domStyle.screenMode == 'horizontal' || core.domStyle.screenMode == 'bigScreen') { + core.dom.statusBar.style.background = attribute[name]; + } + break; + case 'statusTopBackground': + if (core.domStyle.screenMode == 'vertical') { + core.dom.statusBar.style.background = attribute[name]; + } + break; + case 'toolsBackground': + if (core.domStyle.screenMode == 'vertical') { + core.dom.toolBar.style.background = attribute[name]; + } + break; + case 'borderColor': + { + var border = '3px ' + attribute[name] + ' solid'; + var isVertical = core.domStyle.screenMode == 'vertical'; + core.dom.statusBar.style.borderTop = border; + core.dom.statusBar.style.borderLeft = border; + core.dom.statusBar.style.borderRight = isVertical?'':border; + core.dom.gameDraw.style.border = border; + core.dom.toolBar.style.borderBottom = border; + core.dom.toolBar.style.borderLeft = border; + core.dom.toolBar.style.borderRight = isVertical?'':border; + break; + } + case 'statusBarColor': + { + var texts = core.dom.statusTexts; + for (var i=0;i