2024-09-16 17:09:36 +08:00
|
|
|
/*
|
|
|
|
|
文件名:Lenheart_Character_Info_Class.nut
|
|
|
|
|
路径:Base/UI/Lenheart_Character_Info_Class.nut
|
|
|
|
|
创建日期:2024-08-27 12:13
|
|
|
|
|
文件用途:个人信息属性面板
|
|
|
|
|
*/
|
2025-05-27 21:24:22 +08:00
|
|
|
return;
|
2024-09-16 17:09:36 +08:00
|
|
|
class Lenheart_Character_Info_ClassC extends LenheartNewUI_Windows {
|
|
|
|
|
//调试模式
|
|
|
|
|
// DeBugMode = true;
|
|
|
|
|
|
|
|
|
|
//不是窗口
|
|
|
|
|
NoWindow = true;
|
|
|
|
|
|
|
|
|
|
//是否可见
|
|
|
|
|
Visible = false;
|
|
|
|
|
|
|
|
|
|
//图标路径
|
|
|
|
|
IconPath = "interface2/profile/profile_icon1.img";
|
|
|
|
|
|
|
|
|
|
//我的信息
|
|
|
|
|
MyInfo = null;
|
|
|
|
|
|
|
|
|
|
//滚轮偏移值
|
|
|
|
|
YOffset = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function My_GetCharacterInfoCallBack(Chunk) {
|
|
|
|
|
local Jso = Json.Decode(Chunk);
|
|
|
|
|
MyInfo = Jso.Attribute;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//初始化
|
|
|
|
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
|
|
|
|
Childrens = [];
|
|
|
|
|
//注册控件
|
|
|
|
|
RegisterWidget();
|
|
|
|
|
|
|
|
|
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
|
|
|
|
Pack_Control.rawset(20069014, My_GetCharacterInfoCallBack.bindenv(this));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegisterWidget() {
|
|
|
|
|
// //关闭按钮
|
|
|
|
|
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
|
|
|
|
// CloseButton.OnClick = function() {
|
|
|
|
|
// this.Visible = false;
|
|
|
|
|
// }.bindenv(this);
|
|
|
|
|
// Childrens.append(CloseButton);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//绘制主界面
|
|
|
|
|
function DrawMain(obj) {
|
|
|
|
|
DrawInfo(obj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function CheckPosInDrawBox(PosY) {
|
|
|
|
|
if ((PosY + YOffset) >= 0 && (PosY + YOffset)< 144) return true;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//绘制信息
|
|
|
|
|
function DrawInfo(obj) {
|
|
|
|
|
if (MyInfo) {
|
|
|
|
|
|
|
|
|
|
//生命魔法值
|
|
|
|
|
local PosOffset = 0;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 0, X + 4, Y + 3 + YOffset);
|
|
|
|
|
L_sq_DrawCode("HP", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local HpStr = MyInfo.CurHp.tostring() + "/" + MyInfo.MaxHp.tostring();
|
|
|
|
|
L_sq_DrawCode(HpStr, X + 128 - LenheartTextClass.GetStringLength(HpStr), Y + 4 + (0 * 18) + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 1, X + 130, Y + 3 + YOffset);
|
|
|
|
|
L_sq_DrawCode("MP", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local HpStr = MyInfo.CurMp.tostring() + "/" + MyInfo.MaxMp.tostring();
|
|
|
|
|
L_sq_DrawCode(HpStr, X + 248 - LenheartTextClass.GetStringLength(HpStr), Y + 4 + (0 * 18) + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//力量智力
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 2, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("力量", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.Strength.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 3, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("智力", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.Intellect.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//体力精神
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 4, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("体力", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.Vitality.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 5, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("精神", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.Spirit.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//物理攻击魔法攻击
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 6, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("物理攻击", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.PhysicalAttack.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 7, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("魔法攻击", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.MagicalAttack.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//独立攻击力
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 31, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("独立攻击力(物理/魔法)", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.IndependentAttack.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 248 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//物理防御魔法防御
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 8, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("物理防御", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.PhysicalDefend.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 9, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("魔法防御", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.MagicalDefend.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(150, 255, 30, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//物理暴击 魔法暴击
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 10, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("物理暴击", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = format("%0.1f%%", MyInfo.PhysicalCrit);
|
|
|
|
|
L_sq_DrawCode(Str, X + 133 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 11, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("魔法暴击", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = format("%0.1f%%", MyInfo.MagicalCrit);
|
|
|
|
|
L_sq_DrawCode(Str2, X + 253 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//攻击速度 释放速度
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 12, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("攻击速度", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = format("%0.1f%%", MyInfo.AttackSpeed);
|
|
|
|
|
L_sq_DrawCode(Str, X + 133 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 13, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("释放速度", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = format("%0.1f%%", MyInfo.ReleaseSpeed);
|
|
|
|
|
L_sq_DrawCode(Str2, X + 253 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//移动速度 抗魔
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 14, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("移动速度", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = format("%0.1f%%", MyInfo.MoveSpeed);
|
|
|
|
|
L_sq_DrawCode(Str, X + 133 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 15, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("抗魔", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.AntiMagic.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//命中率 回避率
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 16, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("命中率", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = format("%0.1f%%", MyInfo.HitRate);
|
|
|
|
|
L_sq_DrawCode(Str, X + 133 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 17, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("回避率", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = format("%0.1f%%", MyInfo.DodgeRate);
|
|
|
|
|
L_sq_DrawCode(Str2, X + 253 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//HP恢复量 MP恢复量
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 18, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("HP恢复量", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.HPRecovery.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 19, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("MP恢复量", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.MPRecovery.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//僵直度 硬直
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 20, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("僵直度", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.StunRate.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 21, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("硬直", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.StunResist.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//火属性强化 火属性抗性
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 22, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("火属性强化", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.FireStrength.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 23, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("火属性抗性", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.FireResist.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//冰属性强化 冰属性抗性
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 24, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("冰属性强化", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.IceStrength.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 25, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("冰属性抗性", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.IceResist.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//光属性强化 光属性抗性
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 26, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("光属性强化", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.LightStrength.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 27, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("光属性抗性", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.LightResist.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//暗属性强化 暗属性抗性
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 28, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("暗属性强化", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.DarkStrength.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 29, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("暗属性抗性", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.DarkResist.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//名望值 罪恶值
|
|
|
|
|
PosOffset += 18;
|
|
|
|
|
if (CheckPosInDrawBox(PosOffset)) {
|
|
|
|
|
L_sq_DrawImg(IconPath, 53, X + 4, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("名望值", X + 20, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str = MyInfo.Fame.tostring();
|
|
|
|
|
L_sq_DrawCode(Str, X + 128 - LenheartTextClass.GetStringLength(Str), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
|
|
|
|
|
L_sq_DrawImg(IconPath, 45, X + 130, Y + 3 + PosOffset + YOffset);
|
|
|
|
|
L_sq_DrawCode("最终伤害", X + 148, Y + 4 + PosOffset + YOffset, sq_RGBA(255, 255, 255, 250), 0, 1);
|
|
|
|
|
local Str2 = MyInfo.FinalDamage.tostring();
|
|
|
|
|
L_sq_DrawCode(Str2, X + 248 - LenheartTextClass.GetStringLength(Str2), Y + 4 + PosOffset + YOffset, sq_RGBA(251, 251, 251, 250), 0, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Show(obj) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RealShow(obj) {
|
|
|
|
|
|
|
|
|
|
DrawMain(obj);
|
|
|
|
|
LenheartNewUI_Windows.Show(obj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//override
|
|
|
|
|
//鼠标滚轮事件回调
|
|
|
|
|
function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
|
|
|
|
|
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X, Y, Width, Height)) {
|
|
|
|
|
if (Flag) {
|
|
|
|
|
if (YOffset< 0) YOffset += 18;
|
|
|
|
|
}
|
|
|
|
|
if (!Flag) {
|
|
|
|
|
if (YOffset > (-145)) YOffset -= 18;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//调用原生方法
|
|
|
|
|
LenheartNewUI_Windows.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GetMyInfoFlag = false;
|
|
|
|
|
|
|
|
|
|
//逻辑入口
|
|
|
|
|
function Proc(obj) {
|
|
|
|
|
Visible = false;
|
|
|
|
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
|
|
|
|
|
|
|
|
|
local WindowX = sq_GetPopupWindowMainCotrol(74);
|
|
|
|
|
|
|
|
|
|
if (!WindowX) {
|
|
|
|
|
GetMyInfoFlag = false;
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-15 10:32:19 +08:00
|
|
|
if (!WindowX) return;
|
2024-09-16 17:09:36 +08:00
|
|
|
|
|
|
|
|
if (!GetMyInfoFlag) {
|
|
|
|
|
GetMyInfoFlag = true;
|
|
|
|
|
local T = {
|
|
|
|
|
op = 20069013,
|
|
|
|
|
Info = Lenheart_Character_GetAttribute(null)
|
|
|
|
|
}
|
|
|
|
|
SendPackEx(T);
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-15 10:32:19 +08:00
|
|
|
X = Base_X;
|
|
|
|
|
Y = Base_Y;
|
2024-09-16 17:09:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Base_X = 0;
|
|
|
|
|
Base_Y = 0;
|
|
|
|
|
|
2024-11-15 10:32:19 +08:00
|
|
|
function SyncState(Args) {
|
|
|
|
|
Base_X = Args[0] + 800;
|
|
|
|
|
Base_Y = Args[1] - 174;
|
|
|
|
|
local obj = sq_getMyCharacter();
|
|
|
|
|
RealShow(obj);
|
|
|
|
|
Visible = true;
|
2024-09-16 17:09:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2024-11-15 10:32:19 +08:00
|
|
|
DrawCodeCallBackFunc.Rindro_Character_Info <- function(Args) {
|
2024-09-16 17:09:36 +08:00
|
|
|
if (getroottable().rawin("Lenheart_Character_Info_Class_Obj")) {
|
|
|
|
|
local MyWindow = getroottable().rawget("Lenheart_Character_Info_Class_Obj");
|
2024-11-15 10:32:19 +08:00
|
|
|
MyWindow.SyncState(Args);
|
2024-09-16 17:09:36 +08:00
|
|
|
}
|
2024-11-15 10:32:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//个人信息窗口逻辑
|
|
|
|
|
function L_Character_Info_Window(WindowObject) {
|
2025-05-27 21:24:22 +08:00
|
|
|
return false;
|
2024-11-15 10:32:19 +08:00
|
|
|
// //返回Flase 原逻辑继续执行 返回Tue 原逻辑终止执行
|
|
|
|
|
// local Flag = false;
|
|
|
|
|
// if (getroottable().rawin("Lenheart_Character_Info_Class_Obj")) {
|
|
|
|
|
// local MyWindow = getroottable().rawget("Lenheart_Character_Info_Class_Obj");
|
|
|
|
|
// local Ret = MyWindow.SyncState(WindowObject);
|
|
|
|
|
// if (Ret) Flag = true;
|
|
|
|
|
// }
|
|
|
|
|
// return Flag;
|
2024-09-16 17:09:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getroottable().rawdelete("Lenheart_Character_Info_Class_Obj");
|
|
|
|
|
|
|
|
|
|
function Lenheart_Character_Info_Class_Fun(obj) {
|
|
|
|
|
local RootTab = getroottable();
|
|
|
|
|
if (!RootTab.rawin("Lenheart_Character_Info_Class_Obj")) {
|
|
|
|
|
RootTab.rawset("Lenheart_Character_Info_Class_Obj", LenheartNewUI_CreateWindow(Lenheart_Character_Info_ClassC, "个人信息属性面板窗口", 0, 0, 263, 146, 0));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getroottable()["LenheartFuncTab"].rawset("Lenheart_Character_Info_ClassFuncN", Lenheart_Character_Info_Class_Fun);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Lenheart_Other_Character_Info_ClassC extends Lenheart_Character_Info_ClassC {
|
|
|
|
|
//调试模式
|
|
|
|
|
// DeBugMode = true;
|
|
|
|
|
|
|
|
|
|
//不是窗口
|
|
|
|
|
NoWindow = true;
|
|
|
|
|
|
|
|
|
|
//是否可见
|
|
|
|
|
Visible = false;
|
|
|
|
|
|
|
|
|
|
//图标路径
|
|
|
|
|
IconPath = "interface2/profile/profile_icon1.img";
|
|
|
|
|
|
|
|
|
|
//我的信息
|
|
|
|
|
MyInfo = null;
|
|
|
|
|
|
|
|
|
|
//滚轮偏移值
|
|
|
|
|
YOffset = 0;
|
|
|
|
|
|
|
|
|
|
function Other_GetCharacterInfoCallBack(Chunk) {
|
|
|
|
|
local Jso = Json.Decode(Chunk);
|
|
|
|
|
MyInfo = Jso.Attribute;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
|
|
|
|
Childrens = [];
|
|
|
|
|
//注册控件
|
|
|
|
|
RegisterWidget();
|
|
|
|
|
|
|
|
|
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
|
|
|
|
Pack_Control.rawset(20069012, Other_GetCharacterInfoCallBack.bindenv(this));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegisterWidget() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Show(obj) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DrawMain(obj) {
|
|
|
|
|
DrawInfo(obj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RealShow(obj) {
|
|
|
|
|
DrawMain(obj);
|
|
|
|
|
LenheartNewUI_Windows.Show(obj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//override
|
|
|
|
|
//鼠标滚轮事件回调
|
|
|
|
|
function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
|
|
|
|
|
|
|
|
|
|
if (Flag) {
|
|
|
|
|
if (YOffset< 0) YOffset += 18;
|
|
|
|
|
}
|
|
|
|
|
if (!Flag) {
|
|
|
|
|
if (YOffset > (-145)) YOffset -= 18;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//调用原生方法
|
|
|
|
|
LenheartNewUI_Windows.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//逻辑入口
|
|
|
|
|
function Proc(obj) {
|
|
|
|
|
Visible = false;
|
|
|
|
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
|
|
|
|
|
|
|
|
|
local WindowX = sq_GetPopupWindowMainCotrol(74);
|
|
|
|
|
if (!WindowX || !OldWindowAddress) return;
|
|
|
|
|
X = L_sq_RA(OldWindowAddress + 0x14);
|
|
|
|
|
Y = L_sq_RA(OldWindowAddress + 0x18) + 154;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
OldWindowAddress = null;
|
|
|
|
|
|
|
|
|
|
function SyncState(Address) {
|
|
|
|
|
OldWindowAddress = Address;
|
|
|
|
|
local obj = sq_getMyCharacter();
|
|
|
|
|
RealShow(obj);
|
|
|
|
|
Visible = true;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//他人信息窗口逻辑
|
|
|
|
|
function L_Other_Character_Info_Window(WindowObject) {
|
2025-05-27 21:24:22 +08:00
|
|
|
return false;
|
2024-09-16 17:09:36 +08:00
|
|
|
//返回Flase 原逻辑继续执行 返回Tue 原逻辑终止执行
|
|
|
|
|
local Flag = false;
|
|
|
|
|
if (getroottable().rawin("Lenheart_Other_Character_Info_Class_Obj")) {
|
|
|
|
|
local MyWindow = getroottable().rawget("Lenheart_Other_Character_Info_Class_Obj");
|
|
|
|
|
local Ret = MyWindow.SyncState(WindowObject);
|
|
|
|
|
if (Ret) Flag = true;
|
|
|
|
|
}
|
|
|
|
|
return Flag;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getroottable().rawdelete("Lenheart_Other_Character_Info_Class_Obj");
|
|
|
|
|
|
|
|
|
|
function Lenheart_Other_Character_Info_Class_Fun(obj) {
|
|
|
|
|
local RootTab = getroottable();
|
|
|
|
|
if (!RootTab.rawin("Lenheart_Other_Character_Info_Class_Obj")) {
|
|
|
|
|
RootTab.rawset("Lenheart_Other_Character_Info_Class_Obj", LenheartNewUI_CreateWindow(Lenheart_Other_Character_Info_ClassC, "他人信息属性面板窗口", 0, 0, 263, 146, 0));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getroottable()["LenheartFuncTab"].rawset("Lenheart_Other_Character_Info_ClassFuncN", Lenheart_Other_Character_Info_Class_Fun);
|