Add CWeaponMgr

Former-commit-id: 28983db847
This commit is contained in:
Henrique Gemignani Passos Lima
2022-11-10 04:06:24 +02:00
parent a6ee5c2836
commit c3e6ee87e3
7 changed files with 126 additions and 8 deletions

View File

@@ -4,13 +4,38 @@
#include "types.h"
#include "MetroidPrime/TGameTypes.hpp"
#include "MetroidPrime/Weapons/WeaponTypes.hpp"
#include "rstl/map.hpp"
#include "rstl/reserved_vector.hpp"
class CWeaponMgr {
public:
typedef rstl::reserved_vector< int, 15 > Vec;
CWeaponMgr();
void Remove(TUniqueId);
void IncrCount(TUniqueId, EWeaponType);
void DecrCount(TUniqueId, EWeaponType);
int GetNumActive(TUniqueId, EWeaponType) const;
void Add(TUniqueId uid, EWeaponType type) {
rstl::pair< TUniqueId, Vec > newIndex(uid, Vec(0));
newIndex.second[type] += 1;
x0_weapons.insert(newIndex);
}
Vec* GetIndex(TUniqueId uid) const {
rstl::map< TUniqueId, Vec >::const_iterator iter = x0_weapons.find(uid);
if (iter != x0_weapons.end()) {
return const_cast<Vec*>(&iter->second);
}
return nullptr;
}
private:
rstl::map< TUniqueId, rstl::reserved_vector< int, 15 > > x0_weapons;
rstl::map< TUniqueId, Vec > x0_weapons;
};
CHECK_SIZEOF(CWeaponMgr, 0x14);