From 5f8c2f6310af2b01b48b28f87a88f015e8d4cdde Mon Sep 17 00:00:00 2001 From: Braden Obrzut Date: Fri, 8 Oct 2010 23:09:27 +0000 Subject: [PATCH] - Added: keys, accuracy, stamina, and savepercent to drawnumber. (Savepercent is also available for drawbar.) SVN r2924 (trunk) --- src/g_shared/sbarinfo_commands.cpp | 56 ++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/src/g_shared/sbarinfo_commands.cpp b/src/g_shared/sbarinfo_commands.cpp index 8c55206c39..b0b9fe9d11 100644 --- a/src/g_shared/sbarinfo_commands.cpp +++ b/src/g_shared/sbarinfo_commands.cpp @@ -893,8 +893,16 @@ class CommandDrawNumber : public CommandDrawString value = TOTALSECRETS; else if(sc.Compare("armorclass")) value = ARMORCLASS; + else if(sc.Compare("savepercent")) + value = SAVEPERCENT; else if(sc.Compare("airtime")) value = AIRTIME; + else if(sc.Compare("accuracy")) + value = ACCURACY; + else if(sc.Compare("stamina")) + value = STAMINA; + else if(sc.Compare("keys")) + value = KEYS; else if(sc.Compare("globalvar")) { value = GLOBALVAR; @@ -1090,6 +1098,7 @@ class CommandDrawNumber : public CommandDrawString num = level.total_secrets; break; case ARMORCLASS: + case SAVEPERCENT: { AHexenArmor *harmor = statusBar->CPlayer->mo->FindInventory(); if(harmor != NULL) @@ -1100,9 +1109,12 @@ class CommandDrawNumber : public CommandDrawString //Hexen counts basic armor also so we should too. if(statusBar->armor != NULL) { - num += statusBar->armor->SavePercent; + num += FixedMul(statusBar->armor->SavePercent, 100*FRACUNIT); } - num /= (5*FRACUNIT); + if(value == ARMORCLASS) + num /= (5*FRACUNIT); + else + num >>= FRACBITS; break; } case GLOBALVAR: @@ -1141,6 +1153,20 @@ class CommandDrawNumber : public CommandDrawString if(statusBar->CPlayer->mo->InvSel != NULL) num = statusBar->CPlayer->mo->InvSel->Amount; break; + case ACCURACY: + num = statusBar->CPlayer->accuracy; + break; + case STAMINA: + num = statusBar->CPlayer->stamina; + break; + case KEYS: + num = 0; + for(AInventory *item = statusBar->CPlayer->mo->Inventory;item != NULL;item = item->Inventory) + { + if(item->IsKindOf(RUNTIME_CLASS(AKey))) + num++; + } + break; default: break; } if(interpolationSpeed != 0 && (!hudChanged || level.time == 1)) @@ -1210,6 +1236,10 @@ class CommandDrawNumber : public CommandDrawString AIRTIME, SELECTEDINVENTORY, SCORE, + SAVEPERCENT, + ACCURACY, + STAMINA, + KEYS, CONSTANT }; @@ -2183,6 +2213,8 @@ class CommandDrawBar : public SBarInfoCommand type = SECRETS; else if(sc.Compare("airtime")) type = AIRTIME; + else if(sc.Compare("savepercent")) + type = SAVEPERCENT; else if(sc.Compare("poweruptime")) { type = POWERUPTIME; @@ -2363,6 +2395,23 @@ class CommandDrawBar : public SBarInfoCommand } break; } + case SAVEPERCENT: + { + AHexenArmor *harmor = statusBar->CPlayer->mo->FindInventory(); + if(harmor != NULL) + { + value = harmor->Slots[0] + harmor->Slots[1] + + harmor->Slots[2] + harmor->Slots[3] + harmor->Slots[4]; + } + //Hexen counts basic armor also so we should too. + if(statusBar->armor != NULL) + { + value += FixedMul(statusBar->armor->SavePercent, 100*FRACUNIT); + } + value >>= FRACBITS; + max = 100; + break; + } default: return; } @@ -2399,7 +2448,8 @@ class CommandDrawBar : public SBarInfoCommand SECRETS, ARMORCLASS, POWERUPTIME, - AIRTIME + AIRTIME, + SAVEPERCENT }; unsigned int border;