diff options
Diffstat (limited to 'game/server/NavUI/NavUI.h')
| -rw-r--r-- | game/server/NavUI/NavUI.h | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/game/server/NavUI/NavUI.h b/game/server/NavUI/NavUI.h new file mode 100644 index 0000000..e0976d3 --- /dev/null +++ b/game/server/NavUI/NavUI.h @@ -0,0 +1,220 @@ +//-------------------------------------------------------------------------------------------------------- +//========= Copyright Valve Corporation, All rights reserved. ============// + +#ifndef NAVUI_H +#define NAVUI_H + +#ifdef SERVER_USES_VGUI + +#include "KeyValues.h" +#include <vgui_controls/ImagePanel.h> +#include <vgui_controls/Button.h> +#include <vgui_controls/Frame.h> +#include <vgui_controls/ComboBox.h> +#include <vgui_controls/TextEntry.h> +#include <vgui_controls/CheckButton.h> +#include <vgui/ILocalize.h> +#include "vgui/ISurface.h" +#include "vgui/IVGui.h" +#include "fmtstr.h" +#include <vgui_controls/CheckButton.h> + + +//-------------------------------------------------------------------------------------------------------- +void GetNavUIEditVectors( Vector *pos, Vector *forward ); + + +//-------------------------------------------------------------------------------------------------------- +class CNavUIButton : public vgui::Button +{ + DECLARE_CLASS_SIMPLE( CNavUIButton, vgui::Button ); + +public: + CNavUIButton( Panel *parent, const char *name ) : vgui::Button( parent, name, "" ) + { + m_hideKey = BUTTON_CODE_INVALID; + } + + virtual void OnKeyCodePressed( vgui::KeyCode code ); + virtual void OnKeyCodeReleased( vgui::KeyCode code ); + +private: + void LookupKey( void ); + + ButtonCode_t m_hideKey; + IntervalTimer m_hidePressedTimer; +}; + + +//-------------------------------------------------------------------------------------------------------- +class CNavUITextEntry : public vgui::TextEntry +{ + DECLARE_CLASS_SIMPLE( CNavUIButton, vgui::TextEntry ); + +public: + CNavUITextEntry( Panel *parent, const char *name ) : vgui::TextEntry( parent, name ) + { + m_hideKey = BUTTON_CODE_INVALID; + } + + virtual void OnKeyCodePressed( vgui::KeyCode code ); + virtual void OnKeyCodeReleased( vgui::KeyCode code ); + +private: + void LookupKey( void ); + + ButtonCode_t m_hideKey; + IntervalTimer m_hidePressedTimer; +}; + + +//-------------------------------------------------------------------------------------------------------- +class CNavUIComboBox : public vgui::ComboBox +{ + DECLARE_CLASS_SIMPLE( CNavUIComboBox, vgui::ComboBox ); + +public: + CNavUIComboBox( Panel *parent, const char *name, int numLines, bool editable ) : vgui::ComboBox( parent, name, numLines, editable ) + { + m_hideKey = BUTTON_CODE_INVALID; + } + + virtual void OnKeyCodePressed( vgui::KeyCode code ); + virtual void OnKeyCodeReleased( vgui::KeyCode code ); + +private: + void LookupKey( void ); + + ButtonCode_t m_hideKey; + IntervalTimer m_hidePressedTimer; +}; + + +//-------------------------------------------------------------------------------------------------------- +class CNavUICheckButton : public vgui::CheckButton +{ + DECLARE_CLASS_SIMPLE( CNavUICheckButton, vgui::CheckButton ); + +public: + CNavUICheckButton( Panel *parent, const char *name, const char *text ) : vgui::CheckButton( parent, name, text ) + { + m_hideKey = BUTTON_CODE_INVALID; + } + + virtual void OnKeyCodePressed( vgui::KeyCode code ); + virtual void OnKeyCodeReleased( vgui::KeyCode code ); + +private: + void LookupKey( void ); + + ButtonCode_t m_hideKey; + IntervalTimer m_hidePressedTimer; +}; + + +//-------------------------------------------------------------------------------------------------------- +class CNavUIToolPanel : public vgui::EditablePanel +{ + DECLARE_CLASS_SIMPLE( CNavUIToolPanel, vgui::EditablePanel ); + +public: + CNavUIToolPanel( vgui::Panel *parent, const char *toolName ) : vgui::EditablePanel( parent, toolName ) + { + } + + virtual void Init( void ) + { + } + + virtual void Shutdown( void ) + { + } + + virtual vgui::Panel *CreateControlByName( const char *controlName ); + + virtual void StartLeftClickAction( const char *actionName ) + { + } + + virtual void FinishLeftClickAction( const char *actionName ) + { + } + + virtual void StartRightClickAction( const char *actionName ) + { + } + +protected: + bool IsCheckButtonChecked( const char *name ); +}; + + +//-------------------------------------------------------------------------------------------------------- +class CNavUIBasePanel : public vgui::Frame +{ + DECLARE_CLASS_SIMPLE( CNavUIBasePanel, vgui::Frame ); + +public: + CNavUIBasePanel(); + virtual ~CNavUIBasePanel(); + + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); + virtual void OnCommand( const char *command ); + virtual void PerformLayout( void ); + virtual void PaintBackground( void ); + + // GameUI panels are always visible by default, so here we hide ourselves if the GameUI is up. + virtual void OnTick( void ); + + void ToggleVisibility( void ); + virtual Panel *CreateControlByName( const char *controlName ); + + virtual void OnKeyCodePressed( vgui::KeyCode code ); + virtual void OnKeyCodeReleased( vgui::KeyCode code ); + virtual void OnMousePressed( vgui::MouseCode code ); + + virtual void OnCursorMoved( int x, int y ); + virtual void OnCursorEntered( void ); + virtual void OnCursorExited( void ); + virtual void OnMouseReleased( vgui::MouseCode code ); + + void SetLeftClickAction( const char *action, const char *text ); + const char *GetLeftClickAction( void ) const + { + return m_leftClickAction; + } + + void PlaySound( const char *sound ); + +protected: + const char *ActiveToolName( void ) const; + void ActivateTool( const char *toolName ); + virtual CNavUIToolPanel *CreateTool( const char *toolName, vgui::Panel *toolParent ); + +private: + bool m_hidden; + + bool m_dragSelecting; + bool m_dragUnselecting; + + CNavUIToolPanel *m_toolPanel; + CNavUIToolPanel *m_selectionPanel; + + void LookupKey( void ); + + ButtonCode_t m_hideKey; + IntervalTimer m_hidePressedTimer; + + CountdownTimer m_audioTimer; + + char m_leftClickAction[ 64 ]; + bool m_performingLeftClickAction; +}; + + +extern CNavUIBasePanel *CreateNavUI( void ); +extern CNavUIBasePanel *TheNavUI( void ); + +#endif // SERVER_USES_VGUI + +#endif // NAVUI_H |