-// --------------------------------------------------------------------------
-// MENU Functionality
-
-const float DATABUF_PING = 0;
-#define DATABUF_CAPTURES (1*maxclients)
-#define DATABUF_DEATHS (2*maxclients)
-#define DATABUF_RETURNS (3*maxclients)
+#pragma once
-#define DATABUF_NEXT (5*maxclients)
+#include <common/constants.qh>
+#include <common/weapons/all.qh>
-void() menu_show_error;
-void() menu_sub_null;
-
-float menu_visible;
-var void() menu_show;
-var float(float bInputType, float nPrimary, float nSecondary) menu_action;
+// --------------------------------------------------------------------------
+// MENU Functionality
// --------------------------------------------------------------------------
// Onslaught
// --------------------------------------------------------------------------
// General stuff
-float drawfont;
float postinit;
float gametype;
//.float ctf_state;
//.float health;
-float FONT_DEFAULT = 0;
float FONT_USER = 8;
+
+vector OFFSET_CURSOR = '0 0 0';
+vector SIZE_CURSOR = '32 32 0';
+void draw_cursor(vector pos, vector ofs, string img, vector col, float a);
+void draw_cursor_normal(vector pos, vector col, float a);
+void LoadMenuSkinValues();
+
// --------------------------------------------------------------------------
// Scoreboard stuff
-const float MAX_HUD_FIELDS = 16;
+const int MAX_HUD_FIELDS = 16;
-const float SP_END = -1;
+const int SP_END = -1;
-const float SP_PING = -2;
-const float SP_NAME = -3;
-const float SP_KDRATIO = -4;
-const float SP_CLRATIO = -5;
-const float SP_PL = -6;
-const float SP_FRAGS = -7;
-const float SP_SUM = -8;
+const int SP_PING = -2;
+const int SP_NAME = -3;
+const int SP_KDRATIO = -4;
+const int SP_CLRATIO = -5;
+const int SP_PL = -6;
+const int SP_FRAGS = -7;
+const int SP_SUM = -8;
-const float SP_SEPARATOR = -100;
+const int SP_SEPARATOR = -100;
float hud_field[MAX_HUD_FIELDS + 1];
float hud_size[MAX_HUD_FIELDS + 1];
.float ready;
.float eliminated;
-.void(void) draw;
-.void(void) draw2d;
-.void(void) entremove;
+.void(entity) draw;
+IntrusiveList g_drawables;
+STATIC_INIT(g_drawables) { g_drawables = IL_NEW(); }
+.void(entity) draw2d;
+IntrusiveList g_drawables_2d;
+STATIC_INIT(g_drawables_2d) { g_drawables_2d = IL_NEW(); }
+.void(entity) entremove;
float drawframetime;
-vector view_origin, view_angles, view_forward, view_right, view_up;
+vector view_origin, view_forward, view_right, view_up;
+
+IntrusiveList g_radarlinks;
+STATIC_INIT(g_radarlinks) { g_radarlinks = IL_NEW(); }
+IntrusiveList g_radaricons;
+STATIC_INIT(g_radaricons) { g_radaricons = IL_NEW(); }
-float button_zoom;
-float spectatorbutton_zoom;
-float button_attack2;
+bool button_zoom;
+bool spectatorbutton_zoom;
+bool button_attack2;
-float activeweapon;
-float switchingweapon;
-float switchweapon;
+Weapon activeweapon;
+Weapon switchingweapon;
+Weapon switchweapon;
float current_viewzoom;
float zoomin_effect;
float warmup_stage;
-string getcommandkey(string text, string command);
+void Fog_Force();
+
+string _getcommandkey(string text, string command, bool forcename);
+#define getcommandkey(cmd_name, command) _getcommandkey(cmd_name, command, false)
+#define getcommandkey_forcename(cmd_name, command) _getcommandkey(cmd_name, command, true)
string vote_called_vote;
float ready_waiting;
vector camera_direction;
void centerprint_hud(string strMessage);
+void centerprint_kill(float id);
void centerprint_generic(float new_id, string strMessage, float duration, float countdown_num);
const float ALPHA_MIN_VISIBLE = 0.003;
.float ping, ping_packetloss, ping_movementloss;
-float g_balance_mortar_bouncefactor;
-float g_balance_mortar_bouncestop;
-float g_balance_electro_secondary_bouncefactor;
-float g_balance_electro_secondary_bouncestop;
float g_trueaim_minrange;
-entity entcs_receiver[255]; // 255 is the engine limit on maxclients
-
float hud;
float view_quality;
-float framecount;
+int framecount;
+.float health;
+
+float GetSpeedUnitFactor(int speed_unit);
+string GetSpeedUnit(int speed_unit);