full request roundtrip
[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 struct netmsg_blank{
17 u16 inetmsg_id;
18 };
19 enum{ k_inetmsg_blank = 0 };
20
21 typedef struct netmsg_auth netmsg_auth;
22 struct netmsg_auth
23 {
24 u16 inetmsg_id;
25
26 u32 ticket_length;
27 u8 ticket[];
28 };
29 enum{ k_inetmsg_auth = 1 };
30
31 typedef struct netmsg_scores_request netmsg_scores_request;
32 struct netmsg_scores_request
33 {
34 u16 inetmsg_id;
35 };
36 enum{ k_inetmsg_scores_request = 2 };
37
38 typedef struct netmsg_set_score netmsg_set_score;
39 struct netmsg_set_score
40 {
41 u16 inetmsg_id;
42
43 u32 record_count;
44 struct netmsg_score_record
45 {
46 u32 trackid;
47 u64 playerid;
48 u16 points, time;
49 }
50 records[];
51 };
52 enum{ k_inetmsg_set_score = 6 };
53 /* 31.05.23: k_inetmsg_set_score id changed from ID 3 to ID 6,
54 * 3 is now INVALID */
55
56 typedef struct netmsg_scoreboard netmsg_scoreboard;
57 enum{ k_inetmsg_scoreboard = 5 };
58 struct netmsg_scoreboard{
59 u16 inetmsg_id;
60
61 u32 board_count;
62 struct netmsg_board
63 {
64 char data[27*13];
65 }
66 boards[ vg_list_size(track_infos) ];
67 }
68 static scoreboard_client_data = {
69 .inetmsg_id = k_inetmsg_scoreboard,
70 .board_count = vg_list_size(track_infos)
71 };
72 /* probably about 10k */
73
74 /* server control 100 */
75
76
77 /* player updates 200 */
78
79 #define NETMSG_BOUNDARY_BIT 0x8000
80 #define NETMSG_GATE_BOUNDARY_BIT 0x4000
81 #define NETMSG_BOUNDARY_MASK (NETMSG_BOUNDARY_BIT|NETMSG_GATE_BOUNDARY_BIT)
82
83 typedef struct netmsg_playerframe netmsg_playerframe;
84 enum{ k_inetmsg_playerframe = 200 };
85 struct netmsg_playerframe{
86 u16 inetmsg_id;
87 f64 timestamp;
88
89 u8 client, subsystem,
90 instance_id, sound_effects;
91 u16 boundary_hash; /* used for animating correctly through gates, teleport..
92 msb is a flip flop for teleporting
93 second msb is flip flop for gate
94
95 TODO: disable oblique clipping on cam mtx when rendering remote players
96 also render over the portal stencil? somehow.
97
98 detransform, interp, retransform. render in dest world. */
99
100 u8 animdata[];
101 };
102
103 typedef struct netmsg_playerjoin netmsg_playerjoin;
104 enum{ k_inetmsg_playerjoin = 201 };
105 struct netmsg_playerjoin{
106 u16 inetmsg_id;
107 u8 index;
108 };
109
110 typedef struct netmsg_playerleave netmsg_playerleave;
111 enum{ k_inetmsg_playerleave = 202 };
112 struct netmsg_playerleave{
113 u16 inetmsg_id;
114 u8 index;
115 };
116
117 typedef struct netmsg_playerusername netmsg_playerusername;
118 enum{ k_inetmsg_playerusername = 203 };
119 struct netmsg_playerusername{
120 u16 inetmsg_id;
121 u8 index;
122 char name[];
123 };
124
125 typedef struct netmsg_playeritem netmsg_playeritem;
126 enum{ k_inetmsg_playeritem = 204 };
127 struct netmsg_playeritem{
128 u16 inetmsg_id;
129 u8 client;
130 u8 type_index;
131 char uid[];
132 };
133 typedef enum netmsg_playeritem_type netmsg_playeritem_type;
134 enum netmsg_playeritem_type {
135 k_netmsg_playeritem_board = 0,
136 k_netmsg_playeritem_player,
137 k_netmsg_playeritem_world0,
138 k_netmsg_playeritem_world1,
139 k_netmsg_playeritem_max
140 };
141
142 typedef struct netmsg_chat netmsg_chat;
143 enum{ k_inetmsg_chat = 205 };
144 struct netmsg_chat {
145 u16 inetmsg_id;
146 u8 client;
147 char msg[];
148 };
149
150 /* requests 300 */
151 typedef struct netmsg_request netmsg_request;
152 enum{ k_inetmsg_request = 300, k_inetmsg_response = 301 };
153 struct netmsg_request {
154 u16 inetmsg_id;
155 u8 id, status;
156 u8 q[];
157 };
158
159 enum request_status {
160 k_request_status_client_error = 0,
161 k_request_status_invalid_endpoint = 1,
162
163 k_request_status_server_error = 100,
164 k_request_status_out_of_memory = 101,
165 k_request_status_database_error = 102,
166
167 k_request_status_ok = 200,
168 k_request_status_not_found = 201
169 };
170
171 #pragma pack(pop)
172 #endif /* NETWORK_MSG_H */