X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=qcsrc%2Fcommon%2Fstate.qh;h=850e7ac9db6b67cd77650cd005ae4729a4148ce5;hb=87bec07409c336c956a798556064c6819ad40a4d;hp=177935445db8621fd8f573a17a67cd38969654c5;hpb=cb6b4b889a27536efb9fdaa86a2fbc928da872c8;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/state.qh b/qcsrc/common/state.qh index 177935445d..850e7ac9db 100644 --- a/qcsrc/common/state.qh +++ b/qcsrc/common/state.qh @@ -1,46 +1,25 @@ +#pragma once + /** * Purpose: common player state, usable on client and server * Client: singleton representing the viewed player * Server: instance per client, clients decoupled from players */ CLASS(PlayerState, Object) - ATTRIB(PlayerState, m_client, entity, NULL) + ATTRIB(PlayerState, m_client, entity); CONSTRUCTOR(PlayerState, entity client) { CONSTRUCT(PlayerState); this.m_client = client; } - ATTRIB(PlayerState, m_switchingweapon, Weapon, Weapons_from(-1)) - ATTRIB(PlayerState, m_switchweapon, Weapon, Weapons_from(-1)) - ATTRIB(PlayerState, m_weapon, Weapon, Weapons_from(-1)) - METHOD(PlayerState, ps_push, void(PlayerState this, entity cl)) - { - STAT(ACTIVEWEAPON, cl) = this.m_weapon.m_id; - STAT(SWITCHINGWEAPON, cl) = this.m_switchingweapon.m_id; - STAT(SWITCHWEAPON, cl) = this.m_switchweapon.m_id; - } ENDCLASS(PlayerState) .PlayerState _ps; -#if NDEBUG - #define PS(this) (this._ps) -#else - PlayerState PS(entity this) { assert(IS_CLIENT(this)); return this._ps; } -#endif +#define PS(this) ((this)._ps) -void PlayerState_attach(entity this) -{ - // TODO: dynamic - // this._ps = NEW(PlayerState, this); -} - -void PlayerState_detach(entity this) -{ - // TODO: dynamic - // if (!PS(this)) return; // initial connect - // remove(PS(this)); - // this._ps = NULL; -} +// TODO: renew on death +void PlayerState_attach(entity this); +void PlayerState_detach(entity this); /** * Purpose: common client state, usable on client and server @@ -48,7 +27,7 @@ void PlayerState_detach(entity this) * Server: instance per client */ CLASS(ClientState, Object) - ATTRIB(ClientState, m_client, entity, NULL) + ATTRIB(ClientState, m_client, entity); CONSTRUCTOR(ClientState, entity client) { CONSTRUCT(ClientState); @@ -61,18 +40,8 @@ ENDCLASS(ClientState) #if NDEBUG #define CS(this) (this._cs) #else - ClientState CS(entity this) { assert(IS_CLIENT(this)); assert(this._cs); return this._cs; } + ClientState CS(Client this) { TC(Client, this); assert(this._cs); return this._cs; } #endif -void ClientState_attach(entity this) -{ - this._cs = NEW(ClientState, this); - this._ps = NEW(PlayerState, this); // TODO: dynamic -} - -void ClientState_detach(entity this) -{ - remove(CS(this)); - this._cs = NULL; - this._ps = NULL; // TODO: dynamic -} +void ClientState_attach(entity this); +void ClientState_detach(entity this);