1
0

removed SpendExperience and changed AddExperience to handle removing Xp

This commit is contained in:
Daniel O'Brien 2013-11-16 22:00:45 +11:00
parent 3595392937
commit b72ced3164
5 changed files with 20 additions and 79 deletions

View File

@ -849,7 +849,7 @@ end
function HandleAddExperience(a_Split, a_Player) function HandleAddExperience(a_Split, a_Player)
a_Player:AddExperience(200); a_Player:DelatExperience(200);
return true; return true;
end end

View File

@ -1,6 +1,6 @@
/* /*
** Lua binding: AllToLua ** Lua binding: AllToLua
** Generated automatically by tolua++-1.0.92 on 11/16/13 21:19:32. ** Generated automatically by tolua++-1.0.92 on 11/16/13 21:58:48.
*/ */
#ifndef __cplusplus #ifndef __cplusplus
@ -7684,9 +7684,9 @@ static int tolua_AllToLua_cPlayer_SetCurrentExperience00(lua_State* tolua_S)
} }
#endif //#ifndef TOLUA_DISABLE #endif //#ifndef TOLUA_DISABLE
/* method: AddExperience of class cPlayer */ /* method: DeltaExperience of class cPlayer */
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_AddExperience00 #ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_DeltaExperience00
static int tolua_AllToLua_cPlayer_AddExperience00(lua_State* tolua_S) static int tolua_AllToLua_cPlayer_DeltaExperience00(lua_State* tolua_S)
{ {
#ifndef TOLUA_RELEASE #ifndef TOLUA_RELEASE
tolua_Error tolua_err; tolua_Error tolua_err;
@ -7702,51 +7702,17 @@ static int tolua_AllToLua_cPlayer_AddExperience00(lua_State* tolua_S)
cPlayer* self = (cPlayer*) tolua_tousertype(tolua_S,1,0); cPlayer* self = (cPlayer*) tolua_tousertype(tolua_S,1,0);
short a_Xp_delta = ((short) tolua_tonumber(tolua_S,2,0)); short a_Xp_delta = ((short) tolua_tonumber(tolua_S,2,0));
#ifndef TOLUA_RELEASE #ifndef TOLUA_RELEASE
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'AddExperience'", NULL); if (!self) tolua_error(tolua_S,"invalid 'self' in function 'DeltaExperience'", NULL);
#endif #endif
{ {
short tolua_ret = (short) self->AddExperience(a_Xp_delta); short tolua_ret = (short) self->DeltaExperience(a_Xp_delta);
tolua_pushnumber(tolua_S,(lua_Number)tolua_ret); tolua_pushnumber(tolua_S,(lua_Number)tolua_ret);
} }
} }
return 1; return 1;
#ifndef TOLUA_RELEASE #ifndef TOLUA_RELEASE
tolua_lerror: tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'AddExperience'.",&tolua_err); tolua_error(tolua_S,"#ferror in function 'DeltaExperience'.",&tolua_err);
return 0;
#endif
}
#endif //#ifndef TOLUA_DISABLE
/* method: SpendExperience of class cPlayer */
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_SpendExperience00
static int tolua_AllToLua_cPlayer_SpendExperience00(lua_State* tolua_S)
{
#ifndef TOLUA_RELEASE
tolua_Error tolua_err;
if (
!tolua_isusertype(tolua_S,1,"cPlayer",0,&tolua_err) ||
!tolua_isnumber(tolua_S,2,0,&tolua_err) ||
!tolua_isnoobj(tolua_S,3,&tolua_err)
)
goto tolua_lerror;
else
#endif
{
cPlayer* self = (cPlayer*) tolua_tousertype(tolua_S,1,0);
short a_Xp_delta = ((short) tolua_tonumber(tolua_S,2,0));
#ifndef TOLUA_RELEASE
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'SpendExperience'", NULL);
#endif
{
short tolua_ret = (short) self->SpendExperience(a_Xp_delta);
tolua_pushnumber(tolua_S,(lua_Number)tolua_ret);
}
}
return 1;
#ifndef TOLUA_RELEASE
tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'SpendExperience'.",&tolua_err);
return 0; return 0;
#endif #endif
} }
@ -30485,8 +30451,7 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
tolua_constant(tolua_S,"DROWNING_TICKS",cPlayer::DROWNING_TICKS); tolua_constant(tolua_S,"DROWNING_TICKS",cPlayer::DROWNING_TICKS);
tolua_constant(tolua_S,"MIN_EXPERIENCE",cPlayer::MIN_EXPERIENCE); tolua_constant(tolua_S,"MIN_EXPERIENCE",cPlayer::MIN_EXPERIENCE);
tolua_function(tolua_S,"SetCurrentExperience",tolua_AllToLua_cPlayer_SetCurrentExperience00); tolua_function(tolua_S,"SetCurrentExperience",tolua_AllToLua_cPlayer_SetCurrentExperience00);
tolua_function(tolua_S,"AddExperience",tolua_AllToLua_cPlayer_AddExperience00); tolua_function(tolua_S,"DeltaExperience",tolua_AllToLua_cPlayer_DeltaExperience00);
tolua_function(tolua_S,"SpendExperience",tolua_AllToLua_cPlayer_SpendExperience00);
tolua_function(tolua_S,"GetXpLifetimeTotal",tolua_AllToLua_cPlayer_GetXpLifetimeTotal00); tolua_function(tolua_S,"GetXpLifetimeTotal",tolua_AllToLua_cPlayer_GetXpLifetimeTotal00);
tolua_function(tolua_S,"GetCurrentXp",tolua_AllToLua_cPlayer_GetCurrentXp00); tolua_function(tolua_S,"GetCurrentXp",tolua_AllToLua_cPlayer_GetCurrentXp00);
tolua_function(tolua_S,"GetXpLevel",tolua_AllToLua_cPlayer_GetXpLevel00); tolua_function(tolua_S,"GetXpLevel",tolua_AllToLua_cPlayer_GetXpLevel00);

View File

@ -1,6 +1,6 @@
/* /*
** Lua binding: AllToLua ** Lua binding: AllToLua
** Generated automatically by tolua++-1.0.92 on 11/16/13 21:19:33. ** Generated automatically by tolua++-1.0.92 on 11/16/13 21:58:48.
*/ */
/* Exported function */ /* Exported function */

View File

@ -338,7 +338,7 @@ float cPlayer::GetXpPercentage()
bool cPlayer::SetCurrentExperience(short int a_XpTotal) bool cPlayer::SetCurrentExperience(short int a_XpTotal)
{ {
if(!(a_XpTotal >= 0) || (a_XpTotal > (SHRT_MAX - m_CurrentXp))) if(!(a_XpTotal >= 0) || (a_XpTotal > (SHRT_MAX - m_LifetimeTotalXp)))
{ {
LOGWARNING("Tried to update experiece with an invalid Xp value: %d", a_XpTotal); LOGWARNING("Tried to update experiece with an invalid Xp value: %d", a_XpTotal);
return false; //oops, they gave us a dodgey number return false; //oops, they gave us a dodgey number
@ -356,12 +356,13 @@ bool cPlayer::SetCurrentExperience(short int a_XpTotal)
short cPlayer::AddExperience(short a_Xp_delta) short cPlayer::DeltaExperience(short a_Xp_delta)
{ {
if(a_Xp_delta < 0) //ToDo: figure out a better name?...
if(a_Xp_delta > (SHRT_MAX - m_LifetimeTotalXp) || (m_CurrentXp + a_Xp_delta) < MIN_EXPERIENCE)
{ {
// Value was negative, abort and report // Value was negative, abort and report
LOGWARNING("Attempt was made to increment Xp by %d, must be positive", LOGWARNING("Attempt was made to increment Xp by %d, which was invalid",
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?
} }
@ -369,7 +370,10 @@ short cPlayer::AddExperience(short a_Xp_delta)
m_CurrentXp += a_Xp_delta; m_CurrentXp += a_Xp_delta;
// Update total for score calculation // Update total for score calculation
if(a_Xp_delta > 0)
{
m_LifetimeTotalXp += a_Xp_delta; m_LifetimeTotalXp += a_Xp_delta;
}
LOGD("Player \"%s\" earnt %d experience, total is now: %d", LOGD("Player \"%s\" earnt %d experience, total is now: %d",
m_PlayerName.c_str(), a_Xp_delta, m_XpTotal); m_PlayerName.c_str(), a_Xp_delta, m_XpTotal);
@ -384,31 +388,6 @@ short cPlayer::AddExperience(short a_Xp_delta)
short cPlayer::SpendExperience(short a_Xp_delta)
{
if(a_Xp_delta < 0)
{
// Value was negative, abort and report
LOGWARNING("Attempt was made to decrement Xp by %d, must be positive",
a_Xp_delta);
return -1; // Should we instead just return the current Xp?
}
m_CurrentXp -= a_Xp_delta;
LOGD("Player \"%s\" spent %d experience, total is now: %d",
m_PlayerName.c_str(), a_Xp_delta, m_XpTotal);
// Set experience to be updated
m_bDirtyExperience = true;
return m_CurrentXp;
}
void cPlayer::StartChargingBow(void) void cPlayer::StartChargingBow(void)
{ {
LOGD("Player \"%s\" started charging their bow", m_PlayerName.c_str()); LOGD("Player \"%s\" started charging their bow", m_PlayerName.c_str());

View File

@ -74,13 +74,10 @@ public:
*/ */
bool SetCurrentExperience(short a_XpTotal); bool SetCurrentExperience(short a_XpTotal);
/* Adds Xp, "should" not inc more than MAX_EXPERIENCE_ORB_SIZE unless you're a plugin being funny, *cough* cheating /* changes Xp by Xp_delta, you "shouldn't" not inc more than MAX_EXPERIENCE_ORB_SIZE
Returns the new current experience, -1 on error Returns the new current experience, -1 on error
*/ */
short AddExperience(short a_Xp_delta); short DeltaExperience(short a_Xp_delta);
/// "Spend" some experience - ie on enchanting, returns new currentXp
short SpendExperience(short a_Xp_delta);
/// Gets the experience total - XpTotal for score on death /// Gets the experience total - XpTotal for score on death
inline short GetXpLifetimeTotal(void) { return m_LifetimeTotalXp; } inline short GetXpLifetimeTotal(void) { return m_LifetimeTotalXp; }