X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Futil.qc;h=7f038a85fb53efe0f28d7e02a0efbd4855bce3b1;hb=53911d2ce2724f2da23fb6806e491ce795ae4326;hp=619e1d1a5a5e40da48989789c482bf9276286dad;hpb=927079b7c66ff83ae1f91916f3451ca5bf2350d5;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/util.qc b/qcsrc/menu/xonotic/util.qc index 619e1d1a5..7f038a85f 100644 --- a/qcsrc/menu/xonotic/util.qc +++ b/qcsrc/menu/xonotic/util.qc @@ -1,15 +1,17 @@ #include "util.qh" + +#include "../item.qh" + #include "../menu.qh" -#include "../oo/base.qh" -#include "../../common/campaign_common.qh" -#include "../../common/constants.qh" -#include "../../common/mapinfo.qh" -#include "../../common/util.qh" -#include "../../common/command/generic.qh" +#include +#include +#include +#include +#include float GL_CheckExtension(string ext) { - return (strstrofs(strcat(" ", cvar_string("gl_info_extensions"), " "), strcat(" ", ext, " "), 0) >= 0); + return strhasword(cvar_string("gl_info_extensions"), ext); } float GL_Have_TextureCompression() @@ -17,39 +19,6 @@ float GL_Have_TextureCompression() return (GL_CheckExtension("GL_EXT_texture_compression_s3tc") && GL_CheckExtension("GL_ARB_texture_compression")); } -void loadTooltips() -{ - tooltipdb = db_load(language_filename("tooltips.db")); -} -void unloadTooltips() -{ - if(tooltipdb >= 0) - db_close(tooltipdb); - tooltipdb = -1; -} -string getZonedTooltipForIdentifier(string s) -{ - string t; - if(s == "") - return string_null; - if(tooltipdb >= 0) - { - t = db_get(tooltipdb, s); - if(t == "-") - return string_null; - if(t != "") - return strzone(t); - } - if(prvm_language == "en") - { - t = cvar_description(s); - if(t != "" && t != "custom cvar") - return strzone(t); - } - LOG_TRACE("WARNING: no tooltip set for ", s, "\n"); - return string_null; -} - .entity parent, firstChild, nextSibling; void forAllDescendants(entity root, void(entity, entity) funcPre, void(entity, entity) funcPost, entity pass) { @@ -94,7 +63,7 @@ string getCvarsMulti(entity me) void saveCvarsMulti(entity me) { float n, i; - string s; + string s, cvarname; me.saveCvars_Multi(me); s = cvar_string(me.cvarName); @@ -102,12 +71,19 @@ void saveCvarsMulti(entity me) n = tokenize_console(me.cvarNames_Multi); for(i = 0; i < n; ++i) { + // cvars prefixed with ! get saved with the inverted value if(substring(argv(i), 0, 1) == "!") - cvar_set(substring(argv(i), 1, strlen(argv(i))), ((s == "0") ? "1" : "0")); + { + cvarname = substring(argv(i), 1, strlen(argv(i))); + cvar_set(cvarname, ((s == "0") ? "1" : "0")); + } else - cvar_set(argv(i), s); + { + cvarname = argv(i); + cvar_set(cvarname, s); + } - CheckSendCvars(me, argv(i)); + CheckSendCvars(me, cvarname); } } void makeMulti(entity e, string otherCvars) @@ -274,6 +250,32 @@ void setDependentWeird(entity e, float(entity) func) setDependent_Check(e); } +void setZonedTooltip(entity e, string theTooltip, string theCvar) +{ + if(theTooltip == "") // no tooltip, use cvar description then + { + if(theCvar != "" && prvm_language == "en") + { + string t = cvar_description(theCvar); + if(t != "" && t != "custom cvar") + theTooltip = t; + } + } + else if(theTooltip == "-") // no cvar description as tooltip + { + theTooltip = string_null; + } + + if(e.tooltip) + strunzone(e.tooltip); + e.tooltip = (theTooltip != "") ? strzone(theTooltip) : string_null; +} + +void clearTooltip(entity e) +{ + setZonedTooltip(e, string_null, string_null); +} + // URI SYSTEM //////////////////////////////////////////////////////// float _Nex_ExtResponseSystem_Queried; @@ -282,6 +284,7 @@ string _Nex_ExtResponseSystem_UpdateToURL; string _Nex_ExtResponseSystem_Packs; float _Nex_ExtResponseSystem_PacksStep; +/** engine callback */ void URI_Get_Callback(float id, float status, string data) { if(url_URI_Get_Callback(id, status, data)) @@ -318,22 +321,22 @@ void UpdateNotification_URI_Get_Callback(float id, float status, string data) if(_Nex_ExtResponseSystem_UpdateTo) { - LOG_TRACE("error: UpdateNotification_URI_Get_Callback has been called before\n"); + LOG_TRACE("error: UpdateNotification_URI_Get_Callback has been called before"); return; } if(status != 0) { - LOG_TRACEF("error receiving update notification: status is %d\n", status); + LOG_TRACEF("error receiving update notification: status is %d", status); return; } if(substring(data, 0, 1) == "<") { - LOG_TRACE("error: received HTML instead of an update notification\n"); + LOG_TRACE("error: received HTML instead of an update notification"); return; } if(strstrofs(data, "\r", 0) != -1) { - LOG_TRACE("error: received carriage returns from update notification server\n"); + LOG_TRACE("error: received carriage returns from update notification server"); return; } @@ -426,6 +429,12 @@ void UpdateNotification_URI_Get_Callback(float id, float status, string data) } } + if(un_bannedservers != "") + { + _Nex_ExtResponseSystem_BannedServers = strzone(un_bannedservers); + _Nex_ExtResponseSystem_BannedServersNeedsRefresh = 1; + } + if(un_emergency_pk3s != "") { _Nex_ExtResponseSystem_Packs = strzone(un_emergency_pk3s); @@ -497,16 +506,21 @@ void updateCheck() } +bool show_propermenu = false; + float preMenuInit() { vector sz; vector boxA, boxB; + if(random() < 0.1) + show_propermenu = true; + updateCheck(); MapInfo_Cache_Create(); MapInfo_Enumerate(); - if(!MapInfo_FilterGametype(MAPINFO_TYPE_ALL, 0, 0, 0, 1)) + if(!_MapInfo_FilterGametype(MAPINFO_TYPE_ALL, 0, 0, 0, 1)) { draw_reset_cropped(); @@ -557,7 +571,10 @@ void preMenuDraw() fs = ((1/draw_scale.x) * eX + (1/draw_scale.y) * eY) * 12; line = eY * fs.y; string l1, l2; - l1 = sprintf(_("Update to %s now!"), _Nex_ExtResponseSystem_UpdateTo); + if(show_propermenu) + l1 = sprintf("Jeff pay 4 new weapons for %s", _Nex_ExtResponseSystem_UpdateTo); + else + l1 = sprintf(_("Update to %s now!"), _Nex_ExtResponseSystem_UpdateTo); l2 = "http://www.xonotic.org/"; if(_Nex_ExtResponseSystem_UpdateToURL) l2 = _Nex_ExtResponseSystem_UpdateToURL; @@ -676,53 +693,57 @@ float updateCompression() GAMETYPE(MAPINFO_TYPE_NEXBALL) \ GAMETYPE(MAPINFO_TYPE_ONSLAUGHT) \ GAMETYPE(MAPINFO_TYPE_ASSAULT) \ - if (cvar("developer")) GAMETYPE(MAPINFO_TYPE_RACE) \ - GAMETYPE(MAPINFO_TYPE_CTS) \ /* GAMETYPE(MAPINFO_TYPE_INVASION) */ \ /**/ -int GameType_GetID(int cnt) +// hidden gametypes come last so indexing always works correctly +#define HIDDEN_GAMETYPES \ + GAMETYPE(MAPINFO_TYPE_RACE) \ + GAMETYPE(MAPINFO_TYPE_CTS) \ + /**/ + +Gametype GameType_GetID(int cnt) { int i = 0; - - #define GAMETYPE(id) { if (i++ == cnt) return id; } + #define GAMETYPE(it) { if (i++ == cnt) return it; } GAMETYPES + HIDDEN_GAMETYPES #undef GAMETYPE - - unused_float = i; - - return 0; + return NULL; } int GameType_GetCount() { int i = 0; - #define GAMETYPE(id) ++i; GAMETYPES #undef GAMETYPE + #define GAMETYPE(it) if (cvar("developer")) ++i; + HIDDEN_GAMETYPES + #undef GAMETYPE + return i; +} +int GameType_GetTotalCount() +{ + int i = 0; + #define GAMETYPE(id) ++i; + GAMETYPES + HIDDEN_GAMETYPES + #undef GAMETYPE return i; } string GameType_GetName(int cnt) { - int i = GameType_GetID(cnt); - - if(i) - return MapInfo_Type_ToText(i); - - return ""; + Gametype i = GameType_GetID(cnt); + return i ? MapInfo_Type_ToText(i) : ""; } string GameType_GetIcon(int cnt) { - int i = GameType_GetID(cnt); - - if(i) - return strcat("gametype_", MapInfo_Type_ToString(i)); - - return ""; + Gametype i = GameType_GetID(cnt); + return i ? strcat("gametype_", MapInfo_Type_ToString(i)) : ""; } .void(entity) TR;