/* ================= PlayerModel_MenuKey ================= */ static sfxHandle_t PlayerModel_MenuKey(int key) { menucommon_s* m; int picnum; switch (key) { case K_KP_LEFTARROW: case K_LEFTARROW: m = Menu_ItemAtCursor(&s_playermodel.menu); picnum = m->id - ID_PLAYERPIC0; if (picnum >= 0 && picnum <= 15) { if (picnum > 0) { Menu_SetCursor(&s_playermodel.menu, s_playermodel.menu.cursor - 1); return (menu_move_sound); } else if (s_playermodel.modelpage > 0) { s_playermodel.modelpage--; Menu_SetCursor(&s_playermodel.menu, s_playermodel.menu.cursor + 15); PlayerModel_UpdateGrid(); return (menu_move_sound); } else return (menu_buzz_sound); } break; case K_KP_RIGHTARROW: case K_RIGHTARROW: m = Menu_ItemAtCursor(&s_playermodel.menu); picnum = m->id - ID_PLAYERPIC0; if (picnum >= 0 && picnum <= 15) { if ((picnum < 15) && (s_playermodel.modelpage*MAX_MODELSPERPAGE + picnum + 1 < s_playermodel.nummodels)) { Menu_SetCursor(&s_playermodel.menu, s_playermodel.menu.cursor + 1); return (menu_move_sound); } else if ((picnum == 15) && (s_playermodel.modelpage < s_playermodel.numpages - 1)) { s_playermodel.modelpage++; Menu_SetCursor(&s_playermodel.menu, s_playermodel.menu.cursor - 15); PlayerModel_UpdateGrid(); return (menu_move_sound); } else return (menu_buzz_sound); } break; case K_MOUSE2: trap_Cvar_Set("headmodel", s_playermodel.modelskin); trap_Cvar_Set("team_headmodel", s_playermodel.modelskin); PlayerModel_SaveChanges(); PlayerModel_UpdateModel(); return (menu_buzz_sound); case K_ESCAPE: PlayerModel_SaveChanges(); break; } return (Menu_DefaultKey(&s_playermodel.menu, key)); }
/* ================= PlayerModel_MenuEvent ================= */ static void PlayerModel_MenuEvent( void* ptr, int event ) { if (event != QM_ACTIVATED) return; switch (((menucommon_s*)ptr)->id) { case ID_PREVPAGE: if (s_playermodel.modelpage > 0) { s_playermodel.modelpage--; PlayerModel_UpdateGrid(); } break; case ID_NEXTPAGE: if (s_playermodel.modelpage < s_playermodel.numpages-1) { s_playermodel.modelpage++; PlayerModel_UpdateGrid(); } break; case ID_BACK: PlayerModel_SaveChanges(); UI_PopMenu(); break; } }