X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmapinfo.qc;h=15898926964a94754b4289375bdca9d1f8c0096c;hp=3e6478b2db50ca25a54716a137d75ca7ba01e4e6;hb=12d5054e3c9c3f7f5eac7d362ff132da9d917e99;hpb=55f166a94432b80e71f6f76702a1b15fde60c474 diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 3e6478b2d..158989269 100644 --- a/qcsrc/common/mapinfo.qc +++ b/qcsrc/common/mapinfo.qc @@ -9,10 +9,10 @@ #include #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; @@ -843,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"); @@ -1147,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; } @@ -1265,14 +1258,25 @@ 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); + LOG_INFO("_t: ", ftos(_t), ", types: ", ftos(MapInfo_Map_supportedGametypes)); } +#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);