#include "MetroidPrime/CWeaponMgr.hpp" CWeaponMgr::CWeaponMgr() {} void CWeaponMgr::Remove(TUniqueId uid) { rstl::map< TUniqueId, Vec >::iterator iter = x0_weapons.find(uid); if (iter != x0_weapons.end()) { x0_weapons.get_inner().erase(iter); } } void CWeaponMgr::IncrCount(TUniqueId uid, EWeaponType type) { Vec* vec = GetIndex(uid); if (vec == nullptr) { Add(uid, type); } else { (*vec)[type]++; } } void CWeaponMgr::DecrCount(TUniqueId uid, EWeaponType type) { Vec* vecP = GetIndex(uid); if (!vecP) { return; } Vec& vec = *vecP; vec[type]--; bool found = true; rstl::reserved_vector< int, 15 >::iterator vit = vec.begin(), end = vec.end(); for (; vit != end; ++vit) { if (*vit > 0) { found = false; break; } } if (found) { Remove(uid); } } int CWeaponMgr::GetNumActive(TUniqueId uid, EWeaponType type) const { Vec* vecP = GetIndex(uid); if (vecP) { return (*vecP)[type]; } else { return 0; } }