]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/state.qh
Makefile: use `-I.`
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / state.qh
index 6c0b327afb843c636d5f99d21d8d93793e16d66e..177935445db8621fd8f573a17a67cd38969654c5 100644 (file)
@@ -1,75 +1,78 @@
 /**
- * Purpose: common client state, usable on client and server
+ * Purpose: common player state, usable on client and server
  * Client: singleton representing the viewed player
- * Server: instance per client
+ * Server: instance per client, clients decoupled from players
  */
-CLASS(ClientState, Object)
-       ATTRIB(ClientState, m_client, entity, NULL)
-       CONSTRUCTOR(ClientState, entity client)
+CLASS(PlayerState, Object)
+       ATTRIB(PlayerState, m_client, entity, NULL)
+       CONSTRUCTOR(PlayerState, entity client)
        {
-               CONSTRUCT(ClientState);
+               CONSTRUCT(PlayerState);
                this.m_client = client;
        }
-ENDCLASS(ClientState)
-
-.ClientState _cs;
+       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 CS(this) (this._cs)
+       #define PS(this) (this._ps)
 #else
-ClientState CS(entity this) { assert(IS_CLIENT(this)); assert(this._cs); return this._cs; }
+       PlayerState PS(entity this) { assert(IS_CLIENT(this)); return this._ps; }
 #endif
 
-void ClientState_attach(entity this)
+void PlayerState_attach(entity this)
 {
-       this._cs = NEW(ClientState, this);
+       // TODO: dynamic
+       // this._ps = NEW(PlayerState, this);
 }
 
-void ClientState_detach(entity this)
+void PlayerState_detach(entity this)
 {
-       remove(CS(this));
-       this._cs = NULL;
+       // TODO: dynamic
+       // if (!PS(this)) return;  // initial connect
+       // remove(PS(this));
+       // this._ps = NULL;
 }
 
-
-
 /**
- * Purpose: common player state, usable on client and server
+ * Purpose: common client state, usable on client and server
  * Client: singleton representing the viewed player
- * Server: instance per client, clients decoupled from players
+ * Server: instance per client
  */
-CLASS(PlayerState, Object)
-       ATTRIB(PlayerState, m_client, entity, NULL)
-       CONSTRUCTOR(PlayerState, entity client)
+CLASS(ClientState, Object)
+       ATTRIB(ClientState, m_client, entity, NULL)
+       CONSTRUCTOR(ClientState, entity client)
        {
-               CONSTRUCT(PlayerState);
+               CONSTRUCT(ClientState);
                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))
-       {
-               STAT(SWITCHINGWEAPON, this.m_client) = this.m_switchingweapon.m_id;
-               STAT(SWITCHWEAPON, this.m_client) = this.m_switchweapon.m_id;
-       }
-ENDCLASS(PlayerState)
+ENDCLASS(ClientState)
+
+.ClientState _cs;
 
-.PlayerState _ps;
 #if NDEBUG
-#define PS(this) (this._ps)
+       #define CS(this) (this._cs)
 #else
-PlayerState PS(entity this) { assert(IS_CLIENT(this)); return this._ps; }
+       ClientState CS(entity this) { assert(IS_CLIENT(this)); assert(this._cs); return this._cs; }
 #endif
 
-void PlayerState_attach(entity this)
+void ClientState_attach(entity this)
 {
-       this._ps = NEW(PlayerState, this);
+       this._cs = NEW(ClientState, this);
+       this._ps = NEW(PlayerState, this);  // TODO: dynamic
 }
 
-void PlayerState_detach(entity this)
+void ClientState_detach(entity this)
 {
-       if (!PS(this)) return;  // initial connect
-       remove(PS(this));
-       this._ps = NULL;
+       remove(CS(this));
+       this._cs = NULL;
+       this._ps = NULL;  // TODO: dynamic
 }