wind rushing sound
[carveJwlIkooP6JGAAIwe30JlM.git] / network_msg.h
index 6c072f14fc44196f9ce7f6af2912a0a2431cd908..dfd6dabad717bc6676416e8a858aa7114c501fba 100644 (file)
+/*
+ * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved
+ */
+
 #ifndef NETWORK_MSG_H
 #define NETWORK_MSG_H
 
 #include "vg/vg_stdint.h"
+#include "world_info.h"
+#include "vg/vg_platform.h"
+;
 
 #pragma pack(push,1)
 
 typedef struct netmsg_blank netmsg_blank;
-struct netmsg_blank
-{
-   u32 inetmsg_id;
-};
 enum{ k_inetmsg_blank = 0 };
-
-typedef struct netmsg_scores_request netmsg_scores_request;
-struct netmsg_scores_request
-{
-   u32 inetmsg_id;
+struct netmsg_blank{
+   u16 inetmsg_id;
 };
-enum{ k_inetmsg_scores_request = 1 };
-
-typedef struct netmsg_scores_info netmsg_scores_info;
-struct netmsg_scores_info
-{
-   u32 inetmsg_id;
-   
-   u32 record_count;
-   struct netmsg_score_record
-   {
-      u32 trackid;
-
-      struct netmsg_score_entry
-      {
-         u64 steamid64;
-         u16 points, time;
-      }
-      top10[10];
-   }
-   scores[];
-};
-enum{ k_inetmsg_scores_info = 2 };
 
+/* send after version */
 typedef struct netmsg_auth netmsg_auth;
+enum{ k_inetmsg_auth = 1 };
 struct netmsg_auth
 {
-   u32 inetmsg_id;
+   u16 inetmsg_id;
 
    u32 ticket_length;
    u8 ticket[];
 };
-enum{ k_inetmsg_auth = 3 };
+
+/* version should be sent before auth */
+typedef struct netmsg_version netmsg_version;
+enum{ k_inetmsg_version = 2 };
+struct netmsg_version{
+   u16 inetmsg_id;
+   u32 version;
+};
+
+/* server control 100 */
+
+/* player updates 200 */
+
+#define NETMSG_BOUNDARY_BIT 0x8000
+#define NETMSG_GATE_BOUNDARY_BIT 0x4000
+#define NETMSG_BOUNDARY_MASK (NETMSG_BOUNDARY_BIT|NETMSG_GATE_BOUNDARY_BIT)
+
+typedef struct netmsg_playerframe netmsg_playerframe;
+enum{ k_inetmsg_playerframe = 200 };
+struct netmsg_playerframe{
+   u16 inetmsg_id;
+   f64 timestamp;
+
+   u8 client, subsystem, 
+      instance_id, sound_effects;
+   u16 boundary_hash; /* used for animating correctly through gates, teleport..
+                         msb is a flip flop for teleporting
+                         second msb is flip flop for gate */
+
+   u8 animdata[];
+};
+
+typedef struct netmsg_playerjoin netmsg_playerjoin;
+enum{ k_inetmsg_playerjoin = 201 };
+struct netmsg_playerjoin{
+   u16 inetmsg_id;
+   u8 index;
+   u64 steamid;
+};
+
+typedef struct netmsg_playerleave netmsg_playerleave;
+enum{ k_inetmsg_playerleave = 202 };
+struct netmsg_playerleave{
+   u16 inetmsg_id;
+   u8 index;
+};
+
+typedef struct netmsg_playerusername netmsg_playerusername;
+enum{ k_inetmsg_playerusername = 203 };
+struct netmsg_playerusername{
+   u16 inetmsg_id;
+   u8 index;
+   char name[];
+};
+
+typedef struct netmsg_playeritem netmsg_playeritem;
+enum{ k_inetmsg_playeritem = 204 };
+struct netmsg_playeritem{
+   u16 inetmsg_id;
+   u8 client;
+   u8 type_index;
+   char uid[];
+};
+enum netmsg_playeritem_type {
+   k_netmsg_playeritem_board = 0,
+   k_netmsg_playeritem_player,
+   k_netmsg_playeritem_world0,
+   k_netmsg_playeritem_world1,
+   k_netmsg_playeritem_max
+};
+
+typedef struct netmsg_chat netmsg_chat;
+enum{ k_inetmsg_chat = 205 };
+struct netmsg_chat {
+   u16 inetmsg_id;
+   u8 client;
+   char msg[];
+};
+
+typedef struct netmsg_region netmsg_region;
+enum{ k_inetmsg_region = 206 };
+struct netmsg_region {
+   u16 inetmsg_id;
+   u8 client;
+   u32 flags;
+   char loc[];
+};
+
+/* requests 300 */
+typedef struct netmsg_request netmsg_request;
+enum{ k_inetmsg_request = 300, k_inetmsg_response = 301 };
+struct netmsg_request {
+   u16 inetmsg_id;
+   u8 id, status;
+   u8 q[];
+};
+
+enum request_status {
+  k_request_status_client_error = 0,
+  k_request_status_invalid_endpoint = 1,
+  k_request_status_unauthorized = 2,
+
+  k_request_status_server_error = 100,
+  k_request_status_out_of_memory = 101,
+  k_request_status_database_error = 102,
+
+  k_request_status_ok = 200,
+  k_request_status_not_found = 201
+};
 
 #pragma pack(pop)
 #endif /* NETWORK_MSG_H */