4 * Purpose: common player state, usable on client and server
5 * Client: singleton representing the viewed player
6 * Server: instance per client, clients decoupled from players
8 CLASS(PlayerState, Object)
9 ATTRIB(PlayerState, m_client, entity, NULL)
10 CONSTRUCTOR(PlayerState, entity client)
12 CONSTRUCT(PlayerState);
13 this.m_client = client;
15 ATTRIB(PlayerState, m_switchingweapon, Weapon, Weapons_from(-1))
16 ATTRIB(PlayerState, m_switchweapon, Weapon, Weapons_from(-1))
17 ATTRIB(PlayerState, m_weapon, Weapon, Weapons_from(-1))
18 METHOD(PlayerState, ps_push, void(PlayerState this, entity cl))
20 STAT(ACTIVEWEAPON, cl) = this.m_weapon.m_id;
21 STAT(SWITCHINGWEAPON, cl) = this.m_switchingweapon.m_id;
22 STAT(SWITCHWEAPON, cl) = this.m_switchweapon.m_id;
28 #define PS(this) (this._ps)
30 PlayerState PS(entity this) { assert(IS_CLIENT(this)); return this._ps; }
33 // TODO: renew on death
34 void PlayerState_attach(entity this);
35 void PlayerState_detach(entity this);
38 * Purpose: common client state, usable on client and server
39 * Client: singleton representing the viewed player
40 * Server: instance per client
42 CLASS(ClientState, Object)
43 ATTRIB(ClientState, m_client, entity, NULL)
44 CONSTRUCTOR(ClientState, entity client)
46 CONSTRUCT(ClientState);
47 this.m_client = client;
54 #define CS(this) (this._cs)
56 ClientState CS(entity this) { assert(IS_CLIENT(this)); assert(this._cs); return this._cs; }
59 void ClientState_attach(entity this);
60 void ClientState_detach(entity this);