From e1878f9357371088819e64a4f169f1ba5f68df1c Mon Sep 17 00:00:00 2001 From: danij Date: Mon, 26 Dec 2011 17:28:15 +0000 Subject: [PATCH] Heretic: Do not collapse powerup icon head-up displays while wearing off --- doomsday/plugins/jheretic/src/st_stuff.c | 36 ++++++++++++++++-------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/doomsday/plugins/jheretic/src/st_stuff.c b/doomsday/plugins/jheretic/src/st_stuff.c index f613461cae..810c9ba8f1 100644 --- a/doomsday/plugins/jheretic/src/st_stuff.c +++ b/doomsday/plugins/jheretic/src/st_stuff.c @@ -1321,15 +1321,13 @@ void ST_HUDUnHide(int player, hueevent_t ev) void Flight_Ticker(uiwidget_t* obj, timespan_t ticLength) { - assert(obj); - { guidata_flight_t* flht = (guidata_flight_t*)obj->typedata; const player_t* plr = &players[obj->player]; - if(P_IsPaused() || !GUI_GameTicTriggerIsSharp()) - return; + + if(P_IsPaused() || !GUI_GameTicTriggerIsSharp()) return; + flht->patchId = 0; - if(0 == plr->powers[PT_FLIGHT]) - return; + if(plr->powers[PT_FLIGHT] <= 0) return; if(plr->powers[PT_FLIGHT] > BLINKTHRESHOLD || !(plr->powers[PT_FLIGHT] & 16)) { @@ -1355,7 +1353,6 @@ void Flight_Ticker(uiwidget_t* obj, timespan_t ticLength) } flht->patchId = pSpinFly[frame]; } - } } void Flight_Drawer(uiwidget_t* obj, const Point2Raw* offset) @@ -1387,13 +1384,14 @@ void Flight_Drawer(uiwidget_t* obj, const Point2Raw* offset) void Flight_UpdateGeometry(uiwidget_t* obj) { guidata_flight_t* flht = (guidata_flight_t*)obj->typedata; + const player_t* plr = &players[obj->player]; obj->geometry.size.width = 0; obj->geometry.size.height = 0; if(ST_AutomapIsActive(obj->player) && cfg.automapHudDisplay == 0) return; if(P_MobjIsCamera(players[obj->player].plr->mo) && Get(DD_PLAYBACK)) return; - if(0 == flht->patchId) return; + if(plr->powers[PT_FLIGHT] <= 0) return; /// \fixme Calculate dimensions properly! obj->geometry.size.width = 32 * cfg.hudScale; @@ -1411,8 +1409,7 @@ void Tome_Ticker(uiwidget_t* obj, timespan_t ticLength) tome->patchId = 0; tome->countdownSeconds = 0; - if(0 == ticsRemain || 0 != plr->morphTics) - return; + if(ticsRemain <= 0 || 0 != plr->morphTics) return; // Time to player the countdown sound? if(0 != ticsRemain && ticsRemain < cfg.tomeSound * TICSPERSEC) @@ -1495,13 +1492,15 @@ void Tome_Drawer(uiwidget_t* obj, const Point2Raw* offset) void Tome_UpdateGeometry(uiwidget_t* obj) { guidata_tomeofpower_t* tome = (guidata_tomeofpower_t*)obj->typedata; + const player_t* plr = &players[obj->player]; + const int ticsRemain = plr->powers[PT_WEAPONLEVEL2]; - obj->geometry.size.width = 0; + obj->geometry.size.width = 0; obj->geometry.size.height = 0; if(ST_AutomapIsActive(obj->player) && cfg.automapHudDisplay == 0) return; if(P_MobjIsCamera(players[obj->player].plr->mo) && Get(DD_PLAYBACK)) return; - if(tome->patchId == 0 && tome->countdownSeconds == 0) return; + if(ticsRemain <= 0 || 0 != plr->morphTics) return; if(tome->patchId != 0) { @@ -1509,6 +1508,19 @@ void Tome_UpdateGeometry(uiwidget_t* obj) obj->geometry.size.width += 26; obj->geometry.size.height += 26; } + else + { +#define TRACKING (2) + + char buf[20]; + dd_snprintf(buf, 20, "%i", tome->countdownSeconds); + + FR_SetFont(obj->font); + FR_SetTracking(TRACKING); + FR_TextSize(&obj->geometry.size, buf); + +#undef TRACKING + } obj->geometry.size.width *= cfg.hudScale; obj->geometry.size.height *= cfg.hudScale;