fix funny menu bug (why did it never happen for me)?
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 26 Jan 2010 06:23:53 +0000 (06:23 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 26 Jan 2010 06:23:53 +0000 (06:23 +0000)
BTW, who would ever call a _f function from other stuff than console commands... that's sick.

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@9860 d7cf8633-e32d-0410-b094-e92efae38249

cl_screen.c
keys.c
menu.c
menu.h

index 82392b8..9553a87 100644 (file)
@@ -621,7 +621,7 @@ void SCR_SetUpToDrawConsole (void)
        if (scr_menuforcewhiledisconnected.integer && key_dest == key_game && cls.state == ca_disconnected)
        {
                if (framecounter >= 2)
-                       MR_ToggleMenu_f();
+                       MR_ToggleMenu(1);
                else
                        framecounter++;
        }
diff --git a/keys.c b/keys.c
index c734259..eb57276 100644 (file)
--- a/keys.c
+++ b/keys.c
@@ -1492,7 +1492,7 @@ Key_Event (int key, int ascii, qboolean down)
                                        if(key_consoleactive & KEY_CONSOLEACTIVE_FORCED)
                                        {
                                                key_consoleactive &= ~KEY_CONSOLEACTIVE_USER;
-                                               MR_ToggleMenu_f ();
+                                               MR_ToggleMenu(1);
                                        }
                                        else
                                                Con_ToggleConsole_f();
@@ -1513,7 +1513,7 @@ Key_Event (int key, int ascii, qboolean down)
                                // csqc has priority over toggle menu if it wants to (e.g. handling escape for UI stuff in-game.. :sick:)
                                q = CL_VM_InputEvent(down, key, ascii);
                                if (!q && down)
-                                       MR_ToggleMenu_f ();
+                                       MR_ToggleMenu(1);
                                break;
 
                        default:
diff --git a/menu.c b/menu.c
index 5634d21..8067e63 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -270,22 +270,22 @@ static void M_DrawTextBox(float x, float y, float width, float height)
 
 /*
 ================
-M_ToggleMenu_f
+M_ToggleMenu
 ================
 */
-void M_ToggleMenu_f (void)
+void M_ToggleMenu(int mode)
 {
        m_entersound = true;
 
        if ((key_dest != key_menu && key_dest != key_menu_grabbed) || m_state != m_main)
        {
-               if(Cmd_Argc() == 2 && !strcmp(Cmd_Argv(1), "1"))
+               if(mode == 1)
                        return;
                M_Menu_Main_f ();
        }
        else
        {
-               if(Cmd_Argc() == 2 && !strcmp(Cmd_Argv(1), "0"))
+               if(mode == 0)
                        return;
                key_dest = key_game;
                m_state = m_none;
@@ -4694,7 +4694,7 @@ static void M_ModList_Key(int k, int ascii)
 
 static void M_KeyEvent(int key, int ascii, qboolean downevent);
 static void M_Draw(void);
-void M_ToggleMenu_f(void);
+void M_ToggleMenu(int mode);
 static void M_Shutdown(void);
 
 void M_Init (void)
@@ -5142,11 +5142,12 @@ void MP_Draw (void)
        R_SelectScene( RST_CLIENT );
 }
 
-void MP_ToggleMenu_f (void)
+void MP_ToggleMenu(int mode)
 {
        PRVM_Begin;
        PRVM_SetProg(PRVM_MENUPROG);
 
+       prog->globals.generic[OFS_PARM0] = (float) mode;
        PRVM_ExecuteProgram(prog->funcoffsets.m_toggle,"m_toggle() required");
 
        PRVM_End;
@@ -5212,7 +5213,7 @@ void MP_Restart(void)
 
 void (*MR_KeyEvent) (int key, int ascii, qboolean downevent);
 void (*MR_Draw) (void);
-void (*MR_ToggleMenu_f) (void);
+void (*MR_ToggleMenu) (int mode);
 void (*MR_Shutdown) (void);
 
 void MR_SetRouting(qboolean forceold)
@@ -5225,7 +5226,7 @@ void MR_SetRouting(qboolean forceold)
                // set menu router function pointers
                MR_KeyEvent = M_KeyEvent;
                MR_Draw = M_Draw;
-               MR_ToggleMenu_f = M_ToggleMenu_f;
+               MR_ToggleMenu = M_ToggleMenu;
                MR_Shutdown = M_Shutdown;
 
                // init
@@ -5242,7 +5243,7 @@ void MR_SetRouting(qboolean forceold)
                // set menu router function pointers
                MR_KeyEvent = MP_KeyEvent;
                MR_Draw = MP_Draw;
-               MR_ToggleMenu_f = MP_ToggleMenu_f;
+               MR_ToggleMenu = MP_ToggleMenu;
                MR_Shutdown = MP_Shutdown;
 
                if(!mp_init)
@@ -5263,9 +5264,11 @@ void MR_Restart(void)
 
 void Call_MR_ToggleMenu_f(void)
 {
+       int m;
+       m = ((Cmd_Argc() < 2) ? -1 : atoi(Cmd_Argv(1)));
        Host_StartVideo();
-       if(MR_ToggleMenu_f)
-               MR_ToggleMenu_f();
+       if(MR_ToggleMenu)
+               MR_ToggleMenu(m);
 }
 
 void MR_Init_Commands(void)
diff --git a/menu.h b/menu.h
index c1950fc..cef87e2 100644 (file)
--- a/menu.h
+++ b/menu.h
@@ -61,7 +61,7 @@ void M_Update_Return_Reason(char *s);
 void M_Init (void);
 void M_KeyEvent (int key);
 void M_Draw (void);
-void M_ToggleMenu_f (void);
+void M_ToggleMenu (int mode);
 
 //
 // menu prog menu
@@ -69,7 +69,7 @@ void M_ToggleMenu_f (void);
 void MP_Init (void);
 void MP_KeyEvent (int key);
 void MP_Draw (void);
-void MP_ToggleMenu_f (void);
+void MP_ToggleMenu (int mode);
 void MP_Shutdown (void);*/
 
 //
@@ -81,7 +81,7 @@ void MR_Init (void);
 void MR_Restart (void);
 extern void (*MR_KeyEvent) (int key, int ascii, qboolean downevent);
 extern void (*MR_Draw) (void);
-extern void (*MR_ToggleMenu_f) (void);
+extern void (*MR_ToggleMenu) (int mode);
 extern void (*MR_Shutdown) (void);
 
 typedef struct video_resolution_s