-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathuimenu_JoinServerMenu.h
More file actions
126 lines (99 loc) · 3.52 KB
/
Copy pathuimenu_JoinServerMenu.h
File metadata and controls
126 lines (99 loc) · 3.52 KB
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/*
Copyright (C) 2007 Benjamin Litzelmann
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _UIMENU_JOINSERVERMENU_H_
#define _UIMENU_JOINSERVERMENU_H_
#include "uimenu_Global.h"
#include "uimenu_MainMenu.h"
#include "uiwsw_ServerInfo.h"
using namespace UICore;
using namespace UIWsw;
namespace UIMenu
{
class JoinServerMenu : public MainMenu
{
private:
typedef enum {
SORT_PING,
SORT_PLAYER,
SORT_MAP,
SORT_GAMETYPE,
SORT_NAME
} sorttype_t;
std::list<ServerInfo*> servers;
std::multimap<unsigned int, ServerInfo*> pingSortMap;
std::multimap<int, ServerInfo*> playerSortMap;
std::multimap<std::string, ServerInfo*> mapSortMap;
std::multimap<std::string, ServerInfo*> gametypeSortMap;
std::multimap<std::string, ServerInfo*> nameSortMap;
sorttype_t sorttype;
bool reverse_sort;
ServerInfo *pingingServer;
char last_sel[80];
int pingbatch;
unsigned int nextServerTime;
bool refreshingList;
Label *lservers;
SwitchButton *sortping;
SwitchButton *sortplayer;
SwitchButton *sortgametype;
SwitchButton *sortmap;
SwitchButton *sortname;
Panel *arrow;
ListBox *serverlist;
Panel *filter;
Label *lfilter;
Button *showfull;
Button *showempty;
Button *showpassworded;
Button *showinstagib;
Button *skill;
ListBox *gametype;
Label *lmaxping;
TextBox *maxping;
Label *lmatchedname;
TextBox *matchedname;
Button *refresh;
Button *connect;
Button *back;
static void StyleArrow( Panel *arr, SwitchButton *sorter, bool reverse ); // should be static, called from handler
void StyleSorter( SwitchButton *sorter );
void SearchGames( const char *s );
void RefreshServerList( void );
bool checkFilters( ServerInfo *s );
template <class Iter> void FillListBoxWithMap( Iter begin, Iter end );
static void sortHandler( BaseObject *target, bool newVal );
static void refreshHandler( BaseObject * );
static void connectHandler( BaseObject * );
static void backHandler( BaseObject* );
static void pingServers( BaseObject *, unsigned int deltatime, const Rect *, const Rect *, bool );
static void filterHandler( BaseObject *target );
static void ClickItemHandler(BaseObject *);
static void DoubleClickItemHandler(BaseObject *);
static void gametypeFilterHandler( ListItem *target, int position, bool isSelected );
static void textFilterHandler( BaseObject *target, const char *text );
static void serverItemSelected(ListItem *item, int itempos, bool sel);
void setFilter( Button *button, int filter, const char *filtername );
void LoadUserSettings( void );
void SaveUserSettings( void );
public:
JoinServerMenu();
virtual ~JoinServerMenu() { }
MEMORY_OPERATORS
static void AddToServerList( const char *adr, const char *info );
virtual void Show( void );
virtual void Hide( void );
};
}
#endif