]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/mapinfo.qc
Remove a leftover debug print from the disabled gametype fallback code
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mapinfo.qc
index 617bfe85e2cde2c78d3b0f1c8fd1e617732c34df..f6137ed4a12765ab970ac055361e659d7c94b88b 100644 (file)
@@ -9,10 +9,10 @@
     #include <common/monsters/_mod.qh>
 #endif
 
-bool autocvar_g_mapinfo_ignore_warnings;
 #ifdef MENUQC
-#define WARN_COND (!autocvar_g_mapinfo_ignore_warnings)
+#define WARN_COND false
 #else
+bool autocvar_g_mapinfo_ignore_warnings;
 #define WARN_COND (!autocvar_g_mapinfo_ignore_warnings && MapInfo_Map_bspname == mi_shortname)
 #endif
 
@@ -671,11 +671,8 @@ void _MapInfo_Parse_Settemp(string pFilename, string acl, float type, string s,
                        }
                        else
                        {
-                               for (;;)
+                               while((s = fgets(fh)))
                                {
-                                       if (!((s = fgets(fh))))
-                                               break;
-
                                        // catch different sorts of comments
                                        if(s == "")                    // empty lines
                                                continue;
@@ -717,9 +714,11 @@ void _MapInfo_Parse_Settemp(string pFilename, string acl, float type, string s,
                if(type == 0) // server set
                {
                        LOG_TRACE("Applying temporary setting ", t, " := ", s);
+               #if 0
                        if(cvar("g_campaign"))
                                cvar_set(t, s); // this is a wrapper and is always temporary anyway; no need to backup old values then
                        else
+               #endif
                                cvar_settemp(t, s);
                }
                else
@@ -841,12 +840,6 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet
                                fputs(fh, sprintf("gametype %s // defaults: %s\n", MapInfo_Type_ToString(it), _MapInfo_GetDefaultEx(it)));
                        });
 
-                       if(fexists(strcat("scripts/", pFilename, ".arena")))
-                               fputs(fh, "settemp_for_type all sv_q3acompat_machineshotgunswap 1\n");
-
-                       if(fexists(strcat("scripts/", pFilename, ".defi")))
-                               fputs(fh, "settemp_for_type all sv_vq3compat 1\n");
-
                        fputs(fh, "// optional: fog density red green blue alpha mindist maxdist\n");
                        fputs(fh, "// optional: settemp_for_type (all|gametypename) cvarname value\n");
                        fputs(fh, "// optional: clientsettemp_for_type (all|gametypename) cvarname value\n");
@@ -1145,14 +1138,16 @@ string MapInfo_FixName(string s)
 int MapInfo_CurrentFeatures()
 {
        int req = 0;
-       if(!(cvar("g_lms") || cvar("g_instagib") || cvar("g_overkill") || cvar("g_nix") || cvar("g_weaponarena") || !cvar("g_pickup_items") || cvar("g_race") || cvar("g_cts") || cvar("g_nexball")))
+    // TODO: find a better way to check if weapons are required on the map
+       if(!(cvar("g_instagib") || cvar("g_overkill") || cvar("g_nix") || cvar("g_weaponarena") || !cvar("g_pickup_items") 
+               || cvar("g_race") || cvar("g_cts") || cvar("g_nexball") || cvar("g_ca") || cvar("g_freezetag") || cvar("g_lms")))
                req |= MAPINFO_FEATURE_WEAPONS;
        return req;
 }
 
 Gametype MapInfo_CurrentGametype()
 {
-       Gametype prev = Gametypes_from(cvar("gamecfg"));
+       Gametype prev = REGISTRY_GET(Gametypes, cvar("gamecfg"));
        FOREACH(Gametypes, cvar(it.netname) && it != prev, return it);
        return prev ? prev : MAPINFO_TYPE_DEATHMATCH;
 }
@@ -1263,14 +1258,24 @@ void MapInfo_LoadMapSettings(string s) // to be called from worldspawn
                        return; // do not call Get_ByName!
                }
 
+#if 0
+               // find the lowest bit in the supported gametypes
+               // unnecessary now that we select one at random
                int _t = 1;
                while(!(MapInfo_Map_supportedGametypes & 1))
                {
                        _t <<= 1;
                        MapInfo_Map_supportedGametypes = floor(MapInfo_Map_supportedGametypes >> 1);
                }
+#endif
+               RandomSelection_Init();
                Gametype t_prev = t;
-               FOREACH(Gametypes, it.m_flags == _t, { t = it; break; });
+               FOREACH(Gametypes, MapInfo_Map_supportedGametypes & it.m_flags,
+               {
+                       RandomSelection_AddEnt(it, 1, it.m_priority);
+               });
+               if(RandomSelection_chosen_ent)
+                       t = RandomSelection_chosen_ent;
 
                // t is now a supported mode!
                LOG_WARNF("can't play the selected map in the given game mode (%s). Falling back to a supported mode (%s).", t_prev.mdl, t.mdl);