foxygit / doom Log in
commit 65c3fa788f31c6a9524f38fbbac9f0f81fc0bbae
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Thu May 7 23:29:29 2009 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Thu May 7 23:29:29 2009 +0000

    Diff tics containing Heretic/Hexen fields.

    Subversion-branch: /branches/raven-branch
    Subversion-revision: 1512
---
 src/net_defs.h     |  2 ++
 src/net_structrw.c | 36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/src/net_defs.h b/src/net_defs.h
index 3fefc4db..cb491124 100644
--- a/src/net_defs.h
+++ b/src/net_defs.h
@@ -152,6 +152,8 @@ typedef struct
 #define NET_TICDIFF_BUTTONS      (1 << 3)
 #define NET_TICDIFF_CONSISTANCY  (1 << 4)
 #define NET_TICDIFF_CHATCHAR     (1 << 5)
+#define NET_TICDIFF_LOOKFLY      (1 << 6)
+#define NET_TICDIFF_ARTIFACT     (1 << 7)

 typedef struct
 {
diff --git a/src/net_structrw.c b/src/net_structrw.c
index f049c4c0..01933ebb 100644
--- a/src/net_structrw.c
+++ b/src/net_structrw.c
@@ -132,6 +132,10 @@ void NET_WriteTiccmdDiff(net_packet_t *packet, net_ticdiff_t *diff,
         NET_WriteInt8(packet, diff->cmd.consistancy);
     if (diff->diff & NET_TICDIFF_CHATCHAR)
         NET_WriteInt8(packet, diff->cmd.chatchar);
+    if (diff->diff & NET_TICDIFF_LOOKFLY)
+        NET_WriteInt8(packet, diff->cmd.lookfly);
+    if (diff->diff & NET_TICDIFF_ARTIFACT)
+        NET_WriteInt8(packet, diff->cmd.arti);
 }

 boolean NET_ReadTiccmdDiff(net_packet_t *packet, net_ticdiff_t *diff,
@@ -198,6 +202,20 @@ boolean NET_ReadTiccmdDiff(net_packet_t *packet, net_ticdiff_t *diff,
         diff->cmd.chatchar = val;
     }

+    if (diff->diff & NET_TICDIFF_LOOKFLY)
+    {
+        if (!NET_ReadInt8(packet, &val))
+            return false;
+        diff->cmd.lookfly = val;
+    }
+
+    if (diff->diff & NET_TICDIFF_ARTIFACT)
+    {
+        if (!NET_ReadInt8(packet, &val))
+            return false;
+        diff->cmd.arti = val;
+    }
+
     return true;
 }

@@ -218,6 +236,13 @@ void NET_TiccmdDiff(ticcmd_t *tic1, ticcmd_t *tic2, net_ticdiff_t *diff)
         diff->diff |= NET_TICDIFF_CONSISTANCY;
     if (tic2->chatchar != 0)
         diff->diff |= NET_TICDIFF_CHATCHAR;
+
+    // Hexen-specific:
+
+    if (tic1->lookfly != tic2->lookfly)
+        diff->diff |= NET_TICDIFF_LOOKFLY;
+    if (tic2->arti != 0)
+        diff->diff |= NET_TICDIFF_ARTIFACT;
 }

 void NET_TiccmdPatch(ticcmd_t *src, net_ticdiff_t *diff, ticcmd_t *dest)
@@ -241,6 +266,17 @@ void NET_TiccmdPatch(ticcmd_t *src, net_ticdiff_t *diff, ticcmd_t *dest)
         dest->chatchar = diff->cmd.chatchar;
     else
         dest->chatchar = 0;
+
+    // Heretic/Hexen specific:
+
+    if (diff->diff & NET_TICDIFF_LOOKFLY)
+        dest->lookfly = diff->cmd.lookfly;
+
+    if (diff->diff & NET_TICDIFF_ARTIFACT)
+        dest->arti = diff->cmd.arti;
+    else
+        dest->arti = 0;
+
 }

 //