summaryrefslogtreecommitdiff
path: root/game/client/tf/tf_hud_saxxycontest.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/tf/tf_hud_saxxycontest.h')
-rw-r--r--game/client/tf/tf_hud_saxxycontest.h169
1 files changed, 169 insertions, 0 deletions
diff --git a/game/client/tf/tf_hud_saxxycontest.h b/game/client/tf/tf_hud_saxxycontest.h
new file mode 100644
index 0000000..2822469
--- /dev/null
+++ b/game/client/tf/tf_hud_saxxycontest.h
@@ -0,0 +1,169 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+//=======================================================================================//
+
+#ifndef TF_HUD_SAXXYCONTEST_H
+#define TF_HUD_SAXXYCONTEST_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <vgui_controls/EditablePanel.h>
+#include "game_controls/basemodel_panel.h"
+
+using namespace vgui;
+
+class KeyValues;
+class CExButton;
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class CSaxxyAwardsPanel : public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CSaxxyAwardsPanel, vgui::EditablePanel );
+public:
+ CSaxxyAwardsPanel( Panel *pParent, const char *pName );
+ ~CSaxxyAwardsPanel();
+
+ virtual void ApplySettings( KeyValues *pInResourceData );
+
+ void Refresh();
+
+private:
+ virtual void ApplySchemeSettings( IScheme *pScheme );
+ virtual void PerformLayout();
+ virtual void OnCommand( const char *pCommand );
+ virtual void PaintBackground();
+
+ struct FlashInfo_t
+ {
+ int m_nCenterX;
+ int m_nCenterY;
+ int m_nCurW;
+ int m_nCurH;
+ int m_nMinSize;
+ int m_nMaxSize;
+ float m_flStartTime;
+ float m_flLifeLength;
+ ImagePanel *m_pPanel;
+ bool m_bInUse;
+ };
+
+ void Init();
+
+ void OnTick();
+ void UpdateMousePos( float flElapsed );
+ void RotateModel( float flElapsed );
+ void CurtainsThink();
+ void FlashThink( bool bOtherPanelsOpen );
+ void SpotlightThink();
+ void ClapsThink( float flCurTime, float flElapsed, bool bOtherPanelsOpen );
+
+ void SetupContestPanels();
+ bool CreateFlash();
+ void PlaceFlash( FlashInfo_t *pFlashInfo );
+ void ClearFlash( FlashInfo_t *pFlashInfo );
+ void ClearFlashes();
+ void PlaySomeClaps();
+ void SetNextPossibleClapTime( float *pClapTime );
+
+ int GetActiveFlashCount() const;
+ int GetUnusedFlashCount() const;
+ int GetUnusedFlashSlot() const;
+ float GetCurrentTime() const;
+ bool InInitialFreakoutPeriod() const;
+ bool InFreakoutMode() const;
+ bool CurtainsClosed() const;
+ bool FlashingStartTimePassed() const;
+ bool AreOtherPanelsOpen( float flCurTime );
+ bool AreNonMainMenuPanelsOpen( VPANEL vRoot, const char **pCarePanels, int nNumCarePanels );
+ VPANEL GetDialogsParent();
+
+ enum Consts_t
+ {
+ MAX_FLASHES = 3,
+ MAX_GLOWS = 2,
+ MAX_CLAPS = 2,
+ };
+
+ CBaseModelPanel *m_pSaxxyModelPanel;
+ Vector m_vSaxxyDefaultPos;
+ CExButton *m_pSubmitButton;
+ Panel *m_pInfoLabel;
+ Panel *m_pContestOverLabel;
+ EditablePanel *m_pBackgroundPanel;
+ ImagePanel *m_pStageBgPanel;
+ EditablePanel *m_pCurtainPanel; // Main container panel
+ ImagePanel *m_pSpotlightPanel;
+ float m_aClapPlayTimes[MAX_CLAPS];
+ float m_flShowTime;
+ float m_flNextPanelTestTime;
+ VPANEL m_vDialogsParent;
+
+ struct CurtainInfo_t
+ {
+ CurtainInfo_t() : m_pPanel( NULL ) {}
+ ImagePanel *m_pPanel;
+ int m_aInitialPos[2];
+ };
+ CurtainInfo_t m_Curtains[2]; // [0] = left, [1] = right
+ float m_flCurtainStartAnimTime;
+
+ KeyValues *m_pCameraFlashKv;
+
+ QAngle m_angModelRot;
+
+ FlashInfo_t m_aFlashes[ MAX_FLASHES ];
+ int m_nNumTargetFlashes;
+ float m_aFilteredMousePos[2][2]; // [0][0] and [0][1] is current mouse pos (x,y). [1][0] and [1][1] are target (x,y).
+ float m_flLastTickTime;
+ float m_flEarliestNextFlashTime;
+ float m_flGlowFade;
+
+ static int sm_nShowCounter; // Will be 0 when the game first loads, and nonzero otherwise
+
+ CPanelAnimationVarAliasType( int, m_nFlashBoundsX, "flashbounds_x", "0", "proportional_xpos" );
+ CPanelAnimationVarAliasType( int, m_nFlashBoundsY, "flashbounds_y", "0", "proportional_ypos" );
+ CPanelAnimationVarAliasType( int, m_nFlashBoundsW, "flashbounds_w", "0", "proportional_xpos" );
+ CPanelAnimationVarAliasType( int, m_nFlashBoundsH, "flashbounds_h", "0", "proportional_ypos" );
+
+ CPanelAnimationVarAliasType( int, m_nFlashStartSizeMin, "flashstartsize_min", "0", "proportional_xpos" );
+ CPanelAnimationVarAliasType( int, m_nFlashStartSizeMax, "flashstartsize_max", "0", "proportional_xpos" );
+
+ CPanelAnimationVar( float, m_flFlashMaxScale, "flash_maxscale", "0.0f" );
+
+ CPanelAnimationVar( float, m_flFlashLifeLengthMin, "flash_lifelength_min", "0.0f" );
+ CPanelAnimationVar( float, m_flFlashLifeLengthMax, "flash_lifelength_max", "0.0f" );
+
+ CPanelAnimationVar( float, m_flCurtainAnimDuration, "curtain_anim_duration", "0.0f" );
+ CPanelAnimationVar( float, m_flOpenCurtainsTime, "curtain_open_time", "0.0f" );
+ CPanelAnimationVar( float, m_flInitialFreakoutDuration, "initial_freakout_duration", "0.0f" );
+
+ CPanelAnimationVar( float, m_flFlashStartTime, "flash_start_time", "0.0f" );
+
+ CPanelAnimationVar( float, m_flClapSoundDuration, "clap_sound_duration", "0.0f" );
+};
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class CSaxxyAwardsSubmitForm : public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CSaxxyAwardsSubmitForm, vgui::EditablePanel );
+public:
+ CSaxxyAwardsSubmitForm( Panel *pParent );
+
+private:
+ virtual void ApplySchemeSettings( IScheme *pScheme );
+ virtual void PerformLayout();
+ virtual void OnCommand( const char *pCommand );
+ virtual void OnKeyCodeTyped( vgui::KeyCode nCode );
+
+ void Close();
+
+ vgui::TextEntry *m_pURLInput;
+ vgui::ComboBox *m_pCategoryCombo;
+};
+
+#endif //TF_HUD_SAXXYCONTEST_H