DonkeyKong64 grind crash
[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 /* server control 100 */
32
33 /* player updates 200 */
34
35 #define NETMSG_BOUNDARY_BIT 0x8000
36 #define NETMSG_GATE_BOUNDARY_BIT 0x4000
37 #define NETMSG_BOUNDARY_MASK (NETMSG_BOUNDARY_BIT|NETMSG_GATE_BOUNDARY_BIT)
38
39 typedef struct netmsg_playerframe netmsg_playerframe;
40 enum{ k_inetmsg_playerframe = 200 };
41 struct netmsg_playerframe{
42 u16 inetmsg_id;
43 f64 timestamp;
44
45 u8 client, subsystem,
46 instance_id, sound_effects;
47 u16 boundary_hash; /* used for animating correctly through gates, teleport..
48 msb is a flip flop for teleporting
49 second msb is flip flop for gate
50
51 TODO: disable oblique clipping on cam mtx when rendering remote players
52 also render over the portal stencil? somehow.
53
54 detransform, interp, retransform. render in dest world. */
55
56 u8 animdata[];
57 };
58
59 typedef struct netmsg_playerjoin netmsg_playerjoin;
60 enum{ k_inetmsg_playerjoin = 201 };
61 struct netmsg_playerjoin{
62 u16 inetmsg_id;
63 u8 index;
64 };
65
66 typedef struct netmsg_playerleave netmsg_playerleave;
67 enum{ k_inetmsg_playerleave = 202 };
68 struct netmsg_playerleave{
69 u16 inetmsg_id;
70 u8 index;
71 };
72
73 typedef struct netmsg_playerusername netmsg_playerusername;
74 enum{ k_inetmsg_playerusername = 203 };
75 struct netmsg_playerusername{
76 u16 inetmsg_id;
77 u8 index;
78 char name[];
79 };
80
81 typedef struct netmsg_playeritem netmsg_playeritem;
82 enum{ k_inetmsg_playeritem = 204 };
83 struct netmsg_playeritem{
84 u16 inetmsg_id;
85 u8 client;
86 u8 type_index;
87 char uid[];
88 };
89 enum netmsg_playeritem_type {
90 k_netmsg_playeritem_board = 0,
91 k_netmsg_playeritem_player,
92 k_netmsg_playeritem_world0,
93 k_netmsg_playeritem_world1,
94 k_netmsg_playeritem_max
95 };
96
97 typedef struct netmsg_chat netmsg_chat;
98 enum{ k_inetmsg_chat = 205 };
99 struct netmsg_chat {
100 u16 inetmsg_id;
101 u8 client;
102 char msg[];
103 };
104
105 /* requests 300 */
106 typedef struct netmsg_request netmsg_request;
107 enum{ k_inetmsg_request = 300, k_inetmsg_response = 301 };
108 struct netmsg_request {
109 u16 inetmsg_id;
110 u8 id, status;
111 u8 q[];
112 };
113
114 enum request_status {
115 k_request_status_client_error = 0,
116 k_request_status_invalid_endpoint = 1,
117 k_request_status_unauthorized = 2,
118
119 k_request_status_server_error = 100,
120 k_request_status_out_of_memory = 101,
121 k_request_status_database_error = 102,
122
123 k_request_status_ok = 200,
124 k_request_status_not_found = 201
125 };
126
127 #pragma pack(pop)
128 #endif /* NETWORK_MSG_H */