mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-01-06 04:05:32 +03:00
c448f194ae
- Added keyvalue to hl2_gamerules which allows respawning in singleplayer - Added the game instructor system (including env_instructor_hint) from later Valve games using a VDC tutorial which adjusts the version from the Alien Swarm SDK to FPS rules and a Source 2013 environment; Also added new KV and icons for further control from mappers (tutorial mentioned by Maestra Fenix) - Added L4D/TF2 glows + point_glow entity as an all-purpose SDK-based off-shoot of tf_glow - Fixed weapon pickup sound not playing (reported by Sl0th and later Cvoxulary) - Fixed env_projectedtextures not updating on save/load - Added func_fake_worldportal, a spatial point_camera inspired by linked_portal_door based on SDK code alone (WIP, may be changed a lot in future updates) - Added option for point_camera and func_reflective_glass to use different render targets, therefore allowing multiple cameras and mirrors to be active at the same time - Added additional RT camera textures to choose from with a default of 3, but also controllable through a -numcameratextures command line param - Added adjustable convars for main view NearZ and skybox NearZ (suggested by someone recently, also suggested by Klems over a year ago) - Fixed map-specific localization files, cleaned up map-specific file code - Added a new block to gameinfo.txt which allows mods to automatically append their own command line parameters - Fixed math_lightpattern corruption when setting pattern/style while active - Fixed the "Touch" input crashing when given no entity - Added a way to add EFlags via keyvalue (suggested by Niker107) - Fixed ai_script_conditions not working without a NPC actor (reported by MetroHam) - Fixed point_radiation_source causing huge problems when intensity is 0, even though it was already advised against (reported by beefbacon) - Added "Mapbase" header to Mapbase-specific code files - Fixed an issue with updating sky_camera not obtaining area correctly, causing some entities to not draw in the skybox - Added "CopyFogController" and "CopyFogControllerWithScale" inputs to sky_camera, which copy fog parameters directly from a fog controller - Added "SetScale" input to sky_camera for live scale changing - Added convar to control player crouch speed multiplier (suggested by ArtyIF) - Added a ton of fixes for people running the Debug configuration of the codebase (partial credit to stepa2) - Added support for pre-defined enums and constants in VScript, starting with various values from the SDK code (damage types, trace masks, etc.) - Added limited support for Valve's Quaternion class in VScript - Added new instance helper capabilities, destructible game instances, and other misc. changes to VScript library - Replaced most of the VScript "accessor" classes with direct references to the original classes, as they were getting complicated fast and adding new VScript-only functions to the original classes might not be as bad as previously thought - Added base NPC hooks for AI sensing in VScript (allows control over sight and hearing), also exposed CSound for it - Added various functions and hooks for VPhysics integration in VScript - Added VScript-based custom suit devices - Expanded trace info exposed to VScript to allow plane and surface access (suggested by krassell) - Added ability to insert localization strings through VScript - Added various misc. VScript functions with various purposes, including reading/writing EFlags, movetypes, collision groups, etc. - Fixed VBSP not being able to correctly parse parallax corrected cubemaps in maps with instances
238 lines
6.5 KiB
C++
238 lines
6.5 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: CHud handles the message, calculation, and drawing the HUD
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
#ifndef HUD_H
|
|
#define HUD_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "utlvector.h"
|
|
#include "utldict.h"
|
|
#include "convar.h"
|
|
#include <vgui/VGUI.h>
|
|
#include <Color.h>
|
|
#include <bitbuf.h>
|
|
|
|
namespace vgui
|
|
{
|
|
class IScheme;
|
|
}
|
|
|
|
// basic rectangle struct used for drawing
|
|
typedef struct wrect_s
|
|
{
|
|
int left;
|
|
int right;
|
|
int top;
|
|
int bottom;
|
|
} wrect_t;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
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;
|
|
}
|
|
|
|
// causes the font manager to generate the glyph, prevents run time hitches on platforms that have slow font managers
|
|
void Precache( void );
|
|
|
|
// returns width & height of icon with scale applied (scale is ignored if font is used to render)
|
|
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;
|
|
// new version to scale the texture over a finalWidth and finalHeight passed in
|
|
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;
|
|
|
|
// vgui texture Id assigned to this item
|
|
int textureId;
|
|
// s0, t0, s1, t1
|
|
float texCoords[ 4 ];
|
|
|
|
// Original bounds
|
|
wrect_t rc;
|
|
};
|
|
|
|
#include "hudtexturehandle.h"
|
|
|
|
class CHudElement;
|
|
class CHudRenderGroup;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Main hud manager
|
|
//-----------------------------------------------------------------------------
|
|
class CHud
|
|
{
|
|
public:
|
|
//For progress bar orientations
|
|
static const int HUDPB_HORIZONTAL;
|
|
static const int HUDPB_VERTICAL;
|
|
static const int HUDPB_HORIZONTAL_INV;
|
|
|
|
public:
|
|
CHud();
|
|
~CHud();
|
|
|
|
// Init's called when the HUD's created at DLL load
|
|
void Init( void );
|
|
// VidInit's called when the video mode's changed
|
|
void VidInit( void );
|
|
// Shutdown's called when the engine's shutting down
|
|
void Shutdown( void );
|
|
// LevelInit's called whenever a new level is starting
|
|
void LevelInit( void );
|
|
// LevelShutdown's called whenever a level is finishing
|
|
void LevelShutdown( void );
|
|
|
|
void ResetHUD( void );
|
|
|
|
// A saved game has just been loaded
|
|
void OnRestore();
|
|
|
|
void Think();
|
|
|
|
void ProcessInput( bool bActive );
|
|
void UpdateHud( bool bActive );
|
|
|
|
void InitColors( vgui::IScheme *pScheme );
|
|
|
|
// Hud element registration
|
|
void AddHudElement( CHudElement *pHudElement );
|
|
void RemoveHudElement( CHudElement *pHudElement );
|
|
// Search list for "name" and return the hud element if it exists
|
|
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 );
|
|
|
|
// loads a new icon into the list, without duplicates
|
|
CHudTexture *AddUnsearchableHudIconToList( CHudTexture& texture );
|
|
CHudTexture *AddSearchableHudIconToList( CHudTexture& texture );
|
|
|
|
void RefreshHudTextures();
|
|
|
|
// User messages
|
|
void MsgFunc_ResetHUD(bf_read &msg);
|
|
void MsgFunc_SendAudio(bf_read &msg);
|
|
|
|
// Hud Render group
|
|
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;
|
|
|
|
// Global list of known icons
|
|
CUtlDict< CHudTexture *, int > m_Icons;
|
|
|
|
CUtlVector< const char * > m_RenderGroupNames;
|
|
CUtlMap< int, CHudRenderGroup * > m_RenderGroups;
|
|
|
|
float m_flScreenShotTime; // used to take end-game screenshots
|
|
};
|
|
|
|
extern CHud gHUD;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: CHudIcons
|
|
//-----------------------------------------------------------------------------
|
|
class CHudIcons
|
|
{
|
|
public:
|
|
CHudIcons();
|
|
~CHudIcons();
|
|
|
|
void Init();
|
|
void Shutdown();
|
|
|
|
CHudTexture *GetIcon( const char *szIcon );
|
|
|
|
// loads a new icon into the list, without duplicates
|
|
CHudTexture *AddUnsearchableHudIconToList( CHudTexture& texture );
|
|
CHudTexture *AddSearchableHudIconToList( CHudTexture& texture );
|
|
|
|
void RefreshHudTextures();
|
|
|
|
private:
|
|
|
|
void SetupNewHudTexture( CHudTexture *t );
|
|
bool m_bHudTexturesLoaded;
|
|
// Global list of known icons
|
|
CUtlDict< CHudTexture *, int > m_Icons;
|
|
|
|
};
|
|
|
|
CHudIcons &HudIcons();
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Global fonts used in the client DLL
|
|
//-----------------------------------------------------------------------------
|
|
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 // HUD_H
|