1 void forAllDescendants(entity root, void(entity, entity) funcPre, void(entity, entity) funcPost, entity pass)
3 depthfirst(root, parent, firstChild, nextSibling, funcPre, funcPost, pass);
7 void SUB_Null_ee(entity e1, entity e2)
10 void saveCvarsOf(entity ignore, entity e)
15 void loadCvarsOf(entity ignore, entity e)
20 void saveAllCvars(entity root)
22 forAllDescendants(root, saveCvarsOf, SUB_Null_ee, NULL);
24 void loadAllCvars(entity root)
26 forAllDescendants(root, loadCvarsOf, SUB_Null_ee, NULL);
29 .void(entity) draw_setDependent;
30 .string cvar_setDependent;
31 .float cvarMin_setDependent;
32 .float cvarMax_setDependent;
33 .string cvar2_setDependent;
34 .float cvar2Min_setDependent;
35 .float cvar2Max_setDependent;
36 .float op_setDependent;
37 void setDependent_Check(entity e)
40 f = cvar(e.cvar_setDependent);
41 if(e.cvarMin_setDependent <= e.cvarMax_setDependent)
42 e.disabled = ((f < e.cvarMin_setDependent) || (f > e.cvarMax_setDependent));
44 e.disabled = ((f >= e.cvarMax_setDependent) && (f <= e.cvarMin_setDependent));
45 if(e.cvar2_setDependent)
47 f = cvar(e.cvar2_setDependent);
48 if(e.cvar2Min_setDependent <= e.cvar2Max_setDependent)
49 e.disabled = (e.disabled + ((f < e.cvar2Min_setDependent) || (f > e.cvar2Max_setDependent)) > e.op_setDependent);
51 e.disabled = (e.disabled + ((f >= e.cvar2Max_setDependent) && (f <= e.cvar2Min_setDependent)) > e.op_setDependent);
54 void setDependent_Draw(entity e)
56 setDependent_Check(e);
57 e.draw_setDependent(e);
59 void setDependent(entity e, string theCvarName, float theCvarMin, float theCvarMax)
61 e.draw_setDependent = e.draw;
62 e.cvar_setDependent = theCvarName;
63 e.cvarMin_setDependent = theCvarMin;
64 e.cvarMax_setDependent = theCvarMax;
65 e.cvar2_setDependent = string_null;
66 e.draw = setDependent_Draw;
67 setDependent_Check(e);
69 void setDependentAND(entity e, string theCvarName, float theCvarMin, float theCvarMax, string theCvar2Name, float theCvar2Min, float theCvar2Max)
71 e.draw_setDependent = e.draw;
72 e.cvar_setDependent = theCvarName;
73 e.cvarMin_setDependent = theCvarMin;
74 e.cvarMax_setDependent = theCvarMax;
75 e.cvar2_setDependent = theCvar2Name;
76 e.cvar2Min_setDependent = theCvar2Min;
77 e.cvar2Max_setDependent = theCvar2Max;
78 e.op_setDependent = 0;
79 e.draw = setDependent_Draw;
80 setDependent_Check(e);
82 void setDependentOR(entity e, string theCvarName, float theCvarMin, float theCvarMax, string theCvar2Name, float theCvar2Min, float theCvar2Max)
84 e.draw_setDependent = e.draw;
85 e.cvar_setDependent = theCvarName;
86 e.cvarMin_setDependent = theCvarMin;
87 e.cvarMax_setDependent = theCvarMax;
88 e.cvar2_setDependent = theCvar2Name;
89 e.cvar2Min_setDependent = theCvar2Min;
90 e.cvar2Max_setDependent = theCvar2Max;
91 e.op_setDependent = 1;
92 e.draw = setDependent_Draw;
93 setDependent_Check(e);
96 // EXTRESPONSE SYSTEM ////////////////////////////////////////////////////////
98 float _Nex_ExtResponseSystem_RequestsSent;
99 float _Nex_ExtResponseSystem_VersionHandled;
100 string _Nex_ExtResponseSystem_UpdateTo;
101 float _Nex_ExtResponseSystem_RetryTime;
102 float _Nex_ExtResponseSystem_RetryTime_LastDelay;
104 void() Item_Nex_ExtResponseSystem_SendQuery =
106 dprint("Sending extended response requests...\n");
107 localcmd(strcat("packet update.alientrap.org:27950 \"getExtResponse checkUpdates nexuiz ", cvar_string("g_nexuizversion"), "\"\n"));
108 _Nex_ExtResponseSystem_RequestsSent = TRUE;
109 _Nex_ExtResponseSystem_RetryTime_LastDelay = _Nex_ExtResponseSystem_RetryTime_LastDelay * 2 + 1;
110 _Nex_ExtResponseSystem_RetryTime = time + _Nex_ExtResponseSystem_RetryTime_LastDelay;
113 void(float argc) Item_Nex_ExtResponseSystem_Parse =
115 dprint("Received extended response packet from ", argv(0), "\n");
116 if(!_Nex_ExtResponseSystem_RequestsSent)
118 dprint(" But I haven't sent a request yet! Ignoring.\n");
121 if(argv(1) == "noUpdateAvailable")
123 if(_Nex_ExtResponseSystem_VersionHandled)
125 dprint(" duplicated update notice, ignored\n");
128 _Nex_ExtResponseSystem_VersionHandled = 1;
130 else if(argv(1) == "updateAvailable")
132 if(_Nex_ExtResponseSystem_VersionHandled)
134 dprint(" duplicated update notice, ignored\n");
137 _Nex_ExtResponseSystem_VersionHandled = 1;
138 _Nex_ExtResponseSystem_UpdateTo = strzone(argv(2)); // note: only one packet can be handled, so this can't be a leak
141 dprint(" UNKNOWN RESPONSE TYPE: ", argv(1), "\n");
144 void() Item_Nex_ExtResponseSystem_CheckForResponse =
148 while(strlen((s = getextresponse())))
151 Item_Nex_ExtResponseSystem_Parse(argc);
155 // END OF EXTRESPONSE SYSTEM /////////////////////////////////////////////////
164 if(!MapInfo_FilterGametype(MAPINFO_TYPE_ALL, 0, 1))
166 nMenuInitDots = nMenuInitDots + 1;
167 s = "Generating mapinfo..";
168 for(i = 0; i < nMenuInitDots; ++i)
172 w = draw_TextWidth(s, 0);
173 sz = min(0.025, 1 / w);
174 draw_CenterText(eX * 0.5 + eY * 0.5, s, eX * sz + eY * sz * (draw_scale_x / draw_scale_y), '1 1 1', 1, 0);
181 string campaign_name_previous;
182 float campaign_won_previous;
188 vector fs, sz, line, mid;
189 Item_Nex_ExtResponseSystem_CheckForResponse();
190 if(!_Nex_ExtResponseSystem_VersionHandled)
191 if(time > _Nex_ExtResponseSystem_RetryTime)
192 Item_Nex_ExtResponseSystem_SendQuery();
194 if(_Nex_ExtResponseSystem_UpdateTo != "")
196 fs = ((1/draw_scale_x) * eX + (1/draw_scale_y) * eY) * 12;
198 sz_x = draw_TextWidth(" http://www.nexuiz.com/ ", 0) * fs_x;
201 draw_alpha = sin(time * 0.112 - 0.3) * 0.7;
202 mid = eX * (0.5 + 0.5 * (1 - sz_x) * cos(time * 0.071))
203 + eY * (0.5 + 0.5 * (1 - sz_y) * sin(time * 0.071));
205 draw_Fill(mid - 0.5 * sz, sz, '1 1 0', 1);
206 draw_CenterText(mid - 1 * line, strcat("Update to ", _Nex_ExtResponseSystem_UpdateTo, " now!"), fs, '1 0 0', 1, 0);
207 draw_CenterText(mid - 0 * line, "http://www.nexuiz.com/", fs, '0 0 1', 1, 0);
209 if not(campaign_name_previous)
210 campaign_name_previous = strzone(strcat(campaign_name, "x")); // force unequal
211 if(campaign_name == campaign_name_previous)
213 if(cvar(strcat("g_campaign", campaign_name, "_won")))
215 if(!campaign_won_previous)
218 DialogOpenButton_Click_withCoords(NULL, main.winnerDialog, '0 0 0', '1 1 0');
220 campaign_won_previous = 1;
223 campaign_won_previous = 0;
227 strunzone(campaign_name_previous);
228 campaign_name_previous = strzone(campaign_name);
229 campaign_won_previous = cvar(strcat("g_campaign", campaign_name, "_won"));