Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

170 lines
5.2 KiB

5 years ago
//========= 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