summaryrefslogtreecommitdiff
path: root/game/shared/tf/tf_duckleaderboard.h
blob: 413654731fc023e35a22bfb6fe738abfb7771ce5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================

#ifndef TF_DUCKLEADERBOARD_H
#define TF_DUCKLEADERBOARD_H
#ifdef _WIN32
#pragma once
#endif

#ifdef CLIENT_DLL
	#include "tf_mapinfo.h"
	#include "tf_leaderboardpanel.h"
	#include "tf_controls.h"
#endif

extern const char* g_szDuckLeaderboardNames[];

#define	TF_DUCK_ID		"DUCK_ID"
#define DUCK_XP_SCALE					5000
#define DUCK_XP_WEIGHT_GENERATION		3
#define DUCK_XP_WEIGHT_OFFENSE			3
#define DUCK_XP_WEIGHT_DEFENSE			1
#define DUCK_XP_WEIGHT_OBJECTIVE		3
#define DUCK_XP_WEIGHT_TEAMMATE			3
#define DUCK_XP_WEIGHT_BONUS			50			


enum EDuckLeaderboardTypes
{
	TF_DUCK_SCORING_OVERALL_RATING = 0,
	TF_DUCK_SCORING_PERSONAL_GENERATION,
	TF_DUCK_SCORING_PERSONAL_PICKUP_OFFENSE,
	TF_DUCK_SCORING_PERSONAL_PICKUP_DEFENDED,
	TF_DUCK_SCORING_PERSONAL_PICKUP_OBJECTIVE,
	TF_DUCK_SCORING_TEAM_PICKUP_MY_DUCKS,
	TF_DUCK_SCORING_PERSONAL_BONUS_PICKUP,
	DUCK_NUM_LEADERBOARDS
};

enum EDuckEventTypes
{
	DUCK_CREATED = 1,
	DUCK_COLLECTED,
};

enum EDuckFlags
{
	DUCK_FLAG_OBJECTIVE	= 1 << 0,
	DUCK_FLAG_BONUS		= 1 << 1
};

#ifdef CLIENT_DLL

class CDucksLeaderboard : public CTFLeaderboardPanel
{
	DECLARE_CLASS_SIMPLE( CDucksLeaderboard, CTFLeaderboardPanel );
public:
	CDucksLeaderboard( Panel *parent, const char *panelName, const char *pszDuckLeaderboardname );
	virtual ~CDucksLeaderboard();

	virtual void ApplySchemeSettings( IScheme *pScheme ) OVERRIDE;
private:
	virtual bool UpdateLeaderboards() OVERRIDE;
	virtual bool GetLeaderboardData( CUtlVector< LeaderboardEntry_t* >& scores ) OVERRIDE;

	const char		*m_pszDuckLeaderboardName;
	CTFTextToolTip	*m_pToolTip;
	vgui::EditablePanel				*m_pToolTipEmbeddedPanel;
};


class CDucksLeaderboardManager : public EditablePanel, CGameEventListener
{
	DECLARE_CLASS_SIMPLE( CDucksLeaderboardManager, EditablePanel );
public:
	CDucksLeaderboardManager( Panel *parent, const char *panelName );

	virtual void ApplySchemeSettings( IScheme *pScheme ) OVERRIDE;
	virtual void ApplySettings( KeyValues *inResourceData ) OVERRIDE;
	virtual void OnCommand( const char *command ) OVERRIDE;
	virtual void FireGameEvent( IGameEvent *event ) OVERRIDE;

	virtual void OnThink();
private:

	void NextPage();
	void PrevPage();
	void ShowPage( int nPage );

	int m_nCurrentPage;
	CUtlVector< EditablePanel* > m_vecLeaderboards;

	CTFTextToolTip					*m_pToolTip;
	vgui::EditablePanel				*m_pToolTipEmbeddedPanel;
	vgui::EditablePanel				*m_pDimmer;
	float							m_flFadeStartTime;

	CPanelAnimationVarAliasType( int, m_iScoreStep, "score_step", "0", "proportional_int" );
};

#endif

#endif // TF_DUCKLEADERBOARD_H