mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-18 06:21:55 +00:00
1
This commit is contained in:
@@ -0,0 +1,200 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef HUD_VOTE_H
|
||||
#define HUD_VOTE_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "hudelement.h"
|
||||
#include <vgui_controls/EditablePanel.h>
|
||||
#include <vgui_controls/SectionedListPanel.h>
|
||||
#include <vgui_controls/Frame.h>
|
||||
#include <vgui_controls/Button.h>
|
||||
#include <networkstringtabledefs.h>
|
||||
#include "vgui_avatarimage.h"
|
||||
|
||||
extern INetworkStringTable *g_pStringTableServerMapCycle;
|
||||
|
||||
#ifdef TF_CLIENT_DLL
|
||||
extern INetworkStringTable *g_pStringTableServerPopFiles;
|
||||
extern INetworkStringTable *g_pStringTableServerMapCycleMvM;
|
||||
#endif
|
||||
|
||||
static const int k_MAX_VOTE_NAME_LENGTH = 256;
|
||||
|
||||
namespace vgui
|
||||
{
|
||||
class SectionedListPanel;
|
||||
class ComboBox;
|
||||
class ImageList;
|
||||
};
|
||||
|
||||
struct VoteIssue_t
|
||||
{
|
||||
char szName[k_MAX_VOTE_NAME_LENGTH];
|
||||
char szNameString[k_MAX_VOTE_NAME_LENGTH];
|
||||
bool bIsActive;
|
||||
};
|
||||
|
||||
class VoteBarPanel : public vgui::Panel, public CGameEventListener
|
||||
{
|
||||
DECLARE_CLASS_SIMPLE( VoteBarPanel, vgui::Panel );
|
||||
|
||||
VoteBarPanel( vgui::Panel *parent, const char *panelName );
|
||||
|
||||
virtual void Paint( void );
|
||||
virtual void FireGameEvent( IGameEvent *event );
|
||||
|
||||
private:
|
||||
int m_nVoteOptionCount[MAX_VOTE_OPTIONS]; // Vote options counter
|
||||
int m_nPotentialVotes; // If set, draw a line at this point to show the required bar length
|
||||
|
||||
CPanelAnimationVarAliasType( int, m_iBoxSize, "box_size", "16", "proportional_int" );
|
||||
CPanelAnimationVarAliasType( int, m_iSpacer, "spacer", "4", "proportional_int" );
|
||||
CPanelAnimationVarAliasType( int, m_iBoxInset, "box_inset", "1", "proportional_int" );
|
||||
CPanelAnimationVarAliasType( int, m_nYesTextureId, "yes_texture", "vgui/hud/vote_yes", "textureid" );
|
||||
CPanelAnimationVarAliasType( int, m_nNoTextureId, "no_texture", "vgui/hud/vote_no", "textureid" );
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: A selection UI for votes that require additional parameters - such as players, maps
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class CVoteSetupDialog : public vgui::Frame
|
||||
{
|
||||
DECLARE_CLASS_SIMPLE( CVoteSetupDialog, vgui::Frame );
|
||||
|
||||
public:
|
||||
CVoteSetupDialog( vgui::Panel *parent );
|
||||
~CVoteSetupDialog();
|
||||
|
||||
virtual void Activate();
|
||||
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
|
||||
virtual void PostApplySchemeSettings( vgui::IScheme *pScheme );
|
||||
virtual void ApplySettings(KeyValues *inResourceData);
|
||||
|
||||
void InitializeIssueList( void );
|
||||
void UpdateCurrentMap( void );
|
||||
void AddVoteIssues( CUtlVector< VoteIssue_t > &m_VoteSetupIssues );
|
||||
void AddVoteIssueParams_MapCycle( CUtlStringList &m_VoteSetupMapCycle );
|
||||
|
||||
#ifdef TF_CLIENT_DLL
|
||||
void AddVoteIssueParams_PopFiles( CUtlStringList &m_VoteSetupPopFiles );
|
||||
#endif
|
||||
|
||||
private:
|
||||
//MESSAGE_FUNC( OnItemSelected, "ItemSelected" );
|
||||
MESSAGE_FUNC_PTR( OnItemSelected, "ItemSelected", panel );
|
||||
|
||||
virtual void OnCommand( const char *command );
|
||||
virtual void OnClose( void );
|
||||
|
||||
void RefreshIssueParameters( void );
|
||||
void ResetData( void );
|
||||
|
||||
vgui::ComboBox *m_pComboBox;
|
||||
|
||||
vgui::SectionedListPanel *m_pVoteSetupList;
|
||||
vgui::SectionedListPanel *m_pVoteParameterList;
|
||||
vgui::Button *m_pCallVoteButton;
|
||||
vgui::ImageList *m_pImageList;
|
||||
|
||||
CUtlVector< VoteIssue_t > m_VoteIssues;
|
||||
CUtlVector<const char*> m_VoteIssuesMapCycle;
|
||||
|
||||
#ifdef TF_CLIENT_DLL
|
||||
CUtlVector<const char*> m_VoteIssuesPopFiles;
|
||||
#endif
|
||||
|
||||
CPanelAnimationVarAliasType( int, m_iIssueWidth, "issue_width", "100", "proportional_int" );
|
||||
CPanelAnimationVarAliasType( int, m_iParameterWidth, "parameter_width", "150", "proportional_int" );
|
||||
|
||||
bool m_bVoteButtonEnabled;
|
||||
char m_szCurrentMap[MAX_MAP_NAME];
|
||||
|
||||
vgui::HFont m_hHeaderFont;
|
||||
Color m_HeaderFGColor;
|
||||
vgui::HFont m_hIssueFont;
|
||||
Color m_IssueFGColor;
|
||||
Color m_IssueFGColorDisabled;
|
||||
};
|
||||
|
||||
|
||||
class CHudVote : public vgui::EditablePanel, public CHudElement
|
||||
{
|
||||
DECLARE_CLASS_SIMPLE( CHudVote, vgui::EditablePanel );
|
||||
|
||||
CHudVote( const char *pElementName );
|
||||
|
||||
virtual void LevelInit( void );
|
||||
virtual void Init( void );
|
||||
virtual bool ShouldDraw( void );
|
||||
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
|
||||
virtual void FireGameEvent( IGameEvent *event );
|
||||
virtual void OnThink();
|
||||
virtual int KeyInput( int down, ButtonCode_t keynum, const char *pszCurrentBinding );
|
||||
|
||||
// NOTE: Any MsgFunc_*() methods added here need to check IsPlayingDemo().
|
||||
void MsgFunc_CallVoteFailed( bf_read &msg );
|
||||
void MsgFunc_VoteStart( bf_read &msg );
|
||||
void MsgFunc_VotePass( bf_read &msg );
|
||||
void MsgFunc_VoteFailed( bf_read &msg );
|
||||
void MsgFunc_VoteSetup( bf_read &msg );
|
||||
|
||||
void PropagateOptionParameters( void );
|
||||
void ShowVoteUI( bool bShow ) { m_bShowVoteActivePanel = bShow; }
|
||||
bool IsVoteUIActive( void );
|
||||
bool IsVoteSystemActive( void ) { return m_bVoteSystemActive; }
|
||||
|
||||
bool IsShowingVoteSetupDialog();
|
||||
bool IsShowingVotingUI();
|
||||
|
||||
virtual GameActionSet_t GetPreferredActionSet() { return IsShowingVoteSetupDialog() ? GAME_ACTION_SET_MENUCONTROLS : CHudElement::GetPreferredActionSet(); }
|
||||
|
||||
private:
|
||||
bool IsPlayingDemo() const;
|
||||
|
||||
EditablePanel *m_pVoteActive;
|
||||
vgui::Label *m_pVoteActiveIssueLabel;
|
||||
CAvatarImagePanel *m_pVoteActiveTargetAvatar;
|
||||
VoteBarPanel *m_voteBar;
|
||||
EditablePanel *m_pVoteFailed;
|
||||
EditablePanel *m_pVotePassed;
|
||||
EditablePanel *m_pCallVoteFailed;
|
||||
CVoteSetupDialog *m_pVoteSetupDialog;
|
||||
|
||||
CUtlVector< VoteIssue_t > m_VoteSetupIssues;
|
||||
CUtlStringList m_VoteSetupMapCycle;
|
||||
|
||||
int m_nVoteActiveIssueLabelX;
|
||||
int m_nVoteActiveIssueLabelY;
|
||||
|
||||
#ifdef TF_CLIENT_DLL
|
||||
CUtlStringList m_VoteSetupPopFiles;
|
||||
#endif
|
||||
|
||||
CUtlStringList m_VoteSetupChoices;
|
||||
|
||||
bool m_bVotingActive;
|
||||
bool m_bVoteSystemActive;
|
||||
float m_flVoteResultCycleTime; // what time will we cycle to the result
|
||||
float m_flHideTime; // what time will we hide
|
||||
bool m_bVotePassed; // what mode are we going to cycle to
|
||||
int m_nVoteOptionCount[MAX_VOTE_OPTIONS]; // Vote options counter
|
||||
int m_nPotentialVotes; // If set, draw a line at this point to show the required bar length
|
||||
bool m_bIsYesNoVote;
|
||||
int m_nVoteChoicesCount;
|
||||
bool m_bPlayerVoted;
|
||||
float m_flPostVotedHideTime;
|
||||
bool m_bShowVoteActivePanel;
|
||||
int m_iVoteCallerIdx;
|
||||
int m_nVoteTeamIndex; // If defined, only players on this team will see/vote on the issue
|
||||
};
|
||||
|
||||
#endif // HUD_VOTE_H
|
||||
Reference in New Issue
Block a user