X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=menu.c;h=2dc43ec921834070a93bf383c764274a09b0f2cc;hp=b531ab1184d9017b3d4aa333beed95880e8c1276;hb=ef993d0f1682d3fb86bdef33043d7b106ce51d13;hpb=83bc253950b171f125f2b858c689b6074c83b54d diff --git a/menu.c b/menu.c index b531ab11..2dc43ec9 100644 --- a/menu.c +++ b/menu.c @@ -28,8 +28,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define TYPE_GAME 2 #define TYPE_BOTH 3 -static cvar_t forceqmenu = {CVAR_CLIENT, "forceqmenu", "0", "enables the quake menu instead of the quakec menu.dat (if present)"}; -static cvar_t menu_progs = {CVAR_CLIENT, "menu_progs", "menu.dat", "name of quakec menu.dat file"}; +static cvar_t forceqmenu = {CF_CLIENT, "forceqmenu", "0", "enables the quake menu instead of the quakec menu.dat (if present)"}; +static cvar_t menu_progs = {CF_CLIENT, "menu_progs", "menu.dat", "name of quakec menu.dat file"}; static int NehGameType; @@ -106,7 +106,7 @@ static void M_GameOptions_Key(cmd_state_t *cmd, int key, int ascii); static void M_ServerList_Key(cmd_state_t *cmd, int key, int ascii); static void M_ModList_Key(cmd_state_t *cmd, int key, int ascii); -static qboolean m_entersound; ///< play after drawing a frame, so caching won't disrupt the sound +static qbool m_entersound; ///< play after drawing a frame, so caching won't disrupt the sound void M_Update_Return_Reason(const char *s) { @@ -282,7 +282,7 @@ static void M_ToggleMenu(int mode) { if(mode == 0) return; // the menu is off, and we want it off - M_Menu_Main_f (&cmd_client); + M_Menu_Main_f (cmd_local); } else { @@ -305,7 +305,7 @@ static void M_Demo_Draw (void) M_Print(16, 16 + 8*i, NehahraDemos[i].desc); // line cursor - M_DrawCharacter (8, 16 + demo_cursor*8, 12+((int)(realtime*4)&1)); + M_DrawCharacter (8, 16 + demo_cursor*8, 12+((int)(host.realtime*4)&1)); } @@ -355,7 +355,7 @@ static void M_Demo_Key (cmd_state_t *cmd, int k, int ascii) /* MAIN MENU */ static int m_main_cursor; -static qboolean m_missingdata = false; +static qbool m_missingdata = false; static int MAIN_ITEMS = 4; // Nehahra: Menu Disable @@ -448,7 +448,7 @@ static void M_Main_Draw (void) s = "to your launch commandline";M_Print ((640-strlen(s)*8)*0.5, y, s);y+=8; M_Print (640/2 - 48, 480/2, "Open Console"); //The console usually better shows errors (failures) M_Print (640/2 - 48, 480/2 + 8, "Quit"); - M_DrawCharacter(640/2 - 56, 480/2 + (8 * m_main_cursor), 12+((int)(realtime*4)&1)); + M_DrawCharacter(640/2 - 56, 480/2 + (8 * m_main_cursor), 12+((int)(host.realtime*4)&1)); return; } @@ -491,7 +491,7 @@ static void M_Main_Draw (void) else M_DrawPic (72, 32, "gfx/mainmenu"); - f = (int)(realtime * 10)%6; + f = (int)(host.realtime * 10)%6; M_DrawPic (54, 32 + m_main_cursor * 20, va(vabuf, sizeof(vabuf), "gfx/menudot%i", f+1)); } @@ -772,7 +772,7 @@ static void M_SinglePlayer_Draw (void) M_DrawPic ( (320-Draw_GetPicWidth(p))/2, 4, "gfx/ttl_sgl"); M_DrawPic (72, 32, "gfx/sp_menu"); - f = (int)(realtime * 10)%6; + f = (int)(host.realtime * 10)%6; M_DrawPic (54, 32 + m_singleplayer_cursor * 20, va(vabuf, sizeof(vabuf), "gfx/menudot%i", f+1)); } @@ -929,7 +929,7 @@ static void M_Load_Draw (void) M_Print(16, 32 + 8*i, m_filenames[i]); // line cursor - M_DrawCharacter (8, 32 + load_cursor*8, 12+((int)(realtime*4)&1)); + M_DrawCharacter (8, 32 + load_cursor*8, 12+((int)(host.realtime*4)&1)); } @@ -947,7 +947,7 @@ static void M_Save_Draw (void) M_Print(16, 32 + 8*i, m_filenames[i]); // line cursor - M_DrawCharacter (8, 32 + load_cursor*8, 12+((int)(realtime*4)&1)); + M_DrawCharacter (8, 32 + load_cursor*8, 12+((int)(host.realtime*4)&1)); } @@ -1226,7 +1226,7 @@ static void M_MultiPlayer_Draw (void) M_DrawPic ( (320-Draw_GetPicWidth(p))/2, 4, "gfx/p_multi"); M_DrawPic (72, 32, "gfx/mp_menu"); - f = (int)(realtime * 10)%6; + f = (int)(host.realtime * 10)%6; M_DrawPic (54, 32 + m_multiplayer_cursor * 20, va(vabuf, sizeof(vabuf), "gfx/menudot%i", f+1)); } @@ -1284,14 +1284,17 @@ static int setup_oldrate; #define NUM_SETUP_CMDS 5 +extern cvar_t cl_topcolor; +extern cvar_t cl_bottomcolor; + void M_Menu_Setup_f(cmd_state_t *cmd) { key_dest = key_menu; m_state = m_setup; m_entersound = true; strlcpy(setup_myname, cl_name.string, sizeof(setup_myname)); - setup_top = setup_oldtop = cl_color.integer >> 4; - setup_bottom = setup_oldbottom = cl_color.integer & 15; + setup_top = setup_oldtop = cl_topcolor.integer; + setup_bottom = setup_oldbottom = cl_bottomcolor.integer; setup_rate = cl_rate.integer; } @@ -1420,9 +1423,9 @@ static void M_Setup_Draw (void) } if (setup_cursor == 0) - M_DrawCharacter (168 + 8*strlen(setup_myname), setup_cursor_table [setup_cursor], 10+((int)(realtime*4)&1)); + M_DrawCharacter (168 + 8*strlen(setup_myname), setup_cursor_table [setup_cursor], 10+((int)(host.realtime*4)&1)); else - M_DrawCharacter (56, setup_cursor_table [setup_cursor], 12+((int)(realtime*4)&1)); + M_DrawCharacter (56, setup_cursor_table [setup_cursor], 12+((int)(host.realtime*4)&1)); } @@ -1615,8 +1618,8 @@ static void M_Menu_Options_AdjustSliders (int dir) Cvar_SetValueQuick (&cl_backspeed, 400); } } - else if (options_cursor == optnum++) Cvar_SetValueQuick(&showfps, !showfps.integer); - else if (options_cursor == optnum++) {f = !(showdate.integer && showtime.integer);Cvar_SetValueQuick(&showdate, f);Cvar_SetValueQuick(&showtime, f);} + else if (options_cursor == optnum++) Cvar_SetValueQuick(&cl_showfps, !cl_showfps.integer); + else if (options_cursor == optnum++) {f = !(cl_showdate.integer && cl_showtime.integer);Cvar_SetValueQuick(&cl_showdate, f);Cvar_SetValueQuick(&cl_showtime, f);} else if (options_cursor == optnum++) ; else if (options_cursor == optnum++) Cvar_SetValueQuick(&r_hdr_scenebrightness, bound(1, r_hdr_scenebrightness.value + dir * 0.0625, 4)); else if (options_cursor == optnum++) Cvar_SetValueQuick(&v_contrast, bound(1, v_contrast.value + dir * 0.0625, 4)); @@ -1634,7 +1637,7 @@ static void M_Options_PrintCommand(const char *s, int enabled) if (m_opty >= 32) { if (m_optnum == m_optcursor) - DrawQ_Fill(menu_x + 48, menu_y + m_opty, 320, 8, m_optnum == m_optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0); + DrawQ_Fill(menu_x + 48, menu_y + m_opty, 320, 8, m_optnum == m_optcursor ? (0.5 + 0.2 * sin(host.realtime * M_PI)) : 0, 0, 0, 0.5, 0); M_ItemPrint(0 + 48, m_opty, s, enabled); } m_opty += 8; @@ -1646,7 +1649,7 @@ static void M_Options_PrintCheckbox(const char *s, int enabled, int yes) if (m_opty >= 32) { if (m_optnum == m_optcursor) - DrawQ_Fill(menu_x + 48, menu_y + m_opty, 320, 8, m_optnum == m_optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0); + DrawQ_Fill(menu_x + 48, menu_y + m_opty, 320, 8, m_optnum == m_optcursor ? (0.5 + 0.2 * sin(host.realtime * M_PI)) : 0, 0, 0, 0.5, 0); M_ItemPrint(0 + 48, m_opty, s, enabled); M_DrawCheckbox(0 + 48 + (int)strlen(s) * 8 + 8, m_opty, yes); } @@ -1659,7 +1662,7 @@ static void M_Options_PrintSlider(const char *s, int enabled, float value, float if (m_opty >= 32) { if (m_optnum == m_optcursor) - DrawQ_Fill(menu_x + 48, menu_y + m_opty, 320, 8, m_optnum == m_optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0); + DrawQ_Fill(menu_x + 48, menu_y + m_opty, 320, 8, m_optnum == m_optcursor ? (0.5 + 0.2 * sin(host.realtime * M_PI)) : 0, 0, 0, 0.5, 0); M_ItemPrint(0 + 48, m_opty, s, enabled); M_DrawSlider(0 + 48 + (int)strlen(s) * 8 + 8, m_opty, value, minvalue, maxvalue); } @@ -1692,8 +1695,8 @@ static void M_Options_Draw (void) M_Options_PrintCheckbox(" Invert Mouse", true, m_pitch.value < 0); M_Options_PrintSlider( " Field of View", true, scr_fov.integer, 1, 170); M_Options_PrintCheckbox(" Always Run", true, cl_forwardspeed.value > 200); - M_Options_PrintCheckbox(" Show Framerate", true, showfps.integer); - M_Options_PrintCheckbox(" Show Date and Time", true, showdate.integer && showtime.integer); + M_Options_PrintCheckbox(" Show Framerate", true, cl_showfps.integer); + M_Options_PrintCheckbox(" Show Date and Time", true, cl_showdate.integer && cl_showtime.integer); M_Options_PrintCommand( " Custom Brightness", true); M_Options_PrintSlider( " Game Brightness", true, r_hdr_scenebrightness.value, 1, 4); M_Options_PrintSlider( " Brightness", true, v_contrast.value, 1, 2); @@ -2100,7 +2103,7 @@ static void M_Options_Graphics_Key (cmd_state_t *cmd, int k, int ascii) static int options_colorcontrol_cursor; // intensity value to match up to 50% dither to 'correct' quake -static cvar_t menu_options_colorcontrol_correctionvalue = {CVAR_CLIENT, "menu_options_colorcontrol_correctionvalue", "0.5", "intensity value that matches up to white/black dither pattern, should be 0.5 for linear color"}; +static cvar_t menu_options_colorcontrol_correctionvalue = {CF_CLIENT, "menu_options_colorcontrol_correctionvalue", "0.5", "intensity value that matches up to white/black dither pattern, should be 0.5 for linear color"}; void M_Menu_Options_ColorControl_f(cmd_state_t *cmd) { @@ -2658,7 +2661,7 @@ static void M_Keys_Draw (void) if (bind_grab) M_DrawCharacter (140, 48 + keys_cursor*8, '='); else - M_DrawCharacter (140, 48 + keys_cursor*8, 12+((int)(realtime*4)&1)); + M_DrawCharacter (140, 48 + keys_cursor*8, 12+((int)(host.realtime*4)&1)); } @@ -2835,9 +2838,9 @@ video_resolution_t video_resolutions_hardcoded[] = // this is the number of the default mode (640x480) in the list above int video_resolutions_hardcoded_count = sizeof(video_resolutions_hardcoded) / sizeof(*video_resolutions_hardcoded) - 1; -#define VIDEO_ITEMS 11 +#define VIDEO_ITEMS 10 static int video_cursor = 0; -static int video_cursor_table[VIDEO_ITEMS] = {68, 88, 96, 104, 112, 120, 128, 136, 144, 152, 168}; +static int video_cursor_table[VIDEO_ITEMS] = {68, 88, 96, 104, 112, 120, 128, 136, 144, 152}; static int menu_video_resolution; video_resolution_t *video_resolutions; @@ -2845,7 +2848,7 @@ int video_resolutions_count; static video_resolution_t *menu_video_resolutions; static int menu_video_resolutions_count; -static qboolean menu_video_resolutions_forfullscreen; +static qbool menu_video_resolutions_forfullscreen; static void M_Menu_Video_FindResolution(int w, int h, float a) { @@ -2979,7 +2982,7 @@ static void M_Video_Draw (void) t++; // Cursor - M_DrawCharacter(200, video_cursor_table[video_cursor], 12+((int)(realtime*4)&1)); + M_DrawCharacter(200, video_cursor_table[video_cursor], 12+((int)(host.realtime*4)&1)); } @@ -3165,7 +3168,7 @@ static void M_Credits_Key(cmd_state_t *cmd, int key, int ascii) static const char *m_quit_message[9]; static int m_quit_prevstate; -static qboolean wasInMenus; +static qbool wasInMenus; static int M_QuitMessage(const char *line1, const char *line2, const char *line3, const char *line4, const char *line5, const char *line6, const char *line7, const char *line8) @@ -3284,7 +3287,7 @@ static void M_Quit_Key(cmd_state_t *cmd, int key, int ascii) case 'Y': case 'y': - Host_Quit_f(cmd); + host.state = host_shutdown; break; default: @@ -3386,13 +3389,13 @@ static void M_LanConfig_Draw (void) M_Print(basex+8, lanConfig_cursor_table[1], "OK"); } - M_DrawCharacter (basex-8, lanConfig_cursor_table [lanConfig_cursor], 12+((int)(realtime*4)&1)); + M_DrawCharacter (basex-8, lanConfig_cursor_table [lanConfig_cursor], 12+((int)(host.realtime*4)&1)); if (lanConfig_cursor == 0) - M_DrawCharacter (basex+9*8 + 8*strlen(lanConfig_portname), lanConfig_cursor_table [lanConfig_cursor], 10+((int)(realtime*4)&1)); + M_DrawCharacter (basex+9*8 + 8*strlen(lanConfig_portname), lanConfig_cursor_table [lanConfig_cursor], 10+((int)(host.realtime*4)&1)); if (lanConfig_cursor == 3) - M_DrawCharacter (basex+16 + 8*strlen(lanConfig_joinname), lanConfig_cursor_table [lanConfig_cursor], 10+((int)(realtime*4)&1)); + M_DrawCharacter (basex+16 + 8*strlen(lanConfig_joinname), lanConfig_cursor_table [lanConfig_cursor], 10+((int)(host.realtime*4)&1)); if (*m_return_reason) M_Print(basex, 168, m_return_reason); @@ -3946,7 +3949,7 @@ static gamelevels_t *gameoptions_levels = NULL; static int startepisode; static int startlevel; static int maxplayers; -static qboolean m_serverInfoMessage = false; +static qbool m_serverInfoMessage = false; static double m_serverInfoMessageTime; void M_Menu_GameOptions_f(cmd_state_t *cmd) @@ -4111,13 +4114,13 @@ void M_GameOptions_Draw (void) // line cursor if (gameoptions_cursor == 9) - M_DrawCharacter (8 + 8 * strlen(hostname.string), gameoptions_cursor_table[gameoptions_cursor], 10+((int)(realtime*4)&1)); + M_DrawCharacter (8 + 8 * strlen(hostname.string), gameoptions_cursor_table[gameoptions_cursor], 10+((int)(host.realtime*4)&1)); else - M_DrawCharacter (144, gameoptions_cursor_table[gameoptions_cursor], 12+((int)(realtime*4)&1)); + M_DrawCharacter (144, gameoptions_cursor_table[gameoptions_cursor], 12+((int)(host.realtime*4)&1)); if (m_serverInfoMessage) { - if ((realtime - m_serverInfoMessageTime) < 5.0) + if ((host.realtime - m_serverInfoMessageTime) < 5.0) { x = (320-26*8)/2; M_DrawTextBox (x, 138, 24, 4); @@ -4145,7 +4148,7 @@ static void M_NetStart_Change (int dir) { maxplayers = MAX_SCOREBOARD; m_serverInfoMessage = true; - m_serverInfoMessageTime = realtime; + m_serverInfoMessageTime = host.realtime; } if (maxplayers < 2) maxplayers = 2; @@ -4428,12 +4431,12 @@ static void M_ServerList_Draw (void) for (n = start;n < end;n++) { serverlist_entry_t *entry = ServerList_GetViewEntry(n); - DrawQ_Fill(menu_x, menu_y + y, 640, 16, n == slist_cursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0); + DrawQ_Fill(menu_x, menu_y + y, 640, 16, n == slist_cursor ? (0.5 + 0.2 * sin(host.realtime * M_PI)) : 0, 0, 0, 0.5, 0); M_PrintColored(0, y, entry->line1);y += 8; M_PrintColored(0, y, entry->line2);y += 8; } } - else if (realtime - masterquerytime > 10) + else if (host.realtime - masterquerytime > 10) { if (masterquerycount) M_Print(0, y, "No servers found"); @@ -4503,7 +4506,7 @@ static int modlist_numenabled; //number of enabled (or in process to be..) mod typedef struct modlist_entry_s { - qboolean loaded; // used to determine whether this entry is loaded and running + qbool loaded; // used to determine whether this entry is loaded and running int enabled; // index to array of modlist_enabled // name of the modification, this is (will...be) displayed on the menu entry @@ -4663,7 +4666,7 @@ static void M_ModList_Draw (void) { for (n = start;n < end;n++) { - DrawQ_Pic(menu_x + 40, menu_y + y, NULL, 360, 8, n == modlist_cursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0); + DrawQ_Pic(menu_x + 40, menu_y + y, NULL, 360, 8, n == modlist_cursor ? (0.5 + 0.2 * sin(host.realtime * M_PI)) : 0, 0, 0, 0.5, 0); M_ItemPrint(80, y, modlist[n].dir, true); M_DrawCheckbox(48, y, modlist[n].loaded); y +=8; @@ -4725,7 +4728,7 @@ static void M_ModList_Key(cmd_state_t *cmd, int k, int ascii) //============================================================================= /* Menu Subsystem */ -static void M_KeyEvent(int key, int ascii, qboolean downevent); +static void M_KeyEvent(int key, int ascii, qbool downevent); static void M_Draw(void); void M_ToggleMenu(int mode); static void M_Shutdown(void); @@ -4735,25 +4738,25 @@ static void M_Init (void) menuplyr_load = true; menuplyr_pixels = NULL; - Cmd_AddCommand(&cmd_client, "menu_main", M_Menu_Main_f, "open the main menu"); - Cmd_AddCommand(&cmd_client, "menu_singleplayer", M_Menu_SinglePlayer_f, "open the singleplayer menu"); - Cmd_AddCommand(&cmd_client, "menu_load", M_Menu_Load_f, "open the loadgame menu"); - Cmd_AddCommand(&cmd_client, "menu_save", M_Menu_Save_f, "open the savegame menu"); - Cmd_AddCommand(&cmd_client, "menu_multiplayer", M_Menu_MultiPlayer_f, "open the multiplayer menu"); - Cmd_AddCommand(&cmd_client, "menu_setup", M_Menu_Setup_f, "open the player setup menu"); - Cmd_AddCommand(&cmd_client, "menu_options", M_Menu_Options_f, "open the options menu"); - Cmd_AddCommand(&cmd_client, "menu_options_effects", M_Menu_Options_Effects_f, "open the effects options menu"); - Cmd_AddCommand(&cmd_client, "menu_options_graphics", M_Menu_Options_Graphics_f, "open the graphics options menu"); - Cmd_AddCommand(&cmd_client, "menu_options_colorcontrol", M_Menu_Options_ColorControl_f, "open the color control menu"); - Cmd_AddCommand(&cmd_client, "menu_keys", M_Menu_Keys_f, "open the key binding menu"); - Cmd_AddCommand(&cmd_client, "menu_video", M_Menu_Video_f, "open the video options menu"); - Cmd_AddCommand(&cmd_client, "menu_reset", M_Menu_Reset_f, "open the reset to defaults menu"); - Cmd_AddCommand(&cmd_client, "menu_mods", M_Menu_ModList_f, "open the mods browser menu"); - Cmd_AddCommand(&cmd_client, "help", M_Menu_Help_f, "open the help menu"); - Cmd_AddCommand(&cmd_client, "menu_quit", M_Menu_Quit_f, "open the quit menu"); - Cmd_AddCommand(&cmd_client, "menu_transfusion_episode", M_Menu_Transfusion_Episode_f, "open the transfusion episode select menu"); - Cmd_AddCommand(&cmd_client, "menu_transfusion_skill", M_Menu_Transfusion_Skill_f, "open the transfusion skill select menu"); - Cmd_AddCommand(&cmd_client, "menu_credits", M_Menu_Credits_f, "open the credits menu"); + Cmd_AddCommand(CF_CLIENT, "menu_main", M_Menu_Main_f, "open the main menu"); + Cmd_AddCommand(CF_CLIENT, "menu_singleplayer", M_Menu_SinglePlayer_f, "open the singleplayer menu"); + Cmd_AddCommand(CF_CLIENT, "menu_load", M_Menu_Load_f, "open the loadgame menu"); + Cmd_AddCommand(CF_CLIENT, "menu_save", M_Menu_Save_f, "open the savegame menu"); + Cmd_AddCommand(CF_CLIENT, "menu_multiplayer", M_Menu_MultiPlayer_f, "open the multiplayer menu"); + Cmd_AddCommand(CF_CLIENT, "menu_setup", M_Menu_Setup_f, "open the player setup menu"); + Cmd_AddCommand(CF_CLIENT, "menu_options", M_Menu_Options_f, "open the options menu"); + Cmd_AddCommand(CF_CLIENT, "menu_options_effects", M_Menu_Options_Effects_f, "open the effects options menu"); + Cmd_AddCommand(CF_CLIENT, "menu_options_graphics", M_Menu_Options_Graphics_f, "open the graphics options menu"); + Cmd_AddCommand(CF_CLIENT, "menu_options_colorcontrol", M_Menu_Options_ColorControl_f, "open the color control menu"); + Cmd_AddCommand(CF_CLIENT, "menu_keys", M_Menu_Keys_f, "open the key binding menu"); + Cmd_AddCommand(CF_CLIENT, "menu_video", M_Menu_Video_f, "open the video options menu"); + Cmd_AddCommand(CF_CLIENT, "menu_reset", M_Menu_Reset_f, "open the reset to defaults menu"); + Cmd_AddCommand(CF_CLIENT, "menu_mods", M_Menu_ModList_f, "open the mods browser menu"); + Cmd_AddCommand(CF_CLIENT, "help", M_Menu_Help_f, "open the help menu"); + Cmd_AddCommand(CF_CLIENT, "menu_quit", M_Menu_Quit_f, "open the quit menu"); + Cmd_AddCommand(CF_CLIENT, "menu_transfusion_episode", M_Menu_Transfusion_Episode_f, "open the transfusion episode select menu"); + Cmd_AddCommand(CF_CLIENT, "menu_transfusion_skill", M_Menu_Transfusion_Skill_f, "open the transfusion skill select menu"); + Cmd_AddCommand(CF_CLIENT, "menu_credits", M_Menu_Credits_f, "open the credits menu"); } void M_Draw (void) @@ -4869,7 +4872,7 @@ void M_Draw (void) int g, scale_x, scale_y, scale_y_repeat, top_offset; float scale_y_rate; scale_y_repeat = vid_conheight.integer * 2; - g = (int)(realtime * 64)%96; + g = (int)(host.realtime * 64)%96; scale_y_rate = (float)(g+1) / 96; top_offset = (g+12)/12; p = Draw_CachePic (va(vabuf, sizeof(vabuf), "gfx/menu/blooddrip%i", top_offset)); @@ -4905,9 +4908,9 @@ void M_Draw (void) } -void M_KeyEvent (int key, int ascii, qboolean downevent) +void M_KeyEvent (int key, int ascii, qbool downevent) { - cmd_state_t *cmd = &cmd_client; + cmd_state_t *cmd = cmd_local; if (!downevent) return; switch (m_state) @@ -5196,19 +5199,23 @@ static prvm_required_field_t m_required_globals[] = static int m_numrequiredglobals = sizeof(m_required_globals) / sizeof(m_required_globals[0]); -void MR_SetRouting (qboolean forceold); +void MR_SetRouting (qbool forceold); void MVM_error_cmd(const char *format, ...) DP_FUNC_PRINTF(1); void MVM_error_cmd(const char *format, ...) { prvm_prog_t *prog = MVM_prog; - static qboolean processingError = false; + static qbool processingError = false; char errorstring[MAX_INPUTLINE]; va_list argptr; va_start (argptr, format); dpvsnprintf (errorstring, sizeof(errorstring), format, argptr); va_end (argptr); + + if (host.framecount < 3) + Sys_Error("Menu_Error: %s\n", errorstring); + Con_Printf( "Menu_Error: %s\n", errorstring ); if( !processingError ) { @@ -5230,8 +5237,9 @@ void MVM_error_cmd(const char *format, ...) MR_SetRouting (true); // reset the active scene, too (to be on the safe side ;)) - R_SelectScene( RST_CLIENT ); + R_SelectScene( RST_CLIENT ); + // Let video start at least Host_AbortCurrentFrame(); } @@ -5270,12 +5278,12 @@ static void MVM_count_edicts(prvm_prog_t *prog) Con_Printf("active :%3i\n", active); } -static qboolean MVM_load_edict(prvm_prog_t *prog, prvm_edict_t *ent) +static qbool MVM_load_edict(prvm_prog_t *prog, prvm_edict_t *ent) { return true; } -static void MP_KeyEvent (int key, int ascii, qboolean downevent) +static void MP_KeyEvent (int key, int ascii, qbool downevent) { prvm_prog_t *prog = MVM_prog; @@ -5304,7 +5312,7 @@ static void MP_Draw (void) oldquality = r_refdef.view.quality; r_refdef.view.quality = 1; // TODO: this needs to be exposed to R_SetView (or something similar) ASAP [2/5/2008 Andreas] - r_refdef.scene.time = realtime; + r_refdef.scene.time = host.realtime; // free memory for resources that are no longer referenced PRVM_GarbageCollection(prog); @@ -5370,7 +5378,7 @@ static void MP_Shutdown (void) static void MP_Init (void) { prvm_prog_t *prog = MVM_prog; - PRVM_Prog_Init(prog, &cmd_client); + PRVM_Prog_Init(prog, cmd_local); prog->edictprivate_size = 0; // no private struct used prog->name = "menu"; @@ -5406,20 +5414,20 @@ static void MP_Init (void) prog->ExecuteProgram(prog, PRVM_menufunction(m_init),"m_init() required"); // Once m_init was called, we consider menuqc code fully initialized. - prog->inittime = realtime; + prog->inittime = host.realtime; } //============================================================================ // Menu router -void (*MR_KeyEvent) (int key, int ascii, qboolean downevent); +void (*MR_KeyEvent) (int key, int ascii, qbool downevent); void (*MR_Draw) (void); void (*MR_ToggleMenu) (int mode); void (*MR_Shutdown) (void); void (*MR_NewMap) (void); int (*MR_GetServerListEntryCategory) (const serverlist_entry_t *entry); -void MR_SetRouting(qboolean forceold) +void MR_SetRouting(qbool forceold) { // if the menu prog isnt available or forceqmenu ist set, use the old menu if(!FS_FileExists(menu_progs.string) || forceqmenu.integer || forceold) @@ -5462,7 +5470,7 @@ static void Call_MR_ToggleMenu_f(cmd_state_t *cmd) { int m; m = ((Cmd_Argc(cmd) < 2) ? -1 : atoi(Cmd_Argv(cmd, 1))); - Host_StartVideo(); + CL_StartVideo(); if(MR_ToggleMenu) MR_ToggleMenu(m); } @@ -5473,8 +5481,8 @@ void MR_Init_Commands(void) Cvar_RegisterVariable (&forceqmenu); Cvar_RegisterVariable (&menu_options_colorcontrol_correctionvalue); Cvar_RegisterVariable (&menu_progs); - Cmd_AddCommand(&cmd_client, "menu_restart", MR_Restart_f, "restart menu system (reloads menu.dat)"); - Cmd_AddCommand(&cmd_client, "togglemenu", Call_MR_ToggleMenu_f, "opens or closes menu"); + Cmd_AddCommand(CF_CLIENT, "menu_restart", MR_Restart_f, "restart menu system (reloads menu.dat)"); + Cmd_AddCommand(CF_CLIENT, "togglemenu", Call_MR_ToggleMenu_f, "opens or closes menu"); } void MR_Init(void) @@ -5604,12 +5612,12 @@ void MR_Init(void) // use -forceqmenu to use always the normal quake menu (it sets forceqmenu to 1) // COMMANDLINEOPTION: Client: -forceqmenu disables menu.dat (same as +forceqmenu 1) - if(COM_CheckParm("-forceqmenu")) + if(Sys_CheckParm("-forceqmenu")) Cvar_SetValueQuick(&forceqmenu,1); // use -useqmenu for debugging proposes, cause it starts // the normal quake menu only the first time // COMMANDLINEOPTION: Client: -useqmenu causes the first time you open the menu to use the quake menu, then reverts to menu.dat (if forceqmenu is 0) - if(COM_CheckParm("-useqmenu")) + if(Sys_CheckParm("-useqmenu")) MR_SetRouting (true); else MR_SetRouting (false);