float GameCommand_Generic(string cmd);
// returns TRUE if handled, FALSE otherwise
-// uses tokenize on its argument!
+// tokenizes its input!
// iterative depth-first search, with fields that go "up", "down left" and "right" in a tree
// for each element, funcPre is called first, then funcPre and funcPost for all its children, and funcPost last
// works for up to 10 decimals!
string ftos_decimals(float number, float decimals);
+float fexists(string f);
+
vector colormapPaletteColor(float c, float isPants);
// unzone the string, and return it as tempstring. Safe to be called on string_null
switch(id) {\
case HUD_PANEL_ENGINEINFO: panel_name = HUD_PANELNAME_ENGINEINFO; break; \
case HUD_PANEL_INFOMESSAGES: panel_name = HUD_PANELNAME_INFOMESSAGES; break; \
+ case HUD_PANEL_PHYSICS: panel_name = HUD_PANELNAME_PHYSICS; break; \
+ case HUD_PANEL_CENTERPRINT: panel_name = HUD_PANELNAME_CENTERPRINT; break; \
} ENDS_WITH_CURLY_BRACE
// Get name of specified panel id
case HUD_PANEL_MODICONS: panel_name = HUD_PANELNAME_MODICONS; break; \
case HUD_PANEL_PRESSEDKEYS: panel_name = HUD_PANELNAME_PRESSEDKEYS; break; \
case HUD_PANEL_CHAT: panel_name = HUD_PANELNAME_CHAT; break; \
-}\
-HUD_Panel_GetName_Part2(id)
+ default: HUD_Panel_GetName_Part2(id)\
+}
vector vec2(vector v);
string language_filename(string s);
string CTX(string s);
#define ZCTX(s) strzone(CTX(s))
+
+// x-encoding (encoding as zero length invisible string)
+// encodes approx. 14 bits into 5 bytes of color code string
+const float XENCODE_MAX = 21295; // 2*22*22*22-1
+const float XENCODE_LEN = 5;
+string xencode(float f);
+float xdecode(string s);
+
+#ifndef COMPAT_XON010_CHANNELS
+#define sound(e,c,s,v,a) sound7(e,c,s,v,a,0,0)
+#endif
+
+#ifdef CSQC
+entity ReadCSQCEntity()
+#endif
+
+#ifndef MENUQC
+string strtolower(string s);
+#endif
\ No newline at end of file