home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2000 March / maximum-cd-2000-03.iso / Quake3 Game Source / Q3AGameSource.exe / Main / ui_specifyserver.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-18  |  5.8 KB  |  194 lines

  1. // Copyright (C) 1999-2000 Id Software, Inc.
  2. //
  3. #include "ui_local.h"
  4.  
  5. /*********************************************************************************
  6.     SPECIFY SERVER
  7. *********************************************************************************/
  8.  
  9. #define SPECIFYSERVER_FRAMEL    "menu/art/frame2_l"
  10. #define SPECIFYSERVER_FRAMER    "menu/art/frame1_r"
  11. #define SPECIFYSERVER_BACK0        "menu/art/back_0"
  12. #define SPECIFYSERVER_BACK1        "menu/art/back_1"
  13. #define SPECIFYSERVER_FIGHT0    "menu/art/fight_0"
  14. #define SPECIFYSERVER_FIGHT1    "menu/art/fight_1"
  15.  
  16. #define ID_SPECIFYSERVERBACK    102
  17. #define ID_SPECIFYSERVERGO        103
  18.  
  19. static char* specifyserver_artlist[] =
  20. {
  21.     SPECIFYSERVER_FRAMEL,
  22.     SPECIFYSERVER_FRAMER,
  23.     SPECIFYSERVER_BACK0,    
  24.     SPECIFYSERVER_BACK1,    
  25.     SPECIFYSERVER_FIGHT0,
  26.     SPECIFYSERVER_FIGHT1,
  27.     NULL
  28. };
  29.  
  30. typedef struct
  31. {
  32.     menuframework_s    menu;
  33.     menutext_s        banner;
  34.     menubitmap_s    framel;
  35.     menubitmap_s    framer;
  36.     menufield_s        domain;
  37.     menufield_s        port;
  38.     menubitmap_s    go;
  39.     menubitmap_s    back;
  40. } specifyserver_t;
  41.  
  42. static specifyserver_t    s_specifyserver;
  43.  
  44. /*
  45. =================
  46. SpecifyServer_Event
  47. =================
  48. */
  49. static void SpecifyServer_Event( void* ptr, int event )
  50. {
  51.     char    buff[256];
  52.  
  53.     switch (((menucommon_s*)ptr)->id)
  54.     {
  55.         case ID_SPECIFYSERVERGO:
  56.             if (event != QM_ACTIVATED)
  57.                 break;
  58.  
  59.             if (s_specifyserver.domain.field.buffer[0])
  60.             {
  61.                 strcpy(buff,s_specifyserver.domain.field.buffer);
  62.                 if (s_specifyserver.port.field.buffer[0])
  63.                     Com_sprintf( buff+strlen(buff), 128, ":%s", s_specifyserver.port.field.buffer );
  64.  
  65.                 trap_Cmd_ExecuteText( EXEC_APPEND, va( "connect %s\n", buff ) );
  66.             }
  67.             break;
  68.  
  69.         case ID_SPECIFYSERVERBACK:
  70.             if (event != QM_ACTIVATED)
  71.                 break;
  72.  
  73.             UI_PopMenu();
  74.             break;
  75.     }
  76. }
  77.  
  78. /*
  79. =================
  80. SpecifyServer_MenuInit
  81. =================
  82. */
  83. void SpecifyServer_MenuInit( void )
  84. {
  85.     // zero set all our globals
  86.     memset( &s_specifyserver, 0 ,sizeof(specifyserver_t) );
  87.  
  88.     SpecifyServer_Cache();
  89.  
  90.     s_specifyserver.menu.wrapAround = qtrue;
  91.     s_specifyserver.menu.fullscreen = qtrue;
  92.  
  93.     s_specifyserver.banner.generic.type     = MTYPE_BTEXT;
  94.     s_specifyserver.banner.generic.x     = 320;
  95.     s_specifyserver.banner.generic.y     = 16;
  96.     s_specifyserver.banner.string         = "SPECIFY SERVER";
  97.     s_specifyserver.banner.color           = color_white;
  98.     s_specifyserver.banner.style           = UI_CENTER;
  99.  
  100.     s_specifyserver.framel.generic.type  = MTYPE_BITMAP;
  101.     s_specifyserver.framel.generic.name  = SPECIFYSERVER_FRAMEL;
  102.     s_specifyserver.framel.generic.flags = QMF_INACTIVE;
  103.     s_specifyserver.framel.generic.x     = 0;  
  104.     s_specifyserver.framel.generic.y     = 78;
  105.     s_specifyserver.framel.width           = 256;
  106.     s_specifyserver.framel.height           = 329;
  107.  
  108.     s_specifyserver.framer.generic.type  = MTYPE_BITMAP;
  109.     s_specifyserver.framer.generic.name  = SPECIFYSERVER_FRAMER;
  110.     s_specifyserver.framer.generic.flags = QMF_INACTIVE;
  111.     s_specifyserver.framer.generic.x     = 376;
  112.     s_specifyserver.framer.generic.y     = 76;
  113.     s_specifyserver.framer.width           = 256;
  114.     s_specifyserver.framer.height           = 334;
  115.  
  116.     s_specifyserver.domain.generic.type       = MTYPE_FIELD;
  117.     s_specifyserver.domain.generic.name       = "Address:";
  118.     s_specifyserver.domain.generic.flags      = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
  119.     s_specifyserver.domain.generic.x          = 206;
  120.     s_specifyserver.domain.generic.y          = 220;
  121.     s_specifyserver.domain.field.widthInChars = 38;
  122.     s_specifyserver.domain.field.maxchars     = 80;
  123.  
  124.     s_specifyserver.port.generic.type       = MTYPE_FIELD;
  125.     s_specifyserver.port.generic.name        = "Port:";
  126.     s_specifyserver.port.generic.flags        = QMF_PULSEIFFOCUS|QMF_SMALLFONT|QMF_NUMBERSONLY;
  127.     s_specifyserver.port.generic.x            = 206;
  128.     s_specifyserver.port.generic.y            = 250;
  129.     s_specifyserver.port.field.widthInChars = 6;
  130.     s_specifyserver.port.field.maxchars     = 5;
  131.  
  132.     s_specifyserver.go.generic.type        = MTYPE_BITMAP;
  133.     s_specifyserver.go.generic.name     = SPECIFYSERVER_FIGHT0;
  134.     s_specifyserver.go.generic.flags    = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
  135.     s_specifyserver.go.generic.callback = SpecifyServer_Event;
  136.     s_specifyserver.go.generic.id        = ID_SPECIFYSERVERGO;
  137.     s_specifyserver.go.generic.x        = 640;
  138.     s_specifyserver.go.generic.y        = 480-64;
  139.     s_specifyserver.go.width              = 128;
  140.     s_specifyserver.go.height              = 64;
  141.     s_specifyserver.go.focuspic         = SPECIFYSERVER_FIGHT1;
  142.  
  143.     s_specifyserver.back.generic.type      = MTYPE_BITMAP;
  144.     s_specifyserver.back.generic.name     = SPECIFYSERVER_BACK0;
  145.     s_specifyserver.back.generic.flags    = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
  146.     s_specifyserver.back.generic.callback = SpecifyServer_Event;
  147.     s_specifyserver.back.generic.id          = ID_SPECIFYSERVERBACK;
  148.     s_specifyserver.back.generic.x          = 0;
  149.     s_specifyserver.back.generic.y          = 480-64;
  150.     s_specifyserver.back.width            = 128;
  151.     s_specifyserver.back.height            = 64;
  152.     s_specifyserver.back.focuspic         = SPECIFYSERVER_BACK1;
  153.  
  154.     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.banner );
  155.     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.framel );
  156.     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.framer );
  157.     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.domain );
  158.     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.port );
  159.     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.go );
  160.     Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.back );
  161.  
  162.     Com_sprintf( s_specifyserver.port.field.buffer, 6, "%i", 27960 );
  163. }
  164.  
  165. /*
  166. =================
  167. SpecifyServer_Cache
  168. =================
  169. */
  170. void SpecifyServer_Cache( void )
  171. {
  172.     int    i;
  173.  
  174.     // touch all our pics
  175.     for (i=0; ;i++)
  176.     {
  177.         if (!specifyserver_artlist[i])
  178.             break;
  179.         trap_R_RegisterShaderNoMip(specifyserver_artlist[i]);
  180.     }
  181. }
  182.  
  183. /*
  184. =================
  185. UI_SpecifyServerMenu
  186. =================
  187. */
  188. void UI_SpecifyServerMenu( void )
  189. {
  190.     SpecifyServer_MenuInit();
  191.     UI_PushMenu( &s_specifyserver.menu );
  192. }
  193.  
  194.