X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmapinfo.qc;h=64ab8dacaafa1c5f1748765566f7d00ef56bc90c;hp=8c381fb6067bd9cd29c9b362f7dd287ecaafeb99;hb=93afc08b09294e6dea4d0c98ce5226fdee9d1c92;hpb=6edeeb916f7c823714f1d9ea64e2a7705de7ef00 diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 8c381fb60..64ab8daca 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 @@ -589,25 +589,25 @@ void _MapInfo_Map_ApplyGametypeEx(string s, Gametype pWantedType, Gametype pThis } } -Gametype MapInfo_Type_FromString(string t) +Gametype MapInfo_Type_FromString(string gtype) { -#define deprecate(from, to) MACRO_BEGIN { \ - if (t == #from) { \ - string replacement = #to; \ - if(WARN_COND) \ - LOG_WARNF("MapInfo_Type_FromString (probably %s): using deprecated name '%s'. Should use '%s'.", MapInfo_Map_bspname, t, replacement); \ - t = replacement; \ - } \ -} MACRO_END - deprecate(nexball, nb); - deprecate(freezetag, ft); - deprecate(keepaway, ka); - deprecate(invasion, inv); - deprecate(assault, as); - deprecate(race, rc); - FOREACH(Gametypes, it.mdl == t, return it); + string replacement = ""; + switch (gtype) + { + case "nexball": replacement = "nb"; break; + case "freezetag": replacement = "ft"; break; + case "keepaway": replacement = "ka"; break; + case "invasion": replacement = "inv"; break; + case "assault": replacement = "as"; break; + case "race": replacement = "rc"; break; + } + if (replacement != "" && WARN_COND) + { + LOG_WARNF("MapInfo_Type_FromString (probably %s): using deprecated name '%s'. Should use '%s'.", MapInfo_Map_bspname, gtype, replacement); + gtype = replacement; + } + FOREACH(Gametypes, it.mdl == gtype, return it); return NULL; -#undef deprecate } string MapInfo_Type_Description(Gametype t) @@ -665,8 +665,10 @@ void _MapInfo_Parse_Settemp(string pFilename, string acl, float type, string s, { fh = fopen(s, FILE_READ); if(fh < 0) + { if(WARN_COND) LOG_WARN("Map ", pFilename, " references not existing config file ", s); + } else { for (;;) @@ -715,9 +717,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 @@ -839,12 +843,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"); @@ -951,19 +949,25 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet t = car(s); s = cdr(s); d = stof(t); t = car(s); s = cdr(s); e = stof(t); if(s == "") + { if(WARN_COND) LOG_WARN("Map ", pFilename, " contains an incorrect size line (not enough params), syntax: size mins_x mins_y mins_z maxs_x maxs_y maxs_z"); + } else { t = car(s); s = cdr(s); f = stof(t); if(s != "") + { if(WARN_COND) LOG_WARN("Map ", pFilename, " contains an incorrect size line (too many params), syntax: size mins_x mins_y mins_z maxs_x maxs_y maxs_z"); + } else { if(a >= d || b >= e || c >= f) + { if(WARN_COND) LOG_WARN("Map ", pFilename, " contains an incorrect size line, mins have to be < maxs"); + } else { MapInfo_Map_mins.x = a; @@ -1013,8 +1017,10 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet else if(t == "fog") { if (!cvar_value_issafe(s)) + { if(WARN_COND) LOG_WARN("Map ", pFilename, " contains a potentially harmful fog setting, ignored"); + } else MapInfo_Map_fog = s; } @@ -1030,8 +1036,10 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet if(pGametypeToSet) { if (!cvar_value_issafe(t)) + { if(WARN_COND) LOG_WARN("Map ", pFilename, " contains a potentially harmful cdtrack, ignored"); + } else MapInfo_Map_clientstuff = strcat( MapInfo_Map_clientstuff, "cd loop \"", t, "\"\n" @@ -1133,7 +1141,8 @@ 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_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") || cvar("g_ca"))) req |= MAPINFO_FEATURE_WEAPONS; return req; }