337 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			337 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | /* | ||
|  | 文件名:4_PersonalInfo.nut | ||
|  | 路径:User/UI/Window/4_PersonalInfo.nut | ||
|  | 创建日期:2024-12-26	00:32 | ||
|  | 文件用途: 个人信息 | ||
|  | */ | ||
|  | 
 | ||
|  | // 个人信息 250, 60, 286, 530 | ||
|  | class _PersonalInfo extends Yosin_Window { | ||
|  | 
 | ||
|  |     roleTitleBtn = null; | ||
|  |     dressUpTitleBtn = null; | ||
|  |     stoneTitleBtn = null; | ||
|  | 
 | ||
|  | 
 | ||
|  |     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { | ||
|  |         base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); | ||
|  | 
 | ||
|  |         local title = Yosin_TopTitle(gWidth, gHeight, "个人信息(M)"); | ||
|  |         AddUIChild(title); | ||
|  | 
 | ||
|  |         //注册控件 | ||
|  |         RegisterWidget(); | ||
|  |     } | ||
|  | 
 | ||
|  |     function RegisterWidget() { | ||
|  |         // 角色按钮 | ||
|  |         roleTitleBtn = titleButton(10, 25, 40, 19, "sprite/interface/lenheartwindowcommon.img", 82, "角色"); | ||
|  |         AddUIChild(roleTitleBtn); | ||
|  |         // 装扮/宠物按钮 | ||
|  |         dressUpTitleBtn = titleButton(roleTitleBtn.right() + 1, 25, 71, 19, "sprite/interface/lenheartwindowcommon.img", 86, "装扮/宠物"); | ||
|  |         AddUIChild(dressUpTitleBtn); | ||
|  |         // 护石按钮 | ||
|  |         stoneTitleBtn = titleButton(dressUpTitleBtn.right() + 1, 25, 40, 19, "sprite/interface/lenheartwindowcommon.img", 82, "护石"); | ||
|  |         AddUIChild(stoneTitleBtn); | ||
|  | 
 | ||
|  |         roleTitleBtn.LBDownOnClick = function (btn) { | ||
|  |             titleClick(btn); | ||
|  |         }.bindenv(this); | ||
|  |         dressUpTitleBtn.LBDownOnClick = function (btn) { | ||
|  |             titleClick(btn); | ||
|  |         }.bindenv(this); | ||
|  |         stoneTitleBtn.LBDownOnClick = function (btn) { | ||
|  |             titleClick(btn); | ||
|  |         }.bindenv(this); | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         // 角色信息 | ||
|  |         local roleInfo = roleInfo("个人角色信息", roleTitleBtn.X, roleTitleBtn.bottom() + 2 ); | ||
|  |         AddUIChild(roleInfo); | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     function titleClick(btn) { | ||
|  |         btn.Parent.roleTitleBtn.select = false; | ||
|  |         btn.Parent.dressUpTitleBtn.select = false; | ||
|  |         btn.Parent.stoneTitleBtn.select = false; | ||
|  |         btn.select = true; | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     //逻辑入口 | ||
|  |     function Proc(Dt) { | ||
|  |         SyncPos(X, Y); | ||
|  |         base.Proc(Dt); | ||
|  |     } | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | // 角色信息 | ||
|  | class roleInfo extends Yosin_Window { | ||
|  | 
 | ||
|  |     //是否为独立窗口 | ||
|  |     IsIndependent = false; | ||
|  | 
 | ||
|  |     brown = sq_RGBA(160, 132, 75, 255); | ||
|  |     green = sq_RGBA(74, 161, 87, 255); | ||
|  | 
 | ||
|  |     btn = null; | ||
|  | 
 | ||
|  |     constructor(gObjectId, gX, gY) { | ||
|  |         base.constructor(gObjectId, gX, gY, 266, 355, 0); | ||
|  | 
 | ||
|  |         //注册控件 | ||
|  |         RegisterWidget(); | ||
|  |     } | ||
|  | 
 | ||
|  |     function RegisterWidget() { | ||
|  |         // 背景 | ||
|  |         local backGround = CL_SpriteObject("sprite/interface2/profile/profile.img", 60); | ||
|  |         Addchild(backGround); | ||
|  | 
 | ||
|  |         // 装备 | ||
|  |         RegisterEquipment(); | ||
|  |         // 名称 等级 其他 | ||
|  |         RegisterNameAndOther(); | ||
|  |         // 属性 | ||
|  |         RegisterPropertyItems(); | ||
|  |         // 底部四个按钮 | ||
|  |         RegisterBottomButton(); | ||
|  | 
 | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     // 装备 | ||
|  |     function RegisterEquipment() { | ||
|  |         // 装备背景 | ||
|  |         local equipmentBackground = CL_SpriteObject("sprite/interface2/profile/profile.img", 14); | ||
|  |         equipmentBackground.SetPosition(7.5, 8); | ||
|  |         Addchild(equipmentBackground); | ||
|  | 
 | ||
|  |         // 中间装备背景 | ||
|  |         local centerBackground = CL_SpriteObject("sprite/interface2/profile/profile.img", 77); | ||
|  |         centerBackground.SetPosition( 124 , 10); | ||
|  |         Addchild(centerBackground); | ||
|  | 
 | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     // 名称 等级 其他 | ||
|  |     function RegisterNameAndOther() { | ||
|  |         // 冒险家名望 | ||
|  |         local adventurerFame = CL_SpriteObject("sprite/interface2/profile/profile_icon.img", 53); | ||
|  |         adventurerFame.SetPosition(70, 185); | ||
|  |         Addchild(adventurerFame); | ||
|  | 
 | ||
|  |         local adventurerFameText = FontAssetManager.GenerateNormal("冒险家名望", true, { | ||
|  |             color = brown | ||
|  |         }); | ||
|  |         adventurerFameText.SetPosition(adventurerFame.right() + 5, adventurerFame.Y); | ||
|  |         Addchild(adventurerFameText); | ||
|  | 
 | ||
|  |         // 冒险家名望数值 | ||
|  |         local adventurerFameNum = FontAssetManager.GenerateNormal("7", true, { | ||
|  |             color = green | ||
|  |         }); | ||
|  |         adventurerFameNum.SetPosition(adventurerFameText.right() + 5, adventurerFameText.Y); | ||
|  |         Addchild(adventurerFameNum); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     function RegisterPropertyItems() { | ||
|  |         // 属性 | ||
|  | 
 | ||
|  |         // 生命 | ||
|  |         local life = roleInfoPropertyItem(0, 213, 0, "生命", "100"); | ||
|  |         Addchild(life); | ||
|  |         // 魔法 | ||
|  |         local magic = roleInfoPropertyItem(life.right() + 16, life.Y, 1, "魔法", "100"); | ||
|  |         Addchild(magic); | ||
|  |         // 物理防御力 | ||
|  |         local physicalDefense = roleInfoPropertyItem(life.X, life.bottom(), 8, "物理防御力", "100", false); | ||
|  |         Addchild(physicalDefense); | ||
|  |         // 魔法防御力 | ||
|  |         local magicDefense = roleInfoPropertyItem(physicalDefense.right() + 16, physicalDefense.Y, 9, "魔法防御力", "100"); | ||
|  |         Addchild(magicDefense); | ||
|  | 
 | ||
|  |         // 力量 | ||
|  |         local strength = roleInfoPropertyItem(life.X, physicalDefense.bottom(), 2, "力量", "100"); | ||
|  |         Addchild(strength); | ||
|  |         // 智力 | ||
|  |         local intelligence = roleInfoPropertyItem(strength.right() + 16, strength.Y, 3, "智力", "100"); | ||
|  |         Addchild(intelligence); | ||
|  |         // 体力 | ||
|  |         local vitality = roleInfoPropertyItem(strength.X, strength.bottom(), 4, "体力", "100"); | ||
|  |         Addchild(vitality); | ||
|  |         // 精神 | ||
|  |         local spirit = roleInfoPropertyItem(vitality.right() + 16, vitality.Y, 5, "精神", "100"); | ||
|  |         Addchild(spirit); | ||
|  |         // 物理攻击力 | ||
|  |         local physicalATK = roleInfoPropertyItem(life.X, spirit.bottom(), 6, "物理攻击力", "100"); | ||
|  |         Addchild(physicalATK); | ||
|  |         // 魔法攻击力 | ||
|  |         local magicATK = roleInfoPropertyItem(physicalATK.right() + 16, physicalATK.Y, 7, "魔法攻击力", "100"); | ||
|  |         Addchild(magicATK); | ||
|  |         // 物理暴击 | ||
|  |         local physicalCrit = roleInfoPropertyItem(life.X, magicATK.bottom(), 10, "物理暴击", "100"); | ||
|  |         Addchild(physicalCrit); | ||
|  |         // 魔法暴击 | ||
|  |         local magicCrit = roleInfoPropertyItem(physicalCrit.right() + 16, physicalCrit.Y, 11, "魔法暴击", "100"); | ||
|  |         Addchild(magicCrit); | ||
|  |         // 独立攻击 | ||
|  |         local independentAttack = roleInfoPropertyItem(life.X, magicCrit.bottom(), 12, "独立攻击", "100"); | ||
|  |         Addchild(independentAttack); | ||
|  | 
 | ||
|  |         // 攻击速度 | ||
|  |         local attackSpeed = roleInfoPropertyItem(life.X, independentAttack.bottom(), 13, "攻击速度", "100"); | ||
|  |         Addchild(attackSpeed); | ||
|  |         // 释放速度 | ||
|  |         local releaseSpeed = roleInfoPropertyItem(attackSpeed.right() + 16, attackSpeed.Y, 14, "释放速度", "100"); | ||
|  |         Addchild(releaseSpeed); | ||
|  |         // 移动速度 | ||
|  |         local moveSpeed = roleInfoPropertyItem(life.X, releaseSpeed.bottom(), 15, "移动速度", "100"); | ||
|  |         Addchild(moveSpeed); | ||
|  | 
 | ||
|  |         // 攻击属性 | ||
|  |         local attackProperty = roleInfoPropertyItem(life.X, moveSpeed.bottom(), 16, "攻击属性", "火(0)/冰(0)/光(0)/暗(0)", true, 260); | ||
|  |         Addchild(attackProperty); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     // 底部四个按钮 | ||
|  |     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 Yosin_CommonUi { | ||
|  | 
 | ||
|  |     // additionReaction 属性是否有加成 加成为绿色 不加成灰色 | ||
|  |     constructor(gX, gY, idx, title, numText, additionReaction = true,  width = 120) { | ||
|  |         base.constructor(gX, gY, width, 18); | ||
|  | 
 | ||
|  |         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_SpriteObject("sprite/interface2/profile/profile_icon.img", idx); | ||
|  |         icon.SetPosition(5, 0); | ||
|  |         Addchild(icon); | ||
|  | 
 | ||
|  |         // 属性名称 | ||
|  |         local property = FontAssetManager.GenerateNormal(title, true, { | ||
|  |             color = titlecolor | ||
|  |         }); | ||
|  |         property.SetPosition(icon.right() + 5, icon.Y); | ||
|  |         Addchild(property); | ||
|  | 
 | ||
|  |         // 属性数值 | ||
|  |         local propertyNum = FontAssetManager.GenerateNormal(numText, true, { | ||
|  |             color = numColor | ||
|  |         }); | ||
|  |         local numX = width - propertyNum.GetSize().w; | ||
|  |         propertyNum.SetPosition( numX, icon.Y); | ||
|  |         Addchild(propertyNum); | ||
|  | 
 | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     //逻辑入口 | ||
|  |     function Proc(Dt) { | ||
|  |         SyncPos(X, Y); | ||
|  |         base.Proc(Dt); | ||
|  |     } | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | // 其他面板按钮 | ||
|  | class otherButton extends Yosin_CommonUi { | ||
|  | 
 | ||
|  |     // 是否启用按钮 | ||
|  |     enabled = true; | ||
|  |     // 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"; | ||
|  |         local icon = CL_SpriteObject(path, enabled ? idx : idx +1 ); | ||
|  |         icon.SetPosition(32 - icon.GetSize().w / 2, 45/2 - icon.GetSize().h / 2 + 3 ); | ||
|  |         Addchild(icon); | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | 
 |