diff --git a/_docs/api.md b/_docs/api.md index ca17b40f..17b30fb2 100644 --- a/_docs/api.md +++ b/_docs/api.md @@ -355,6 +355,11 @@ getMappedName: fn(name: string) -> string getNakedStatus: fn(name: string) 获得勇士原始属性(无装备和衰弱影响) +getNextLvUpNeed: fn() -> number +获得下次升级需要的经验值。 +升级扣除模式下会返回经验差值;非扣除模式下会返回总共需要的经验值。 +如果无法进行下次升级,返回null。 + getRealStatus: fn(name: string) 计算主角的某个属性,包括百分比修正 例如:core.getRealStatus('atk'); // 计算主角的攻击力,包括百分比修正。战斗使用的就是这个值 @@ -1835,12 +1840,13 @@ fillArc: fn(name: string|CanvasRenderingContext2D, x: number, y: number, r: numb 在某个canvas上绘制一个扇形 参考资料:https://www.w3school.com.cn/tags/canvas_arc.asp -fillBoldText: fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string) +fillBoldText: fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string, maxWidth?: number) 在某个画布上绘制一个描边文字 text: 要绘制的文本 style: 绘制的样式 strokeStyle: 要绘制的描边颜色 font: 绘制的字体 +maxWidth: 最大宽度,超过此宽度会自动放缩 fillCircle: fn(name: string|CanvasRenderingContext2D, x: number, y: number, r: number, style?: string) 在某个canvas上绘制一个圆 @@ -1868,7 +1874,7 @@ fillText: fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: text: 要绘制的文本 style: 绘制的样式 font: 绘制的字体 -最大宽度,超过此宽度会自动放缩 +maxWidth: 最大宽度,超过此宽度会自动放缩 参考资料:https://www.w3school.com.cn/tags/canvas_filltext.asp getContextByName: fn(canvas: string|CanvasRenderingContext2D) -> CanvasRenderingContext2D diff --git a/_server/CodeMirror/defs.js b/_server/CodeMirror/defs.js index 0f44780c..3e18762e 100644 --- a/_server/CodeMirror/defs.js +++ b/_server/CodeMirror/defs.js @@ -2252,6 +2252,10 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [ "!doc": "根据级别的数字获取对应的名称,后者定义在全塔属性
例如:core.getLvName(); // 获取主角当前级别的名称,如“下级佣兵”
lv: 级别的数字,不填则视为主角当前的级别
返回值:级别的名称,如果不存在就还是返回数字", "!type": "fn(lv?: number) -> string|number" }, + "getNextLvUpNeed": { + "!doc": "获得下次升级需要的经验值。
升级扣除模式下会返回经验差值;非扣除模式下会返回总共需要的经验值。
如果无法进行下次升级,返回null。", + "!type": "fn() -> number" + }, "addStatus": { "!doc": "增减主角的某个属性,等价于core.setStatus(name, core.getStatus(name) + value)
例如:core.addStatus('atk', 100'); // 给主角攻击力加100
name: 属性的英文名
value: 属性的增量", "!type": "fn(name: string, value: number)" @@ -3574,8 +3578,8 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [ "!type": "fn(name: string|CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radius: number, style?: string, angle?: number)" }, "fillBoldText": { - "!doc": "在某个画布上绘制一个描边文字
text: 要绘制的文本
style: 绘制的样式
strokeStyle: 要绘制的描边颜色
font: 绘制的字体", - "!type": "fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string)" + "!doc": "在某个画布上绘制一个描边文字
text: 要绘制的文本
style: 绘制的样式
strokeStyle: 要绘制的描边颜色
font: 绘制的字体
maxWidth: 最大宽度,超过此宽度会自动放缩", + "!type": "fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string, maxWidth?: number)" }, "saveCanvas": { "!doc": "保存某个canvas状态", diff --git a/_server/table/comment.js b/_server/table/comment.js index d0fe2767..5dbfdbea 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -102,7 +102,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { } } }, - "items_template": { 'cls': 'items', 'name': '新物品' }, + "items_template": { 'cls': 'items', 'name': '新物品', 'canUseItemEffect': 'true' }, // --------------------------- 【怪物】相关的表格配置 --------------------------- // diff --git a/libs/control.js b/libs/control.js index 92c75826..92d3eb87 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2293,6 +2293,16 @@ control.prototype.getLvName = function (lv) { return ((core.firstData.levelUp||[])[lv-1]||{}).title || lv; } +////// 获得下个等级所需经验;如果不存在下个等级,返回null。 ////// +control.prototype.getNextLvUpNeed = function () { + if (!core.status.hero) return null; + if (core.status.hero.lv >= core.firstData.levelUp.length) return null; + var need = core.calValue(core.firstData.levelUp[core.status.hero.lv].need); + if (core.flags.statusBarItems.indexOf('levelUpLeftMode') >= 0) + return Math.max(need - core.getStatus('exp'), 0); + else return need; +} + ////// 设置某个自定义变量或flag ////// control.prototype.setFlag = function(name, value) { if (value == null) return this.removeFlag(name); diff --git a/libs/ui.js b/libs/ui.js index ce1afc8a..33445e29 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -130,7 +130,7 @@ ui.prototype.setFontForMaxWidth = function (name, text, maxWidth, font) { } ////// 在某个canvas上绘制粗体 ////// -ui.prototype.fillBoldText = function (name, text, x, y, style, strokeStyle, font) { +ui.prototype.fillBoldText = function (name, text, x, y, style, strokeStyle, font, maxWidth) { var ctx = this.getContextByName(name); if (!ctx) return; if (font) ctx.font = font; @@ -138,6 +138,9 @@ ui.prototype.fillBoldText = function (name, text, x, y, style, strokeStyle, font style = core.arrayToRGBA(style); if (!strokeStyle) strokeStyle = '#000000'; strokeStyle = core.arrayToRGBA(strokeStyle); + if (maxWidth != null) { + this.setFontForMaxWidth(ctx, text, maxWidth); + } ctx.strokeStyle = strokeStyle; ctx.lineWidth = 2; ctx.strokeText(text, x, y); diff --git a/project/functions.js b/project/functions.js index 89c5e00d..ae468e3c 100644 --- a/project/functions.js +++ b/project/functions.js @@ -1128,12 +1128,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 如果是自定义添加的状态栏,也需要在这里进行设置显示的数值 // 进阶 - if (core.flags.statusBarItems.indexOf('enableLevelUp') >= 0 && core.status.hero.lv < core.firstData.levelUp.length) { - var need = core.calValue(core.firstData.levelUp[core.status.hero.lv].need); - if (core.flags.statusBarItems.indexOf('levelUpLeftMode') >= 0) - core.setStatusBarInnerHTML('up', core.formatBigNumber(need - core.getStatus('exp')) || ""); - else - core.setStatusBarInnerHTML('up', core.formatBigNumber(need) || ""); + if (core.flags.statusBarItems.indexOf('enableLevelUp') >= 0) { + core.setStatusBarInnerHTML('up', core.formatBigNumber(core.getNextLvUpNeed()) || ""); } else core.setStatusBarInnerHTML('up', ""); // 钥匙 diff --git a/runtime.d.ts b/runtime.d.ts index 8b8cc5fa..5e23a11b 100644 --- a/runtime.d.ts +++ b/runtime.d.ts @@ -510,6 +510,13 @@ declare class control { */ getLvName(lv?: number): string | number + /** + * 获得下次升级需要的经验值。 + * 升级扣除模式下会返回经验差值;非扣除模式下会返回总共需要的经验值。 + * 如果无法进行下次升级,返回null。 + */ + getNextLvUpNeed() : number + /** * 设置一个flag变量 * @example core.setFlag('poison', true); // 令主角中毒 @@ -2021,7 +2028,7 @@ declare class ui { * @param style 绘制的样式 * @param font 绘制的字体 */ - fillText(name: CtxRefer, text: string, x: number, y: number, style: string, font: string): void + fillText(name: CtxRefer, text: string, x: number, y: number, style?: string, font?: string, maxWidth?: number): void /** * 在某个画布上绘制一个描黑边的文字 @@ -2030,7 +2037,7 @@ declare class ui { * @param strokeStyle 绘制的描边颜色 * @param font 绘制的字体 */ - fillBoldText(name: CtxRefer, text: string, x: number, y: number, style: string, strokeStyle: string, font: string): void + fillBoldText(name: CtxRefer, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string, maxWidth?: number): void /** * 绘制一个矩形。style可选为绘制样式