2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 09:47:43 +00:00

Implement god mode, and CWeaponMgr

This commit is contained in:
2018-06-13 12:36:11 -07:00
parent 4d8cf17078
commit de952f8e8b
5 changed files with 67 additions and 24 deletions

View File

@@ -3,34 +3,54 @@
namespace urde
{
void CWeaponMgr::Add(TUniqueId, EWeaponType)
void CWeaponMgr::Add(TUniqueId uid, EWeaponType type)
{
x0_weapons.insert(std::make_pair(uid, rstl::reserved_vector<s32, 10>()));
x0_weapons[uid].resize(10);
++x0_weapons[uid][u32(type)];
}
void CWeaponMgr::Remove(TUniqueId)
void CWeaponMgr::Remove(TUniqueId uid)
{
s32 totalActive = 0;
for (u32 i = 0; i < 10; ++i)
totalActive += x0_weapons[uid][i];
if (totalActive == 0)
x0_weapons.erase(uid);
}
void CWeaponMgr::IncrCount(TUniqueId, EWeaponType)
void CWeaponMgr::IncrCount(TUniqueId uid, EWeaponType type)
{
if (GetIndex(uid) < 0)
Add(uid, type);
else
x0_weapons[uid][u32(type)]++;
}
void CWeaponMgr::DecrCount(TUniqueId, EWeaponType)
void CWeaponMgr::DecrCount(TUniqueId uid, EWeaponType type)
{
if (GetIndex(uid) < 0)
return;
x0_weapons[uid][u32(type)]--;
if (x0_weapons[uid][u32(type)] <= 0)
Remove(uid);
}
s32 CWeaponMgr::GetNumActive(TUniqueId, EWeaponType) const
s32 CWeaponMgr::GetNumActive(TUniqueId uid, EWeaponType type) const
{
return 0;
if (GetIndex(uid) < 0)
return 0;
return x0_weapons.at(uid)[u32(type)];
}
s32 CWeaponMgr::GetIndex(TUniqueId) const
s32 CWeaponMgr::GetIndex(TUniqueId uid) const
{
return 0;
if (x0_weapons.find(uid) == x0_weapons.end())
return -1;
return s32(std::distance(x0_weapons.begin(), x0_weapons.find(uid)));
}
}