5d3beeef1a61ba3329141062ef2d9b28f22fe49b
[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 #define NETMSG_PLAYERFRAME_INSTANCE_ID 0x3
48 #define NETMSG_PLAYERFRAME_HAVE_GLIDER 0x4
49 #define NETMSG_PLAYERFRAME_GLIDER_ORPHAN 0x8
50
51 typedef struct netmsg_playerframe netmsg_playerframe;
52 enum{ k_inetmsg_playerframe = 200 };
53 struct netmsg_playerframe{
54 u16 inetmsg_id;
55 f64 timestamp;
56
57 u8 client, subsystem,
58 flags, sound_effects;
59 u16 boundary_hash; /* used for animating correctly through gates, teleport..
60 msb is a flip flop for teleporting
61 second msb is flip flop for gate */
62
63 u8 animdata[];
64 };
65
66 typedef struct netmsg_playerjoin netmsg_playerjoin;
67 enum{ k_inetmsg_playerjoin = 201 };
68 struct netmsg_playerjoin{
69 u16 inetmsg_id;
70 u8 index;
71 u64 steamid;
72 };
73
74 typedef struct netmsg_playerleave netmsg_playerleave;
75 enum{ k_inetmsg_playerleave = 202 };
76 struct netmsg_playerleave{
77 u16 inetmsg_id;
78 u8 index;
79 };
80
81 typedef struct netmsg_playerusername netmsg_playerusername;
82 enum{ k_inetmsg_playerusername = 203 };
83 struct netmsg_playerusername{
84 u16 inetmsg_id;
85 u8 index;
86 char name[];
87 };
88
89 typedef struct netmsg_playeritem netmsg_playeritem;
90 enum{ k_inetmsg_playeritem = 204 };
91 struct netmsg_playeritem{
92 u16 inetmsg_id;
93 u8 client;
94 u8 type_index;
95 char uid[];
96 };
97 enum netmsg_playeritem_type {
98 k_netmsg_playeritem_board = 0,
99 k_netmsg_playeritem_player,
100 k_netmsg_playeritem_world0,
101 k_netmsg_playeritem_world1,
102 k_netmsg_playeritem_max
103 };
104
105 typedef struct netmsg_chat netmsg_chat;
106 enum{ k_inetmsg_chat = 205 };
107 struct netmsg_chat {
108 u16 inetmsg_id;
109 u8 client;
110 char msg[];
111 };
112
113 typedef struct netmsg_region netmsg_region;
114 enum{ k_inetmsg_region = 206 };
115 struct netmsg_region {
116 u16 inetmsg_id;
117 u8 client;
118 u32 flags;
119 char loc[];
120 };
121
122 /* requests 300 */
123 typedef struct netmsg_request netmsg_request;
124 enum{ k_inetmsg_request = 300, k_inetmsg_response = 301 };
125 struct netmsg_request {
126 u16 inetmsg_id;
127 u8 id, status;
128 u8 q[];
129 };
130
131 enum request_status {
132 k_request_status_client_error = 0,
133 k_request_status_invalid_endpoint = 1,
134 k_request_status_unauthorized = 2,
135
136 k_request_status_server_error = 100,
137 k_request_status_out_of_memory = 101,
138 k_request_status_database_error = 102,
139
140 k_request_status_ok = 200,
141 k_request_status_not_found = 201
142 };
143
144 #pragma pack(pop)
145 #endif /* NETWORK_MSG_H */