#include "ui_local.h"
Include dependency graph for ui_playermodel.c:

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 |
|
|
Definition at line 77 of file ui_playermodel.c. |
|
|
Definition at line 76 of file ui_playermodel.c. Referenced by PlayerModel_MenuEvent(), and StartServer_MenuEvent(). |
|
|
Definition at line 59 of file ui_playermodel.c. Referenced by PlayerModel_MenuInit(). |
|
|
Definition at line 60 of file ui_playermodel.c. |
|
|
Definition at line 69 of file ui_playermodel.c. |
|
|
Definition at line 70 of file ui_playermodel.c. |
|
|
Definition at line 71 of file ui_playermodel.c. |
|
|
Definition at line 72 of file ui_playermodel.c. |
|
|
Definition at line 73 of file ui_playermodel.c. |
|
|
Definition at line 74 of file ui_playermodel.c. |
|
|
Definition at line 61 of file ui_playermodel.c. |
|
|
Definition at line 62 of file ui_playermodel.c. |
|
|
Definition at line 63 of file ui_playermodel.c. |
|
|
Definition at line 64 of file ui_playermodel.c. |
|
|
Definition at line 65 of file ui_playermodel.c. |
|
|
Definition at line 66 of file ui_playermodel.c. |
|
|
Definition at line 67 of file ui_playermodel.c. |
|
|
Definition at line 68 of file ui_playermodel.c. |
|
|
Definition at line 75 of file ui_playermodel.c. Referenced by PlayerModel_MenuEvent(), and StartServer_MenuEvent(). |
|
|
Definition at line 36 of file ui_playermodel.c. |
|
|
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(). |
|
|
Definition at line 57 of file ui_playermodel.c. |
|
|
Definition at line 32 of file ui_playermodel.c. |
|
|
Definition at line 33 of file ui_playermodel.c. |
|
|
Definition at line 34 of file ui_playermodel.c. |
|
|
Definition at line 25 of file ui_playermodel.c. |
|
|
Definition at line 26 of file ui_playermodel.c. |
|
|
Definition at line 29 of file ui_playermodel.c. |
|
|
Definition at line 30 of file ui_playermodel.c. |
|
|
Definition at line 31 of file ui_playermodel.c. |
|
|
Definition at line 27 of file ui_playermodel.c. |
|
|
Definition at line 28 of file ui_playermodel.c. |
|
|
Definition at line 53 of file ui_playermodel.c. |
|
|
Definition at line 54 of file ui_playermodel.c. Referenced by PlayerModel_PicEvent(), PlayerModel_UpdateGrid(), UI_BotSelectMenu_BotEvent(), and UI_BotSelectMenu_UpdateGrid(). |
|
|
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:

|
|
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:

|
|
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:

|
||||||||||||
|
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:

|
Here is the call graph for this function:

|
|
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:

|
||||||||||||
|
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; i++)
00321 {
00322 // reset
00323 s_playermodel.pics[i].generic.flags &= ~QMF_HIGHLIGHT;
00324 s_playermodel.picbuttons[i].generic.flags |= QMF_PULSEIFFOCUS;
00325 }
00326
00327 // set selected
00328 i = ((menucommon_s*)ptr)->id - ID_PLAYERPIC0;
00329 s_playermodel.pics[i].generic.flags |= QMF_HIGHLIGHT;
00330 s_playermodel.picbuttons[i].generic.flags &= ~QMF_PULSEIFFOCUS;
00331
00332 // get model and strip icon_
00333 modelnum = s_playermodel.modelpage*MAX_MODELSPERPAGE + i;
00334 buffptr = s_playermodel.modelnames[modelnum] + strlen("models/players/");
00335 pdest = strstr(buffptr,"icon_");
00336 if (pdest)
00337 {
00338 // track the whole model/skin name
00339 Q_strncpyz(s_playermodel.modelskin,buffptr,pdest-buffptr+1);
00340 strcat(s_playermodel.modelskin,pdest + 5);
00341
00342 // seperate the model name
00343 maxlen = pdest-buffptr;
00344 if (maxlen > 16)
00345 maxlen = 16;
00346 Q_strncpyz( s_playermodel.modelname.string, buffptr, maxlen );
00347 Q_strupr( s_playermodel.modelname.string );
00348
00349 // seperate the skin name
00350 maxlen = strlen(pdest+5)+1;
00351 if (maxlen > 16)
00352 maxlen = 16;
00353 Q_strncpyz( s_playermodel.skinname.string, pdest+5, maxlen );
00354 Q_strupr( s_playermodel.skinname.string );
00355
00356 s_playermodel.selectedmodel = modelnum;
00357
00358 if( trap_MemoryRemaining() > LOW_MEMORY ) {
00359 PlayerModel_UpdateModel();
00360 }
00361 }
00362 }
|
Here is the call graph for this function:

|
|
Definition at line 193 of file ui_playermodel.c. References playermodel_t::modelskin, s_playermodel, and trap_Cvar_Set(). Referenced by PlayerModel_MenuEvent(), and PlayerModel_MenuKey(). 00194 {
00195 trap_Cvar_Set( "model", s_playermodel.modelskin );
00196 trap_Cvar_Set( "headmodel", s_playermodel.modelskin );
00197 trap_Cvar_Set( "team_model", s_playermodel.modelskin );
00198 trap_Cvar_Set( "team_headmodel", s_playermodel.modelskin );
00199 }
|
Here is the call graph for this function:

|
|
Definition at line 457 of file ui_playermodel.c. References i, playermodel_t::modelname, playermodel_t::modelnames, playermodel_t::modelpage, playermodel_t::modelskin, playermodel_t::nummodels, playermodel_t::playername, Q_CleanStr(), Q_stricmp(), Q_strncpyz(), Q_strupr(), s_playermodel, playermodel_t::selectedmodel, playermodel_t::skinname, strcat(), menutext_s::string, strlen(), strstr(), and trap_Cvar_VariableStringBuffer(). Referenced by PlayerModel_MenuInit(). 00458 {
00459 int i;
00460 int maxlen;
00461 char modelskin[64];
00462 char* buffptr;
00463 char* pdest;
00464
00465 // name
00466 trap_Cvar_VariableStringBuffer( "name", s_playermodel.playername.string, 16 );
00467 Q_CleanStr( s_playermodel.playername.string );
00468
00469 // model
00470 trap_Cvar_VariableStringBuffer( "model", s_playermodel.modelskin, 64 );
00471
00472 // find model in our list
00473 for (i=0; i<s_playermodel.nummodels; i++)
00474 {
00475 // strip icon_
00476 buffptr = s_playermodel.modelnames[i] + strlen("models/players/");
00477 pdest = strstr(buffptr,"icon_");
00478 if (pdest)
00479 {
00480 Q_strncpyz(modelskin,buffptr,pdest-buffptr+1);
00481 strcat(modelskin,pdest + 5);
00482 }
00483 else
00484 continue;
00485
00486 if (!Q_stricmp( s_playermodel.modelskin, modelskin ))
00487 {
00488 // found pic, set selection here
00489 s_playermodel.selectedmodel = i;
00490 s_playermodel.modelpage = i/MAX_MODELSPERPAGE;
00491
00492 // seperate the model name
00493 maxlen = pdest-buffptr;
00494 if (maxlen > 16)
00495 maxlen = 16;
00496 Q_strncpyz( s_playermodel.modelname.string, buffptr, maxlen );
00497 Q_strupr( s_playermodel.modelname.string );
00498
00499 // seperate the skin name
00500 maxlen = strlen(pdest+5)+1;
00501 if (maxlen > 16)
00502 maxlen = 16;
00503 Q_strncpyz( s_playermodel.skinname.string, pdest+5, maxlen );
00504 Q_strupr( s_playermodel.skinname.string );
00505 break;
00506 }
00507 }
00508 }
|
Here is the call graph for this function:

|
|
|
Definition at line 172 of file ui_playermodel.c. References LEGS_IDLE, memset(), playermodel_t::modelskin, playermodel_t::playerinfo, qfalse, s_playermodel, TORSO_STAND, UI_PlayerInfo_SetInfo(), UI_PlayerInfo_SetModel(), vec3_t, VectorClear, and WP_MACHINEGUN. Referenced by PlayerModel_MenuInit(), and PlayerModel_PicEvent(). 00173 {
00174 vec3_t viewangles;
00175 vec3_t moveangles;
00176
00177 memset( &s_playermodel.playerinfo, 0, sizeof(playerInfo_t) );
00178
00179 viewangles[YAW] = 180 - 30;
00180 viewangles[PITCH] = 0;
00181 viewangles[ROLL] = 0;
00182 VectorClear( moveangles );
00183
00184 UI_PlayerInfo_SetModel( &s_playermodel.playerinfo, s_playermodel.modelskin );
00185 UI_PlayerInfo_SetInfo( &s_playermodel.playerinfo, LEGS_IDLE, TORSO_STAND, viewangles, moveangles, WP_MACHINEGUN, qfalse );
00186 }
|
Here is the call graph for this function:

|
|
Definition at line 722 of file ui_playermodel.c. References MAX_MODELSPERPAGE, playermodel_t::menu, Menu_SetCursorToItem(), playermodel_t::pics, PlayerModel_MenuInit(), s_playermodel, playermodel_t::selectedmodel, and UI_PushMenu(). 00723 {
00724 PlayerModel_MenuInit();
00725
00726 UI_PushMenu( &s_playermodel.menu );
00727
00728 Menu_SetCursorToItem( &s_playermodel.menu, &s_playermodel.pics[s_playermodel.selectedmodel % MAX_MODELSPERPAGE] );
00729 }
|
Here is the call graph for this function:

|
|
Initial value:
{
MODEL_BACK0,
MODEL_BACK1,
MODEL_SELECT,
MODEL_SELECTED,
MODEL_FRAMEL,
MODEL_FRAMER,
MODEL_PORTS,
MODEL_ARROWS,
MODEL_ARROWSL,
MODEL_ARROWSR,
NULL
}
Definition at line 38 of file ui_playermodel.c. Referenced by PlayerModel_Cache(). |
|
1.3.9.1