From 35b32cb279049ff764534fdc153bf37b00c6a004 Mon Sep 17 00:00:00 2001 From: Roman Tetelman Date: Sat, 3 Oct 2009 13:12:54 +0000 Subject: * store credits in pers.credit instead of ps.stats[ PERS_CREDIT ] --- src/game/g_client.c | 15 +++++++++------ src/game/g_cmds.c | 2 +- src/game/g_local.h | 2 +- src/game/g_ptr.c | 5 +---- src/game/g_team.c | 19 ++++++------------- 5 files changed, 18 insertions(+), 25 deletions(-) (limited to 'src/game') diff --git a/src/game/g_client.c b/src/game/g_client.c index 1f1f7029..f0eaeeb0 100644 --- a/src/game/g_client.c +++ b/src/game/g_client.c @@ -91,15 +91,18 @@ void G_AddCreditToClient( gclient_t *client, short credit, qboolean cap ) if( !client ) return; - client->ps.persistant[ PERS_CREDIT ] += credit; - capAmount = client->ps.stats[ STAT_TEAM ] == TEAM_ALIENS ? + client->pers.credit += credit; + capAmount = client->pers.teamSelection == TEAM_ALIENS ? ALIEN_MAX_CREDITS : HUMAN_MAX_CREDITS; - if( cap && client->ps.persistant[ PERS_CREDIT ] > capAmount ) - client->ps.persistant[ PERS_CREDIT ] = capAmount; + if( cap && client->pers.credit > capAmount ) + client->pers.credit = capAmount; - if( client->ps.persistant[ PERS_CREDIT ] < 0 ) - client->ps.persistant[ PERS_CREDIT ] = 0; + if( client->pers.credit < 0 ) + client->pers.credit = 0; + + // Copy to ps so the client can access it + client->ps.persistant[ PERS_CREDIT ] = client->pers.credit; } diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c index 3a38fc85..f6164ac8 100644 --- a/src/game/g_cmds.c +++ b/src/game/g_cmds.c @@ -2975,7 +2975,7 @@ void Cmd_PTRCRestore_f( gentity_t *ent ) G_ChangeTeam( ent, connection->clientTeam ); // set the correct credit - ent->client->ps.persistant[ PERS_CREDIT ] = 0; + ent->client->pers.credit = 0; G_AddCreditToClient( ent->client, connection->clientCredit, qtrue ); } } diff --git a/src/game/g_local.h b/src/game/g_local.h index 05b9701b..0202be7e 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -324,7 +324,7 @@ typedef struct int nameChanges; // used to save persistant[] values while in SPECTATOR_FOLLOW mode - int savedCredit; + int credit; // votes qboolean vote; diff --git a/src/game/g_ptr.c b/src/game/g_ptr.c index 869df256..1afef0e9 100644 --- a/src/game/g_ptr.c +++ b/src/game/g_ptr.c @@ -62,10 +62,7 @@ void G_UpdatePTRConnection( gclient_t *client ) if( client && client->pers.connection ) { client->pers.connection->clientTeam = client->pers.teamSelection; - if( client->pers.teamSelection == TEAM_NONE ) - client->pers.connection->clientCredit = client->pers.savedCredit; - else - client->pers.connection->clientCredit = client->ps.persistant[ PERS_CREDIT ]; + client->pers.connection->clientCredit = client->pers.credit; } } diff --git a/src/game/g_team.c b/src/game/g_team.c index 856e0f20..5a2d5438 100644 --- a/src/game/g_team.c +++ b/src/game/g_team.c @@ -145,31 +145,24 @@ void G_ChangeTeam( gentity_t *ent, team_t newTeam ) if( oldTeam == TEAM_NONE ) { - // ps.persistant[] from a spectator cannot be trusted - ent->client->ps.persistant[ PERS_CREDIT ] = ent->client->pers.savedCredit; + // Copy credits to ps for the client + ent->client->ps.persistant[ PERS_CREDIT ] = ent->client->pers.credit; } else if( oldTeam == TEAM_HUMANS && newTeam == TEAM_ALIENS ) { // Convert from human to alien credits - ent->client->ps.persistant[ PERS_CREDIT ] = - (int)( ent->client->ps.persistant[ PERS_CREDIT ] * + ent->client->pers.credit = + (int)( ent->client->pers.credit * ALIEN_MAX_CREDITS / HUMAN_MAX_CREDITS + 0.5f ); } else if( oldTeam == TEAM_ALIENS && newTeam == TEAM_HUMANS ) { // Convert from alien to human credits - ent->client->ps.persistant[ PERS_CREDIT ] = - (int)( ent->client->ps.persistant[ PERS_CREDIT ] * + ent->client->pers.credit = + (int)( ent->client->pers.credit * HUMAN_MAX_CREDITS / ALIEN_MAX_CREDITS + 0.5f ); } - if( newTeam == TEAM_NONE ) - { - // save values before the client enters the spectator team and their - // ps.persistant[] values become trashed - ent->client->pers.savedCredit = ent->client->ps.persistant[ PERS_CREDIT ]; - } - ClientUserinfoChanged( ent->client->ps.clientNum ); if( oldTeam != TEAM_NONE && newTeam != TEAM_NONE ) -- cgit