/* 文件名:SkillSlot.nut 路径:User/UI/Window/9_HUD/SkillSlot.nut 创建日期:2025-02-18 07:51 文件用途:HUD血槽的技能槽 */ class UISpace_Hud.SkillSlot extends Yosin_CommonUi { Type = null; Pos = null; //悬停特效 HoverEffect = null; //物品对象 Skill = null; //物品对象的图标 SkillIcon = null; //物品对象的详细信息窗口 SkillInfo = null; //详细信息窗口显示Flag SkillInfoShowFlag = false; constructor(gType, gPos) { this.Type = gType; this.Pos = gPos; base.constructor(0, 0, 28, 28); local KeyValue; if (gType == 0) { if (gPos == 0) KeyValue = getconsttable().CONTROLLER["OPTION_HOTKEY_SKILL"]; else KeyValue = getconsttable().CONTROLLER["OPTION_HOTKEY_EXSKILL" + gPos]; } else if (gType == 1) { if (gPos == 0) KeyValue = getconsttable().CONTROLLER["OPTION_HOTKEY_ATTACK"]; else KeyValue = getconsttable().CONTROLLER["OPTION_HOTKEY_QUICK_SKILL" + gPos]; } //角标绘制 local CornerMarkerDrawing = CL_SpriteObject("sprite/interface/keyshortcut.img", (KeyValue <= 10) ? KeyValue : 40 + KeyValue); CornerMarkerDrawing.SetZOrder(9); Addchild(CornerMarkerDrawing); // OpenDeBug(); HoverEffect = CL_SpriteObject("sprite/interface/newstyle/windows/inventory/inventory.img", 131); HoverEffect.SetPosition(1, 1); HoverEffect.SetZOrder(10); HoverEffect.SetVisible(false); Addchild(HoverEffect); } function SetSkill(Skill) { //关闭所有详细信息显示 if (SkillInfoShowFlag) { CloseInfo(); } if (Skill) { this.Skill = Skill; //如果原先有图标则先移除图标在添加 if (this.SkillIcon) { Removechild(this.SkillIcon); } this.SkillIcon = this.Skill.GetIconSprite(); Addchild(this.SkillIcon); this.SkillInfo = this.Skill.GetInfoWindow(); } else { this.Skill = null; if (this.SkillIcon) { Removechild(this.SkillIcon); this.SkillIcon = null; } this.SkillInfo = null; } this.SkillIcon.SetPosition(1, 1); } //显示详细信息 function ShowInfo(x, y) { if (!Skill) return; if (!this.SkillInfo) GenerateInfo(); this.SkillInfoShowFlag = true; // 获取信息框尺寸 local infoW = 211; local infoH = this.SkillInfo.RealCanvasHeight; // X轴边界修正 if (x< 0) { x = 0; } else if (x + infoW > 1067) { x = 1067 - infoW; } // Y轴边界修正 if (y< 0) { y = 0; } else if (y + infoH > 600) { y = 600 - infoH; } //设置位置 this.SkillInfo.SetPosition(x, y); this.SkillInfo.ResetFocus(); } //关闭显示详细信息 function CloseInfo() { if (this.SkillInfo) { this.SkillInfoShowFlag = false; this.SkillInfo.CloseWindow(); } } //override //鼠标事件回调 function OnMouseProc(MousePos_X, MousePos_Y, WindowInteractiveFlag) { if (!Visible) return; base.OnMouseProc(MousePos_X, MousePos_Y, WindowInteractiveFlag); if (isInRect && !IMouse.DragObj && !WindowInteractiveFlag) { //如果有道具 if (Skill) { //设置透明度 HoverEffect.SetOpacity(0.4); if (!SkillInfoShowFlag) { //显示详细信息 ShowInfo(MousePos_X - 50, MousePos_Y - ((SkillInfo.RealCanvasHeight + 10) / 2)); } } //设置悬停槽 HoverEffect.SetVisible(true); } else { HoverEffect.SetVisible(false); //关闭所有详细信息显示 if (SkillInfoShowFlag) { CloseInfo(); } } } //override //鼠标右键单击回调 function OnMouseRbClick(MousePos_X, MousePos_Y, WindowInteractiveFlag) { //调用原生方法 base.OnMouseRbClick(MousePos_X, MousePos_Y, WindowInteractiveFlag); if (isInRect && !WindowInteractiveFlag) { //发送脱下装备包 MySocket.Send(PACKET_ID.WEAR_EQUIPMENT, { backpackId = 8, oldPos = Pos }); } } //override //鼠标左键单击回调 function OnMouseLbDown(MousePos_X, MousePos_Y, WindowInteractiveFlag) { //调用原生方法 base.OnMouseLbDown(MousePos_X, MousePos_Y, WindowInteractiveFlag); //关闭所有详细信息显示 if (SkillInfoShowFlag) { CloseInfo(); } } }