GetPlayerAmmo is now a SetPlayerAmmo instead to fix some potential problems if the player has no weapon at all

This commit is contained in:
verysecrethero
2016-03-08 16:33:08 +01:00
parent 68b0175b3d
commit 52d3cb3ebf
2 changed files with 10 additions and 11 deletions
+1 -1
View File
@@ -50,7 +50,7 @@ private:
//helper methods
bool DoesPlayerHaveMaxAmmo(EntityWrapper &player);
PlayerClass DetermineClass(EntityWrapper &player);
int& GetPlayerAmmo(EntityWrapper &player);
void SetPlayerAmmo(EntityWrapper &player, int ammoGain);
int GetPlayerMaxAmmo(EntityWrapper &player);
};
#endif
+9 -10
View File
@@ -67,16 +67,18 @@ bool AmmoPickupSystem::DoesPlayerHaveMaxAmmo(EntityWrapper &player) {
return false;
}
}
int& AmmoPickupSystem::GetPlayerAmmo(EntityWrapper &player) {
void AmmoPickupSystem::SetPlayerAmmo(EntityWrapper &player, int ammoGain) {
int maxWeaponAmmo = GetPlayerMaxAmmo(player);
PlayerClass playerClass = DetermineClass(player);
if (playerClass == PlayerClass::Defender) {
return (int)player["DefenderWeapon"]["Ammo"];
(int&)player["DefenderWeapon"]["Ammo"] = std::min((int)player["DefenderWeapon"]["Ammo"] + ammoGain, maxWeaponAmmo);
} else if (playerClass == PlayerClass::Sniper) {
return (int)player["SniperWeapon"]["Ammo"];
(int&)player["SniperWeapon"]["Ammo"] = std::min((int)player["SniperWeapon"]["Ammo"] + ammoGain, maxWeaponAmmo);
} else if (playerClass == PlayerClass::Assault) {
return (int)player["AssaultWeapon"]["Ammo"];
(int&)player["AssaultWeapon"]["Ammo"] = std::min((int)player["AssaultWeapon"]["Ammo"] + ammoGain, maxWeaponAmmo);
} else {
//TODO: should really return something here
//unknown class - ignore
}
}
int AmmoPickupSystem::GetPlayerMaxAmmo(EntityWrapper &player) {
@@ -141,12 +143,9 @@ bool AmmoPickupSystem::OnAmmoPickup(Events::AmmoPickup & e)
if (DoesPlayerHaveMaxAmmo(e.Player)) {
return false;
}
int maxWeaponAmmo = GetPlayerMaxAmmo(e.Player);
int& currentAmmo = GetPlayerAmmo(e.Player);
SetPlayerAmmo(e.Player, e.AmmoGain);
currentAmmo = std::min(currentAmmo + e.AmmoGain, maxWeaponAmmo);
return false;
return true;
}
bool AmmoPickupSystem::OnTriggerLeave(Events::TriggerLeave& e) {