From 8484ff65b7fc90e96eb6c2421c1f02ec8040624f Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Thu, 14 May 2020 21:50:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=AA=E7=89=A9=E8=AF=A6=E7=BB=86=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E4=BD=BF=E7=94=A8drawTextContent=E7=BB=98=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/core.js | 4 ++++ libs/enemys.js | 4 ++-- libs/ui.js | 36 ++++++++++++------------------------ v2.x-final更新.txt | 7 ++++--- 4 files changed, 22 insertions(+), 29 deletions(-) diff --git a/libs/core.js b/libs/core.js index cc6c3c9e..09c5d5f4 100644 --- a/libs/core.js +++ b/libs/core.js @@ -239,6 +239,10 @@ core.prototype._init_flags = function () { core.values = core.clone(core.data.values); core.firstData = core.clone(core.data.firstData); this._init_sys_flags(); + + // 让你总是拼错! + window.on = true; + window.off = false; core.dom.versionLabel.innerText = core.firstData.version; core.dom.logoLabel.innerText = core.firstData.title; diff --git a/libs/enemys.js b/libs/enemys.js index 4c82a6fa..b4478955 100644 --- a/libs/enemys.js +++ b/libs/enemys.js @@ -86,7 +86,7 @@ enemys.prototype.getSpecialHint = function (enemy, special) { var hints = []; for (var i = 0; i < specials.length; i++) { if (this.hasSpecial(enemy, specials[i][0])) - hints.push(this._calSpecialContent(enemy, specials[i][1]) + ":" + this._calSpecialContent(enemy, specials[i][2])); + hints.push("\r[#FF6A6A]\\d"+this._calSpecialContent(enemy, specials[i][1]) + ":\\d\r[]" + this._calSpecialContent(enemy, specials[i][2])); } return hints; } @@ -94,7 +94,7 @@ enemys.prototype.getSpecialHint = function (enemy, special) { if (specials == null) return ""; for (var i = 0; i < specials.length; i++) { if (special == specials[i][0]) - return this._calSpecialContent(enemy, specials[i][1]) + ":" + this._calSpecialContent(enemy, specials[i][2]); + return "\r[#FF6A6A]\\d"+this._calSpecialContent(enemy, specials[i][1]) + ":\\d\r[]" + this._calSpecialContent(enemy, specials[i][2]); } return ""; } diff --git a/libs/ui.js b/libs/ui.js index b1ca9d0e..8050ec13 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -1875,8 +1875,8 @@ ui.prototype.drawBookDetail = function (index) { var left = 10, width = this.PIXEL - 2 * left, right = left + width; var content_left = left + 25, validWidth = right - content_left - 13; - var contents = core.splitLines("data", content, validWidth, this._buildFont(16, false)); - var height = Math.max(24 * contents.length + 55, 80), top = (this.PIXEL - height) / 2, bottom = top + height; + var height = Math.max(this.getTextContentHeight(content, {fontSize: 16, lineHeight: 24, maxWidth: validWidth}) + 58, 80), + top = (this.PIXEL - height) / 2, bottom = top + height; core.setAlpha('data', 0.9); core.fillRect('data', left, top, width, height, '#000000'); @@ -1884,7 +1884,7 @@ ui.prototype.drawBookDetail = function (index) { core.strokeRect('data', left - 1, top - 1, width + 1, height + 1, core.status.globalAttribute.borderColor, 2); - this._drawBookDetail_drawContent(enemy, contents, {top: top, content_left: content_left, bottom: bottom}); + this._drawBookDetail_drawContent(enemy, content, {top: top, content_left: content_left, bottom: bottom, validWidth: validWidth}); } ui.prototype._drawBookDetail_getInfo = function (index) { @@ -1917,7 +1917,7 @@ ui.prototype._drawBookDetail_mofang = function (enemy, texts) { var hp = enemy.hp; var delta = core.status.hero.atk - core.status.hero.def; if (delta0) { - texts.push("模仿临界计算器:(当前攻防差"+core.formatBigNumber(delta)+")"); + texts.push("\r[#FF6A6A]\\d模仿临界计算器:\\d\r[](当前攻防差"+core.formatBigNumber(delta)+")"); var u = []; this._drawBookDetail_mofang_getArray(hp).forEach(function (t) { if (u.length < 20) u.push(t); @@ -1968,7 +1968,7 @@ ui.prototype._drawBookDetail_vampire = function (enemy, texts) { } core.status.hero.hp = start; if (core.canBattle(enemy.id)) { - texts.push("打死该怪物最低需要生命值:"+core.formatBigNumber(start)); + texts.push("\r[#FF6A6A]\\d打死该怪物最低需要生命值:\\d\r[]"+core.formatBigNumber(start)); } core.status.hero.hp = nowHp; } @@ -1977,19 +1977,19 @@ ui.prototype._drawBookDetail_vampire = function (enemy, texts) { ui.prototype._drawBookDetail_hatred = function (enemy, texts) { if (core.enemys.hasSpecial(enemy.special, 17)) { - texts.push("当前仇恨伤害值:"+core.getFlag('hatred', 0)); + texts.push("\r[#FF6A6A]\\d当前仇恨伤害值:\\d\r[]"+core.getFlag('hatred', 0)); } } ui.prototype._drawBookDetail_turnAndCriticals = function (enemy, floorId, texts) { var damageInfo = core.getDamageInfo(enemy, null, null, null, floorId); - texts.push("战斗回合数:"+((damageInfo||{}).turn||0)); + texts.push("\r[#FF6A6A]\\d战斗回合数:\\d\r[]"+((damageInfo||{}).turn||0)); // 临界表 var criticals = core.enemys.nextCriticals(enemy, 8, null, null, floorId).map(function (v) { return core.formatBigNumber(v[0])+":"+core.formatBigNumber(v[1]); }); while (criticals[0]=='0:0') criticals.shift(); - texts.push("临界表:"+JSON.stringify(criticals)); + texts.push("\r[#FF6A6A]\\d临界表:\\d\r[]"+JSON.stringify(criticals)); var prevInfo = core.getDamageInfo(enemy, {atk: core.status.hero.atk-1}, null, null, floorId); if (prevInfo != null && damageInfo != null) { if (damageInfo.damage != null) damageInfo = damageInfo.damage; @@ -2000,26 +2000,14 @@ ui.prototype._drawBookDetail_turnAndCriticals = function (enemy, floorId, texts) } } -ui.prototype._drawBookDetail_drawContent = function (enemy, contents, pos) { +ui.prototype._drawBookDetail_drawContent = function (enemy, content, pos) { // 名称 core.setTextAlign('data', 'left'); core.fillText('data', enemy.name, pos.content_left, pos.top + 30, '#FFD700', this._buildFont(22, true)); - var content_top = pos.top + 57; + var content_top = pos.top + 44; - for (var i=0;i=0) { - var x1 = text.substring(0, index+1); - core.fillText('data', x1, pos.content_left, content_top, '#FF6A6A', this._buildFont(16, true)); - var len=core.calWidth('data', x1); - core.fillText('data', text.substring(index+1), pos.content_left+len, content_top, '#FFFFFF', this._buildFont(16, false)); - } - else { - core.fillText('data', contents[i], pos.content_left, content_top, '#FFFFFF', this._buildFont(16, false)); - } - content_top+=24; - } + this.drawTextContent('data', content, {left: pos.content_left, top: content_top, maxWidth: pos.validWidth, + fontSize: 16, lineHeight: 24}); } ////// 绘制楼层传送器 ////// diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index a04d2b2f..866c8570 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -31,10 +31,11 @@ 初始化&读档优化:不一次读取全部楼层并创建 (已完成!) 绿钥匙进状态栏 (已完成!) 图块ID不可全数字 -怪物详细信息富文本化 +(已完成!) 怪物详细信息富文本化 (已完成!) for和forEach事件 (已完成!) 转向:顺时针/逆时针/反向 -事件转向 +(已完成!) 事件转向 +(已完成!) 修复core.removeBlock隐藏和删除问题 (已完成!) 合并数值操作事件 (已完成!) fromLoad,聚集问题 (已完成!) 注释优化 @@ -74,7 +75,7 @@ (已完成!) 22. betweenAttackMax在被四个怪同时夹击时(比如上下楼后或通过事件使勇士和其中一只怪重合了)目前是以上下方向的怪为准,建议在表格注释中予以强调,更合理的做法是在两种怪的战损中取max或min (不处理) 23. displayIdInBook属性不能用于夹击QAQ,同时建议给core.getBlockId()追加一个“如果是怪物,是否按displayIdInBook进行映射”的参数。此外此属性会导致core.hasEnemyLeft()在指定id时失真(不一定是坏事) (已完成!) 24. core.hasEnemyLeft()不应该调用core.getCurrentEnemys(),因为后者是用于手册的,它为了按伤害升序排列而调用了core.getDamageInfo(),而core.getDamageInfo()又会调用core.getEnemyInfo(),但作者完全可能在core.getDamageInfo()或core.getEnemyInfo()中使用core.hasEnemyLeft()判断特定id的怪物是否存在从而实现一些类似光环的效果(如协同),这样就会造成死递归 -25. 建议新增一个类似“勇士转向”的事件指令————“图块转向”,用于NPC甚至怪物(比如基于索引/数字对4取余),毕竟用转变图块的话不够通用 +(已完成!) 25. 建议新增一个类似“勇士转向”的事件指令————“图块转向”,用于NPC甚至怪物(比如基于索引/数字对4取余),毕竟用转变图块的话不够通用 (已完成!) 26. “勇士转向”会导致跟随者聚集,这不利于演出,建议改成像core.turnHero()一样不聚集跟随者 (已完成!) 27. 勇士后退时跟随者很鬼畜,建议优化(每步聚集算是一种简陋的办法) (不处理) 28. 勇士的移动帧只有2,建议改为允许作者指定