#include "weapons.qh"
#include <client/autocvars.qh>
-#include <client/defs.qh>
+#include <client/main.qh>
#include <client/miscfunctions.qh>
#include <client/view.qh>
#include <common/wepent.qh>
// Weapons (#0)
-entity weaponorder[Weapons_MAX];
+void HUD_Weapons_Export(int fh)
+{
+ HUD_Write_Cvar("hud_panel_weapons_accuracy");
+ HUD_Write_Cvar("hud_panel_weapons_label");
+ HUD_Write_Cvar("hud_panel_weapons_label_scale");
+ HUD_Write_Cvar("hud_panel_weapons_complainbubble");
+ HUD_Write_Cvar("hud_panel_weapons_complainbubble_padding");
+ HUD_Write_Cvar("hud_panel_weapons_complainbubble_time");
+ HUD_Write_Cvar("hud_panel_weapons_complainbubble_fadetime");
+ HUD_Write_Cvar("hud_panel_weapons_complainbubble_color_outofammo");
+ HUD_Write_Cvar("hud_panel_weapons_complainbubble_color_donthave");
+ HUD_Write_Cvar("hud_panel_weapons_complainbubble_color_unavailable");
+ HUD_Write_Cvar("hud_panel_weapons_ammo");
+ HUD_Write_Cvar("hud_panel_weapons_ammo_color");
+ HUD_Write_Cvar("hud_panel_weapons_ammo_alpha");
+ HUD_Write_Cvar("hud_panel_weapons_aspect");
+ HUD_Write_Cvar("hud_panel_weapons_timeout");
+ HUD_Write_Cvar("hud_panel_weapons_timeout_effect");
+ HUD_Write_Cvar("hud_panel_weapons_timeout_fadebgmin");
+ HUD_Write_Cvar("hud_panel_weapons_timeout_fadefgmin");
+ HUD_Write_Cvar("hud_panel_weapons_timeout_speed_in");
+ HUD_Write_Cvar("hud_panel_weapons_timeout_speed_out");
+ HUD_Write_Cvar("hud_panel_weapons_onlyowned");
+ HUD_Write_Cvar("hud_panel_weapons_noncurrent_alpha");
+ HUD_Write_Cvar("hud_panel_weapons_noncurrent_scale");
+ HUD_Write_Cvar("hud_panel_weapons_selection_radius");
+ HUD_Write_Cvar("hud_panel_weapons_selection_speed");
+}
+
+entity weaponorder[REGISTRY_MAX(Weapons)];
void weaponorder_swap(int i, int j, entity pass)
{
TC(int, i); TC(int, j);
if (weapons_stat & WepSet_FromWeapon(it)) continue; \
if (it.spawnflags & (WEP_FLAG_HIDDEN | WEP_FLAG_MUTATORBLOCKED | WEP_FLAG_SPECIALATTACK)) nHidden += 1; \
}); \
- vector table_size = HUD_GetTableSize_BestItemAR((Weapons_COUNT - 1) - nHidden, panel_size, aspect); \
+ vector table_size = HUD_GetTableSize_BestItemAR((REGISTRY_COUNT(Weapons) - 1) - nHidden, panel_size, aspect); \
columns = table_size.x; \
rows = table_size.y; \
weapon_size.x = panel_size.x / columns; \
weapon_size.y = panel_size.y / rows; \
MACRO_END
+string cl_weaponpriority_old;
+bool weapons_orderbyimpulse_old;
void HUD_Weapons()
{
// declarations
// update generic hud functions
HUD_Panel_LoadCvars();
- // figure out weapon order (how the weapons are sorted) // TODO make this configurable
- if(weaponorder_bypriority != autocvar_cl_weaponpriority || !weaponorder[0])
+ if(cl_weaponpriority_old != autocvar_cl_weaponpriority || weapons_orderbyimpulse_old != autocvar_hud_panel_weapons_orderbyimpulse || weaponorder[0] == NULL)
{
- int weapon_cnt;
- strcpy(weaponorder_bypriority, autocvar_cl_weaponpriority);
- strcpy(weaponorder_byimpulse, W_FixWeaponOrder_BuildImpulseList(W_FixWeaponOrder_ForceComplete(W_NumberWeaponOrder(weaponorder_bypriority))));
- weaponorder_cmp_str = strcat(" ", weaponorder_byimpulse, " ");
+ weapons_orderbyimpulse_old = autocvar_hud_panel_weapons_orderbyimpulse;
+ strcpy(cl_weaponpriority_old, autocvar_cl_weaponpriority);
+ string weporder = W_FixWeaponOrder_ForceComplete(W_NumberWeaponOrder(cl_weaponpriority_old));
+ if(autocvar_hud_panel_weapons_orderbyimpulse)
+ {
+ weporder = W_FixWeaponOrder_BuildImpulseList(weporder);
+ }
+
+ weaponorder_cmp_str = strcat(" ", weporder, " ");
- weapon_cnt = 0;
+ int weapon_cnt = 0;
FOREACH(Weapons, it != WEP_Null && it.impulse >= 0, weaponorder[weapon_cnt++] = it);
- for(i = weapon_cnt; i < Weapons_MAX; ++i)
+ for(i = weapon_cnt; i < REGISTRY_MAX(Weapons); ++i)
weaponorder[i] = NULL;
heapsort(weapon_cnt, weaponorder_swap, weaponorder_cmp, NULL);
if (it.spawnflags & WEP_FLAG_MUTATORBLOCKED) nHidden += 1;
});
weapons_stat = '0 0 0';
- float countw = 1 + floor((floor(time * cvar("wep_add"))) % ((Weapons_COUNT - 1) - nHidden));
- for(i = 0, j = 0; i <= (Weapons_COUNT - 1) && j < countw; ++i)
+ float countw = 1 + floor((floor(time * cvar("wep_add"))) % ((REGISTRY_COUNT(Weapons) - 1) - nHidden));
+ for(i = 0, j = 0; i <= (REGISTRY_COUNT(Weapons) - 1) && j < countw; ++i)
{
if(weaponorder[i].spawnflags & WEP_FLAG_MUTATORBLOCKED)
continue;
panel_pos.y += (old_panel_size.y - panel_size.y) / 2;
}
else
- weapon_count = (Weapons_COUNT - 1);
+ weapon_count = (REGISTRY_COUNT(Weapons) - 1);
// animation for fading in/out the panel respectively when not in use
if(!autocvar__hud_configure)