动画音效补全 & 原始数值

This commit is contained in:
ckcz123 2020-10-18 12:02:48 +08:00
parent 0e1f4242d6
commit 8b6ff17c53
9 changed files with 84 additions and 28 deletions

View File

@ -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
: '不改变'|'距离顶部'|'居中'|'距离底部'

View File

@ -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);

View File

@ -754,6 +754,7 @@ editor_ui_wrapper = function (editor) {
}
// 显示每一项内容
var hasAudio = false;
var html = "<p style='margin-left: 10px; line-height: 25px'>";
html += "<button onclick='editor.uievent._selectAllMaterial(true)'>全选</button>"+
"<button style='margin-left: 10px' onclick='editor.uievent._selectAllMaterial(false)'>全不选</button><br/>";
@ -765,7 +766,7 @@ editor_ui_wrapper = function (editor) {
html += '<br style="display:none"/><img key="'+directory+one+'" style="display:none; max-width: 100%"/>';
}
// 试听音频
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 += "<button onclick='editor.uievent._previewMaterialAudio(this)' style='margin-left: 10px'>播放</button>";
html += `<small style='display:none; margin-left: 15px'>0:00 / 0:00</small><br style="display:none"/>
<audio preload="none" src="${directory+one}" ontimeupdate="editor.uievent._previewMaterialAudio_onTimeUpdate(this)"></audio>
@ -773,17 +774,21 @@ editor_ui_wrapper = function (editor) {
}
// 预览动画
if (directory.indexOf('animates') >= 0) {
var audios = Object.keys(core.material.sounds).sort().join(",");
html += "<button onclick='editor.uievent._previewMaterialAnimate(this)' style='margin-left: 10px'>预览</button>";
html += `<span style="display:none; margin-left: 10px" key="${directory+one+'.animate'}"><br/>音效:<input type="text" />
html += `<span style="display:none; margin-left: 10px" key="${directory+one+'.animate'}"><br/>音效
<input type="text" class="awesomplete" data-list="${audios}" data-minchars="1" data-autofirst="true"/>
<button onclick="editor.uievent._previewMaterialAnimate_previewSound(this)" style='marin-left: 10px'>试听</button>
<button onclick="editor.uievent._previewMaterialAnimate_saveSound(this)">保存</button><br/>
</span>`;
hasAudio = true;
}
html += '<br/>';
});
html += "</p>";
html += "<p style='margin-left: 10px'><small>如果文件未在此列表显示,请检查文件名是否合法(只能由数字字母下划线横线和点组成),后缀名是否正确。</small></p>";
uievent.elements.extraBody.innerHTML = html;
if (hasAudio) new Awesomplete(".awesomplete");
});
}

View File

@ -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"
},

View File

@ -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内容"
},

View File

@ -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');

View File

@ -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];

View File

@ -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)) {

View File

@ -1,7 +1,12 @@
√:已完成
x现在或未来暂时没有做的打算
?:待定中
N可能影响接档等下一个版本再考虑
2.7.2改版和多语言版中做出的功能性改进:
1. terrains.png中追加了14种薄墙图块不可出入方向一致画在非事件层可使勇士和阻击怪无法穿过和仿rm柜台但没有向下延伸绘制的效果。
2. 怪物追加了批量战后事件比照了道具的useItemEvent和其他图块的script此事件对同种任何怪物生效移动/跳跃后依然生效。
?2.1 炸弹只炸面前的情况增加了触发两种战后事件,以方便作者。
x2.1 炸弹只炸面前的情况增加了触发两种战后事件,以方便作者。
x3. 怪物追加了攻击勇士的动画,该动画存在时会作为勇士攻击怪物动画的回调,天降强制战斗时则覆盖勇士攻击怪物的动画。
x4. 插件编写init中追加了两个API用来将project\enemys.js转换成csv格式或转换回来以方便作者读写希望此思路也用于其他文件如project\maps.js来方便通行性等属性的读写。其中批量战后事件的存储方式参考了自定义录像项的要求即JSON.stringify再core.encodeBase64
5. core.stairExists()改为了始终允许87到94号图块毕竟“不想允许这些图块的作者只需要换别的素材”而“想允许这些图块的作者则不得不魔改/复写函数或者开启平面模式,但该作者未必需求玩家飞回上次离开的位置”。
@ -12,7 +17,7 @@
x7.3 UI绘制的颜色改成了注释的浅紫色各种子场合块的颜色改成了入口方块的深紫色以和地图处理类的浅蓝色相区分。
x8. 修复了Math一元运算值块转换为json时的语法错误追加了部分函数。
x8.1 drawTip事件追加了第几帧的参数。
x9. 玩家设置中追加了左撇子模式开启后wsad起方向键的作用ijkl起原wsad的SL作用以方便键鼠并用。
?9. 玩家设置中追加了左撇子模式开启后wsad起方向键的作用ijkl起原wsad的SL作用以方便键鼠并用。
10. 移除了部分引用极少的函数如仇恨怪详情、claerTip和
x10.1 tryUseItem改成了直接inline从道具栏使用道具失败时不再closePanel以方便玩家继续选择其他道具破炸冰这三个先斩后奏的就没办法了
11. 快速追加npc48一键绑定朝向改为只绑定最后四个以免影响前面可能的单朝向npc
@ -24,7 +29,7 @@
x14. drawChoices选择灰项增加了音效此音效还用在了其他类似的场合。希望样板多一些这样的小细节并提供rm那样的映射表来修改音效而不是只能替换文件毕竟替换文件有格式限制。样板的很多系统行为缺少音效如开关菜单等系统UI时、闪烁光标和黄框位置变化时。建议能提供的都提供出来胖老鼠和新新那么多音效有了解包出的文件还难以还原不丢人么。样板3层和h5胖老鼠对话靠的还是无数手动播放音效录像高倍速播放如果听感不好的话可以忽略。
15. 放宽了音频文件的格式限制如追加了m4a、m4r、flac等毕竟作者可能会选择其他的渠道传播。
x16. animate这个后缀名修改为了json以方便文本编辑器等程序去识别另外某些h5游戏网站在发布时会限制上传的文件格式使用标准后缀也有利于作者。
?17. flyTo中修改了楼层属性flyPoint的生效方式改成了作为stair参数生效而不是覆盖heroLoc两个相关事件的stair下拉框也提供了flyPoint项。
17. flyTo中修改了楼层属性flyPoint的生效方式改成了作为stair参数生效而不是覆盖heroLoc两个相关事件的stair下拉框也提供了flyPoint项。
18. 楼层属性canFlyTo拆成了两项即canFlyTo和canFlyFrom以方便作者个性化。
19. getSpecials由yzm优化了配色优化了固伤属性的描述可被负伤抵消
x20. 难度单词为空字符串时显示“竖屏数字键”以提示竖屏玩家。另外希望修复读档等场合红一下的bug
@ -40,15 +45,30 @@
0.1008加入一个flag来控制当前是否允许存档因为天气色调bgm进存档的情况下会屏蔽楼层切换不进存档的话玩家原地SL又不保留。
0.1. 录像播放中加一个百分比(二次录制长度/原录像长度)显示,
x0.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.drawTipV2.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、
x1.2 自动元件通行性(勇士和阻击怪可在同种图块内部自由通行,但进出另一种图块则必须通过桥梁)、
x1.3 仿rm光照和负色调含true-light.js等插件并加入样板
x1.4. 2.7.2发布以来插件库有了一些新插件也希望加入该修的bug要修比如什么==NaN
x2. 部分rm功能确定键触发很多作者可能会摆一些挡路的可通行事件但又希望可以像绿点一样穿透比如因为目标层/点有分歧而不能用绿点只能用红点的楼梯那么就需要勇士站在此点按下轻按键7或其他什么数字键来触发该事件
x2.1 斜向移动插件库的磁铁特效但blockly中的步伐口诀语法需要调整最简单的调整方法是1不许省略这样连续两个汉字就一定表示一个斜向了还不影响接档
x2.2 三行二列的自动元件、流体(草木茂盛处)、梯子(勇士始终脸朝上)、柜台的绘制,视频播放,
N2.3 动画多音效可先不修改动画编辑器和导出器给animate/json文件约定好语法并被drawAnimate/drawHeroAnimate执行即可
x2.4 音频的变调变速和声道偏移、bgs目前只能由作者自行用插件实现和me播放时bgm暂时淡出
x2.5 另外建议提供bgm播放进度读写、多个bgm独立调节音量的API和事件
x2.6 以及一个bgm循环插件思路是事先约定每个bgm的循环起止点并行检查是否越过终点越过则跳转至起点。
N3. 希望cannotMove深蓝点的高亮方式优化显示出具体的禁行方向如果嫌遮挡可以提供一个按钮切换高亮方式而不是只显示个深蓝点。
N3.1 另外cannotMove目前只控制out不控制in建议追加in
?4. 拖文件快速追加功能建议实现对RMVA规格的完整支持即遇到四行三列图片时取两帧则取左右列、取四帧则按2123排布
4.1 items.png则支持任意宽高如拖动一张480*480px的tileset图片到items.png则追加225个道具
N5.插件开关目前所有插件都以var enable = false;这一难看的句子开头,且从表格难以一眼看出哪些插件被启用了,建议提供集中的勾选框。
x6.drawTipV2.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和确定并由作者指定位数以优化观感和安全性且方便玩家。或者改成十个数字键和一个退格键也不错