getNextLvUpNeed & maxWidth in fillBoldText

This commit is contained in:
ckcz123 2021-07-13 11:01:30 +08:00
parent 5bcf8a5f6d
commit d0babc84e9
7 changed files with 40 additions and 14 deletions

View File

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

View File

@ -2252,6 +2252,10 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [
"!doc": "根据级别的数字获取对应的名称,后者定义在全塔属性<br/>例如core.getLvName(); // 获取主角当前级别的名称,如“下级佣兵”<br/>lv: 级别的数字,不填则视为主角当前的级别<br/>返回值:级别的名称,如果不存在就还是返回数字",
"!type": "fn(lv?: number) -> string|number"
},
"getNextLvUpNeed": {
"!doc": "获得下次升级需要的经验值。<br/>升级扣除模式下会返回经验差值;非扣除模式下会返回总共需要的经验值。<br/>如果无法进行下次升级返回null。",
"!type": "fn() -> number"
},
"addStatus": {
"!doc": "增减主角的某个属性等价于core.setStatus(name, core.getStatus(name) + value)<br/>例如core.addStatus('atk', 100'); // 给主角攻击力加100<br/>name: 属性的英文名<br/>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": "在某个画布上绘制一个描边文字<br/>text: 要绘制的文本<br/>style: 绘制的样式<br/>strokeStyle: 要绘制的描边颜色<br/>font: 绘制的字体",
"!type": "fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string)"
"!doc": "在某个画布上绘制一个描边文字<br/>text: 要绘制的文本<br/>style: 绘制的样式<br/>strokeStyle: 要绘制的描边颜色<br/>font: 绘制的字体<br/>maxWidth: 最大宽度,超过此宽度会自动放缩",
"!type": "fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string, maxWidth?: number)"
},
"saveCanvas": {
"!doc": "保存某个canvas状态",

View File

@ -102,7 +102,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
}
}
},
"items_template": { 'cls': 'items', 'name': '新物品' },
"items_template": { 'cls': 'items', 'name': '新物品', 'canUseItemEffect': 'true' },
// --------------------------- 【怪物】相关的表格配置 --------------------------- //

View File

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

View File

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

View File

@ -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', "");
// 钥匙

11
runtime.d.ts vendored
View File

@ -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可选为绘制样式