DOF/sqr/User/UI/Window/9_HUD/9_HUD.nut

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) {
}
}