386 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			386 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
| 文件名:4_PersonalInfo.nut
 | |
| 路径:User/UI/Window/4_PersonalInfo.nut
 | |
| 创建日期:2024-12-26	00:32
 | |
| 文件用途: 个人信息
 | |
| */
 | |
| 
 | |
| // 个人信息 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);
 | |
|         // 装备背景
 | |
|         local equipmentBackground = CL_SpriteObject("sprite/interface2/profile/profile.img", 14);
 | |
|         equipmentBackground.SetPosition(7.5, 8);
 | |
|         Addchild(equipmentBackground);
 | |
| 
 | |
| 
 | |
| 
 | |
|         // 冒险家名望
 | |
|         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);
 | |
| 
 | |
| 
 | |
|         // 属性
 | |
| 
 | |
|         // 生命
 | |
|         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);
 | |
| 
 | |
| 
 | |
|         // 副职业
 | |
|         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);
 | |
| 
 | |
|         // 决斗信息 //todo 图不对
 | |
|         local duelInfo = otherButton(battleAnalysis.right() + 1, battleAnalysis.Y, 66, "决斗信息");
 | |
|         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 RegisterDraw() {
 | |
| 
 | |
|     }
 | |
| 
 | |
|     //逻辑入口
 | |
|     function Proc(Dt) {
 | |
|         SyncPos(X, Y);
 | |
|         base.Proc(Dt);
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| // 标题按钮
 | |
| class titleButton extends Yosin_BaseButton {
 | |
| 
 | |
|     select = false;
 | |
|     cacheY = null;
 | |
| 
 | |
|     LBDownOnClick = null;
 | |
| 
 | |
|     constructor(X, Y, W, H, Path, Idx, title) {
 | |
|         base.constructor(X, Y, W, H, Path, Idx);
 | |
| 
 | |
|         cacheY = Y;
 | |
|         DownSimulateOffset = false;
 | |
| 
 | |
|         local backText = FontAssetManager.GenerateNormal( title , true, {
 | |
|             color = sq_RGBA(130, 114, 84, 255)
 | |
|         });
 | |
|         backText.SetUpdateFunc(function(Text, Dt) {
 | |
|             if (select) {
 | |
|                 Text.SetFillColor(sq_RGBA(187,176,149, 255));
 | |
|             } else {
 | |
|                 Text.SetFillColor(sq_RGBA(130,114,84, 255));
 | |
|             }
 | |
|         })
 | |
| 
 | |
|         backText.SetPosition(9, 2);
 | |
|         Addchild(backText);
 | |
| 
 | |
|     }
 | |
| 
 | |
|     function ChangeFrame() {
 | |
|         //状态更改 刷新精灵帧
 | |
|         if (State != SpriteState) {
 | |
|             if (State == 2) {
 | |
|                 Y -= 1;
 | |
|                 SyncPos(X, Y);
 | |
|             } else if (SpriteState == 2) {
 | |
|                 Y += 1;
 | |
|                 SyncPos(X, Y);
 | |
|             }
 | |
|             SpriteState = State;
 | |
|             Sprite.SetFrame(FrameList[SpriteState]);
 | |
|             Sprite.SetPosition(0, 0);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function Proc(Dt) {
 | |
| 
 | |
|         if (select) return;
 | |
| 
 | |
|         //不可用
 | |
|         if (State == 3) {
 | |
| 
 | |
|         } else {
 | |
|             //按下
 | |
|             if (isLBDown) {
 | |
|                 State = 2;
 | |
|                 select = true;
 | |
|                 if (LBDownOnClick != null) {
 | |
|                     LBDownOnClick(this);
 | |
|                 }
 | |
|             }
 | |
|             //悬停
 | |
|             else if (isInRect) {
 | |
|                 State = 1;
 | |
|             }
 | |
|             //普通
 | |
|             else {
 | |
|                 State = 0;
 | |
|             }
 | |
|         }
 | |
|         ChangeFrame();
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| // 属性项
 | |
| 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;
 | |
| 
 | |
|     constructor(gX, gY, idx, title, enabled = true, ) {
 | |
|         base.constructor(gX, gY, 65, 65);
 | |
| 
 | |
|         this.enabled = enabled;
 | |
| 
 | |
|         local icon = CL_SpriteObject("sprite/interface2/profile/profile.img", enabled ? idx : idx +1 );
 | |
|         icon.SetPosition( 0, 4);
 | |
|         Addchild(icon);
 | |
| 
 | |
|         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( 65/ 2 - property.GetSize().w / 2 , icon.bottom() + 5);
 | |
|         Addchild(property);
 | |
| 
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 |