26 bool prevButton = m_flags.
onBit(eFlags::ItemButtonHold);
27 m_flags.
resetBit(eFlags::ItemButtonHold, eFlags::ItemButtonActivation);
29 const auto ¤tInputs = inputs()->currentState();
30 if (currentInputs.item()) {
31 m_flags.
setBit(eFlags::ItemButtonHold).
changeBit(!prevButton, eFlags::ItemButtonActivation);
34 auto &status = KartObjectProxy::status();
36 if (m_flags.
onBit(eFlags::Lockout)) {
38 Kart::eStatus::TriggerRespawn, Kart::eStatus::CannonStart,
39 Kart::eStatus::InCannon, Kart::eStatus::AfterCannon)) {
43 if (status.
onBit(Kart::eStatus::InRespawn, Kart::eStatus::InAction,
44 Kart::eStatus::TriggerRespawn, Kart::eStatus::CannonStart,
45 Kart::eStatus::InCannon)) {
46 m_flags.
setBit(eFlags::Lockout);
48 const auto *raceMgr = System::RaceManager::Instance();
49 bool canUse = m_flags.
onBit(eFlags::ItemButtonActivation);
50 canUse = canUse && raceMgr->isStageReached(System::RaceManager::Stage::Race);
52 canUse = canUse && (m_inventory.id() != ItemId::NONE);