1
0

edited comment and changed error behavior of DeltaXp

This commit is contained in:
Daniel O'Brien 2013-11-16 22:43:42 +11:00
parent b3bb34974f
commit d2d8b1d073
2 changed files with 11 additions and 4 deletions

View File

@ -359,16 +359,22 @@ bool cPlayer::SetCurrentExperience(short int a_CurrentXp)
short cPlayer::DeltaExperience(short a_Xp_delta) short cPlayer::DeltaExperience(short a_Xp_delta)
{ {
//ToDo: figure out a better name?... //ToDo: figure out a better name?...
if(a_Xp_delta > (SHRT_MAX - m_LifetimeTotalXp) || (m_CurrentXp + a_Xp_delta) < MIN_EXPERIENCE) if(a_Xp_delta > (SHRT_MAX - m_LifetimeTotalXp))
{ {
// Value was negative, abort and report // Value was bad, abort and report
LOGWARNING("Attempt was made to increment Xp by %d, which was invalid", LOGWARNING("Attempt was made to increment Xp by %d, which was bad",
a_Xp_delta); a_Xp_delta);
return -1; // Should we instead just return the current Xp? return -1; // Should we instead just return the current Xp?
} }
m_CurrentXp += a_Xp_delta; m_CurrentXp += a_Xp_delta;
// Make sure they didn't subtract too much
if(m_CurrentXp < 0)
{
m_CurrentXp = 0;
}
// Update total for score calculation // Update total for score calculation
if(a_Xp_delta > 0) if(a_Xp_delta > 0)
{ {

View File

@ -74,7 +74,8 @@ public:
*/ */
bool SetCurrentExperience(short a_XpTotal); bool SetCurrentExperience(short a_XpTotal);
/* changes Xp by Xp_delta, you "shouldn't" not inc more than MAX_EXPERIENCE_ORB_SIZE /* changes Xp by Xp_delta, you "shouldn't" inc more than MAX_EXPERIENCE_ORB_SIZE
Wont't allow xp to go negative
Returns the new current experience, -1 on error Returns the new current experience, -1 on error
*/ */
short DeltaExperience(short a_Xp_delta); short DeltaExperience(short a_Xp_delta);