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

  1. // Copyright (C) 1999-2000 Id Software, Inc.
  2. //
  3. //
  4. // ui_team.c
  5. //
  6.  
  7. #include "ui_local.h"
  8.  
  9.  
  10. #define TEAMMAIN_FRAME    "menu/art/cut_frame"
  11.  
  12. #define ID_JOINRED        100
  13. #define ID_JOINBLUE        101
  14. #define ID_JOINGAME        102
  15. #define ID_SPECTATE        103
  16.  
  17.  
  18. typedef struct
  19. {
  20.     menuframework_s    menu;
  21.     menubitmap_s    frame;
  22.     menutext_s        joinred;
  23.     menutext_s        joinblue;
  24.     menutext_s        joingame;
  25.     menutext_s        spectate;
  26. } teammain_t;
  27.  
  28. static teammain_t    s_teammain;
  29.  
  30. static menuframework_s    s_teammain_menu;
  31. static menuaction_s        s_teammain_orders;
  32. static menuaction_s        s_teammain_voice;
  33. static menuaction_s        s_teammain_joinred;
  34. static menuaction_s        s_teammain_joinblue;
  35. static menuaction_s        s_teammain_joingame;
  36. static menuaction_s        s_teammain_spectate;
  37.  
  38.  
  39. /*
  40. ===============
  41. TeamMain_MenuEvent
  42. ===============
  43. */
  44. static void TeamMain_MenuEvent( void* ptr, int event ) {
  45.     if( event != QM_ACTIVATED ) {
  46.         return;
  47.     }
  48.  
  49.     switch( ((menucommon_s*)ptr)->id ) {
  50.     case ID_JOINRED:
  51.         trap_Cmd_ExecuteText( EXEC_APPEND, "cmd team red\n" );
  52.         UI_ForceMenuOff();
  53.         break;
  54.  
  55.     case ID_JOINBLUE:
  56.         trap_Cmd_ExecuteText( EXEC_APPEND, "cmd team blue\n" );
  57.         UI_ForceMenuOff();
  58.         break;
  59.  
  60.     case ID_JOINGAME:
  61.         trap_Cmd_ExecuteText( EXEC_APPEND, "cmd team free\n" );
  62.         UI_ForceMenuOff();
  63.         break;
  64.  
  65.     case ID_SPECTATE:
  66.         trap_Cmd_ExecuteText( EXEC_APPEND, "cmd team spectator\n" );
  67.         UI_ForceMenuOff();
  68.         break;
  69.     }
  70. }
  71.  
  72.  
  73. /*
  74. ===============
  75. TeamMain_MenuInit
  76. ===============
  77. */
  78. void TeamMain_MenuInit( void ) {
  79.     int        y;
  80.     int        gametype;
  81.     char    info[MAX_INFO_STRING];
  82.  
  83.     memset( &s_teammain, 0, sizeof(s_teammain) );
  84.  
  85.     TeamMain_Cache();
  86.  
  87.     s_teammain.menu.wrapAround = qtrue;
  88.     s_teammain.menu.fullscreen = qfalse;
  89.  
  90.     s_teammain.frame.generic.type   = MTYPE_BITMAP;
  91.     s_teammain.frame.generic.flags    = QMF_INACTIVE;
  92.     s_teammain.frame.generic.name   = TEAMMAIN_FRAME;
  93.     s_teammain.frame.generic.x        = 142;
  94.     s_teammain.frame.generic.y        = 118;
  95.     s_teammain.frame.width            = 359;
  96.     s_teammain.frame.height            = 256;
  97.  
  98.     y = 194;
  99.  
  100.     s_teammain.joinred.generic.type     = MTYPE_PTEXT;
  101.     s_teammain.joinred.generic.flags    = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  102.     s_teammain.joinred.generic.id       = ID_JOINRED;
  103.     s_teammain.joinred.generic.callback = TeamMain_MenuEvent;
  104.     s_teammain.joinred.generic.x        = 320;
  105.     s_teammain.joinred.generic.y        = y;
  106.     s_teammain.joinred.string           = "JOIN RED";
  107.     s_teammain.joinred.style            = UI_CENTER|UI_SMALLFONT;
  108.     s_teammain.joinred.color            = colorRed;
  109.     y += 20;
  110.  
  111.     s_teammain.joinblue.generic.type     = MTYPE_PTEXT;
  112.     s_teammain.joinblue.generic.flags    = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  113.     s_teammain.joinblue.generic.id       = ID_JOINBLUE;
  114.     s_teammain.joinblue.generic.callback = TeamMain_MenuEvent;
  115.     s_teammain.joinblue.generic.x        = 320;
  116.     s_teammain.joinblue.generic.y        = y;
  117.     s_teammain.joinblue.string           = "JOIN BLUE";
  118.     s_teammain.joinblue.style            = UI_CENTER|UI_SMALLFONT;
  119.     s_teammain.joinblue.color            = colorRed;
  120.     y += 20;
  121.  
  122.     s_teammain.joingame.generic.type     = MTYPE_PTEXT;
  123.     s_teammain.joingame.generic.flags    = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  124.     s_teammain.joingame.generic.id       = ID_JOINGAME;
  125.     s_teammain.joingame.generic.callback = TeamMain_MenuEvent;
  126.     s_teammain.joingame.generic.x        = 320;
  127.     s_teammain.joingame.generic.y        = y;
  128.     s_teammain.joingame.string           = "JOIN GAME";
  129.     s_teammain.joingame.style            = UI_CENTER|UI_SMALLFONT;
  130.     s_teammain.joingame.color            = colorRed;
  131.     y += 20;
  132.  
  133.     s_teammain.spectate.generic.type     = MTYPE_PTEXT;
  134.     s_teammain.spectate.generic.flags    = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  135.     s_teammain.spectate.generic.id       = ID_SPECTATE;
  136.     s_teammain.spectate.generic.callback = TeamMain_MenuEvent;
  137.     s_teammain.spectate.generic.x        = 320;
  138.     s_teammain.spectate.generic.y        = y;
  139.     s_teammain.spectate.string           = "SPECTATE";
  140.     s_teammain.spectate.style            = UI_CENTER|UI_SMALLFONT;
  141.     s_teammain.spectate.color            = colorRed;
  142.     y += 20;
  143.  
  144.     trap_GetConfigString(CS_SERVERINFO, info, MAX_INFO_STRING);   
  145.     gametype = atoi( Info_ValueForKey( info,"g_gametype" ) );
  146.                   
  147.     // set initial states
  148.     switch( gametype ) {
  149.     case GT_SINGLE_PLAYER:
  150.     case GT_FFA:
  151.     case GT_TOURNAMENT:
  152.         s_teammain.joinred.generic.flags  |= QMF_GRAYED;
  153.         s_teammain.joinblue.generic.flags |= QMF_GRAYED;
  154.         break;
  155.  
  156.     default:
  157.     case GT_TEAM:
  158.     case GT_CTF:
  159.         s_teammain.joingame.generic.flags |= QMF_GRAYED;
  160.         break;
  161.     }
  162.  
  163.     Menu_AddItem( &s_teammain.menu, (void*) &s_teammain.frame );
  164.     Menu_AddItem( &s_teammain.menu, (void*) &s_teammain.joinred );
  165.     Menu_AddItem( &s_teammain.menu, (void*) &s_teammain.joinblue );
  166.     Menu_AddItem( &s_teammain.menu, (void*) &s_teammain.joingame );
  167.     Menu_AddItem( &s_teammain.menu, (void*) &s_teammain.spectate );
  168. }
  169.  
  170.  
  171. /*
  172. ===============
  173. TeamMain_Cache
  174. ===============
  175. */
  176. void TeamMain_Cache( void ) {
  177.     trap_R_RegisterShaderNoMip( TEAMMAIN_FRAME );
  178. }
  179.  
  180.  
  181. /*
  182. ===============
  183. UI_TeamMainMenu
  184. ===============
  185. */
  186. void UI_TeamMainMenu( void ) {
  187.     TeamMain_MenuInit();
  188.     UI_PushMenu ( &s_teammain.menu );
  189. }
  190.