#define hud_panels_from(i) _hud_panels_from(i, NULL)
REGISTER_REGISTRY(hud_panels)
-#define REGISTER_HUD_PANEL(id, draw_func, configflags, showflags) \
+#define _REGISTER_HUD_PANEL(id, draw_func, export_func, configflags, showflags) \
void draw_func(); \
+ void export_func(int fh); \
REGISTER(hud_panels, HUD_PANEL, id, m_id, new_pure(hud_panel)) { \
this.panel_id = this.m_id; \
this.panel_draw = draw_func; \
+ this.panel_export = export_func; \
this.panel_name = strzone(strtolower(#id)); \
this.panel_configflags = configflags; \
this.panel_showflags = showflags; \
}
+#define REGISTER_HUD_PANEL(id, draw_func, configflags, showflags) \
+ _REGISTER_HUD_PANEL(id, draw_func, draw_func##_Export, configflags, showflags)
+
#define HUD_PANEL(NAME) HUD_PANEL_##NAME
// draw the background/borders
); \
MACRO_END
-int panel_order[hud_panels_MAX];
+int panel_order[REGISTRY_MAX(hud_panels)];
string hud_panelorder_prev;
bool hud_draw_maximized;
const float BORDER_MULTIPLIER = 4;
float scoreboard_bottom;
-int weapon_accuracy[Weapons_MAX];
+int weapon_accuracy[REGISTRY_MAX(Weapons)];
entity complain_weapon;
int complain_weapon_type;
string panel_bg_padding_str;
classfield(HUDPanel) .void() panel_draw;
+classfield(HUDPanel) .void(int fh) panel_export;
// chat panel can be reduced / moved while the mapvote is active
// let know the mapvote panel about chat pos and size