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

ui_playermodel.c File Reference

#include "ui_local.h"

Include dependency graph for ui_playermodel.c:

Include dependency graph

Go to the source code of this file.

Data Structures

struct  playermodel_t

Defines

#define ID_BACK   102
#define ID_NEXTPAGE   101
#define ID_PLAYERPIC0   0
#define ID_PLAYERPIC1   1
#define ID_PLAYERPIC10   10
#define ID_PLAYERPIC11   11
#define ID_PLAYERPIC12   12
#define ID_PLAYERPIC13   13
#define ID_PLAYERPIC14   14
#define ID_PLAYERPIC15   15
#define ID_PLAYERPIC2   2
#define ID_PLAYERPIC3   3
#define ID_PLAYERPIC4   4
#define ID_PLAYERPIC5   5
#define ID_PLAYERPIC6   6
#define ID_PLAYERPIC7   7
#define ID_PLAYERPIC8   8
#define ID_PLAYERPIC9   9
#define ID_PREVPAGE   100
#define LOW_MEMORY   (5 * 1024 * 1024)
#define MAX_MODELSPERPAGE   (PLAYERGRID_ROWS*PLAYERGRID_COLS)
#define MAX_PLAYERMODELS   256
#define MODEL_ARROWS   "menu/art/gs_arrows_0"
#define MODEL_ARROWSL   "menu/art/gs_arrows_l"
#define MODEL_ARROWSR   "menu/art/gs_arrows_r"
#define MODEL_BACK0   "menu/art/back_0"
#define MODEL_BACK1   "menu/art/back_1"
#define MODEL_FRAMEL   "menu/art/frame1_l"
#define MODEL_FRAMER   "menu/art/frame1_r"
#define MODEL_PORTS   "menu/art/player_models_ports"
#define MODEL_SELECT   "menu/art/opponents_select"
#define MODEL_SELECTED   "menu/art/opponents_selected"
#define PLAYERGRID_COLS   4
#define PLAYERGRID_ROWS   4

Functions

void PlayerModel_BuildList (void)
void PlayerModel_Cache (void)
void PlayerModel_DrawPlayer (void *self)
void PlayerModel_MenuEvent (void *ptr, int event)
void PlayerModel_MenuInit (void)
sfxHandle_t PlayerModel_MenuKey (int key)
void PlayerModel_PicEvent (void *ptr, int event)
void PlayerModel_SaveChanges (void)
void PlayerModel_SetMenuItems (void)
void PlayerModel_UpdateGrid (void)
void PlayerModel_UpdateModel (void)
void UI_PlayerModelMenu (void)

Variables

char * playermodel_artlist []
playermodel_t s_playermodel


Define Documentation

#define ID_BACK   102
 

Definition at line 77 of file ui_playermodel.c.

#define ID_NEXTPAGE   101
 

Definition at line 76 of file ui_playermodel.c.

Referenced by PlayerModel_MenuEvent(), and StartServer_MenuEvent().

#define ID_PLAYERPIC0   0
 

Definition at line 59 of file ui_playermodel.c.

Referenced by PlayerModel_MenuInit().

#define ID_PLAYERPIC1   1
 

Definition at line 60 of file ui_playermodel.c.

#define ID_PLAYERPIC10   10
 

Definition at line 69 of file ui_playermodel.c.

#define ID_PLAYERPIC11   11
 

Definition at line 70 of file ui_playermodel.c.

#define ID_PLAYERPIC12   12
 

Definition at line 71 of file ui_playermodel.c.

#define ID_PLAYERPIC13   13
 

Definition at line 72 of file ui_playermodel.c.

#define ID_PLAYERPIC14   14
 

Definition at line 73 of file ui_playermodel.c.

#define ID_PLAYERPIC15   15
 

Definition at line 74 of file ui_playermodel.c.

#define ID_PLAYERPIC2   2
 

Definition at line 61 of file ui_playermodel.c.

#define ID_PLAYERPIC3   3
 

Definition at line 62 of file ui_playermodel.c.

#define ID_PLAYERPIC4   4
 

Definition at line 63 of file ui_playermodel.c.

#define ID_PLAYERPIC5   5
 

Definition at line 64 of file ui_playermodel.c.

#define ID_PLAYERPIC6   6
 

Definition at line 65 of file ui_playermodel.c.

#define ID_PLAYERPIC7   7
 

Definition at line 66 of file ui_playermodel.c.

#define ID_PLAYERPIC8   8
 

Definition at line 67 of file ui_playermodel.c.

#define ID_PLAYERPIC9   9
 

Definition at line 68 of file ui_playermodel.c.

#define ID_PREVPAGE   100
 

Definition at line 75 of file ui_playermodel.c.

Referenced by PlayerModel_MenuEvent(), and StartServer_MenuEvent().

#define LOW_MEMORY   (5 * 1024 * 1024)
 

Definition at line 36 of file ui_playermodel.c.

#define MAX_MODELSPERPAGE   (PLAYERGRID_ROWS*PLAYERGRID_COLS)
 

Definition at line 55 of file ui_playermodel.c.

Referenced by PlayerModel_MenuKey(), PlayerModel_PicEvent(), PlayerModel_UpdateGrid(), UI_BotSelectMenu_BotEvent(), UI_BotSelectMenu_SelectEvent(), and UI_PlayerModelMenu().

#define MAX_PLAYERMODELS   256
 

Definition at line 57 of file ui_playermodel.c.

#define MODEL_ARROWS   "menu/art/gs_arrows_0"
 

Definition at line 32 of file ui_playermodel.c.

#define MODEL_ARROWSL   "menu/art/gs_arrows_l"
 

Definition at line 33 of file ui_playermodel.c.

#define MODEL_ARROWSR   "menu/art/gs_arrows_r"
 

Definition at line 34 of file ui_playermodel.c.

#define MODEL_BACK0   "menu/art/back_0"
 

Definition at line 25 of file ui_playermodel.c.

#define MODEL_BACK1   "menu/art/back_1"
 

Definition at line 26 of file ui_playermodel.c.

#define MODEL_FRAMEL   "menu/art/frame1_l"
 

Definition at line 29 of file ui_playermodel.c.

#define MODEL_FRAMER   "menu/art/frame1_r"
 

Definition at line 30 of file ui_playermodel.c.

#define MODEL_PORTS   "menu/art/player_models_ports"
 

Definition at line 31 of file ui_playermodel.c.

#define MODEL_SELECT   "menu/art/opponents_select"
 

Definition at line 27 of file ui_playermodel.c.

#define MODEL_SELECTED   "menu/art/opponents_selected"
 

Definition at line 28 of file ui_playermodel.c.

#define PLAYERGRID_COLS   4
 

Definition at line 53 of file ui_playermodel.c.

#define PLAYERGRID_ROWS   4
 

Definition at line 54 of file ui_playermodel.c.

Referenced by PlayerModel_PicEvent(), PlayerModel_UpdateGrid(), UI_BotSelectMenu_BotEvent(), and UI_BotSelectMenu_UpdateGrid().


Function Documentation

void PlayerModel_BuildList void   )  [static]
 

Definition at line 388 of file ui_playermodel.c.

References Com_sprintf(), COM_StripExtension(), filelist, i, j, playermodel_t::modelnames, playermodel_t::modelpage, playermodel_t::nummodels, playermodel_t::numpages, Q_stricmpn(), qboolean, qfalse, s_playermodel, strcmp(), strlen(), trap_Cvar_VariableValue(), trap_FS_GetFileList(), trap_S_RegisterSound(), and va().

Referenced by PlayerModel_Cache().

00389 {
00390     int     numdirs;
00391     int     numfiles;
00392     char    dirlist[2048];
00393     char    filelist[2048];
00394     char    skinname[64];
00395     char*   dirptr;
00396     char*   fileptr;
00397     int     i;
00398     int     j;
00399     int     dirlen;
00400     int     filelen;
00401     qboolean precache;
00402 
00403     precache = trap_Cvar_VariableValue("com_buildscript");
00404 
00405     s_playermodel.modelpage = 0;
00406     s_playermodel.nummodels = 0;
00407 
00408     // iterate directory of all player models
00409     numdirs = trap_FS_GetFileList("models/players", "/", dirlist, 2048 );
00410     dirptr  = dirlist;
00411     for (i=0; i<numdirs && s_playermodel.nummodels < MAX_PLAYERMODELS; i++,dirptr+=dirlen+1)
00412     {
00413         dirlen = strlen(dirptr);
00414         
00415         if (dirlen && dirptr[dirlen-1]=='/') dirptr[dirlen-1]='\0';
00416 
00417         if (!strcmp(dirptr,".") || !strcmp(dirptr,".."))
00418             continue;
00419             
00420         // iterate all skin files in directory
00421         numfiles = trap_FS_GetFileList( va("models/players/%s",dirptr), "tga", filelist, 2048 );
00422         fileptr  = filelist;
00423         for (j=0; j<numfiles && s_playermodel.nummodels < MAX_PLAYERMODELS;j++,fileptr+=filelen+1)
00424         {
00425             filelen = strlen(fileptr);
00426 
00427             COM_StripExtension(fileptr,skinname);
00428 
00429             // look for icon_????
00430             if (!Q_stricmpn(skinname,"icon_",5))
00431             {
00432                 Com_sprintf( s_playermodel.modelnames[s_playermodel.nummodels++],
00433                     sizeof( s_playermodel.modelnames[s_playermodel.nummodels] ),
00434                     "models/players/%s/%s", dirptr, skinname );
00435                 //if (s_playermodel.nummodels >= MAX_PLAYERMODELS)
00436                 //  return;
00437             }
00438 
00439             if( precache ) {
00440                 trap_S_RegisterSound( va( "sound/player/announce/%s_wins.wav", skinname), qfalse );
00441             }
00442         }
00443     }   
00444 
00445     //APSFIXME - Degenerate no models case
00446 
00447     s_playermodel.numpages = s_playermodel.nummodels/MAX_MODELSPERPAGE;
00448     if (s_playermodel.nummodels % MAX_MODELSPERPAGE)
00449         s_playermodel.numpages++;
00450 }

Here is the call graph for this function:

void PlayerModel_Cache void   ) 
 

Definition at line 708 of file ui_playermodel.c.

References i, playermodel_t::modelnames, playermodel_t::nummodels, playermodel_artlist, PlayerModel_BuildList(), s_playermodel, and trap_R_RegisterShaderNoMip().

00709 {
00710     int i;
00711 
00712     for( i = 0; playermodel_artlist[i]; i++ ) {
00713         trap_R_RegisterShaderNoMip( playermodel_artlist[i] );
00714     }
00715 
00716     PlayerModel_BuildList();
00717     for( i = 0; i < s_playermodel.nummodels; i++ ) {
00718         trap_R_RegisterShaderNoMip( s_playermodel.modelnames[i] );
00719     }
00720 }

Here is the call graph for this function:

void PlayerModel_DrawPlayer void *  self  )  [static]
 

Definition at line 369 of file ui_playermodel.c.

References b, color_red, menubitmap_s::generic, menubitmap_s::height, playermodel_t::playerinfo, uiStatic_t::realtime, s_playermodel, trap_MemoryRemaining(), UI_DrawPlayer(), UI_DrawProportionalString(), UI_LEFT, uis, menubitmap_s::width, menucommon_s::x, and menucommon_s::y.

00370 {
00371     menubitmap_s*   b;
00372 
00373     b = (menubitmap_s*) self;
00374 
00375     if( trap_MemoryRemaining() <= LOW_MEMORY ) {
00376         UI_DrawProportionalString( b->generic.x, b->generic.y + b->height / 2, "LOW MEMORY", UI_LEFT, color_red );
00377         return;
00378     }
00379 
00380     UI_DrawPlayer( b->generic.x, b->generic.y, b->width, b->height, &s_playermodel.playerinfo, uis.realtime/2 );
00381 }

Here is the call graph for this function:

void PlayerModel_MenuEvent void *  ptr,
int  event
[static]
 

Definition at line 206 of file ui_playermodel.c.

References ID_BACK, ID_NEXTPAGE, ID_PREVPAGE, playermodel_t::modelpage, playermodel_t::numpages, PlayerModel_SaveChanges(), PlayerModel_UpdateGrid(), s_playermodel, and UI_PopMenu().

00207 {
00208     if (event != QM_ACTIVATED)
00209         return;
00210 
00211     switch (((menucommon_s*)ptr)->id)
00212     {
00213         case ID_PREVPAGE:
00214             if (s_playermodel.modelpage > 0)
00215             {
00216                 s_playermodel.modelpage--;
00217                 PlayerModel_UpdateGrid();
00218             }
00219             break;
00220 
00221         case ID_NEXTPAGE:
00222             if (s_playermodel.modelpage < s_playermodel.numpages-1)
00223             {
00224                 s_playermodel.modelpage++;
00225                 PlayerModel_UpdateGrid();
00226             }
00227             break;
00228 
00229         case ID_BACK:
00230             PlayerModel_SaveChanges();
00231             UI_PopMenu();
00232             break;
00233     }
00234 }

Here is the call graph for this function:

void PlayerModel_MenuInit void   )  [static]
 

Definition at line 515 of file ui_playermodel.c.

References playermodel_t::arrows, playermodel_t::back, playermodel_t::banner, menucommon_s::bottom, menucommon_s::callback, menutext_s::color, menucommon_s::flags, menubitmap_s::focuscolor, menubitmap_s::focuspic, playermodel_t::framel, playermodel_t::framer, _tag_menuframework::fullscreen, menubitmap_s::generic, menutext_s::generic, menubitmap_s::height, i, menucommon_s::id, ID_PLAYERPIC0, j, k, _tag_menuframework::key, playermodel_t::left, menucommon_s::left, memset(), playermodel_t::menu, Menu_AddItem(), playermodel_t::modelname, menucommon_s::name, menucommon_s::ownerdraw, playermodel_t::picbuttons, playermodel_t::pics, playermodel_t::player, PlayerModel_Cache(), PlayerModel_SetMenuItems(), PlayerModel_UpdateGrid(), PlayerModel_UpdateModel(), playermodel_t::playername, playermodel_t::ports, QMF_CENTER_JUSTIFY, QMF_LEFT_JUSTIFY, QMF_NODEFAULTINIT, playermodel_t::right, menucommon_s::right, s_playermodel, playermodel_t::skinname, menutext_s::string, menutext_s::style, menucommon_s::top, menucommon_s::type, menubitmap_s::width, _tag_menuframework::wrapAround, x, menucommon_s::x, y, and menucommon_s::y.

Referenced by UI_PlayerModelMenu().

00516 {
00517     int         i;
00518     int         j;
00519     int         k;
00520     int         x;
00521     int         y;
00522     static char playername[32];
00523     static char modelname[32];
00524     static char skinname[32];
00525 
00526     // zero set all our globals
00527     memset( &s_playermodel, 0 ,sizeof(playermodel_t) );
00528 
00529     PlayerModel_Cache();
00530 
00531     s_playermodel.menu.key        = PlayerModel_MenuKey;
00532     s_playermodel.menu.wrapAround = qtrue;
00533     s_playermodel.menu.fullscreen = qtrue;
00534 
00535     s_playermodel.banner.generic.type  = MTYPE_BTEXT;
00536     s_playermodel.banner.generic.x     = 320;
00537     s_playermodel.banner.generic.y     = 16;
00538     s_playermodel.banner.string        = "PLAYER MODEL";
00539     s_playermodel.banner.color         = color_white;
00540     s_playermodel.banner.style         = UI_CENTER;
00541 
00542     s_playermodel.framel.generic.type  = MTYPE_BITMAP;
00543     s_playermodel.framel.generic.name  = MODEL_FRAMEL;
00544     s_playermodel.framel.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE;
00545     s_playermodel.framel.generic.x     = 0;
00546     s_playermodel.framel.generic.y     = 78;
00547     s_playermodel.framel.width         = 256;
00548     s_playermodel.framel.height        = 329;
00549 
00550     s_playermodel.framer.generic.type  = MTYPE_BITMAP;
00551     s_playermodel.framer.generic.name  = MODEL_FRAMER;
00552     s_playermodel.framer.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE;
00553     s_playermodel.framer.generic.x     = 376;
00554     s_playermodel.framer.generic.y     = 76;
00555     s_playermodel.framer.width         = 256;
00556     s_playermodel.framer.height        = 334;
00557 
00558     s_playermodel.ports.generic.type  = MTYPE_BITMAP;
00559     s_playermodel.ports.generic.name  = MODEL_PORTS;
00560     s_playermodel.ports.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE;
00561     s_playermodel.ports.generic.x     = 50;
00562     s_playermodel.ports.generic.y     = 59;
00563     s_playermodel.ports.width         = 274;
00564     s_playermodel.ports.height        = 274;
00565 
00566     y = 59;
00567     for (i=0,k=0; i<PLAYERGRID_ROWS; i++)
00568     {
00569         x = 50;
00570         for (j=0; j<PLAYERGRID_COLS; j++,k++)
00571         {
00572             s_playermodel.pics[k].generic.type     = MTYPE_BITMAP;
00573             s_playermodel.pics[k].generic.flags    = QMF_LEFT_JUSTIFY|QMF_INACTIVE;
00574             s_playermodel.pics[k].generic.x        = x;
00575             s_playermodel.pics[k].generic.y        = y;
00576             s_playermodel.pics[k].width            = 64;
00577             s_playermodel.pics[k].height           = 64;
00578             s_playermodel.pics[k].focuspic         = MODEL_SELECTED;
00579             s_playermodel.pics[k].focuscolor       = colorRed;
00580 
00581             s_playermodel.picbuttons[k].generic.type     = MTYPE_BITMAP;
00582             s_playermodel.picbuttons[k].generic.flags    = QMF_LEFT_JUSTIFY|QMF_NODEFAULTINIT|QMF_PULSEIFFOCUS;
00583             s_playermodel.picbuttons[k].generic.id       = ID_PLAYERPIC0+k;
00584             s_playermodel.picbuttons[k].generic.callback = PlayerModel_PicEvent;
00585             s_playermodel.picbuttons[k].generic.x        = x - 16;
00586             s_playermodel.picbuttons[k].generic.y        = y - 16;
00587             s_playermodel.picbuttons[k].generic.left     = x;
00588             s_playermodel.picbuttons[k].generic.top      = y;
00589             s_playermodel.picbuttons[k].generic.right    = x + 64;
00590             s_playermodel.picbuttons[k].generic.bottom   = y + 64;
00591             s_playermodel.picbuttons[k].width            = 128;
00592             s_playermodel.picbuttons[k].height           = 128;
00593             s_playermodel.picbuttons[k].focuspic         = MODEL_SELECT;
00594             s_playermodel.picbuttons[k].focuscolor       = colorRed;
00595 
00596             x += 64+6;
00597         }
00598         y += 64+6;
00599     }
00600 
00601     s_playermodel.playername.generic.type  = MTYPE_PTEXT;
00602     s_playermodel.playername.generic.flags = QMF_CENTER_JUSTIFY|QMF_INACTIVE;
00603     s_playermodel.playername.generic.x     = 320;
00604     s_playermodel.playername.generic.y     = 440;
00605     s_playermodel.playername.string        = playername;
00606     s_playermodel.playername.style         = UI_CENTER;
00607     s_playermodel.playername.color         = text_color_normal;
00608 
00609     s_playermodel.modelname.generic.type  = MTYPE_PTEXT;
00610     s_playermodel.modelname.generic.flags = QMF_CENTER_JUSTIFY|QMF_INACTIVE;
00611     s_playermodel.modelname.generic.x     = 497;
00612     s_playermodel.modelname.generic.y     = 54;
00613     s_playermodel.modelname.string        = modelname;
00614     s_playermodel.modelname.style         = UI_CENTER;
00615     s_playermodel.modelname.color         = text_color_normal;
00616 
00617     s_playermodel.skinname.generic.type   = MTYPE_PTEXT;
00618     s_playermodel.skinname.generic.flags  = QMF_CENTER_JUSTIFY|QMF_INACTIVE;
00619     s_playermodel.skinname.generic.x      = 497;
00620     s_playermodel.skinname.generic.y      = 394;
00621     s_playermodel.skinname.string         = skinname;
00622     s_playermodel.skinname.style          = UI_CENTER;
00623     s_playermodel.skinname.color          = text_color_normal;
00624 
00625     s_playermodel.player.generic.type      = MTYPE_BITMAP;
00626     s_playermodel.player.generic.flags     = QMF_INACTIVE;
00627     s_playermodel.player.generic.ownerdraw = PlayerModel_DrawPlayer;
00628     s_playermodel.player.generic.x         = 400;
00629     s_playermodel.player.generic.y         = -40;
00630     s_playermodel.player.width             = 32*10;
00631     s_playermodel.player.height            = 56*10;
00632 
00633     s_playermodel.arrows.generic.type       = MTYPE_BITMAP;
00634     s_playermodel.arrows.generic.name       = MODEL_ARROWS;
00635     s_playermodel.arrows.generic.flags      = QMF_INACTIVE;
00636     s_playermodel.arrows.generic.x          = 125;
00637     s_playermodel.arrows.generic.y          = 340;
00638     s_playermodel.arrows.width              = 128;
00639     s_playermodel.arrows.height             = 32;
00640 
00641     s_playermodel.left.generic.type         = MTYPE_BITMAP;
00642     s_playermodel.left.generic.flags        = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
00643     s_playermodel.left.generic.callback     = PlayerModel_MenuEvent;
00644     s_playermodel.left.generic.id           = ID_PREVPAGE;
00645     s_playermodel.left.generic.x            = 125;
00646     s_playermodel.left.generic.y            = 340;
00647     s_playermodel.left.width                = 64;
00648     s_playermodel.left.height               = 32;
00649     s_playermodel.left.focuspic             = MODEL_ARROWSL;
00650 
00651     s_playermodel.right.generic.type        = MTYPE_BITMAP;
00652     s_playermodel.right.generic.flags       = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
00653     s_playermodel.right.generic.callback    = PlayerModel_MenuEvent;
00654     s_playermodel.right.generic.id          = ID_NEXTPAGE;
00655     s_playermodel.right.generic.x           = 125+61;
00656     s_playermodel.right.generic.y           = 340;
00657     s_playermodel.right.width               = 64;
00658     s_playermodel.right.height              = 32;
00659     s_playermodel.right.focuspic            = MODEL_ARROWSR;
00660 
00661     s_playermodel.back.generic.type     = MTYPE_BITMAP;
00662     s_playermodel.back.generic.name     = MODEL_BACK0;
00663     s_playermodel.back.generic.flags    = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
00664     s_playermodel.back.generic.callback = PlayerModel_MenuEvent;
00665     s_playermodel.back.generic.id       = ID_BACK;
00666     s_playermodel.back.generic.x        = 0;
00667     s_playermodel.back.generic.y        = 480-64;
00668     s_playermodel.back.width            = 128;
00669     s_playermodel.back.height           = 64;
00670     s_playermodel.back.focuspic         = MODEL_BACK1;
00671 
00672     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.banner );
00673     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.framel );
00674     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.framer );
00675     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.ports );
00676     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.playername );
00677     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.modelname );
00678     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.skinname );
00679 
00680     for (i=0; i<MAX_MODELSPERPAGE; i++)
00681     {
00682         Menu_AddItem( &s_playermodel.menu,  &s_playermodel.pics[i] );
00683         Menu_AddItem( &s_playermodel.menu,  &s_playermodel.picbuttons[i] );
00684     }
00685 
00686     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.player );
00687     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.arrows );
00688     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.left );
00689     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.right );
00690     Menu_AddItem( &s_playermodel.menu,  &s_playermodel.back );
00691 
00692     // find all available models
00693 //  PlayerModel_BuildList();
00694 
00695     // set initial states
00696     PlayerModel_SetMenuItems();
00697 
00698     // update user interface
00699     PlayerModel_UpdateGrid();
00700     PlayerModel_UpdateModel();
00701 }

Here is the call graph for this function:

sfxHandle_t PlayerModel_MenuKey int  key  )  [static]
 

Definition at line 241 of file ui_playermodel.c.

References _tag_menuframework::cursor, menucommon_s::id, K_ESCAPE, K_KP_LEFTARROW, K_KP_RIGHTARROW, K_LEFTARROW, K_MOUSE2, K_RIGHTARROW, m, MAX_MODELSPERPAGE, playermodel_t::menu, Menu_DefaultKey(), Menu_ItemAtCursor(), Menu_SetCursor(), playermodel_t::modelpage, playermodel_t::nummodels, playermodel_t::numpages, PlayerModel_SaveChanges(), PlayerModel_UpdateGrid(), s_playermodel, and sfxHandle_t.

00242 {
00243     menucommon_s*   m;
00244     int             picnum;
00245 
00246     switch (key)
00247     {
00248         case K_KP_LEFTARROW:
00249         case K_LEFTARROW:
00250             m = Menu_ItemAtCursor(&s_playermodel.menu);
00251             picnum = m->id - ID_PLAYERPIC0;
00252             if (picnum >= 0 && picnum <= 15)
00253             {
00254                 if (picnum > 0)
00255                 {
00256                     Menu_SetCursor(&s_playermodel.menu,s_playermodel.menu.cursor-1);
00257                     return (menu_move_sound);
00258                     
00259                 }
00260                 else if (s_playermodel.modelpage > 0)
00261                 {
00262                     s_playermodel.modelpage--;
00263                     Menu_SetCursor(&s_playermodel.menu,s_playermodel.menu.cursor+15);
00264                     PlayerModel_UpdateGrid();
00265                     return (menu_move_sound);
00266                 }
00267                 else
00268                     return (menu_buzz_sound);
00269             }
00270             break;
00271 
00272         case K_KP_RIGHTARROW:
00273         case K_RIGHTARROW:
00274             m = Menu_ItemAtCursor(&s_playermodel.menu);
00275             picnum = m->id - ID_PLAYERPIC0;
00276             if (picnum >= 0 && picnum <= 15)
00277             {
00278                 if ((picnum < 15) && (s_playermodel.modelpage*MAX_MODELSPERPAGE + picnum+1 < s_playermodel.nummodels))
00279                 {
00280                     Menu_SetCursor(&s_playermodel.menu,s_playermodel.menu.cursor+1);
00281                     return (menu_move_sound);
00282                 }                   
00283                 else if ((picnum == 15) && (s_playermodel.modelpage < s_playermodel.numpages-1))
00284                 {
00285                     s_playermodel.modelpage++;
00286                     Menu_SetCursor(&s_playermodel.menu,s_playermodel.menu.cursor-15);
00287                     PlayerModel_UpdateGrid();
00288                     return (menu_move_sound);
00289                 }
00290                 else
00291                     return (menu_buzz_sound);
00292             }
00293             break;
00294             
00295         case K_MOUSE2:
00296         case K_ESCAPE:
00297             PlayerModel_SaveChanges();
00298             break;
00299     }
00300 
00301     return ( Menu_DefaultKey( &s_playermodel.menu, key ) );
00302 }

Here is the call graph for this function:

void PlayerModel_PicEvent void *  ptr,
int  event
[static]
 

Definition at line 309 of file ui_playermodel.c.

References menucommon_s::flags, menubitmap_s::generic, i, menucommon_s::id, MAX_MODELSPERPAGE, playermodel_t::modelname, playermodel_t::modelnames, playermodel_t::modelpage, playermodel_t::modelskin, playermodel_t::picbuttons, playermodel_t::pics, PLAYERGRID_ROWS, PlayerModel_UpdateModel(), Q_strncpyz(), Q_strupr(), s_playermodel, playermodel_t::selectedmodel, playermodel_t::skinname, strcat(), menutext_s::string, strlen(), strstr(), and trap_MemoryRemaining().

00310 {
00311     int             modelnum;
00312     int             maxlen;
00313     char*           buffptr;
00314     char*           pdest;
00315     int             i;
00316 
00317     if (event != QM_ACTIVATED)
00318         return;
00319 
00320     for (i=0; i<PLAYERGRID_ROWS*PLAYERGRID_COLS;