Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

ui_specifyserver.c

Go to the documentation of this file.
00001 /*
00002 ===========================================================================
00003 Copyright (C) 1999-2005 Id Software, Inc.
00004 
00005 This file is part of Quake III Arena source code.
00006 
00007 Quake III Arena source code is free software; you can redistribute it
00008 and/or modify it under the terms of the GNU General Public License as
00009 published by the Free Software Foundation; either version 2 of the License,
00010 or (at your option) any later version.
00011 
00012 Quake III Arena source code is distributed in the hope that it will be
00013 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 GNU General Public License for more details.
00016 
00017 You should have received a copy of the GNU General Public License
00018 along with Foobar; if not, write to the Free Software
00019 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00020 ===========================================================================
00021 */
00022 //
00023 #include "ui_local.h"
00024 
00025 /*********************************************************************************
00026     SPECIFY SERVER
00027 *********************************************************************************/
00028 
00029 #define SPECIFYSERVER_FRAMEL    "menu/art/frame2_l"
00030 #define SPECIFYSERVER_FRAMER    "menu/art/frame1_r"
00031 #define SPECIFYSERVER_BACK0     "menu/art/back_0"
00032 #define SPECIFYSERVER_BACK1     "menu/art/back_1"
00033 #define SPECIFYSERVER_FIGHT0    "menu/art/fight_0"
00034 #define SPECIFYSERVER_FIGHT1    "menu/art/fight_1"
00035 
00036 #define ID_SPECIFYSERVERBACK    102
00037 #define ID_SPECIFYSERVERGO      103
00038 
00039 static char* specifyserver_artlist[] =
00040 {
00041     SPECIFYSERVER_FRAMEL,
00042     SPECIFYSERVER_FRAMER,
00043     SPECIFYSERVER_BACK0,    
00044     SPECIFYSERVER_BACK1,    
00045     SPECIFYSERVER_FIGHT0,
00046     SPECIFYSERVER_FIGHT1,
00047     NULL
00048 };
00049 
00050 typedef struct
00051 {
00052     menuframework_s menu;
00053     menutext_s      banner;
00054     menubitmap_s    framel;
00055     menubitmap_s    framer;
00056     menufield_s     domain;
00057     menufield_s     port;
00058     menubitmap_s    go;
00059     menubitmap_s    back;
00060 } specifyserver_t;
00061 
00062 static specifyserver_t  s_specifyserver;
00063 
00064 /*
00065 =================
00066 SpecifyServer_Event
00067 =================
00068 */
00069 static void SpecifyServer_Event( void* ptr, int event )
00070 {
00071     char    buff[256];
00072 
00073     switch (((menucommon_s*)ptr)->id)
00074     {
00075         case ID_SPECIFYSERVERGO:
00076             if (event != QM_ACTIVATED)
00077                 break;
00078 
00079             if (s_specifyserver.domain.field.buffer[0])
00080             {
00081                 strcpy(buff,s_specifyserver.domain.field.buffer);
00082                 if (s_specifyserver.port.field.buffer[0])
00083                     Com_sprintf( buff+strlen(buff), 128, ":%s", s_specifyserver.port.field.buffer );
00084 
00085                 trap_Cmd_ExecuteText( EXEC_APPEND, va( "connect %s\n", buff ) );
00086             }
00087             break;
00088 
00089         case ID_SPECIFYSERVERBACK:
00090             if (event != QM_ACTIVATED)
00091                 break;
00092 
00093             UI_PopMenu();
00094             break;
00095     }
00096 }
00097 
00098 /*
00099 =================
00100 SpecifyServer_MenuInit
00101 =================
00102 */
00103 void SpecifyServer_MenuInit( void )
00104 {
00105     // zero set all our globals
00106     memset( &s_specifyserver, 0 ,sizeof(specifyserver_t) );
00107 
00108     SpecifyServer_Cache();
00109 
00110     s_specifyserver.menu.wrapAround = qtrue;
00111     s_specifyserver.menu.fullscreen = qtrue;
00112 
00113     s_specifyserver.banner.generic.type  = MTYPE_BTEXT;
00114     s_specifyserver.banner.generic.x     = 320;
00115     s_specifyserver.banner.generic.y     = 16;
00116     s_specifyserver.banner.string        = "SPECIFY SERVER";
00117     s_specifyserver.banner.color         = color_white;
00118     s_specifyserver.banner.style         = UI_CENTER;
00119 
00120     s_specifyserver.framel.generic.type  = MTYPE_BITMAP;
00121     s_specifyserver.framel.generic.name  = SPECIFYSERVER_FRAMEL;
00122     s_specifyserver.framel.generic.flags = QMF_INACTIVE;
00123     s_specifyserver.framel.generic.x     = 0;  
00124     s_specifyserver.framel.generic.y     = 78;
00125     s_specifyserver.framel.width         = 256;
00126     s_specifyserver.framel.height        = 329;
00127 
00128     s_specifyserver.framer.generic.type  = MTYPE_BITMAP;
00129     s_specifyserver.framer.generic.name  = SPECIFYSERVER_FRAMER;
00130     s_specifyserver.framer.generic.flags = QMF_INACTIVE;
00131     s_specifyserver.framer.generic.x     = 376;
00132     s_specifyserver.framer.generic.y     = 76;
00133     s_specifyserver.framer.width         = 256;
00134     s_specifyserver.framer.height        = 334;
00135 
00136     s_specifyserver.domain.generic.type       = MTYPE_FIELD;
00137     s_specifyserver.domain.generic.name       = "Address:";
00138     s_specifyserver.domain.generic.flags      = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
00139     s_specifyserver.domain.generic.x          = 206;
00140     s_specifyserver.domain.generic.y          = 220;
00141     s_specifyserver.domain.field.widthInChars = 38;
00142     s_specifyserver.domain.field.maxchars     = 80;
00143 
00144     s_specifyserver.port.generic.type       = MTYPE_FIELD;
00145     s_specifyserver.port.generic.name       = "Port:";
00146     s_specifyserver.port.generic.flags      = QMF_PULSEIFFOCUS|QMF_SMALLFONT|QMF_NUMBERSONLY;
00147     s_specifyserver.port.generic.x          = 206;
00148     s_specifyserver.port.generic.y          = 250;
00149     s_specifyserver.port.field.widthInChars = 6;
00150     s_specifyserver.port.field.maxchars     = 5;
00151 
00152     s_specifyserver.go.generic.type     = MTYPE_BITMAP;
00153     s_specifyserver.go.generic.name     = SPECIFYSERVER_FIGHT0;
00154     s_specifyserver.go.generic.flags    = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
00155     s_specifyserver.go.generic.callback = SpecifyServer_Event;
00156     s_specifyserver.go.generic.id       = ID_SPECIFYSERVERGO;
00157     s_specifyserver.go.generic.x        = 640;
00158     s_specifyserver.go.generic.y        = 480-64;
00159     s_specifyserver.go.width            = 128;
00160     s_specifyserver.go.height           = 64;
00161     s_specifyserver.go.focuspic         = SPECIFYSERVER_FIGHT1;
00162 
00163     s_specifyserver.back.generic.type     = MTYPE_BITMAP;
00164     s_specifyserver.back.generic.name     = SPECIFYSERVER_BACK0;
00165     s_specifyserver.back.generic.flags    = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
00166     s_specifyserver.back.generic.callback = SpecifyServer_Event;
00167     s_specifyserver.back.generic.id       = ID_SPECIFYSERVERBACK;
00168     s_specifyserver.back.generic.x        = 0;
00169     s_specifyserver.back.generic.y        = 480-64;
00170     s_specifyserver.back.width            = 128;
00171     s_specifyserver.back.height           = 64;
00172     s_specifyserver.back.focuspic         = SPECIFYSERVER_BACK1;
00173 
00174     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.banner );
00175     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.framel );
00176     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.framer );
00177     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.domain );
00178     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.port );
00179     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.go );
00180     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.back );
00181 
00182     Com_sprintf( s_specifyserver.port.field.buffer, 6, "%i", 27960 );
00183 }
00184 
00185 /*
00186 =================
00187 SpecifyServer_Cache
00188 =================
00189 */
00190 void SpecifyServer_Cache( void )
00191 {
00192     int i;
00193 
00194     // touch all our pics
00195     for (i=0; ;i++)
00196     {
00197         if (!specifyserver_artlist[i])
00198             break;
00199         trap_R_RegisterShaderNoMip(specifyserver_artlist[i]);
00200     }
00201 }
00202 
00203 /*
00204 =================
00205 UI_SpecifyServerMenu
00206 =================
00207 */
00208 void UI_SpecifyServerMenu( void )
00209 {
00210     SpecifyServer_MenuInit();
00211     UI_PushMenu( &s_specifyserver.menu );
00212 }
00213 

Generated on Thu Aug 25 12:37:44 2005 for Quake III Arena by  doxygen 1.3.9.1