~ubuntu-branches/ubuntu/hardy/openarena/hardy-backports

« back to all changes in this revision

Viewing changes to code/q3_ui/ui_specifyserver.c

  • Committer: Bazaar Package Importer
  • Author(s): Bruno "Fuddl" Kleinert
  • Date: 2007-01-20 12:28:09 UTC
  • Revision ID: james.westby@ubuntu.com-20070120122809-2yza5ojt7nqiyiam
Tags: upstream-0.6.0
ImportĀ upstreamĀ versionĀ 0.6.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
===========================================================================
 
3
Copyright (C) 1999-2005 Id Software, Inc.
 
4
 
 
5
This file is part of Quake III Arena source code.
 
6
 
 
7
Quake III Arena source code is free software; you can redistribute it
 
8
and/or modify it under the terms of the GNU General Public License as
 
9
published by the Free Software Foundation; either version 2 of the License,
 
10
or (at your option) any later version.
 
11
 
 
12
Quake III Arena source code is distributed in the hope that it will be
 
13
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
GNU General Public License for more details.
 
16
 
 
17
You should have received a copy of the GNU General Public License
 
18
along with Quake III Arena source code; if not, write to the Free Software
 
19
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
20
===========================================================================
 
21
*/
 
22
//
 
23
#include "ui_local.h"
 
24
 
 
25
/*********************************************************************************
 
26
        SPECIFY SERVER
 
27
*********************************************************************************/
 
28
 
 
29
#define SPECIFYSERVER_FRAMEL    "menu/art/frame2_l"
 
30
#define SPECIFYSERVER_FRAMER    "menu/art/frame1_r"
 
31
#define SPECIFYSERVER_BACK0             "menu/art/back_0"
 
32
#define SPECIFYSERVER_BACK1             "menu/art/back_1"
 
33
#define SPECIFYSERVER_FIGHT0    "menu/art/fight_0"
 
34
#define SPECIFYSERVER_FIGHT1    "menu/art/fight_1"
 
35
 
 
36
#define ID_SPECIFYSERVERBACK    102
 
37
#define ID_SPECIFYSERVERGO              103
 
38
 
 
39
static char* specifyserver_artlist[] =
 
40
{
 
41
        SPECIFYSERVER_FRAMEL,
 
42
        SPECIFYSERVER_FRAMER,
 
43
        SPECIFYSERVER_BACK0,    
 
44
        SPECIFYSERVER_BACK1,    
 
45
        SPECIFYSERVER_FIGHT0,
 
46
        SPECIFYSERVER_FIGHT1,
 
47
        NULL
 
48
};
 
49
 
 
50
typedef struct
 
51
{
 
52
        menuframework_s menu;
 
53
        menutext_s              banner;
 
54
        menubitmap_s    framel;
 
55
        menubitmap_s    framer;
 
56
        menufield_s             domain;
 
57
        menufield_s             port;
 
58
        menubitmap_s    go;
 
59
        menubitmap_s    back;
 
60
} specifyserver_t;
 
61
 
 
62
static specifyserver_t  s_specifyserver;
 
63
 
 
64
/*
 
65
=================
 
66
SpecifyServer_Event
 
67
=================
 
68
*/
 
69
static void SpecifyServer_Event( void* ptr, int event )
 
70
{
 
71
        char    buff[256];
 
72
 
 
73
        switch (((menucommon_s*)ptr)->id)
 
74
        {
 
75
                case ID_SPECIFYSERVERGO:
 
76
                        if (event != QM_ACTIVATED)
 
77
                                break;
 
78
 
 
79
                        if (s_specifyserver.domain.field.buffer[0])
 
80
                        {
 
81
                                strcpy(buff,s_specifyserver.domain.field.buffer);
 
82
                                if (s_specifyserver.port.field.buffer[0])
 
83
                                        Com_sprintf( buff+strlen(buff), 128, ":%s", s_specifyserver.port.field.buffer );
 
84
 
 
85
                                trap_Cmd_ExecuteText( EXEC_APPEND, va( "connect %s\n", buff ) );
 
86
                        }
 
87
                        break;
 
88
 
 
89
                case ID_SPECIFYSERVERBACK:
 
90
                        if (event != QM_ACTIVATED)
 
91
                                break;
 
92
 
 
93
                        UI_PopMenu();
 
94
                        break;
 
95
        }
 
96
}
 
97
 
 
98
/*
 
99
=================
 
100
SpecifyServer_MenuInit
 
101
=================
 
102
*/
 
103
void SpecifyServer_MenuInit( void )
 
104
{
 
105
        // zero set all our globals
 
106
        memset( &s_specifyserver, 0 ,sizeof(specifyserver_t) );
 
107
 
 
108
        SpecifyServer_Cache();
 
109
 
 
110
        s_specifyserver.menu.wrapAround = qtrue;
 
111
        s_specifyserver.menu.fullscreen = qtrue;
 
112
 
 
113
        s_specifyserver.banner.generic.type      = MTYPE_BTEXT;
 
114
        s_specifyserver.banner.generic.x     = 320;
 
115
        s_specifyserver.banner.generic.y     = 16;
 
116
        s_specifyserver.banner.string            = "SPECIFY SERVER";
 
117
        s_specifyserver.banner.color             = color_white;
 
118
        s_specifyserver.banner.style             = UI_CENTER;
 
119
 
 
120
        s_specifyserver.framel.generic.type  = MTYPE_BITMAP;
 
121
        s_specifyserver.framel.generic.name  = SPECIFYSERVER_FRAMEL;
 
122
        s_specifyserver.framel.generic.flags = QMF_INACTIVE;
 
123
        s_specifyserver.framel.generic.x         = 0;  
 
124
        s_specifyserver.framel.generic.y         = 78;
 
125
        s_specifyserver.framel.width         = 256;
 
126
        s_specifyserver.framel.height        = 329;
 
127
 
 
128
        s_specifyserver.framer.generic.type  = MTYPE_BITMAP;
 
129
        s_specifyserver.framer.generic.name  = SPECIFYSERVER_FRAMER;
 
130
        s_specifyserver.framer.generic.flags = QMF_INACTIVE;
 
131
        s_specifyserver.framer.generic.x         = 376;
 
132
        s_specifyserver.framer.generic.y         = 76;
 
133
        s_specifyserver.framer.width         = 256;
 
134
        s_specifyserver.framer.height        = 334;
 
135
 
 
136
        s_specifyserver.domain.generic.type       = MTYPE_FIELD;
 
137
        s_specifyserver.domain.generic.name       = "Address:";
 
138
        s_specifyserver.domain.generic.flags      = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
 
139
        s_specifyserver.domain.generic.x              = 206;
 
140
        s_specifyserver.domain.generic.y              = 220;
 
141
        s_specifyserver.domain.field.widthInChars = 38;
 
142
        s_specifyserver.domain.field.maxchars     = 80;
 
143
 
 
144
        s_specifyserver.port.generic.type       = MTYPE_FIELD;
 
145
        s_specifyserver.port.generic.name           = "Port:";
 
146
        s_specifyserver.port.generic.flags          = QMF_PULSEIFFOCUS|QMF_SMALLFONT|QMF_NUMBERSONLY;
 
147
        s_specifyserver.port.generic.x          = 206;
 
148
        s_specifyserver.port.generic.y          = 250;
 
149
        s_specifyserver.port.field.widthInChars = 6;
 
150
        s_specifyserver.port.field.maxchars     = 5;
 
151
 
 
152
        s_specifyserver.go.generic.type     = MTYPE_BITMAP;
 
153
        s_specifyserver.go.generic.name     = SPECIFYSERVER_FIGHT0;
 
154
        s_specifyserver.go.generic.flags    = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
 
155
        s_specifyserver.go.generic.callback = SpecifyServer_Event;
 
156
        s_specifyserver.go.generic.id       = ID_SPECIFYSERVERGO;
 
157
        s_specifyserver.go.generic.x            = 640;
 
158
        s_specifyserver.go.generic.y            = 480-64;
 
159
        s_specifyserver.go.width                    = 128;
 
160
        s_specifyserver.go.height                   = 64;
 
161
        s_specifyserver.go.focuspic         = SPECIFYSERVER_FIGHT1;
 
162
 
 
163
        s_specifyserver.back.generic.type         = MTYPE_BITMAP;
 
164
        s_specifyserver.back.generic.name     = SPECIFYSERVER_BACK0;
 
165
        s_specifyserver.back.generic.flags    = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
 
166
        s_specifyserver.back.generic.callback = SpecifyServer_Event;
 
167
        s_specifyserver.back.generic.id       = ID_SPECIFYSERVERBACK;
 
168
        s_specifyserver.back.generic.x            = 0;
 
169
        s_specifyserver.back.generic.y            = 480-64;
 
170
        s_specifyserver.back.width                = 128;
 
171
        s_specifyserver.back.height               = 64;
 
172
        s_specifyserver.back.focuspic         = SPECIFYSERVER_BACK1;
 
173
 
 
174
        Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.banner );
 
175
        Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.framel );
 
176
        Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.framer );
 
177
        Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.domain );
 
178
        Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.port );
 
179
        Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.go );
 
180
        Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.back );
 
181
 
 
182
        Com_sprintf( s_specifyserver.port.field.buffer, 6, "%i", 27960 );
 
183
}
 
184
 
 
185
/*
 
186
=================
 
187
SpecifyServer_Cache
 
188
=================
 
189
*/
 
190
void SpecifyServer_Cache( void )
 
191
{
 
192
        int     i;
 
193
 
 
194
        // touch all our pics
 
195
        for (i=0; ;i++)
 
196
        {
 
197
                if (!specifyserver_artlist[i])
 
198
                        break;
 
199
                trap_R_RegisterShaderNoMip(specifyserver_artlist[i]);
 
200
        }
 
201
}
 
202
 
 
203
/*
 
204
=================
 
205
UI_SpecifyServerMenu
 
206
=================
 
207
*/
 
208
void UI_SpecifyServerMenu( void )
 
209
{
 
210
        SpecifyServer_MenuInit();
 
211
        UI_PushMenu( &s_specifyserver.menu );
 
212
}
 
213