From 8b6ff17c538bcbbf668c284dacfdfcea350122d4 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 18 Oct 2020 12:02:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E7=94=BB=E9=9F=B3=E6=95=88=E8=A1=A5?= =?UTF-8?q?=E5=85=A8=20&=20=E5=8E=9F=E5=A7=8B=E6=95=B0=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 4 ++-- _server/editor_table.js | 4 ++-- _server/editor_ui.js | 9 +++++-- _server/table/comment.js | 15 ++++++++---- _server/table/data.comment.js | 15 ++++++++---- libs/control.js | 2 +- libs/events.js | 2 +- libs/ui.js | 17 ++++++++++++++ mota-js10月和273issue.txt | 44 +++++++++++++++++++++++++---------- 9 files changed, 84 insertions(+), 28 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index efe76432..ef13fb1e 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -3361,8 +3361,8 @@ Floor_List /*Floor_List ['floorId',':before',':next',':now']*/; Stair_List - : '坐标'|'上楼梯'|'下楼梯'|'保持不变'|'中心对称点'|'x对称点'|'y对称点' - /*Stair_List ['loc','upFloor','downFloor',':now',':symmetry',':symmetry_x',':symmetry_y']*/; + : '坐标'|'上楼梯'|'下楼梯'|'保持不变'|'中心对称点'|'x对称点'|'y对称点'|'楼传落点' + /*Stair_List ['loc','upFloor','downFloor',':now',':symmetry',':symmetry_x',':symmetry_y','flyPoint']*/; SetTextPosition_List : '不改变'|'距离顶部'|'居中'|'距离底部' diff --git a/_server/editor_table.js b/_server/editor_table.js index b5b36baf..1797b7f5 100644 --- a/_server/editor_table.js +++ b/_server/editor_table.js @@ -261,11 +261,11 @@ editor_table_wrapper = function (editor) { var thiseval = vobj; var comment = String(cobj._data); - var charlength = 15; + // var charlength = 15; // "['a']['b']" => "b" var shortField = field.split("']").slice(-2)[0].split("['").slice(-1)[0]; // 把长度超过 charlength 的字符改成 固定长度+...的形式 - shortField = (shortField.length < charlength ? shortField : shortField.slice(0, charlength) + '...'); + // shortField = (shortField.length < charlength ? shortField : shortField.slice(0, charlength) + '...'); // 完整的内容转义后供悬停查看 var commentHTMLescape = editor.util.HTMLescape(comment); diff --git a/_server/editor_ui.js b/_server/editor_ui.js index ad2f6582..02634e1d 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -754,6 +754,7 @@ editor_ui_wrapper = function (editor) { } // 显示每一项内容 + var hasAudio = false; var html = "

"; html += ""+ "
"; @@ -765,7 +766,7 @@ editor_ui_wrapper = function (editor) { html += '
'; } // 试听音频 - if (one.endsWith('.mp3') || one.endsWith('.wmv') || one.endsWith('.ogg') || one.endsWith('.wav')) { + if (one.endsWith('.mp3') || one.endsWith('.ogg') || one.endsWith('.wav') || one.endsWith('.m4a') || one.endsWith('.flac')) { html += ""; html += `0:00 / 0:00
@@ -773,17 +774,21 @@ editor_ui_wrapper = function (editor) { } // 预览动画 if (directory.indexOf('animates') >= 0) { + var audios = Object.keys(core.material.sounds).sort().join(","); html += ""; - html += `
音效: + html += `
音效 +
`; + hasAudio = true; } html += '
'; }); html += "

"; html += "

如果文件未在此列表显示,请检查文件名是否合法(只能由数字字母下划线横线和点组成),后缀名是否正确。

"; uievent.elements.extraBody.innerHTML = html; + if (hasAudio) new Awesomplete(".awesomplete"); }); } diff --git a/_server/table/comment.js b/_server/table/comment.js index b60e7239..e4ffdd6b 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -505,10 +505,17 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { }, "bgm": { "_leaf": true, - "_type": "select", - "_select": { - "values": [null].concat(Object.keys(editor.core.material.bgms)) - }, + "_type": "material", + "_directory": "./project/bgms/", + "_transform": (function (one) { + if (one.endsWith('.mp3') || one.endsWith('.ogg') || one.endsWith('.wav') || one.endsWith('.m4a') || one.endsWith('.flac')) + return one; + return null; + }).toString(), + "_onconfirm": (function (previous, current) { + if (current.length == 0) return null; + return current[0]; + }).toString(), "_docs": "背景音乐", "_data": "到达该层后默认播放的BGM" }, diff --git a/_server/table/data.comment.js b/_server/table/data.comment.js index a94d2d69..bbb709c7 100644 --- a/_server/table/data.comment.js +++ b/_server/table/data.comment.js @@ -136,10 +136,17 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { }, "startBgm": { "_leaf": true, - "_type": "select", - "_select": { - "values": [null].concat(Object.keys(editor.core.material.bgms)) - }, + "_type": "material", + "_directory": "./project/bgms/", + "_transform": (function (one) { + if (one.endsWith('.mp3') || one.endsWith('.ogg') || one.endsWith('.wav') || one.endsWith('.m4a') || one.endsWith('.flac')) + return one; + return null; + }).toString(), + "_onconfirm": (function (previous, current) { + if (current.length == 0) return null; + return current[0]; + }).toString(), "_docs": "标题音乐", "_data": "在标题界面应该播放的bgm内容" }, diff --git a/libs/control.js b/libs/control.js index 9215e377..5ba823c3 100644 --- a/libs/control.js +++ b/libs/control.js @@ -1571,7 +1571,7 @@ control.prototype._replay_error = function (action) { control.prototype._replay_drawProgress = function () { var total = core.status.replay.totalList.length, left = total - core.status.replay.toReplay.length; - var content = '播放进度:' + left + '/' + total + '('+(left/total*100).toFixed(2)+'%)'; + var content = '播放进度:' + left + ' / ' + total + '('+(left/total*100).toFixed(2)+'%)'; var width = 26 + core.calWidth('replay', content, "16px Arial"); core.clearMap('replay'); core.fillRect('replay', 0, 0, width, 40, '#000000'); diff --git a/libs/events.js b/libs/events.js index 9da4dcfa..ba8cf454 100644 --- a/libs/events.js +++ b/libs/events.js @@ -696,7 +696,7 @@ events.prototype._changeFloor_getHeroLoc = function (floorId, stair, heroLoc) { heroLoc.x = core.bigmap.width - 1 - core.getHeroLoc('x'); else if (stair == ':symmetry_y') heroLoc.y = core.bigmap.height - 1 - core.getHeroLoc('y'); - // 检查该层地图的 upFloor & downFloor + // 检查该层地图的 upFloor & downFloor & flyPoint else if (core.status.maps[floorId][stair]) { heroLoc.x = core.status.maps[floorId][stair][0]; heroLoc.y = core.status.maps[floorId][stair][1]; diff --git a/libs/ui.js b/libs/ui.js index 14f81c74..cbedaa6d 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -2152,6 +2152,8 @@ ui.prototype._drawBookDetail_getInfo = function (index) { } ui.prototype._drawBookDetail_getTexts = function (enemy, floorId, texts) { + // --- 原始数值 + this._drawBookDetail_origin(enemy, texts); // --- 模仿临界计算器 this._drawBookDetail_mofang(enemy, texts); // --- 吸血怪最低生命值 @@ -2162,6 +2164,21 @@ ui.prototype._drawBookDetail_getTexts = function (enemy, floorId, texts) { this._drawBookDetail_turnAndCriticals(enemy, floorId, texts); } +ui.prototype._drawBookDetail_origin = function (enemy, texts) { + // 怪物数值和原始值不一样时,在详细信息页显示原始数值 + var originEnemy = core.enemys._getCurrentEnemys_getEnemy(enemy.id); + var content = []; + ["hp", "atk", "def", "point", "money", "exp"].forEach(function (one) { + if (enemy[one] == null || originEnemy[one] == null) return; + if (enemy[one] != originEnemy[one]) { + content.push(core.getStatusLabel(one) + " " + originEnemy[one]); + } + }); + if (content.length > 0) { + texts.push("\r[#FF6A6A]\\d原始数值:\\d\r[]" + content.join(";")); + } +} + ui.prototype._drawBookDetail_mofang = function (enemy, texts) { // 模仿临界计算器 if (core.enemys.hasSpecial(enemy.special, 10)) { diff --git a/mota-js10月和273issue.txt b/mota-js10月和273issue.txt index 853ca76e..d2c0a2f7 100644 --- a/mota-js10月和273issue.txt +++ b/mota-js10月和273issue.txt @@ -1,7 +1,12 @@ +√:已完成 +x:现在或未来暂时没有做的打算 +?:待定中 +N:可能影响接档等,下一个版本再考虑 + 2.7.2改版和多语言版中做出的功能性改进: (√)1. terrains.png中追加了14种薄墙图块(不可出入方向一致,画在非事件层可使勇士和阻击怪无法穿过)和仿rm柜台,但没有向下延伸绘制的效果。 (√)2. 怪物追加了批量战后事件(比照了道具的useItemEvent和其他图块的script),此事件对同种任何怪物生效,移动/跳跃后依然生效。 -(?)2.1 炸弹只炸面前的情况增加了触发两种战后事件,以方便作者。 +(x)2.1 炸弹只炸面前的情况增加了触发两种战后事件,以方便作者。 (x)3. 怪物追加了攻击勇士的动画,该动画存在时会作为勇士攻击怪物动画的回调,天降强制战斗时则覆盖勇士攻击怪物的动画。 (x)4. 插件编写init中追加了两个API用来将project\enemys.js转换成csv格式或转换回来,以方便作者读写(希望此思路也用于其他文件如project\maps.js来方便通行性等属性的读写)。其中批量战后事件的存储方式参考了自定义录像项的要求,即JSON.stringify再core.encodeBase64 (√)5. core.stairExists()改为了始终允许87到94号图块,毕竟“不想允许这些图块的作者只需要换别的素材”,而“想允许这些图块的作者则不得不魔改/复写函数或者开启平面模式,但该作者未必需求玩家飞回上次离开的位置”。 @@ -12,7 +17,7 @@ (x)7.3 UI绘制的颜色改成了注释的浅紫色,各种子场合块的颜色改成了入口方块的深紫色,以和地图处理类的浅蓝色相区分。 (x)8. 修复了Math一元运算值块转换为json时的语法错误,追加了部分函数。 (x)8.1 drawTip事件追加了第几帧的参数。 -(x)9. 玩家设置中追加了左撇子模式,开启后wsad起方向键的作用,ijkl起原wsad的SL作用,以方便键鼠并用。 +(?)9. 玩家设置中追加了左撇子模式,开启后wsad起方向键的作用,ijkl起原wsad的SL作用,以方便键鼠并用。 (√)10. 移除了部分引用极少的函数,如仇恨怪详情、claerTip和 (x)10.1 tryUseItem改成了直接inline,从道具栏使用道具失败时不再closePanel,以方便玩家继续选择其他道具(破炸冰这三个先斩后奏的就没办法了)。 (√)11. 快速追加npc48一键绑定朝向改为只绑定最后四个,以免影响前面可能的单朝向npc @@ -24,7 +29,7 @@ (x)14. drawChoices选择灰项增加了音效,此音效还用在了其他类似的场合。希望样板多一些这样的小细节并提供rm那样的映射表来修改音效而不是只能替换文件,毕竟替换文件有格式限制。样板的很多系统行为缺少音效,如开关菜单等系统UI时、闪烁光标和黄框位置变化时。建议能提供的都提供出来(胖老鼠和新新那么多音效有了解包出的文件还难以还原,不丢人么。样板3层和h5胖老鼠对话靠的还是无数手动播放音效),录像高倍速播放如果听感不好的话可以忽略。 (√)15. 放宽了音频文件的格式限制,如追加了m4a、m4r、flac等,毕竟作者可能会选择其他的渠道传播。 (x)16. animate这个后缀名修改为了json,以方便文本编辑器等程序去识别,另外某些h5游戏网站在发布时会限制上传的文件格式,使用标准后缀也有利于作者。 -(?)17. flyTo中修改了楼层属性flyPoint的生效方式,改成了作为stair参数生效而不是覆盖heroLoc,两个相关事件的stair下拉框也提供了flyPoint项。 +(√)17. flyTo中修改了楼层属性flyPoint的生效方式,改成了作为stair参数生效而不是覆盖heroLoc,两个相关事件的stair下拉框也提供了flyPoint项。 (√)18. 楼层属性canFlyTo拆成了两项,即canFlyTo和canFlyFrom,以方便作者个性化。 (√)19. getSpecials由yzm优化了配色,优化了固伤属性的描述(可被负伤抵消)。 (x)20. 难度单词为空字符串时显示“竖屏数字键”,以提示竖屏玩家。另外希望修复读档等场合红一下的bug @@ -40,15 +45,30 @@ (√)0.(1008)加入一个flag来控制当前是否允许存档,因为天气色调bgm进存档的情况下会屏蔽楼层切换,不进存档的话玩家原地SL又不保留。 (√)0.1. 录像播放中加一个百分比(二次录制长度/原录像长度)显示, (x)0.2. 并且允许在已播放的任意节点之间快退快进。 -1. 希望尝试修复2.6.x的高清UI、自动元件通行性(勇士和阻击怪可在同种图块内部自由通行,但进出另一种图块则必须通过桥梁)、仿rm光照和负色调(含true-light.js)等插件并加入样板,2.7.2发布以来插件库有了一些新插件,也希望加入(该修的bug要修,比如什么==NaN)。 -2. 部分rm功能:确定键触发(很多作者可能会摆一些挡路的可通行事件但又希望可以像绿点一样穿透,比如因为目标层/点有分歧而不能用绿点只能用红点的楼梯,那么就需要勇士站在此点按下轻按键7或其他什么数字键来触发该事件)、斜向移动(插件库的磁铁特效,但blockly中的步伐口诀语法需要调整,最简单的调整方法是1不许省略,这样连续两个汉字就一定表示一个斜向了,还不影响接档)三行二列的自动元件、流体(草木茂盛处)、梯子(勇士始终脸朝上)、柜台的绘制,视频播放,动画多音效(可先不修改动画编辑器和导出器,给animate/json文件约定好语法并被drawAnimate/drawHeroAnimate执行即可),音频的变调变速和声道偏移、bgs(目前只能由作者自行用插件实现)和me(播放时bgm暂时淡出),另外建议提供bgm播放进度读写、多个bgm独立调节音量的API和事件,以及一个bgm循环插件,思路是事先约定每个bgm的循环起止点,并行检查是否越过终点,越过则跳转至起点。 -3. 希望cannotMove(深蓝点)的高亮方式优化,显示出具体的禁行方向(如果嫌遮挡,可以提供一个按钮切换高亮方式)而不是只显示个深蓝点。另外cannotMove目前只控制out不控制in,建议追加in -4. 拖文件快速追加功能建议实现对RMVA规格的完整支持,即遇到四行三列图片时,取两帧则取左右列、取四帧则按2123排布,items.png则支持任意宽高(如拖动一张480*480px的tileset图片到items.png则追加225个道具)。 -5.(插件开关)目前所有插件都以var enable = false;这一难看的句子开头,且从表格难以一眼看出哪些插件被启用了,建议提供集中的勾选框。 -6.(drawTip)V2.6.4的多重tip建议优化后重新加入样板,目前在事件中一次被npc给予多个道具还是很难看清楚的,比如样板1层给1破2炸3飞的老人。另外,drawTextContent下缘丢失的问题在iOS safari依然很明显。 -7.(表格优化)很多表格项的英文名本来能显示完,结果结尾多出三个点反而导致显示不完,如afterChangeFloor和updateCheckBlock,建议优化。顺便说一下,编辑器的右键菜单和快捷键仍然经常失灵,夜间模式在edge无法使用,ground层经常消失。 -8.(文件注册)动画预览时的音效名依然需要手打,不过可能也不方便做下拉框(文件太多)或二级大弹窗了。同理,nameMap建议拆散到各个文件注册的多选框中,每行提供一个额外的文本输入框“别名”即可(目前的实现好多人不知道怎么用)。另外,楼层属性bgm和标题画面bgm等本来是下拉框的场合建议改成弹窗选择。 -9.(完全信息)坚固怪和受光环影响的怪建议在详情框显示其原始能力,尤其是坚固和模仿,其实它们手册一级面板显示原值对玩家来说才是魔塔倡导的完全信息,变化后的值可以轻易口算。同理,楼传界面和浏览地图建议加一个按钮(可以是插件)来切换显示一些楼层属性,如上下楼点、楼传落点、本次楼传落点(这些点可以在地图或缩略图用不同颜色高亮显示)、ratio、ground的图标、几个勾选框、宽高、有无两个arrive事件、色调(尤其是是否为不透明的纯色)等。另外浏览地图界面的非缩略图建议像编辑器一样加上高亮刻度尺表示所在第几行第几列(此灵感来自秋橙的3D塔每走一步在状态栏实时显示xyz)。 +(?)1. 希望尝试修复2.6.x的高清UI、 +(x)1.2 自动元件通行性(勇士和阻击怪可在同种图块内部自由通行,但进出另一种图块则必须通过桥梁)、 +(x)1.3 仿rm光照和负色调(含true-light.js)等插件并加入样板, +(x)1.4. 2.7.2发布以来插件库有了一些新插件,也希望加入(该修的bug要修,比如什么==NaN)。 +(x)2. 部分rm功能:确定键触发(很多作者可能会摆一些挡路的可通行事件但又希望可以像绿点一样穿透,比如因为目标层/点有分歧而不能用绿点只能用红点的楼梯,那么就需要勇士站在此点按下轻按键7或其他什么数字键来触发该事件)、 +(x)2.1 斜向移动(插件库的磁铁特效,但blockly中的步伐口诀语法需要调整,最简单的调整方法是1不许省略,这样连续两个汉字就一定表示一个斜向了,还不影响接档) +(x)2.2 三行二列的自动元件、流体(草木茂盛处)、梯子(勇士始终脸朝上)、柜台的绘制,视频播放, +(N)2.3 动画多音效(可先不修改动画编辑器和导出器,给animate/json文件约定好语法并被drawAnimate/drawHeroAnimate执行即可), +(x)2.4 音频的变调变速和声道偏移、bgs(目前只能由作者自行用插件实现)和me(播放时bgm暂时淡出), +(x)2.5 另外建议提供bgm播放进度读写、多个bgm独立调节音量的API和事件, +(x)2.6 以及一个bgm循环插件,思路是事先约定每个bgm的循环起止点,并行检查是否越过终点,越过则跳转至起点。 +(N)3. 希望cannotMove(深蓝点)的高亮方式优化,显示出具体的禁行方向(如果嫌遮挡,可以提供一个按钮切换高亮方式)而不是只显示个深蓝点。 +(N)3.1 另外cannotMove目前只控制out不控制in,建议追加in +(?)4. 拖文件快速追加功能建议实现对RMVA规格的完整支持,即遇到四行三列图片时,取两帧则取左右列、取四帧则按2123排布, +(√)4.1 items.png则支持任意宽高(如拖动一张480*480px的tileset图片到items.png则追加225个道具)。 +(N)5.(插件开关)目前所有插件都以var enable = false;这一难看的句子开头,且从表格难以一眼看出哪些插件被启用了,建议提供集中的勾选框。 +(x)6.(drawTip)V2.6.4的多重tip建议优化后重新加入样板,目前在事件中一次被npc给予多个道具还是很难看清楚的,比如样板1层给1破2炸3飞的老人。另外,drawTextContent下缘丢失的问题在iOS safari依然很明显。 +(√)7.(表格优化)很多表格项的英文名本来能显示完,结果结尾多出三个点反而导致显示不完,如afterChangeFloor和updateCheckBlock,建议优化。顺便说一下,编辑器的右键菜单和快捷键仍然经常失灵,夜间模式在edge无法使用,ground层经常消失。 +(√)8.(文件注册)动画预览时的音效名依然需要手打,不过可能也不方便做下拉框(文件太多)或二级大弹窗了。 +(x)同理,nameMap建议拆散到各个文件注册的多选框中,每行提供一个额外的文本输入框“别名”即可(目前的实现好多人不知道怎么用)。 +(√)另外,楼层属性bgm和标题画面bgm等本来是下拉框的场合建议改成弹窗选择。 +(√)9.(完全信息)坚固怪和受光环影响的怪建议在详情框显示其原始能力,尤其是坚固和模仿,其实它们手册一级面板显示原值对玩家来说才是魔塔倡导的完全信息,变化后的值可以轻易口算。 +(x)同理,楼传界面和浏览地图建议加一个按钮(可以是插件)来切换显示一些楼层属性,如上下楼点、楼传落点、本次楼传落点(这些点可以在地图或缩略图用不同颜色高亮显示)、ratio、ground的图标、几个勾选框、宽高、有无两个arrive事件、色调(尤其是是否为不透明的纯色)等。 +(x)另外浏览地图界面的非缩略图建议像编辑器一样加上高亮刻度尺表示所在第几行第几列(此灵感来自秋橙的3D塔每走一步在状态栏实时显示xyz)。 10. ui._drawCenterFly建议在大地图时也提供缩略图方式显示(可以做成可当时切换),以方便玩家。 11.(显示文章)建议双击(或右击菜单中)同时预览所有立绘,现在一次预览一张图还是很不直观的。同理,其他一些被占用的功能也可以放进右击菜单,比如动画选坐标和跳跃选起点(已被z触完成)、UI多行文本绘制预览(现在必须塞进黄框) 12. “接受用户输入非负整数”建议改为魔塔样板4401的楼传那种界面(五个按钮,分别负责切换数位,在当前位加减1,和确定),并由作者指定位数,以优化观感和安全性且方便玩家。或者改成十个数字键和一个退格键也不错?