mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
212 lines
5.4 KiB
C++
212 lines
5.4 KiB
C++
/*
|
|
===========================================================================
|
|
Copyright (C) 2015 the OpenMoHAA team
|
|
|
|
This file is part of OpenMoHAA source code.
|
|
|
|
OpenMoHAA source code is free software; you can redistribute it
|
|
and/or modify it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation; either version 2 of the License,
|
|
or (at your option) any later version.
|
|
|
|
OpenMoHAA source code is distributed in the hope that it will be
|
|
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with OpenMoHAA source code; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
===========================================================================
|
|
*/
|
|
|
|
// hud.h: New HUD handler for MoHAA
|
|
//
|
|
|
|
#ifndef __HUD_H__
|
|
#define __HUD_H__
|
|
|
|
#include "listener.h"
|
|
#include "container.h"
|
|
|
|
#define TIMER_ACTIVE (1<<0)
|
|
#define TIMER_UP (1<<1)
|
|
|
|
typedef enum hudAlign_s
|
|
{
|
|
HUD_LEFT = 0,
|
|
HUD_CENTER = 1,
|
|
HUD_RIGHT = 2,
|
|
HUD_TOP = 0,
|
|
HUD_BOTTOM = 2,
|
|
HUD_INVALID = 3
|
|
} hudAlign_t;
|
|
|
|
class Hud : public Listener
|
|
{
|
|
private:
|
|
unsigned int number; // auto-assigned number
|
|
#ifdef GAME_DLL
|
|
char clientnum; // assigned client number
|
|
#else
|
|
fontHeader_t *font;
|
|
qhandle_t shaderHandle;
|
|
#endif
|
|
hudAlign_t alignX, alignY;
|
|
float x, y;
|
|
float width, height;
|
|
Vector color;
|
|
float alpha;
|
|
str fontName;
|
|
str shader;
|
|
str text;
|
|
bool virtualSize;
|
|
bool isDimensional;
|
|
|
|
bool fade_alpha;
|
|
bool fade_move;
|
|
bool fade_scale;
|
|
int fade_timer_flags;
|
|
|
|
bool fade_alpha_first;
|
|
int fade_move_x_first;
|
|
int fade_move_y_first;
|
|
|
|
float fade_alpha_current;
|
|
float fade_move_current;
|
|
float fade_scale_current;
|
|
float fade_time_current;
|
|
|
|
float fade_alpha_time;
|
|
float fade_move_time;
|
|
float fade_scale_time;
|
|
float fade_time;
|
|
float fade_out_time;
|
|
|
|
float fade_alpha_start;
|
|
float fade_move_x_start;
|
|
float fade_move_y_start;
|
|
float fade_scale_w_start;
|
|
float fade_scale_h_start;
|
|
float fade_time_alpha_start;
|
|
|
|
float fade_alpha_target;
|
|
float fade_move_x_target;
|
|
float fade_move_y_target;
|
|
float fade_scale_w_target;
|
|
float fade_scale_h_target;
|
|
float fade_time_target;
|
|
|
|
Vector org;
|
|
Vector lastOrg;
|
|
qboolean always_show;
|
|
qboolean depth;
|
|
int enttarget;
|
|
|
|
#ifdef GAME_DLL
|
|
void SetBroadcast( int clientNumber = -1 ); // Broadcast to someone or everyone
|
|
#endif
|
|
|
|
private:
|
|
#ifdef GAME_DLL
|
|
void WriteNumber();
|
|
#endif
|
|
|
|
public:
|
|
CLASS_PROTOTYPE( Hud );
|
|
|
|
virtual void Archive( Archiver &arc );
|
|
|
|
static Hud *Find( int index );
|
|
static Hud *FindOrCreate( int index );
|
|
static int GetFreeNumber( void );
|
|
static void ProcessThink( void );
|
|
static int Sort( const void *elem1, const void *elem2 );
|
|
|
|
#ifdef CGAME_DLL
|
|
static void ArchiveFunction( Archiver &arc );
|
|
#endif
|
|
|
|
#ifdef GAME_DLL
|
|
Hud( int client = -1 );
|
|
#else
|
|
Hud( int index = -1 );
|
|
#endif
|
|
~Hud( void );
|
|
|
|
#ifdef CGAME_DLL
|
|
void Draw3D( void );
|
|
#endif
|
|
|
|
void FadeThink( void );
|
|
void MoveThink( void );
|
|
void ScaleThink( void );
|
|
void TimerThink( void );
|
|
|
|
void Think( void );
|
|
|
|
void FadeOverTime( float time );
|
|
void MoveOverTime( float time );
|
|
void ScaleOverTime( float time, short width, short height );
|
|
|
|
void Refresh( int clientNumber = -1 );
|
|
|
|
#ifdef GAME_DLL
|
|
int GetClient( void );
|
|
#endif
|
|
|
|
void Set3D( Vector vector_or_offset, qboolean always_show, qboolean depth, int entnum = -1 );
|
|
void SetNon3D( void );
|
|
void SetAlignX( hudAlign_t align );
|
|
void SetAlignY( hudAlign_t align );
|
|
void SetAlpha( float alpha );
|
|
void SetClient( int clientnum, qboolean clears = false );
|
|
void SetColor( Vector color );
|
|
void SetFont( const char * font );
|
|
void SetRectX( short x );
|
|
void SetRectY( short y );
|
|
void SetRectHeight( short height );
|
|
void SetRectWidth( short height );
|
|
void SetShader( const char * shader, float width, float height );
|
|
void SetText( const char * text );
|
|
void SetTimer( float time, float fade_at_time = -1.0f );
|
|
void SetTimerUp( float time, float fade_at_time = -1.0f );
|
|
void SetVirtualSize( qboolean virtualSize );
|
|
|
|
// Events
|
|
void EventGetAlignX( Event * ev );
|
|
void EventGetAlignY( Event * ev );
|
|
void EventGetAlpha( Event * ev );
|
|
void EventGetColor( Event * ev );
|
|
void EventGetFont( Event * ev );
|
|
void EventGetHeight( Event *ev );
|
|
void EventGetRectX( Event * ev );
|
|
void EventGetRectY( Event * ev );
|
|
void EventGetTime( Event *ev );
|
|
void EventGetWidth( Event *ev );
|
|
void EventFadeDone( Event * ev );
|
|
void EventFadeOverTime( Event * ev );
|
|
void EventMoveDone( Event * ev );
|
|
void EventMoveOverTime( Event * ev );
|
|
void EventRefresh( Event * ev );
|
|
void EventScaleOverTime( Event * ev );
|
|
void EventSet3D( Event *ev );
|
|
void EventSetNon3D( Event *ev );
|
|
void EventSetAlignX( Event * ev );
|
|
void EventSetAlignY( Event * ev );
|
|
void EventSetAlpha( Event * ev );
|
|
void EventSetColor( Event * ev );
|
|
void EventSetFont( Event * ev );
|
|
void EventSetPlayer( Event * ev );
|
|
void EventSetRectX( Event * ev );
|
|
void EventSetRectY( Event * ev );
|
|
void EventSetShader( Event * ev );
|
|
void EventSetText( Event * ev );
|
|
void EventSetTimer( Event *ev );
|
|
void EventSetTimerUp( Event *ev );
|
|
void EventSetVirtualSize( Event * ev );
|
|
};
|
|
|
|
extern Container< Hud * > hudElements;
|
|
|
|
#endif /* __HUD_H__ */
|