X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fstate.qc;h=ea936185b95ee2b1227a58be5664a7e2ecfda30c;hp=e73bfa24fd481eacec76cc216f84f3693c9a25e7;hb=d865de7a9a17c5a1d9286aec40f68c3530697660;hpb=5e813f65d212e2cfc5c32eae682c0a1b0c0f73da diff --git a/qcsrc/common/state.qc b/qcsrc/common/state.qc index e73bfa24fd..ea936185b9 100644 --- a/qcsrc/common/state.qc +++ b/qcsrc/common/state.qc @@ -16,19 +16,16 @@ void PlayerState_detach(entity this) if (!ps) return; // initial connect PS(this) = NULL; - ps.m_switchweapon = WEP_Null; - ps.m_weapon = WEP_Null; - ps.m_switchingweapon = WEP_Null; + if (ps.m_client != this) return; // don't own state, spectator ps.ps_push(ps, this); - if (ps.m_client != this) return; // don't own state, spectator FOREACH_CLIENT(PS(it) == ps, { PS(it) = NULL; }); delete(ps); Inventory_delete(this); } -void GetCvars(entity this, int); +void GetCvars(entity this, entity store, int); void DecodeLevelParms(entity this); void PlayerScore_Attach(entity this); void ClientData_Attach(entity this); @@ -43,15 +40,14 @@ void ClientState_attach(entity this) { this._cs = NEW(ClientState, this); - GetCvars(this, 0); // get other cvars from player - - if (IS_REAL_CLIENT(this)) { PlayerStats_PlayerBasic_CheckUpdate(this); } + GetCvars(this, CS(this), 0); // get other cvars from player // TODO: fold all of these into ClientState DecodeLevelParms(this); PlayerScore_Attach(this); + PlayerStats_PlayerBasic_CheckUpdate(this); ClientData_Attach(this); accuracy_init(this); entcs_attach(this); @@ -64,7 +60,7 @@ void ClientState_attach(entity this) void bot_clientdisconnect(entity this); void W_HitPlotClose(entity this); -void anticheat_report(entity this); +void anticheat_report_to_eventlog(entity this); void playerdemo_shutdown(entity this); void entcs_detach(entity this); void accuracy_free(entity this); @@ -73,18 +69,18 @@ void PlayerScore_Detach(entity this); void ClientState_detach(entity this) { + GetCvars(this, CS(this), -1); // free cvars TODO: is this still needed now that it's stored on the clientstate entity? + accuracy_free(this); // TODO: needs to be before CS() is deleted! + PlayerScore_Detach(this); // what ^they^ said + W_HitPlotClose(this); + ClientData_Detach(this); delete(CS(this)); this._cs = NULL; - GetCvars(this, -1); // free cvars bot_clientdisconnect(this); - W_HitPlotClose(this); - anticheat_report(this); + anticheat_report_to_eventlog(this); playerdemo_shutdown(this); entcs_detach(this); - accuracy_free(this); - ClientData_Detach(this); - PlayerScore_Detach(this); }