]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/menu.qc
Merge remote-tracking branch 'origin/master' into terencehill/hud_code_restructure
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / menu.qc
index 42b40568b8f4bbfbc8eaad7462f60cb4ecf2913a..2dc73a8d22675d78d36d789408b907d6b40f2d75 100644 (file)
@@ -16,8 +16,6 @@ float menuInitialized;
 float menuNotTheFirstFrame;
 float menuMouseMode;
 
-void SUB_Null() { }
-
 void m_sync()
 {
        updateCompression();
@@ -26,8 +24,20 @@ void m_sync()
        loadAllCvars(main);
 }
 
+void m_gamestatus()
+{
+       gamestatus = 0;
+       if(isserver())
+               gamestatus = gamestatus | GAME_ISSERVER;
+       if(clientstate() == CS_CONNECTED || isdemo())
+               gamestatus = gamestatus | GAME_CONNECTED;
+       if(cvar("developer"))
+               gamestatus = gamestatus | GAME_DEVELOPER;
+}
+
 void m_init()
 {
+       float restarting = 0;
        cvar_set("_menu_alpha", "0");
        prvm_language = cvar_string("prvm_language");
        if(prvm_language == "")
@@ -35,6 +45,7 @@ void m_init()
                prvm_language = "en";
                cvar_set("prvm_language", prvm_language);
                localcmd("\nmenu_restart\n");
+               restarting = 1;
        }
        prvm_language = strzone(prvm_language);
        cvar_set("_menu_prvm_language", prvm_language);
@@ -42,7 +53,7 @@ void m_init()
        check_unacceptable_compiler_bugs();
 
 #ifdef WATERMARK
-       print(sprintf(_("^4MQC Build information: ^1%s\n"), WATERMARK()));
+       print(sprintf(_("^4MQC Build information: ^1%s\n"), WATERMARK));
 #endif
 
        // list all game dirs (TEST)
@@ -60,8 +71,8 @@ void m_init()
        }
 
        // needs to be done so early because of the constants they create
-       RegisterWeapons();
-       RegisterGametypes();
+       CALL_ACCUMULATED_FUNCTION(RegisterWeapons);
+       CALL_ACCUMULATED_FUNCTION(RegisterGametypes);
 
        float ddsload = cvar("r_texture_dds_load");
        float texcomp = cvar("gl_texturecompression");
@@ -70,7 +81,14 @@ void m_init()
                localcmd("\nr_restart\n");
        initConwidths();
 
-       m_display();
+       if(!restarting)
+       {
+               if(cvar("_menu_initialized")) // always show menu after menu_restart
+                       m_display();
+               else
+                       m_hide();
+               cvar_set("_menu_initialized", "1");
+       }
 }
 
 float MENU_ASPECT = 1.25; // 1280x1024
@@ -286,6 +304,9 @@ void draw_Picture_Aligned(vector algn, float scalemode, string img, float a)
        isz_w = '1 0 0' + '0 1 0' * ((sz_y / sz_x) * (draw_scale_x / draw_scale_y));
        isz_h = '0 1 0' + '1 0 0' * ((sz_x / sz_y) * (draw_scale_y / draw_scale_x));
 
+#ifdef GMQCC
+       isz = '0 0 0';
+#endif
        switch(scalemode)
        {
                default:
@@ -324,6 +345,7 @@ void drawBackground(string img, float a, string algn, float force1)
 
        scalemode = SCALEMODE_CROP;
 
+       l = 0;
        for(i = 0; i < strlen(algn); ++i)
        {
                c = substring(algn, i, 1);
@@ -641,6 +663,8 @@ void m_draw()
        float t;
        float realFrametime;
 
+       m_gamestatus();
+
        execute_next_frame();
 
        menuMouseMode = cvar("menu_mouse_absolute");
@@ -663,7 +687,7 @@ void m_draw()
                if(Menu_Active)
                if(!cvar("menu_video_played"))
                {
-                       localcmd("cd loop $menu_cdtrack; play sound/announcer/default/welcome.ogg\n");
+                       localcmd("cd loop $menu_cdtrack; play sound/announcer/default/welcome.wav\n");
                        menuLogoAlpha = -0.8; // no idea why, but when I start this at zero, it jumps instead of fading FIXME
                }
                // ALWAYS set this cvar; if we start but menu is not active, this means we want no background music!
@@ -695,14 +719,6 @@ void m_draw()
        if(cvar("cl_capturevideo"))
                frametime = t / cvar("cl_capturevideo_fps"); // make capturevideo work smoothly
 
-       gamestatus = 0;
-       if(isserver())
-               gamestatus = gamestatus | GAME_ISSERVER;
-       if(clientstate() == CS_CONNECTED)
-               gamestatus = gamestatus | GAME_CONNECTED;
-       if(cvar("developer"))
-               gamestatus = gamestatus | GAME_DEVELOPER;
-
        prevMenuAlpha = menuAlpha;
        if(Menu_Active)
        {