#include "mapinfo.qc"
#include "playerstats.qc"
+#ifdef SVQC
+ #include "state.qc"
+#endif
#include "util.qc"
#ifndef CSQC
--- /dev/null
+#include "state.qh"
+
+void Inventory_new(entity this);
+void Inventory_delete(entity this);
+
+void PlayerState_attach(entity this)
+{
+ this._ps = NEW(PlayerState, this);
+
+ Inventory_new(this);
+}
+
+void PlayerState_detach(entity this)
+{
+ if (!PS(this)) return; // initial connect
+ FOREACH_CLIENT(PS(it) == PS(this), { PS(it) = NULL; });
+ remove(PS(this));
+ this._ps = NULL;
+
+ Inventory_delete(self);
+}
+
+void GetCvars(int);
+void DecodeLevelParms(entity this);
+void PlayerScore_Attach(entity this);
+void ClientData_Attach(entity this);
+void accuracy_init(entity this);
+void entcs_attach(entity this);
+void playerdemo_init(entity this);
+void anticheat_init(entity this);
+void W_HitPlotOpen(entity this);
+void bot_clientconnect(entity this);
+
+void ClientState_attach(entity this)
+{
+ this._cs = NEW(ClientState, this);
+
+ GetCvars(0); // get other cvars from player
+
+ // TODO: xonstat elo.txt support, until then just 404s
+ if (false && IS_REAL_CLIENT(this)) { PlayerStats_PlayerBasic_CheckUpdate(this); }
+
+ // TODO: fold all of these into ClientState
+
+ DecodeLevelParms(this);
+
+ PlayerScore_Attach(this);
+ ClientData_Attach(this);
+ accuracy_init(this);
+ entcs_attach(this);
+ playerdemo_init(this);
+ anticheat_init(this);
+ W_HitPlotOpen(this);
+
+ bot_clientconnect(this);
+}
+
+void bot_clientdisconnect();
+void W_HitPlotClose(entity this);
+void anticheat_report();
+void playerdemo_shutdown();
+void entcs_detach(entity this);
+void accuracy_free(entity this);
+void ClientData_Detach(entity this);
+void PlayerScore_Detach(entity this);
+
+void ClientState_detach(entity this)
+{
+ remove(CS(this));
+ this._cs = NULL;
+
+ GetCvars(-1); // free cvars
+
+ bot_clientdisconnect();
+
+ W_HitPlotClose(this);
+ anticheat_report();
+ playerdemo_shutdown();
+ entcs_detach(this);
+ accuracy_free(self);
+ ClientData_Detach(this);
+ PlayerScore_Detach(self);
+}
PlayerState PS(entity this) { assert(IS_CLIENT(this)); return this._ps; }
#endif
-void Inventory_new(entity this);
-void Inventory_delete(entity this);
-
// TODO: renew on death
-
-void PlayerState_attach(entity this)
-{
- this._ps = NEW(PlayerState, this);
-
- Inventory_new(this);
-}
-
-void PlayerState_detach(entity this)
-{
- if (!PS(this)) return; // initial connect
- FOREACH_CLIENT(PS(it) == PS(this), { PS(it) = NULL; });
- remove(PS(this));
- this._ps = NULL;
-
- Inventory_delete(self);
-}
+void PlayerState_attach(entity this);
+void PlayerState_detach(entity this);
/**
* Purpose: common client state, usable on client and server
ClientState CS(entity this) { assert(IS_CLIENT(this)); assert(this._cs); return this._cs; }
#endif
-void GetCvars(int);
-void DecodeLevelParms(entity this);
-void PlayerScore_Attach(entity this);
-void ClientData_Attach(entity this);
-void accuracy_init(entity this);
-void entcs_attach(entity this);
-void playerdemo_init(entity this);
-void anticheat_init(entity this);
-void W_HitPlotOpen(entity this);
-void bot_clientconnect(entity this);
-
-void ClientState_attach(entity this)
-{
- this._cs = NEW(ClientState, this);
-
- GetCvars(0); // get other cvars from player
-
- // TODO: xonstat elo.txt support, until then just 404s
- if (false && IS_REAL_CLIENT(this)) { PlayerStats_PlayerBasic_CheckUpdate(this); }
-
- // TODO: fold all of these into ClientState
-
- DecodeLevelParms(this);
-
- PlayerScore_Attach(this);
- ClientData_Attach(this);
- accuracy_init(this);
- entcs_attach(this);
- playerdemo_init(this);
- anticheat_init(this);
- W_HitPlotOpen(this);
-
- bot_clientconnect(this);
-}
-
-void bot_clientdisconnect();
-void W_HitPlotClose(entity this);
-void anticheat_report();
-void playerdemo_shutdown();
-void entcs_detach(entity this);
-void accuracy_free(entity this);
-void ClientData_Detach(entity this);
-void PlayerScore_Detach(entity this);
-
-void ClientState_detach(entity this)
-{
- remove(CS(this));
- this._cs = NULL;
-
- GetCvars(-1); // free cvars
-
- bot_clientdisconnect();
-
- W_HitPlotClose(this);
- anticheat_report();
- playerdemo_shutdown();
- entcs_detach(this);
- accuracy_free(self);
- ClientData_Detach(this);
- PlayerScore_Detach(self);
-}
+void ClientState_attach(entity this);
+void ClientState_detach(entity this);
#if defined(CSQC)
#elif defined(MENUQC)
#elif defined(SVQC)
- #include "../common/vehicles/all.qh"
+ #include <common/state.qh>
+ #include <common/vehicles/all.qh>
#include "antilag.qh"
#endif
if(e.vehicle)
antilag_record(e.vehicle, t);
- if(time < e.(antilag_times[e.antilag_index]))
+ if(time < CS(e).antilag_times[e.antilag_index])
return;
e.antilag_index = e.antilag_index + 1;
if(e.antilag_index >= ANTILAG_MAX_ORIGINS)
e.antilag_index = 0;
- e.(antilag_times[e.antilag_index]) = t;
- e.(antilag_origins[e.antilag_index]) = e.origin;
+ CS(e).antilag_times[e.antilag_index] = t;
+ CS(e).antilag_origins[e.antilag_index] = e.origin;
if(e.antilag_debug)
te_spark(antilag_takebackorigin(e, t - e.antilag_debug), '0 0 0', 32);
float antilag_find(entity e, float t)
{
for(int i = e.antilag_index; i > 0; --i)
- if(e.(antilag_times[i]) >= t)
- if(e.(antilag_times[i - 1]) < t)
+ if(CS(e).antilag_times[i] >= t)
+ if(CS(e).antilag_times[i - 1] < t)
return i - 1;
- if(e.(antilag_times[0]) >= t)
- if(e.(antilag_times[ANTILAG_MAX_ORIGINS - 1]) < t)
+ if(CS(e).antilag_times[0] >= t)
+ if(CS(e).antilag_times[ANTILAG_MAX_ORIGINS - 1] < t)
return ANTILAG_MAX_ORIGINS - 1;
for(int i = ANTILAG_MAX_ORIGINS - 1; i > e.antilag_index + 1; --i)
- if(e.(antilag_times[i]) >= t)
- if(e.(antilag_times[i - 1]) < t)
+ if(CS(e).antilag_times[i] >= t)
+ if(CS(e).antilag_times[i - 1] < t)
return i - 1;
// if we get here, t is sandwiched nowhere, so let's assume it's in the present
if (i1 >= ANTILAG_MAX_ORIGINS)
i1 = 0;
- return lerpv(e.(antilag_times[i0]), e.(antilag_origins[i0]), e.(antilag_times[i1]), e.(antilag_origins[i1]), t);
+ return lerpv(CS(e).antilag_times[i0], CS(e).antilag_origins[i0], CS(e).antilag_times[i1], CS(e).antilag_origins[i1], t);
}
vector antilag_takebackavgvelocity(entity e, float t0, float t1)
antilag_restore(e);
for (int i = 0; i < ANTILAG_MAX_ORIGINS; ++i)
{
- e.(antilag_times[i]) = -2342;
- e.(antilag_origins[i]) = e.origin;
+ CS(e).antilag_times[i] = -2342;
+ CS(e).antilag_origins[i] = e.origin;
}
e.antilag_index = ANTILAG_MAX_ORIGINS - 1; // next one is 0
}
#include "bot/navigation.qh"
#include "../common/ent_cs.qh"
-#include "../common/state.qh"
+#include <common/state.qh>
#include "../common/triggers/teleporters.qh"