163 lines
4.8 KiB
Plaintext
163 lines
4.8 KiB
Plaintext
|
|
/*
|
||
|
|
文件名: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();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|