X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud%2Fpanel%2Fpowerups.qc;h=70d41ec47e71f955b242fd72511ed948c80e6f09;hb=51e4f798abb1fc968f37d1ad425eaf5871bb33de;hp=49b7a97018c0071d4170e06fe43e8bd274d7d905;hpb=be37ea91fb3bbd1a6fa4f0b70b32d1ea95343ad4;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hud/panel/powerups.qc b/qcsrc/client/hud/panel/powerups.qc index 49b7a9701..70d41ec47 100644 --- a/qcsrc/client/hud/panel/powerups.qc +++ b/qcsrc/client/hud/panel/powerups.qc @@ -1,18 +1,27 @@ #include "powerups.qh" -#include -#include -#include +#include #include +#include // Powerups (#2) +void HUD_Powerups_Export(int fh) +{ + // allow saving cvars that aesthetically change the panel into hud skin files + HUD_Write_Cvar("hud_panel_powerups_iconalign"); + HUD_Write_Cvar("hud_panel_powerups_baralign"); + HUD_Write_Cvar("hud_panel_powerups_progressbar"); + HUD_Write_Cvar("hud_panel_powerups_text"); +} + // Powerup item fields (reusing existing fields) .string message; // Human readable name .string netname; // Icon name .vector colormod; // Color .float count; // Time left .float lifetime; // Maximum time +.float cnt; // Infinite timer entity powerupItems; int powerupItemsCount; @@ -26,7 +35,7 @@ void resetPowerupItems() powerupItemsCount = 0; } -void addPowerupItem(string name, string icon, vector color, float currentTime, float lifeTime) +void addPowerupItem(string name, string icon, vector color, float currentTime, float lifeTime, bool isInfinite) { if(!powerupItems) powerupItems = spawn(); @@ -41,6 +50,7 @@ void addPowerupItem(string name, string icon, vector color, float currentTime, f item.colormod = color; item.count = currentTime; item.lifetime = lifeTime; + item.cnt = isInfinite; ++powerupItemsCount; } @@ -64,10 +74,6 @@ int getPowerupItemAlign(int align, int column, int row, int columns, int rows, b void HUD_Powerups() { - int allItems = STAT(ITEMS); - int allBuffs = STAT(BUFFS); - float strengthTime, shieldTime, superTime; - // Initialize items if(!autocvar__hud_configure) { @@ -75,37 +81,11 @@ void HUD_Powerups() return; if(STAT(HEALTH) <= 0 && autocvar_hud_panel_powerups_hide_ondeath) return; - //if(!(allItems & (ITEM_Strength.m_itemid | ITEM_Shield.m_itemid | IT_SUPERWEAPON)) && !allBuffs) return; - - strengthTime = bound(0, STAT(STRENGTH_FINISHED) - time, 99); - shieldTime = bound(0, STAT(INVINCIBLE_FINISHED) - time, 99); - superTime = bound(0, STAT(SUPERWEAPONS_FINISHED) - time, 99); - - if(allItems & IT_UNLIMITED_SUPERWEAPONS) - superTime = 99; - - // Prevent stuff to show up on mismatch that will be fixed next frame - if(!(allItems & IT_SUPERWEAPON)) - superTime = 0; - } - else - { - strengthTime = 15; - shieldTime = 27; - superTime = 13; - allBuffs = 0; } // Add items to linked list resetPowerupItems(); - if(strengthTime) - addPowerupItem("Strength", "strength", autocvar_hud_progressbar_strength_color, strengthTime, 30); - if(shieldTime) - addPowerupItem("Shield", "shield", autocvar_hud_progressbar_shield_color, shieldTime, 30); - if(superTime && !(allItems & IT_UNLIMITED_SUPERWEAPONS)) - addPowerupItem("Superweapons", "superweapons", autocvar_hud_progressbar_superweapons_color, superTime, 30); - MUTATOR_CALLHOOK(HUD_Powerups_add); if(!powerupItemsCount) @@ -197,10 +177,15 @@ void HUD_Powerups() fullSeconds = ceil(item.count); textColor = '0.6 0.6 0.6' + (item.colormod * 0.4); - if(item.count > 1) - DrawNumIcon(itemPos, itemSize, fullSeconds, item.netname, isVertical, align, textColor, panel_fg_alpha); - if(item.count <= 5) - DrawNumIcon_expanding(itemPos, itemSize, fullSeconds, item.netname, isVertical, align, textColor, panel_fg_alpha, bound(0, (fullSeconds - item.count) / 0.5, 1)); + if(item.cnt) + DrawNumIcon(itemPos, itemSize, fullSeconds, item.netname, isVertical, true, align, textColor, panel_fg_alpha); + else + { + if(item.count > 1) + DrawNumIcon(itemPos, itemSize, fullSeconds, item.netname, isVertical, false, align, textColor, panel_fg_alpha); + if(item.count <= 5) + DrawNumIcon_expanding(itemPos, itemSize, fullSeconds, item.netname, isVertical, false, align, textColor, panel_fg_alpha, bound(0, (fullSeconds - item.count) / 0.5, 1)); + } } // Determine next section