ragdoll quality improvements
[carveJwlIkooP6JGAAIwe30JlM.git] / network_msg.h
1 /*
2 * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved
3 */
4
5 #ifndef NETWORK_MSG_H
6 #define NETWORK_MSG_H
7
8 #include "vg/vg_stdint.h"
9 #include "world_info.h"
10 #include "vg/vg_platform.h"
11 ;
12
13 #pragma pack(push,1)
14
15 typedef struct netmsg_blank netmsg_blank;
16 enum{ k_inetmsg_blank = 0 };
17 struct netmsg_blank{
18 u16 inetmsg_id;
19 };
20
21 /* send after version */
22 typedef struct netmsg_auth netmsg_auth;
23 enum{ k_inetmsg_auth = 1 };
24 struct netmsg_auth
25 {
26 u16 inetmsg_id;
27
28 u32 ticket_length;
29 u8 ticket[];
30 };
31
32 /* version should be sent before auth */
33 typedef struct netmsg_version netmsg_version;
34 enum{ k_inetmsg_version = 2 };
35 struct netmsg_version{
36 u16 inetmsg_id;
37 u32 version;
38 };
39
40 /* server control 100 */
41
42 /* player updates 200 */
43
44 #define NETMSG_BOUNDARY_BIT 0x8000
45 #define NETMSG_GATE_BOUNDARY_BIT 0x4000
46 #define NETMSG_BOUNDARY_MASK (NETMSG_BOUNDARY_BIT|NETMSG_GATE_BOUNDARY_BIT)
47
48 typedef struct netmsg_playerframe netmsg_playerframe;
49 enum{ k_inetmsg_playerframe = 200 };
50 struct netmsg_playerframe{
51 u16 inetmsg_id;
52 f64 timestamp;
53
54 u8 client, subsystem,
55 instance_id, sound_effects;
56 u16 boundary_hash; /* used for animating correctly through gates, teleport..
57 msb is a flip flop for teleporting
58 second msb is flip flop for gate */
59
60 u8 animdata[];
61 };
62
63 typedef struct netmsg_playerjoin netmsg_playerjoin;
64 enum{ k_inetmsg_playerjoin = 201 };
65 struct netmsg_playerjoin{
66 u16 inetmsg_id;
67 u8 index;
68 u64 steamid;
69 };
70
71 typedef struct netmsg_playerleave netmsg_playerleave;
72 enum{ k_inetmsg_playerleave = 202 };
73 struct netmsg_playerleave{
74 u16 inetmsg_id;
75 u8 index;
76 };
77
78 typedef struct netmsg_playerusername netmsg_playerusername;
79 enum{ k_inetmsg_playerusername = 203 };
80 struct netmsg_playerusername{
81 u16 inetmsg_id;
82 u8 index;
83 char name[];
84 };
85
86 typedef struct netmsg_playeritem netmsg_playeritem;
87 enum{ k_inetmsg_playeritem = 204 };
88 struct netmsg_playeritem{
89 u16 inetmsg_id;
90 u8 client;
91 u8 type_index;
92 char uid[];
93 };
94 enum netmsg_playeritem_type {
95 k_netmsg_playeritem_board = 0,
96 k_netmsg_playeritem_player,
97 k_netmsg_playeritem_world0,
98 k_netmsg_playeritem_world1,
99 k_netmsg_playeritem_max
100 };
101
102 typedef struct netmsg_chat netmsg_chat;
103 enum{ k_inetmsg_chat = 205 };
104 struct netmsg_chat {
105 u16 inetmsg_id;
106 u8 client;
107 char msg[];
108 };
109
110 typedef struct netmsg_region netmsg_region;
111 enum{ k_inetmsg_region = 206 };
112 struct netmsg_region {
113 u16 inetmsg_id;
114 u8 client;
115 u32 flags;
116 char loc[];
117 };
118
119 /* requests 300 */
120 typedef struct netmsg_request netmsg_request;
121 enum{ k_inetmsg_request = 300, k_inetmsg_response = 301 };
122 struct netmsg_request {
123 u16 inetmsg_id;
124 u8 id, status;
125 u8 q[];
126 };
127
128 enum request_status {
129 k_request_status_client_error = 0,
130 k_request_status_invalid_endpoint = 1,
131 k_request_status_unauthorized = 2,
132
133 k_request_status_server_error = 100,
134 k_request_status_out_of_memory = 101,
135 k_request_status_database_error = 102,
136
137 k_request_status_ok = 200,
138 k_request_status_not_found = 201
139 };
140
141 #pragma pack(pop)
142 #endif /* NETWORK_MSG_H */