DOF/sqr/User/UI/Window/4_Personalinfo/Personalinfo_RoleInfoPage.nut

492 lines
15 KiB
Plaintext

/*
文件名:Personalinfo_RoleInfoPage.nut
路径:User/UI/Window/4_Personalinfo/Personalinfo_RoleInfoPage.nut
创建日期:2025-01-09 13:51
文件用途: 个人信息-角色信息页面
*/
// 角色信息
class roleInfoPage extends Yosin_CommonUi {
brown = sq_RGBA(160, 132, 75, 255);
green = sq_RGBA(74, 161, 87, 255);
Canvas = null;
constructor(gX, gY) {
local w = 266;
local h = 465;
base.constructor( gX, gY, w, h);
// 创建画布
Canvas = CL_CanvasObject();
// 重设大小并清空
Canvas.ResizeAndClear(w, h);
// 开始绘制
Canvas.BeginDraw();
// 绘制
DrawWidget();
// 结束绘制
Canvas.EndDraw();
// 添加画布
Addchild(Canvas);
// 名称变更记录按钮
local nameChangeRecordBtn = Yosin_BaseButton(70, 7, 18, 17, "sprite/interface/newstyle/windows/inventory/inventory.img", 106);
nameChangeRecordBtn.DownSimulateOffset = false;
AddUIChild(nameChangeRecordBtn);
// 底部四个按钮
RegisterBottomButton();
}
function DrawWidget() {
// 背景
local backGround = CL_SpriteFrameObject("sprite/interface2/profile/profile.img", 60);
Canvas.DrawSpriteFrame(backGround, 0, 0);
// 上半部分 装备展示
local equipment = Personalinfo_CharactersEquipment();
Canvas.DrawSprite(equipment);
// 名称 等级 其他
RegisterNameAndOther();
// 属性
RegisterPropertyItems();
}
// 名称 等级 其他
function RegisterNameAndOther() {
// 名称
local nameY = 130;
local name = FontAssetManager.GenerateNormal("账号名称", true, {
color = sq_RGBA(161, 240, 163, 255)
});
Canvas.DrawActor(name, Width / 2 - name.GetSize().w / 2, nameY);
// 等级
local level = FontAssetManager.GenerateNormal("2级 角色名称", true, {
color = green
});
Canvas.DrawActor(level, Width / 2 - level.GetSize().w / 2, nameY + 15);
// 角色定位
local jobType = CL_SpriteFrameObject("sprite/interface2/profile/profile.img", 74);
// 职业
local job = FontAssetManager.GenerateNormal("[剑魂]", true, {
color = brown
});
local jobSize = job.GetSize();
local iconX = Width / 2 - (jobSize.w + 12) / 2;
Canvas.DrawSpriteFrame(jobType, iconX, nameY + 33);
Canvas.DrawActor(job, iconX + 12, nameY + 30);
// 冒险家名望Icon
local adventurerFameY = 187;
local adventurerFameX = 70;
local adventurerFame = CL_SpriteFrameObject("sprite/interface2/profile/profile_icon.img", 53);
local adventurerFameRight = adventurerFameX + adventurerFame.GetSize().w;
Canvas.DrawSpriteFrame(adventurerFame, adventurerFameX, adventurerFameY);
// 冒险家名望
local adventurerFameText = FontAssetManager.GenerateNormal("冒险家名望", true, {
color = brown
});
local adventurerFameTextRight = adventurerFameRight + 5 + adventurerFameText.GetSize().w;
Canvas.DrawActor(adventurerFameText, adventurerFameRight + 5, 185);
// 冒险家名望数值
local adventurerFameNum = FontAssetManager.GenerateNormal("7", true, {
color = green
});
Canvas.DrawActor(adventurerFameNum, adventurerFameTextRight + 5, 185);
}
// 属性
function RegisterPropertyItems() {
// 属性
local leftListX = 0;
local rightListX = 132;
local rowY = 213;
local rowH = 18;
// 生命
local life = roleInfoPropertyItem( 0, "生命", "100");
Canvas.DrawSprite(life, leftListX, rowY);
// 魔法
local magic = roleInfoPropertyItem( 1, "魔法", "100");
Canvas.DrawSprite(magic, rightListX, rowY);
rowY += rowH;
// 物理防御力
local physicalDefense = roleInfoPropertyItem(8, "物理防御力", "100", false);
Canvas.DrawSprite(physicalDefense, leftListX, rowY);
// 魔法防御力
local magicDefense = roleInfoPropertyItem( 9, "魔法防御力", "100");
Canvas.DrawSprite(magicDefense, rightListX, rowY);
rowY += rowH;
// 力量
local strength = roleInfoPropertyItem( 2, "力量", "100");
Canvas.DrawSprite(strength, leftListX, rowY);
// 智力
local intelligence = roleInfoPropertyItem( 3, "智力", "100");
Canvas.DrawSprite(intelligence, rightListX, rowY);
rowY += rowH;
// 体力
local vitality = roleInfoPropertyItem( 4, "体力", "100");
Canvas.DrawSprite(vitality, leftListX, rowY);
// 精神
local spirit = roleInfoPropertyItem( 5, "精神", "100");
Canvas.DrawSprite(spirit, rightListX, rowY);
rowY += rowH;
// 物理攻击力
local physicalATK = roleInfoPropertyItem( 6, "物理攻击力", "100");
Canvas.DrawSprite(physicalATK, leftListX, rowY);
// 魔法攻击力
local magicATK = roleInfoPropertyItem( 7, "魔法攻击力", "100");
Canvas.DrawSprite(magicATK, rightListX, rowY);
rowY += rowH;
// 物理暴击
local physicalCrit = roleInfoPropertyItem( 10, "物理暴击", "100");
Canvas.DrawSprite(physicalCrit, leftListX, rowY);
// 魔法暴击
local magicCrit = roleInfoPropertyItem( 11, "魔法暴击", "100");
Canvas.DrawSprite(magicCrit, rightListX, rowY);
rowY += rowH;
// 独立攻击
local independentAttack = roleInfoPropertyItem( 12, "独立攻击", "100");
Canvas.DrawSprite(independentAttack, leftListX, rowY);
rowY += rowH;
// 攻击速度
local attackSpeed = roleInfoPropertyItem(13, "攻击速度", "100");
Canvas.DrawSprite(attackSpeed, leftListX, rowY);
// 释放速度
local releaseSpeed = roleInfoPropertyItem( 14, "释放速度", "100");
Canvas.DrawSprite(releaseSpeed, rightListX, rowY);
rowY += rowH;
// 移动速度
local moveSpeed = roleInfoPropertyItem( 15, "移动速度", "100");
Canvas.DrawSprite(moveSpeed, leftListX, rowY);
rowY += rowH;
// 攻击属性
local attackProperty = roleInfoPropertyItem(16, "攻击属性", "火(0)/冰(0)/光(0)/暗(0)", true, 260);
Canvas.DrawSprite(attackProperty, leftListX, rowY);
}
// 底部四个按钮
function RegisterBottomButton() {
// 副职业
local subJob = otherButton(0, 401, 62, "副职业", false);
AddUIChild(subJob);
subJob.OnClick = function (btn) {
//todo 打开副职业面板
print(11111);
}.bindenv(this);
local separation = CL_SpriteObject("sprite/interface2/profile/profile.img", 70 );
separation.SetPosition(subJob.right(), subJob.Y + 7.5);
Addchild(separation);
// 战斗分析
local battleAnalysis = otherButton(subJob.right() + 1, subJob.Y, 64, "战斗分析");
AddUIChild(battleAnalysis);
battleAnalysis.OnClick = function (btn) {
//todo 打开面板
print(11111);
}.bindenv(this);
local separationOne = CL_SpriteObject("sprite/interface2/profile/profile.img", 70 );
separationOne.SetPosition(battleAnalysis.right(), battleAnalysis.Y + 7.5);
Addchild(separationOne);
// 决斗信息 // 根据决斗场等级 显示 sprite/interface2/pvp02/pvprank_icon/tier_icon.img 24
local duelInfo = otherButton(battleAnalysis.right() + 1, battleAnalysis.Y, 14, "决斗信息", true);
AddUIChild(duelInfo);
duelInfo.OnClick = function (btn) {
//todo 打开面板
print(11111);
}.bindenv(this);
local separationTwo = CL_SpriteObject("sprite/interface2/profile/profile.img", 70 );
separationTwo.SetPosition(duelInfo.right(), duelInfo.Y + 7.5);
Addchild(separationTwo);
// 详细信息
local detailedInformation = otherButton(duelInfo.right() + 1, duelInfo.Y, 66, "详细信息");
AddUIChild(detailedInformation);
detailedInformation.OnClick = function (btn) {
//todo 打开面板
print(11111);
}.bindenv(this);
}
//逻辑入口
function Proc(Dt) {
SyncPos(X, Y);
base.Proc(Dt);
}
}
// 属性项
class roleInfoPropertyItem extends CL_CanvasObject {
// additionReaction 属性是否有加成 加成为绿色 不加成灰色
constructor(idx, title, numText, additionReaction = true, width = 125) {
local w = width;
local h = 18;
base.constructor();
// 重设大小并清空
ResizeAndClear(w, 18);
// 开始绘制
BeginDraw();
local titlecolor = additionReaction ? sq_RGBA(160, 132, 75, 255) : sq_RGBA(79, 79, 79, 255);
local numColor = additionReaction ? sq_RGBA(75, 161, 85, 255) : sq_RGBA(79, 79, 79, 255);
local iconX = 5;
local icon = CL_SpriteFrameObject("sprite/interface2/profile/profile_icon.img", idx);
local iconRight = iconX + icon.GetSize().w;
DrawSpriteFrame(icon, iconX, h/ 2 - icon.GetSize().h / 2);
// 属性名称
local property = FontAssetManager.GenerateNormal(title, true, {
color = titlecolor
});
DrawActor(property, iconRight + 5, 0);
// 属性数值
local propertyNum = FontAssetManager.GenerateNormal(numText, true, {
color = numColor
});
local numX = w - propertyNum.GetSize().w;
DrawActor(propertyNum, numX, 0);
// 结束绘制
EndDraw();
}
// additionReaction 属性是否有加成 加成为绿色 不加成灰色
// function Draw(idx, title, numText, additionReaction = true, width = 120) {
// // 创建画布
// local Canvas = CL_CanvasObject();
// // 重设大小并清空
// Canvas.ResizeAndClear(width, 18);
// // 开始绘制
// Canvas.BeginDraw();
// local titlecolor = additionReaction ? sq_RGBA(160, 132, 75, 255) : sq_RGBA(79, 79, 79, 255);
// local numColor = additionReaction ? sq_RGBA(75, 161, 85, 255) : sq_RGBA(79, 79, 79, 255);
// local icon = CL_SpriteFrameObject("sprite/interface2/profile/profile_icon.img", idx);
// Canvas.DrawSpriteFrame(icon, 5, 0);
// // 属性名称
// local property = FontAssetManager.GenerateNormal(title, true, {
// color = titlecolor
// });
// Canvas.DrawActor(property, icon.right() + 5, icon.Y);
// // 属性数值
// local propertyNum = FontAssetManager.GenerateNormal(numText, true, {
// color = numColor
// });
// local numX = width - propertyNum.GetSize().w;
// Canvas.DrawActor(property, numX, icon.Y);
// // 结束绘制
// Canvas.EndDraw();
// return Canvas;
// }
}
// 其他面板按钮
class otherButton extends Yosin_CommonUi {
// 是否启用按钮
enabled = true;
iconX = null;
iconY = null;
icon = null;
// pvp 是否是pvp 按钮
constructor(gX, gY, idx, title, pvp = false, enabled = true, ) {
base.constructor(gX, gY, 65, 65);
this.enabled = enabled;
local titlecolor = enabled? sq_RGBA(160, 132, 75, 255) : sq_RGBA(79, 79, 79, 255);
// 属性名称
local property = FontAssetManager.GenerateNormal(title, true, {
color = titlecolor
});
property.SetPosition( 32 - property.GetSize().w / 2 , 45 );
Addchild(property);
local path = pvp? "sprite/interface2/profile/profile_pvp_icon.img" : "sprite/interface2/profile/profile.img";
icon = CL_SpriteObject(path, enabled ? idx : idx +1 );
iconX = 32 - icon.GetSize().w / 2;
iconY = 45 / 2 - icon.GetSize().h / 2 + 3;
icon.SetPosition( iconX , iconY );
Addchild(icon);
}
function Proc(DT) {
// if (isLBDown){
// SyncPos(X, cacheY + 1);
// }else{
// SyncPos(X, cacheY);
// }
if (isLBDown){
icon.SetPosition( iconX , iconY + 1 );
}else{
icon.SetPosition( iconX , iconY );
}
}
}
// 上半部分 人物装备穿戴
class Personalinfo_CharactersEquipment extends CL_CanvasObject {
// 展示其他装备
showOtherEquipment = null;
// 允许更换装备
allowChangeEquipment = null;
// // 画布
// Canvas = null;
constructor() {
local w = 248;
local h = 179;
base.constructor();
showOtherEquipment = true;
allowChangeEquipment = false;
// 创建画布
CL_CanvasObject();
// 重设大小并清空
ResizeAndClear(w, h);
// 设置填充画刷 用于绘制边框和线条
// Canvas.SetFillBrush(sq_RGBA(59, 56, 57, 250));
// 设置轮廓画刷 用于绘制边框和线条
// Canvas.SetStrokeBrush(sq_RGBA(59, 56, 57, 250));
// 开始绘制
BeginDraw();
// 绘制背景
DrawBackground(w);
// 结束绘制
EndDraw();
}
// 背景
function DrawBackground(Width) {
// 装备栏背景
local equipmentBackground = CL_SpriteFrameObject("sprite/interface/newstyle/windows/inventory/inventory.img", 21);
DrawSpriteFrame(equipmentBackground, 5, 5);
// 顶部光线
local topLight = CL_SpriteFrameObject("sprite/interface/newstyle/windows/inventory/inventory.img", 178);
DrawSpriteFrame(topLight, Width / 2 - topLight.GetSize().w / 2, 0);
// DrawSpriteFrame(topLight, 0, 0);
// todo 角色展示
// 结婚戒指槽位
local ringSlotBg = CL_SpriteFrameObject("sprite/interface/newstyle/windows/inventory/inventory_cn.img", 0);
DrawSpriteFrame(ringSlotBg, Width / 2 - ringSlotBg.GetSize().w / 2, 5);
// todo 根据是否装备 显示装备
if (showOtherEquipment) {
// 辅助装备
local assist = CL_SpriteFrameObject("sprite/interface/newstyle/windows/inventory/inventory.img", 19);
DrawSpriteFrame(assist, 179, 69);
// 耳环
local earrings = CL_SpriteFrameObject("sprite/interface/newstyle/windows/inventory/inventory.img", 122);
DrawSpriteFrame(earrings, 179, 102);
// 魔法石
local MagicStone = CL_SpriteFrameObject("sprite/interface/newstyle/windows/inventory/inventory.img", 20);
DrawSpriteFrame(MagicStone, 211, 101);
}
}
}
// if (!getroottable().rawin("chongzaiflag")) {
// getroottable()["chongzaiflag"] <- true;
// } else {
// //遍历窗口队列 如果可见则调用Show
// for (local i = 0; i< _SYS_WINDOW_LIST_.len(); i++) {
// local Window = _SYS_WINDOW_LIST_[i];
// Window.Visible = false;
// Window.RemoveSelf();
// }
// TestStage();
// }