server loopback tool
[carveJwlIkooP6JGAAIwe30JlM.git] / gameserver.h
index a3aa574b8114f539cd0b2424ebbbfe4f19d8ab2b..3d0e71383bf9b5a8a2d0afe73e1b77ffde16d923 100644 (file)
@@ -1,38 +1,56 @@
-#ifndef GAMESERVER_H
-#define GAMESERVER_H
-
+#pragma once
 #define VG_SERVER
-#include "vg/vg.h"
+
+#include "vg/vg_platform.h"
 #include "vg/vg_steam.h"
 #include "vg/vg_steam_networking.h"
 #include "vg/vg_steam_http.h"
 #include "vg/vg_steam_auth.h"
 #include "network_msg.h"
 #include "network_common.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 ];
+
+      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[ 32 ];
+   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 ];
+
+   bool loopback_test;
 }
 static gameserver = {
    .auth_mode = eServerModeAuthentication
 };
 
 static ISteamNetworkingSockets *hSteamNetworkingSockets = NULL;
-
-#endif /* GAMESERVER_H */