diff --git a/src/d_player.h b/src/d_player.h index f5838d9bf..ed64b9fc0 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -212,6 +212,8 @@ typedef enum NUMPOWERUPS = ENDOFPOWERUPS - FIRSTPOWERUP, } kartitems_t; +#define POWERUP_BIT(x) (1 << ((x) - FIRSTPOWERUP)) + typedef enum { KSHIELD_NONE = 0, diff --git a/src/k_powerup.cpp b/src/k_powerup.cpp index 6e5d6a164..51b9f96c7 100644 --- a/src/k_powerup.cpp +++ b/src/k_powerup.cpp @@ -27,17 +27,19 @@ tic_t K_PowerUpRemaining(const player_t* player, kartitems_t powerup) } } -boolean K_AnyPowerUpRemaining(const player_t* player) +UINT32 K_AnyPowerUpRemaining(const player_t* player) { + UINT32 mask = 0; + for (int k = FIRSTPOWERUP; k < ENDOFPOWERUPS; ++k) { if (K_PowerUpRemaining(player, static_cast(k))) { - return true; + mask |= POWERUP_BIT(k); } } - return false; + return mask; } void K_GivePowerUp(player_t* player, kartitems_t powerup, tic_t time) diff --git a/src/k_powerup.h b/src/k_powerup.h index 0598e45ce..0a94edf39 100644 --- a/src/k_powerup.h +++ b/src/k_powerup.h @@ -9,7 +9,7 @@ extern "C" { #endif tic_t K_PowerUpRemaining(const player_t *player, kartitems_t powerup); -boolean K_AnyPowerUpRemaining(const player_t *player); +UINT32 K_AnyPowerUpRemaining(const player_t *player); // returns POWERUP_BIT mask void K_GivePowerUp(player_t *player, kartitems_t powerup, tic_t timer); void K_DropPowerUps(player_t *player);