451 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			451 lines
		
	
	
		
			14 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();
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| // 其他面板按钮
 | |
| 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){
 | |
|             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);
 | |
| 
 | |
|         // 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();
 | |
| // } |