From: Mario Date: Mon, 30 Sep 2019 14:05:39 +0000 (+0000) Subject: Merge branch 'Mario/weaponorder' into 'master' X-Git-Tag: xonotic-v0.8.5~1253 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=55f166a94432b80e71f6f76702a1b15fde60c474;hp=b31580d64eee1c3ee3fd2abf53495aca22d8a754 Merge branch 'Mario/weaponorder' into 'master' Merge branch Mario/weaponorder (XS merge request) Closes #1929 See merge request xonotic/xonotic-data.pk3dir!615 --- diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 617bfe85e..3e6478b2d 100644 --- a/qcsrc/common/mapinfo.qc +++ b/qcsrc/common/mapinfo.qc @@ -717,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 diff --git a/qcsrc/common/mapinfo.qh b/qcsrc/common/mapinfo.qh index 136fb125a..b669ba1f7 100644 --- a/qcsrc/common/mapinfo.qh +++ b/qcsrc/common/mapinfo.qh @@ -672,6 +672,8 @@ void MapInfo_Cache_Destroy(); // disable caching void MapInfo_Cache_Create(); // enable caching void MapInfo_Cache_Invalidate(); // delete cache if any, but keep enabled +void _MapInfo_Parse_Settemp(string pFilename, string acl, float type, string s, float recurse); + void MapInfo_ClearTemps(); // call this when done with mapinfo for this frame void MapInfo_Shutdown(); // call this in the shutdown handler diff --git a/qcsrc/lib/warpzone/mathlib.qc b/qcsrc/lib/warpzone/mathlib.qc index 9105269ff..cf86d97f9 100644 --- a/qcsrc/lib/warpzone/mathlib.qc +++ b/qcsrc/lib/warpzone/mathlib.qc @@ -27,10 +27,13 @@ bool isnan(float e) // the sane way to detect NaN is broken because of a compiler bug // (works with constants but breaks when assigned to variables) // use conversion to string instead - //float f = e; //return (e != f); - return ftos(e) == "-nan"; + + // Negative NaN ("-nan") is much more common but plain "nan" can be created by negating *some* -nans so we need to check both. + // DP's QCVM and GMQCC's QCVM behave differently - one needs ftos(-(0.0 / 0.0)), the other ftos(-sqrt(-1)). + string s = ftos(e); + return s == "nan" || s == "-nan"; } bool isnormal(float e) { diff --git a/qcsrc/server/campaign.qc b/qcsrc/server/campaign.qc index ddc7e47fa..76e2cdeb8 100644 --- a/qcsrc/server/campaign.qc +++ b/qcsrc/server/campaign.qc @@ -21,9 +21,11 @@ string campaign_index_var; float CampaignBailout(string s) { +#if 0 cvar = cvar_normal; cvar_string = cvar_string_normal; cvar_set = cvar_set_normal; +#endif cvar_set("g_campaign", "0"); LOG_INFO("^4campaign initialization failed: ", s); if(autocvar__campaign_testrun) @@ -31,6 +33,7 @@ float CampaignBailout(string s) return 1; } +#if 0 string cvar_campaignwrapper_list; // string of format ; var value; var value; var value; string cvar_string_campaignwrapper(string theCvar) { @@ -57,6 +60,7 @@ void cvar_set_campaignwrapper(string theCvar, string theValue) strunzone(s); //print(cvar_campaignwrapper_list, "\n"); } +#endif float Campaign_Invalid() { @@ -104,16 +108,36 @@ void CampaignPreInit() cvar_set("sv_public", "0"); cvar_set("pausable", "1"); +#if 0 cvar_campaignwrapper_list = strzone(strcat("; ", campaign_mutators[0], "; ")); +#else + string cvar_campaignwrapper_list = strcat("; ", campaign_mutators[0], "; "); + int argc = tokenizebyseparator(cvar_campaignwrapper_list, "; "); + if(argc > 0) + { + for(int j = 0; j < argc; ++j) + { + string arg = argv(j); + if(arg == "") continue; + _MapInfo_Parse_Settemp(mapname, MAPINFO_SETTEMP_ACL_USER, 0, arg, 0); // no recursion! + } + } +#endif +#if 0 cvar = cvar_campaignwrapper; cvar_string = cvar_string_campaignwrapper; cvar_set = cvar_set_campaignwrapper; - cvar_set("g_campaign", "1"); cvar_set("g_dm", "0"); cvar_set("skill", ftos(baseskill)); cvar_set("bot_number", ftos(campaign_bots[0])); +#else + cvar_settemp("g_campaign", "1"); + cvar_settemp("g_dm", "0"); + cvar_settemp("skill", ftos(baseskill)); + cvar_settemp("bot_number", ftos(campaign_bots[0])); +#endif MapInfo_SwitchGameType(MapInfo_Type_FromString(campaign_gametype[0])); // copy sv_gravity cvar, as the engine needs it too (sorry, this will mess diff --git a/qcsrc/tools/compilationunits.sh b/qcsrc/tools/compilationunits.sh index 68f2eb9d5..7a7ff17b6 100755 --- a/qcsrc/tools/compilationunits.sh +++ b/qcsrc/tools/compilationunits.sh @@ -38,7 +38,11 @@ QCCDEFS="${QCCDEFS[@]}" declare -a QCCFLAGS=( -std=gmqcc - -O3 # optimization to accept variable initialization inside `if (1)` blocks and avoid warnings + # Without -O3, GMQCC thinks some variables are used uninitialized if the initialization is done inside an `if (1)` block + # (which is created by e.g. BEGIN_MACRO) which would cause the compilation units test to fail. + # There doesn't appear to be any measurable increase in compile time + # and it allows us to get rid of some explicit initializations which are just useless noise. + -O3 -Wall -Werror -futf8 -freturn-assignments