/* 文件名: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) { } }