#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 <common/campaign_common.qh>
+#include <common/constants.qh>
+#include <common/mapinfo.qh>
+#include <common/util.qh>
+#include <common/command/_mod.qh>
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()
void saveCvarsMulti(entity me)
{
float n, i;
- string s;
+ string s, cvarname;
me.saveCvars_Multi(me);
s = cvar_string(me.cvarName);
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)
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))
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;
}
}
}
+ if(un_bannedservers != "")
+ {
+ _Nex_ExtResponseSystem_BannedServers = strzone(un_bannedservers);
+ _Nex_ExtResponseSystem_BannedServersNeedsRefresh = 1;
+ }
+
if(un_emergency_pk3s != "")
{
_Nex_ExtResponseSystem_Packs = strzone(un_emergency_pk3s);
}
+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();
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;
GAMETYPE(MAPINFO_TYPE_NEXBALL) \
GAMETYPE(MAPINFO_TYPE_ONSLAUGHT) \
GAMETYPE(MAPINFO_TYPE_ASSAULT) \
- if (cvar("developer")) GAMETYPE(MAPINFO_TYPE_RACE) \
+ /* GAMETYPE(MAPINFO_TYPE_INVASION) */ \
+ /**/
+
+// hidden gametypes come last so indexing always works correctly
+#define HIDDEN_GAMETYPES \
+ GAMETYPE(MAPINFO_TYPE_RACE) \
GAMETYPE(MAPINFO_TYPE_CTS) \
- //GAMETYPE(MAPINFO_TYPE_INVASION) \
- /* nothing */
+ /**/
-int GameType_GetID(int cnt)
+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;