1
0
Fork 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)
a_Player:AddExperience(200);
a_Player:DelatExperience(200);
return true;
end

View File

@ -1,6 +1,6 @@
/*
** 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
@ -7684,9 +7684,9 @@ static int tolua_AllToLua_cPlayer_SetCurrentExperience00(lua_State* tolua_S)
}
#endif //#ifndef TOLUA_DISABLE
/* method: AddExperience of class cPlayer */
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_AddExperience00
static int tolua_AllToLua_cPlayer_AddExperience00(lua_State* tolua_S)
/* method: DeltaExperience of class cPlayer */
#ifndef TOLUA_DISABLE_tolua_AllToLua_cPlayer_DeltaExperience00
static int tolua_AllToLua_cPlayer_DeltaExperience00(lua_State* tolua_S)
{
#ifndef TOLUA_RELEASE
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);
short a_Xp_delta = ((short) tolua_tonumber(tolua_S,2,0));
#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
{
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);
}
}
return 1;
#ifndef TOLUA_RELEASE
tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'AddExperience'.",&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);
tolua_error(tolua_S,"#ferror in function 'DeltaExperience'.",&tolua_err);
return 0;
#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,"MIN_EXPERIENCE",cPlayer::MIN_EXPERIENCE);
tolua_function(tolua_S,"SetCurrentExperience",tolua_AllToLua_cPlayer_SetCurrentExperience00);
tolua_function(tolua_S,"AddExperience",tolua_AllToLua_cPlayer_AddExperience00);
tolua_function(tolua_S,"SpendExperience",tolua_AllToLua_cPlayer_SpendExperience00);
tolua_function(tolua_S,"DeltaExperience",tolua_AllToLua_cPlayer_DeltaExperience00);
tolua_function(tolua_S,"GetXpLifetimeTotal",tolua_AllToLua_cPlayer_GetXpLifetimeTotal00);
tolua_function(tolua_S,"GetCurrentXp",tolua_AllToLua_cPlayer_GetCurrentXp00);
tolua_function(tolua_S,"GetXpLevel",tolua_AllToLua_cPlayer_GetXpLevel00);

View File

@ -1,6 +1,6 @@
/*
** 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 */

View File

@ -338,7 +338,7 @@ float cPlayer::GetXpPercentage()
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);
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
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);
return -1; // Should we instead just return the current Xp?
}
@ -369,34 +370,12 @@ short cPlayer::AddExperience(short a_Xp_delta)
m_CurrentXp += a_Xp_delta;
// Update total for score calculation
m_LifetimeTotalXp += a_Xp_delta;
LOGD("Player \"%s\" earnt %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;
}
short cPlayer::SpendExperience(short a_Xp_delta)
{
if(a_Xp_delta < 0)
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_LifetimeTotalXp += a_Xp_delta;
}
m_CurrentXp -= a_Xp_delta;
LOGD("Player \"%s\" spent %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);
// Set experience to be updated

View File

@ -74,13 +74,10 @@ public:
*/
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
*/
short AddExperience(short a_Xp_delta);
/// "Spend" some experience - ie on enchanting, returns new currentXp
short SpendExperience(short a_Xp_delta);
short DeltaExperience(short a_Xp_delta);
/// Gets the experience total - XpTotal for score on death
inline short GetXpLifetimeTotal(void) { return m_LifetimeTotalXp; }