mirror of
https://github.com/0TheSpy/Seaside.git
synced 2025-01-10 19:22:10 +08:00
171 lines
4.0 KiB
C
171 lines
4.0 KiB
C
|
#ifndef HUD_H
|
||
|
#define HUD_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include "utlvector.h"
|
||
|
#include "utldict.h"
|
||
|
#include "convar.h"
|
||
|
#include "VGUI.h"
|
||
|
#include "Color.h"
|
||
|
#include "bitbuf.h"
|
||
|
|
||
|
namespace vgui
|
||
|
{
|
||
|
class IScheme;
|
||
|
}
|
||
|
|
||
|
typedef struct wrect_s
|
||
|
{
|
||
|
int left;
|
||
|
int right;
|
||
|
int top;
|
||
|
int bottom;
|
||
|
} wrect_t;
|
||
|
|
||
|
class CHudTexture
|
||
|
{
|
||
|
public:
|
||
|
CHudTexture();
|
||
|
CHudTexture& operator =(const CHudTexture& src);
|
||
|
virtual ~CHudTexture();
|
||
|
|
||
|
int Width() const
|
||
|
{
|
||
|
return rc.right - rc.left;
|
||
|
}
|
||
|
|
||
|
int Height() const
|
||
|
{
|
||
|
return rc.bottom - rc.top;
|
||
|
}
|
||
|
|
||
|
void Precache(void);
|
||
|
|
||
|
int EffectiveWidth(float flScale) const;
|
||
|
int EffectiveHeight(float flScale) const;
|
||
|
|
||
|
void DrawSelf(int x, int y, const Color& clr) const;
|
||
|
void DrawSelf(int x, int y, int w, int h, const Color& clr) const;
|
||
|
void DrawSelfCropped(int x, int y, int cropx, int cropy, int cropw, int croph, Color clr) const;
|
||
|
void DrawSelfCropped(int x, int y, int cropx, int cropy, int cropw, int croph, int finalWidth, int finalHeight, Color clr) const;
|
||
|
|
||
|
char szShortName[64];
|
||
|
char szTextureFile[64];
|
||
|
|
||
|
bool bRenderUsingFont;
|
||
|
bool bPrecached;
|
||
|
char cCharacterInFont;
|
||
|
vgui::HFont hFont;
|
||
|
|
||
|
int textureId;
|
||
|
float texCoords[4];
|
||
|
|
||
|
wrect_t rc;
|
||
|
};
|
||
|
|
||
|
#include "hudtexturehandle.h"
|
||
|
|
||
|
class CHudElement;
|
||
|
class CHudRenderGroup;
|
||
|
|
||
|
class CHud
|
||
|
{
|
||
|
public:
|
||
|
static const int HUDPB_HORIZONTAL;
|
||
|
static const int HUDPB_VERTICAL;
|
||
|
static const int HUDPB_HORIZONTAL_INV;
|
||
|
|
||
|
public:
|
||
|
CHud();
|
||
|
~CHud();
|
||
|
|
||
|
void Init(void);
|
||
|
void VidInit(void);
|
||
|
void Shutdown(void);
|
||
|
void LevelInit(void);
|
||
|
void LevelShutdown(void);
|
||
|
|
||
|
void ResetHUD(void);
|
||
|
|
||
|
void OnRestore();
|
||
|
|
||
|
void Think();
|
||
|
|
||
|
void ProcessInput(bool bActive);
|
||
|
void UpdateHud(bool bActive);
|
||
|
|
||
|
void InitColors(vgui::IScheme* pScheme);
|
||
|
|
||
|
void AddHudElement(CHudElement* pHudElement);
|
||
|
void RemoveHudElement(CHudElement* pHudElement);
|
||
|
CHudElement* FindElement(const char* pName);
|
||
|
|
||
|
bool IsHidden(int iHudFlags);
|
||
|
|
||
|
float GetSensitivity();
|
||
|
float GetFOVSensitivityAdjust();
|
||
|
|
||
|
void DrawProgressBar(int x, int y, int width, int height, float percentage, Color& clr, unsigned char type);
|
||
|
void DrawIconProgressBar(int x, int y, CHudTexture* icon, CHudTexture* icon2, float percentage, Color& clr, int type);
|
||
|
|
||
|
CHudTexture* GetIcon(const char* szIcon);
|
||
|
|
||
|
CHudTexture* AddUnsearchableHudIconToList(CHudTexture& texture);
|
||
|
CHudTexture* AddSearchableHudIconToList(CHudTexture& texture);
|
||
|
|
||
|
void RefreshHudTextures();
|
||
|
|
||
|
void MsgFunc_ResetHUD(bf_read& msg);
|
||
|
void MsgFunc_SendAudio(bf_read& msg);
|
||
|
|
||
|
int LookupRenderGroupIndexByName(const char* pszGroupName);
|
||
|
bool LockRenderGroup(int iGroupIndex, CHudElement* pLocker = NULL);
|
||
|
bool UnlockRenderGroup(int iGroupIndex, CHudElement* pLocker = NULL);
|
||
|
bool IsRenderGroupLockedFor(CHudElement* pHudElement, int iGroupIndex);
|
||
|
int RegisterForRenderGroup(const char* pszGroupName);
|
||
|
int AddHudRenderGroup(const char* pszGroupName);
|
||
|
bool DoesRenderGroupExist(int iGroupIndex);
|
||
|
|
||
|
void SetScreenShotTime(float flTime) { m_flScreenShotTime = flTime; }
|
||
|
|
||
|
public:
|
||
|
|
||
|
int m_iKeyBits;
|
||
|
#ifndef _XBOX
|
||
|
float m_flMouseSensitivity;
|
||
|
float m_flMouseSensitivityFactor;
|
||
|
#endif
|
||
|
float m_flFOVSensitivityAdjust;
|
||
|
|
||
|
Color m_clrNormal;
|
||
|
Color m_clrCaution;
|
||
|
Color m_clrYellowish;
|
||
|
|
||
|
CUtlVector< CHudElement* > m_HudList;
|
||
|
|
||
|
private:
|
||
|
void InitFonts();
|
||
|
|
||
|
void SetupNewHudTexture(CHudTexture* t);
|
||
|
|
||
|
bool m_bHudTexturesLoaded;
|
||
|
|
||
|
CUtlDict< CHudTexture*, int > m_Icons;
|
||
|
|
||
|
CUtlVector< const char* > m_RenderGroupNames;
|
||
|
CUtlMap< int, CHudRenderGroup* > m_RenderGroups;
|
||
|
|
||
|
float m_flScreenShotTime;
|
||
|
};
|
||
|
|
||
|
extern CHud gHUD;
|
||
|
|
||
|
extern vgui::HFont g_hFontTrebuchet24;
|
||
|
|
||
|
void LoadHudTextures(CUtlDict< CHudTexture*, int >& list, const char* szFilenameWithoutExtension, const unsigned char* pICEKey);
|
||
|
|
||
|
void GetHudSize(int& w, int& h);
|
||
|
|
||
|
#endif
|