diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index b2ef109c..8fe686aa 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -1030,6 +1030,12 @@ function omitedcheckUpdateFunction(event) { }).sort(); } + // 对全局商店进行补全 + if ((type == 'openShop_s' || type == 'disableShop_s') && name == 'IdString_0') { + return Object.keys(core.status.shops).filter(function (one) { + return one != content && one.startsWith(content); + }).sort(); + } return []; } diff --git a/libs/ui.js b/libs/ui.js index 6aea41ff..115fb4d8 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -660,6 +660,14 @@ ui.prototype._uievent_drawSelector = function (data) { this._drawSelector(ctx, background, w, h); } +ui.prototype._clearUIEventSelector = function (codes) { + if (codes instanceof Array) { + codes.forEach(function (code) { core.ui._clearUIEventSelector(code); }); + return; + } + core.deleteCanvas('_uievent_selector_' + (codes || 0)); +} + ui.prototype._drawSelector = function (ctx, background, w, h, left, top) { left = left || 0; top = top || 0; diff --git a/project/plugins.js b/project/plugins.js index 12f2712b..b8a4776e 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -39,7 +39,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = // core.plugin.drawLight('ui', 0.95, [[25,11,46]]); // 在ui层绘制全图不透明度0.95,其中在(25,11)点存在一个半径为46的灯光效果。 // core.plugin.drawLight('test', 0.2, [[25,11,46,0.1]]); // 创建一个test图层,不透明度0.2,其中在(25,11)点存在一个半径为46的灯光效果,灯光中心不透明度0.1。 // core.plugin.drawLight('test2', 0.9, [[25,11,46],[105,121,88],[301,221,106]]); // 创建test2图层,且存在三个灯光效果,分别是中心(25,11)半径46,中心(105,121)半径88,中心(301,221)半径106。 - // core.plugin.drawLight('xxx', 0.3, [[25,11,46],[105,121,88,0.2]], 0.4); // 存在两个灯光效果,它们在内圈40%范围内保持全亮,且40%后才开始衰减。 + // core.plugin.drawLight('xxx', 0.3, [[25,11,46],[105,121,88,0.2]], 0.4); // 存在两个灯光效果,它们在内圈40%范围内保持全亮,40%后才开始衰减。 this.drawLight = function (name, color, lights, lightDec) { // 清空色调层;也可以修改成其它层比如animate/weather层,或者用自己创建的canvas @@ -245,16 +245,15 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = // Step 1: 背景和固定的几个文字 core.ui._createUIEvent(); core.clearMap('uievent'); - core.ui._uievent_drawSelector({ "code": 1 }); - core.ui._uievent_drawSelector({ "code": 2 }); + core.ui._clearUIEventSelector([1, 2]); core.setTextAlign('uievent', 'left'); core.setTextBaseline('uievent', 'top'); core.fillRect('uievent', 0, 0, 416, 416, 'black'); - core.ui._uievent_drawBackground({ background: 'winskin.png', x: 0, y: 0, width: 416, height: 56 }); - core.ui._uievent_drawBackground({ background: 'winskin.png', x: 0, y: 56, width: 312, height: 56 }); - core.ui._uievent_drawBackground({ background: 'winskin.png', x: 0, y: 112, width: 312, height: 304 }); - core.ui._uievent_drawBackground({ background: 'winskin.png', x: 312, y: 56, width: 104, height: 56 }); - core.ui._uievent_drawBackground({ background: 'winskin.png', x: 312, y: 112, width: 104, height: 304 }); + core.drawWindowSkin('winskin.png', 'uievent', 0, 0, 416, 56); + core.drawWindowSkin('winskin.png', 'uievent', 0, 56, 312, 56); + core.drawWindowSkin('winskin.png', 'uievent', 0, 112, 312, 304); + core.drawWindowSkin('winskin.png', 'uievent', 312, 56, 104, 56); + core.drawWindowSkin('winskin.png', 'uievent', 312, 112, 104, 304); core.setFillStyle('uievent', 'white'); core.setStrokeStyle('uievent', 'white'); core.fillText("uievent", "购买", 32, 74, 'white', bigFont); @@ -519,11 +518,10 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { "type": "function", "function": "function() { core.performItemShopAction(); }" } ] }, - { "type": "function", "function": "function () { " + - "core.deleteCanvas('uievent'); " + - "core.ui._uievent_drawSelector({ \"code\": 1 }); " + - "core.ui._uievent_drawSelector({ \"code\": 2 }); " + - "}" } + { + "type": "function", + "function": "function () { core.deleteCanvas('uievent'); core.ui._clearUIEventSelector([1, 2]); }" + } ]); } diff --git a/styles.css b/styles.css index 255fd81b..dec14381 100644 --- a/styles.css +++ b/styles.css @@ -295,22 +295,27 @@ p#name { #bg { z-index: 10; + image-rendering: pixelated; } #event { z-index: 30; + image-rendering: pixelated; } #hero { z-index: 40; + image-rendering: pixelated; } #event2 { z-index: 50; + image-rendering: pixelated; } #fg { z-index: 60; + image-rendering: pixelated; } #damage { diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 16110daa..19d89c27 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -12,14 +12,16 @@ (已完成!) 11. 建议修复勇士后退时跟随者的鬼畜行为,并推出一套能够对跟随者位置和朝向进行读写的API甚至事件,且允许这些信息被计入存档,以实现一些演出效果甚至游戏要素,如新新2用公主占位防冰块 (已完成!) 12. “设置怪物属性”事件的下拉框目前只支持一部分,另一部分只能通过手敲json再解析来得到,希望提供完整支持 13. 建议给core.moveAction(callback)提供对应的事件,用于在事件中让勇士像事件外一样移动,从而正常触发跑毒和阻激夹域捕等 -14. core.openShop()和对应的事件,建议在用于公共事件时简单地退化为“插入公共事件”而不要打断当前事件,把决定权交给作者 +(已完成!) 14. core.openShop()和对应的事件,建议在用于公共事件时简单地退化为“插入公共事件”而不要打断当前事件,把决定权交给作者 (已完成!) 15. “等待用户操作”虽然提供了场合块但还不支持将多个按键的场合合并(比如空格、回车和C键一般会被作者予以合并,执行内容如果只是大致相同也值得合并,在块内由作者根据flag再行分歧),建议支持一下 (已完成!) 16. “绘制描边文本”事件建议加一个“描边颜色”参数,目前只能描黑边 (已完成!) 17. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式 (已完成!) 18. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug(加大行距又会导致第一行的纵坐标难以估计),此bug在道具商店和1.3倍行距英文看的很明显 -19.(来自群友)建议给第一代全局商店的子选项像“显示选择项”一样提供图标、颜色和出现条件(注意长按的适配) +(已完成!) 19.(来自群友)建议给第一代全局商店的子选项像“显示选择项”一样提供图标、颜色和出现条件(注意长按的适配) (已完成!) 20. 很多事件对应的脚本有默认参数,但在事件中省略参数却会变成0,建议修复 +------------- + (已完成!) defaultGround全局可用 (已完成!) 对floorIds和图片进行检测 (已完成!) 删除绘图模式 @@ -38,7 +40,12 @@ (已完成!) 注释优化 (已完成!) 状态栏显示项的优化 (已完成!) 动画/音乐/音效自动补全 +(已完成!) 重构全局商店! +(已完成!) 读档时色调数据丢失 +圆角边框 +像素高分辨率问题 +------------- (不处理) 0. 部分文案的修改,如“地图编辑器”(启动服务.exe中)、“enemys”、“snipe” (造塔工具相关都给鹿神) 1. 便捷PS工具希望加入自定义单位宽高功能,希望把“白底转透明”增强为“纯色底转透明”(弹窗由作者输入RGB或RGBA值)。 @@ -106,7 +113,7 @@ (已完成!) 61. 在事件编辑器中进行地图选点时,有些事件指令虽然只能用于同楼层,但实际生效时勇士可能已经不在当前正在编辑的楼层(比如在一个楼层切换事件指令后)了,所以希望地图选点始终提供楼层下拉表 (文档相关给秋橙) 62. 希望在线文档介绍一下楼层和startText的独立开关的flag表示 63. 希望给core.moveAction(callback)函数提供一个对应的事件指令,用于在事件流处理中让勇士进行一些有游戏性意义(即非纯演出)的移动。如果做不到的话希望参照本文的46号issue作为原生脚本勾选async的例子讲解如何使用 -64. “打开全局商店”事件指令建议在用于公共事件版商店时简单地退化为“插入公共事件”而不要打断当前事件流,由作者在这个公共事件结尾去决定“立刻结束当前事件”还是不结束 +(已完成!) 64. “打开全局商店”事件指令建议在用于公共事件版商店时简单地退化为“插入公共事件”而不要打断当前事件流,由作者在这个公共事件结尾去决定“立刻结束当前事件”还是不结束 (已修复!) 65. “显隐贴图”的参数应为像素坐标而不是网格坐标,请修正在线文档的描述。同时建议加个淡入淡出时间参数,还建议贴图能像图片一样有透明度和被移动 (不处理) 66. 读档建议换个和floor.mp3不一样的音效 (不处理) 67. “画面震动”事件希望不要光左右晃,至少做成QQ窗口抖动的效果吧w @@ -118,7 +125,7 @@ 73. 画弧既然有现成的API,那建议也作为UI绘制事件提供。甚至希望提供画椭圆功能(长短轴水平或铅直的那种)参数为中心坐标和长短轴长度 (已完成!) 74. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式 (已完成!) 75. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug(加大行距又会导致第一行的纵坐标难以估计),此bug在道具商店和1.3倍行距英文看的很明显 -76. (来自群友)建议给第一代全局商店像“显示选择项”一样提供图标、颜色和出现条件 +(已完成!) 76. (来自群友)建议给第一代全局商店像“显示选择项”一样提供图标、颜色和出现条件 (已完成!增加正则匹配) 77. 建议给core.searchBlock()新增问号通配符(匹配一个任意字符) (已完成!) 78. 建议移除core.setInitData()并将其内容写在startText以方便作者仿照修改 (不处理;有跟随情况下处理很麻烦) 79. 建议给core.drawHero()添加纵横两个偏移参数(目前只有一个),以用于做一些斜向移动的演出