performance wins!
[carveJwlIkooP6JGAAIwe30JlM.git] / gameserver.h
index 2f5cfd4600bab13ced741ad7f3f11eee1b00bd8c..07ba7a0d62d3df8e8cf20078517202e74fb485e9 100644 (file)
@@ -2,6 +2,7 @@
 #define GAMESERVER_H
 
 #define VG_SERVER
+
 #include "vg/vg.h"
 #include "vg/vg_steam.h"
 #include "vg/vg_steam_networking.h"
 #include "highscores.h"
 #include <sys/socket.h>
 
+#define CLIENT_KNOWLEDGE_SAME_WORLD0 0x1
+#define CLIENT_KNOWLEDGE_SAME_WORLD1 0x2
+#define CLIENT_KNOWLEDGE_FRIENDS     0x4 /* TODO? */
+
 struct {
    HSteamNetPollGroup client_group;
    EServerMode auth_mode;
 
    struct gameserver_client {
       int active;
+      u32 version;
       int authenticated;
       HSteamNetConnection connection;
       char username[ NETWORK_USERNAME_MAX ];
-      char items[k_netmsg_playeritem_max][ADDON_UID_MAX];
+
+      u8 instance;
+
+      struct gameserver_item {
+         char uid[ADDON_UID_MAX];
+         u32  hash;
+      }
+      items[k_netmsg_playeritem_max];
+
+      char region[ NETWORK_REGION_MAX ];
+      u32  region_flags;
+
+      u64  steamid;
    }
    clients[ NETWORK_MAX_PLAYERS ];
 
+   u8 client_knowledge_mask[ (NETWORK_MAX_PLAYERS*(NETWORK_MAX_PLAYERS-1))/2 ];
    u8 app_symmetric_key[ k_nSteamEncryptedAppTicketSymmetricKeyLen ];
 
+   /* TODO: Consider removing this */
    int monitor_fd;
    int monitor_clients[ 4 ];
 }