diff --git a/src/k_powerup.cpp b/src/k_powerup.cpp index da40ca68f..9e8203c12 100644 --- a/src/k_powerup.cpp +++ b/src/k_powerup.cpp @@ -66,33 +66,28 @@ void K_GivePowerUp(player_t* player, kartitems_t powerup, tic_t time) switch (powerup) { case POWERUP_SMONITOR: - S_StartSound(NULL, sfx_bpwrua); K_AddMessageForPlayer(player, "Got S MONITOR!", true, false); K_DoInvincibility(player, player->invincibilitytimer + time); player->powerup.superTimer += time; break; case POWERUP_BARRIER: - S_StartSound(NULL, sfx_bpwrub); K_AddMessageForPlayer(player, "Got MEGA BARRIER!", true, false); player->powerup.barrierTimer += time; Obj_SpawnMegaBarrier(player); break; case POWERUP_BUMPER: - S_StartSound(NULL, sfx_bpwruc); K_AddMessageForPlayer(player, "Got BUMPER RESTOCK!", true, false); K_GiveBumpersToPlayer(player, nullptr, 5); break; case POWERUP_BADGE: - S_StartSound(NULL, sfx_bpwrud); K_AddMessageForPlayer(player, "Got RHYTHM BADGE!", true, false); player->powerup.rhythmBadgeTimer += time; break; case POWERUP_SUPERFLICKY: - S_StartSound(NULL, sfx_bpwrue); K_AddMessageForPlayer(player, "Got SUPER FLICKY!", true, false); if (K_PowerUpRemaining(player, POWERUP_SUPERFLICKY)) { @@ -105,7 +100,6 @@ void K_GivePowerUp(player_t* player, kartitems_t powerup, tic_t time) break; case POWERUP_POINTS: - S_StartSound(NULL, sfx_bpwruf); K_AddMessageForPlayer(player, "Got 6 POINTS!", true, false); K_GivePointsToPlayer(player, nullptr, 6); diff --git a/src/objects/powerup-spinner.cpp b/src/objects/powerup-spinner.cpp index d709b1a0e..248a95b69 100644 --- a/src/objects/powerup-spinner.cpp +++ b/src/objects/powerup-spinner.cpp @@ -46,6 +46,11 @@ struct Spinner : Mobj { fixed_t f = FRACUNIT - std::clamp(fuse, 0, duration()) * FRACUNIT / std::max(duration(), 1); + if (fuse == duration() - 20) + { + S_StartSound(nullptr, sound()); + } + angle += Easing_InQuad(f, ANGLE_11hh, ANGLE_45); renderflags = (renderflags & ~RF_TRANSMASK) | (Easing_Linear(f, 0, 9) << RF_TRANSSHIFT); spritescale({Easing_Linear(f, 4*FRACUNIT, FRACUNIT/4), Easing_Linear(f, FRACUNIT, 6*FRACUNIT)}); @@ -55,6 +60,28 @@ struct Spinner : Mobj remove(); } } + +private: + sfxenum_t sound() const + { + switch (powerup()) + { + case POWERUP_SMONITOR: + return sfx_bpwrua; + case POWERUP_BARRIER: + return sfx_bpwrub; + case POWERUP_BUMPER: + return sfx_bpwruc; + case POWERUP_BADGE: + return sfx_bpwrud; + case POWERUP_SUPERFLICKY: + return sfx_bpwrue; + case POWERUP_POINTS: + return sfx_bpwruf; + default: + return sfx_thok; + } + } }; }; // namespace