276 lines
9.4 KiB
Plaintext
276 lines
9.4 KiB
Plaintext
|
|
/*
|
||
|
|
文件名:9_HUD.nut
|
||
|
|
路径:User/UI/Window/9_HUD/9_HUD.nut
|
||
|
|
创建日期:2025-02-18 05:41
|
||
|
|
文件用途:血槽HUD
|
||
|
|
*/
|
||
|
|
//hud血槽命名空间
|
||
|
|
if (!getroottable().rawin("UISpace_Hud")) UISpace_Hud <- {};
|
||
|
|
//主类
|
||
|
|
class UISpace_Hud._Hud extends Yosin_Window {
|
||
|
|
|
||
|
|
//背景画布
|
||
|
|
BackGroundCanvas = null;
|
||
|
|
//数据画布
|
||
|
|
DataCanvas = null;
|
||
|
|
//物品槽
|
||
|
|
ItemSlotList = null;
|
||
|
|
//技能槽
|
||
|
|
SkillSlotList = null;
|
||
|
|
|
||
|
|
//生命值球
|
||
|
|
HealthBall = null;
|
||
|
|
//魔法值球
|
||
|
|
MagicBall = null;
|
||
|
|
|
||
|
|
constructor() {
|
||
|
|
ItemSlotList = [];
|
||
|
|
SkillSlotList = [];
|
||
|
|
base.constructor("血槽HUD", 0, 525, 1067, 75, 0);
|
||
|
|
|
||
|
|
DrawBackground();
|
||
|
|
//绘制血球
|
||
|
|
DrawBall();
|
||
|
|
//刷新数据
|
||
|
|
RefreshData();
|
||
|
|
//注册按钮
|
||
|
|
RegisterButton();
|
||
|
|
|
||
|
|
//物品槽
|
||
|
|
for (local i = 0; i< 6; i++) {
|
||
|
|
local ItemSlot = UISpace_Hud.ItemSlot(i);
|
||
|
|
ItemSlot.SetPosition(122 + (i * 31), 44);
|
||
|
|
AddUIChild(ItemSlot);
|
||
|
|
local ItemObject = GameItem.Stackable(1110 + i);
|
||
|
|
ItemSlot.SetItem(ItemObject);
|
||
|
|
ItemSlotList.push(ItemSlot);
|
||
|
|
}
|
||
|
|
|
||
|
|
//技能槽
|
||
|
|
for (local i = 0; i< 16; i++) {
|
||
|
|
local SkillSlot = UISpace_Hud.SkillSlot(i / 8, i % 8);
|
||
|
|
SkillSlot.SetPosition(414 + ((i % 8) * 31), 9 + (i / 8 * 31));
|
||
|
|
AddUIChild(SkillSlot);
|
||
|
|
local SkillObject = GameItem.Skill(0, 230 + i);
|
||
|
|
SkillSlot.SetSkill(SkillObject);
|
||
|
|
SkillSlotList.push(SkillSlot);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function DrawBackground() {
|
||
|
|
if (BackGroundCanvas) Removechild(BackGroundCanvas);
|
||
|
|
BackGroundCanvas = CL_CanvasObject();
|
||
|
|
// 重设大小并清空
|
||
|
|
BackGroundCanvas.ResizeAndClear(Width, Height);
|
||
|
|
// 开始绘制
|
||
|
|
BackGroundCanvas.BeginDraw();
|
||
|
|
|
||
|
|
//绘制背景
|
||
|
|
local HudBg = CL_SpriteFrameObject("sprite/interface2/hud/hud.img", 0);
|
||
|
|
BackGroundCanvas.DrawSpriteFrame(HudBg, (Width - HudBg.GetSize().w) / 2, 0);
|
||
|
|
|
||
|
|
//绘制消耗品槽
|
||
|
|
for (local i = 0; i< 6; i++) {
|
||
|
|
local Slot = CL_SpriteFrameObject("sprite/interface2/hud/hud.img", 200);
|
||
|
|
BackGroundCanvas.DrawSpriteFrame(Slot, 122 + (i * 31), 44);
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制疲劳值文字
|
||
|
|
local FatigueSlotText = CL_SpriteFrameObject("sprite/interface2/hud/hud.img", 211);
|
||
|
|
BackGroundCanvas.DrawSpriteFrame(FatigueSlotText, 789, 64);
|
||
|
|
//绘制疲劳槽
|
||
|
|
local FatigueSlot = CL_SpriteFrameObject("sprite/interface2/hud/hud.img", 230);
|
||
|
|
BackGroundCanvas.DrawSpriteFrame(FatigueSlot, 824, 69);
|
||
|
|
|
||
|
|
// 结束绘制
|
||
|
|
BackGroundCanvas.EndDraw();
|
||
|
|
Addchild(BackGroundCanvas);
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制血球
|
||
|
|
BallSize = null;
|
||
|
|
|
||
|
|
function DrawBall() {
|
||
|
|
if (!HealthBall) {
|
||
|
|
HealthBall = Animation("common/hud/hud_ui/hpmp_vessel.ani");
|
||
|
|
HealthBall.SetPosition(295, 40);
|
||
|
|
HealthBall.SetDye(sq_RGBA(255, 0, 0, 255), 1);
|
||
|
|
Addchild(HealthBall);
|
||
|
|
local Effect = Animation("common/hud/hud_ui/hpmp_vessel.ani");
|
||
|
|
Effect.SetPosition(0, 0);
|
||
|
|
Effect.SetDye(sq_RGBA(255, 0, 0, 255), 1);
|
||
|
|
Effect.SetMode(0);
|
||
|
|
Effect.SetOpacity(0.6);
|
||
|
|
HealthBall.Addchild(Effect);
|
||
|
|
local Effect2 = CL_SpriteObject("sprite/interface2/hud/hud.img", 212);
|
||
|
|
Effect2.SetPosition(295 + 45, 40 - 32);
|
||
|
|
Addchild(Effect2);
|
||
|
|
}
|
||
|
|
if (!MagicBall) {
|
||
|
|
MagicBall = Animation("common/hud/hud_ui/hpmp_vessel.ani");
|
||
|
|
MagicBall.SetPosition(618, 40);
|
||
|
|
MagicBall.SetDye(sq_RGBA(0, 0, 255, 255), 1);
|
||
|
|
Addchild(MagicBall);
|
||
|
|
local Effect = Animation("common/hud/hud_ui/hpmp_vessel.ani");
|
||
|
|
Effect.SetPosition(0, 0);
|
||
|
|
Effect.SetDye(sq_RGBA(0, 0, 255, 255), 1);
|
||
|
|
Effect.SetMode(0);
|
||
|
|
Effect.SetOpacity(0.6);
|
||
|
|
MagicBall.Addchild(Effect);
|
||
|
|
local Effect2 = CL_SpriteObject("sprite/interface2/hud/hud.img", 213);
|
||
|
|
Effect2.SetPosition(618 + 45, 40 - 32);
|
||
|
|
Addchild(Effect2);
|
||
|
|
}
|
||
|
|
BallSize = HealthBall.GetSize();
|
||
|
|
}
|
||
|
|
|
||
|
|
function SetHp(Rate) {
|
||
|
|
local Slice = BallSize.h * (1.0 - Rate);
|
||
|
|
HealthBall.SetCropRect(0, Slice, HealthBall.GetSize().w, BallSize.h);
|
||
|
|
HealthBall.SetPosition(295, 40 + Slice);
|
||
|
|
}
|
||
|
|
|
||
|
|
function SetMp(Rate) {
|
||
|
|
local Slice = BallSize.h * (1.0 - Rate);
|
||
|
|
MagicBall.SetCropRect(0, Slice, MagicBall.GetSize().w, BallSize.h);
|
||
|
|
MagicBall.SetPosition(618, 40 + Slice);
|
||
|
|
}
|
||
|
|
|
||
|
|
function RefreshData() {
|
||
|
|
if (DataCanvas) Removechild(DataCanvas);
|
||
|
|
DataCanvas = CL_CanvasObject();
|
||
|
|
// 重设大小并清空
|
||
|
|
DataCanvas.ResizeAndClear(Width, Height);
|
||
|
|
// 开始绘制
|
||
|
|
DataCanvas.BeginDraw();
|
||
|
|
|
||
|
|
|
||
|
|
//绘制经验槽
|
||
|
|
local ExpSlot = CL_SpriteFrameObject("sprite/interface2/hud/hud.img", 202);
|
||
|
|
DataCanvas.DrawSpriteFrame(ExpSlot, (Width - ExpSlot.GetSize().w) / 2, 58);
|
||
|
|
//人物经验
|
||
|
|
local Exp = ClientCharacter ? ClientCharacter.GetExp() : {
|
||
|
|
current = 100,
|
||
|
|
max = 100
|
||
|
|
};
|
||
|
|
local ExpRate = Exp.current.tofloat() / Exp.max.tofloat();
|
||
|
|
local ExpImgIndex = 60;
|
||
|
|
if (ExpRate< 1) ExpImgIndex = 4;
|
||
|
|
local ExpBar = CL_SpriteObject("sprite/interface2/hud/hud.img", ExpImgIndex);
|
||
|
|
ExpBar.SetPosition(374, 70);
|
||
|
|
ExpBar.SetCropRect(0, 0, ExpBar.GetSize().w * ExpRate, ExpBar.GetSize().h);
|
||
|
|
DataCanvas.DrawSprite(ExpBar);
|
||
|
|
|
||
|
|
//人物等级
|
||
|
|
local Level = ClientCharacter ? ClientCharacter.Level : 1;
|
||
|
|
local LevelText = FontAssetManager.GenerateNormal(Level + "级", true, {
|
||
|
|
color = sq_RGBA(147, 118, 56, 250)
|
||
|
|
});
|
||
|
|
DataCanvas.DrawActor(LevelText, 343 - LevelText.GetSize().w / 2, 60);
|
||
|
|
|
||
|
|
//人物Sp点
|
||
|
|
local SkillPoint = ClientCharacter ? ClientCharacter.SkillPoint : 0;
|
||
|
|
local SkillPointText = FontAssetManager.GenerateMini("SP:" + SkillPoint, true, {
|
||
|
|
color = sq_RGBA(24, 123, 174, 250)
|
||
|
|
});
|
||
|
|
DataCanvas.DrawActor(SkillPointText, 730 - SkillPointText.GetSize().w / 2, 60);
|
||
|
|
|
||
|
|
|
||
|
|
//人物疲劳值
|
||
|
|
local Fatigue = ClientCharacter ? ClientCharacter.Fatigue : 0;
|
||
|
|
local FatigueRate = (156.0 - Fatigue.tofloat()) / 156.0;
|
||
|
|
local FatigueBar = CL_SpriteObject("sprite/interface2/hud/hud.img", 3);
|
||
|
|
FatigueBar.SetPosition(823, 68);
|
||
|
|
FatigueBar.SetCropRect(0, 0, FatigueBar.GetSize().w * FatigueRate, FatigueBar.GetSize().h);
|
||
|
|
DataCanvas.DrawSprite(FatigueBar);
|
||
|
|
//人物疲劳值文字
|
||
|
|
local FatigueText = FontAssetManager.GenerateMini((156 - Fatigue) + "/156", true, {
|
||
|
|
color = sq_RGBA(201, 199, 201, 250)
|
||
|
|
});
|
||
|
|
DataCanvas.DrawActor(FatigueText, 892 - FatigueText.GetSize().w / 2, 62);
|
||
|
|
|
||
|
|
|
||
|
|
// 结束绘制
|
||
|
|
DataCanvas.EndDraw();
|
||
|
|
Addchild(DataCanvas);
|
||
|
|
}
|
||
|
|
|
||
|
|
//商城按钮
|
||
|
|
function RegisterButton() {
|
||
|
|
//商城按钮
|
||
|
|
local LoginButton = Yosin_BaseButton(786, 38, 64, 27, "sprite/interface2/hud/hud.img", 72);
|
||
|
|
//点击事件回调
|
||
|
|
LoginButton.OnClick = function(Button) {
|
||
|
|
|
||
|
|
}.bindenv(this);
|
||
|
|
AddUIChild(LoginButton);
|
||
|
|
|
||
|
|
//菜单按钮
|
||
|
|
local MenuButton = Yosin_BaseButton(849, 38, 27, 27, "sprite/interface2/hud/hud.img", 68);
|
||
|
|
//点击事件回调
|
||
|
|
MenuButton.OnClick = function(Button) {
|
||
|
|
|
||
|
|
}.bindenv(this);
|
||
|
|
AddUIChild(MenuButton);
|
||
|
|
|
||
|
|
//个人信息按钮
|
||
|
|
local InfoButton = Yosin_BaseButton(875, 38, 20, 27, "sprite/interface2/hud/hud.img", 5);
|
||
|
|
//点击事件回调
|
||
|
|
InfoButton.OnClick = function(Button) {
|
||
|
|
|
||
|
|
}.bindenv(this);
|
||
|
|
AddUIChild(InfoButton);
|
||
|
|
|
||
|
|
//背包按钮
|
||
|
|
local BagButton = Yosin_BaseButton(894, 38, 20, 27, "sprite/interface2/hud/hud.img", 8);
|
||
|
|
//点击事件回调
|
||
|
|
BagButton.OnClick = function(Button) {
|
||
|
|
|
||
|
|
}.bindenv(this);
|
||
|
|
AddUIChild(BagButton);
|
||
|
|
|
||
|
|
//技能按钮
|
||
|
|
local SkillButton = Yosin_BaseButton(913, 38, 20, 27, "sprite/interface2/hud/hud.img", 14);
|
||
|
|
//点击事件回调
|
||
|
|
SkillButton.OnClick = function(Button) {
|
||
|
|
|
||
|
|
}.bindenv(this);
|
||
|
|
AddUIChild(SkillButton);
|
||
|
|
|
||
|
|
//任务按钮
|
||
|
|
local TaskButton = Yosin_BaseButton(932, 38, 20, 27, "sprite/interface2/hud/hud.img", 11);
|
||
|
|
//点击事件回调
|
||
|
|
TaskButton.OnClick = function(Button) {
|
||
|
|
|
||
|
|
}.bindenv(this);
|
||
|
|
AddUIChild(TaskButton);
|
||
|
|
|
||
|
|
//拍卖行按钮
|
||
|
|
local AuctionButton = Yosin_BaseButton(951, 38, 20, 27, "sprite/interface2/hud/hud.img", 17);
|
||
|
|
//点击事件回调
|
||
|
|
AuctionButton.OnClick = function(Button) {
|
||
|
|
|
||
|
|
}.bindenv(this);
|
||
|
|
AddUIChild(AuctionButton);
|
||
|
|
|
||
|
|
//拓展技能按钮
|
||
|
|
local ExtendSkillButton = Yosin_BaseButton(400, 7, 17, 34, "sprite/interface2/hud/hud.img", 193);
|
||
|
|
//点击事件回调
|
||
|
|
ExtendSkillButton.OnClick = function(Button) {
|
||
|
|
|
||
|
|
}.bindenv(this);
|
||
|
|
AddUIChild(ExtendSkillButton);
|
||
|
|
|
||
|
|
//切换技能按钮
|
||
|
|
local SwitchSkillButton = Yosin_BaseButton(400, 37, 17, 34, "sprite/interface2/hud/hud.img", 52);
|
||
|
|
//点击事件回调
|
||
|
|
SwitchSkillButton.OnClick = function(Button) {
|
||
|
|
|
||
|
|
}.bindenv(this);
|
||
|
|
AddUIChild(SwitchSkillButton);
|
||
|
|
}
|
||
|
|
|
||
|
|
function Proc(Dt) {
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|