ZoFo/ZoFo/GameCore/GUI/HUD.cs

97 lines
No EOL
3.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Xml;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using MonogameLibrary.UI.Base;
using MonogameLibrary.UI.Elements;
using ZoFo.GameCore.GameManagers;
namespace ZoFo.GameCore.GUI;
public class HUD : AbstractGUI
{
private Bar hpBar;
private Bar radBar;
public AbstractGUI overlayGUI;
protected override void CreateUI()
{
int width = AppManager.Instance.CurentScreenResolution.X;
int height = AppManager.Instance.CurentScreenResolution.Y;
Button pauseButton = new Button(Manager)
{
fontName = "Fonts\\Font3", scale = 0.4f, text = "| |", fontColor = Color.Black,
mainColor = Color.Transparent, rectangle = new Rectangle(width - width / 30 - width / 40, height / 30, width / 40, width / 40),
textureName = "Textures/GUI/Button2"
};
Elements.Add(pauseButton);
pauseButton.LeftButtonPressed += () =>
{
AppManager.Instance.SoundManager.StartAmbientSound("Button click");
AppManager.Instance.SetGUI(new PauseGUI());
//AppManager.Instance.SetGUI(new FinishingGUI());
overlayGUI = new PauseGUI();
overlayGUI.Initialize();
overlayGUI.LoadContent();
};
Button invButton = new Button(Manager)
{
fontName = "Fonts\\Font3", scale = 0.4f, fontColor = Color.Black,
mainColor = Color.Transparent, rectangle = new Rectangle(width - width / 30 - width / 40, height / 15 + width / 40, width / 40, width / 40),
textureName = "Textures/GUI/ButtonI"
};
Elements.Add(invButton);
invButton.LeftButtonPressed += () =>
{
overlayGUI = new InventoryGUI();
overlayGUI.Initialize();
overlayGUI.LoadContent();
};
hpBar = new Bar(Manager)
{
rectangle = new Rectangle(width / 2 - width / 8 - width / 16, height - height / 10, width / 8, height / 25),
percent = 1f,
mainColor = Color.LightGray,
inColor = Color.Red
};
hpBar.Initialize();
hpBar.LoadTexture(AppManager.Instance.Content);
radBar = new Bar(Manager)
{
rectangle = new Rectangle(width / 2 + width / 16, height - height / 10, width / 8, height / 25),
percent = 0f,
mainColor = Color.LightGray,
inColor = Color.GreenYellow
};
radBar.Initialize();
radBar.LoadTexture(AppManager.Instance.Content);
}
public override void Update(GameTime gameTime)
{
overlayGUI?.Update(gameTime);
//hpBar.Update(gameTime, AppManager.Instance.client.myPlayer.health / 100f);
//radBar.Update(gameTime, AppManager.Instance.client.myPlayer.rad / 100f);
if (AppManager.Instance.client.myPlayer != null)
{
radBar.Update(gameTime, AppManager.Instance.client.myPlayer.rad / AppManager.Instance.client.myPlayer.MaxRad);
hpBar.Update(gameTime, AppManager.Instance.client.myPlayer.health / AppManager.Instance.client.myPlayer.MaxHealth);
}
base.Update(gameTime);
}
public override void Draw(SpriteBatch spriteBatch)
{
overlayGUI?.Draw(spriteBatch);
base.Draw(spriteBatch);
}
}