steam friend/block info on remote players structures
[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 u64 steamid;
65 };
66
67 typedef struct netmsg_playerleave netmsg_playerleave;
68 enum{ k_inetmsg_playerleave = 202 };
69 struct netmsg_playerleave{
70 u16 inetmsg_id;
71 u8 index;
72 };
73
74 typedef struct netmsg_playerusername netmsg_playerusername;
75 enum{ k_inetmsg_playerusername = 203 };
76 struct netmsg_playerusername{
77 u16 inetmsg_id;
78 u8 index;
79 char name[];
80 };
81
82 typedef struct netmsg_playeritem netmsg_playeritem;
83 enum{ k_inetmsg_playeritem = 204 };
84 struct netmsg_playeritem{
85 u16 inetmsg_id;
86 u8 client;
87 u8 type_index;
88 char uid[];
89 };
90 enum netmsg_playeritem_type {
91 k_netmsg_playeritem_board = 0,
92 k_netmsg_playeritem_player,
93 k_netmsg_playeritem_world0,
94 k_netmsg_playeritem_world1,
95 k_netmsg_playeritem_max
96 };
97
98 typedef struct netmsg_chat netmsg_chat;
99 enum{ k_inetmsg_chat = 205 };
100 struct netmsg_chat {
101 u16 inetmsg_id;
102 u8 client;
103 char msg[];
104 };
105
106 /* requests 300 */
107 typedef struct netmsg_request netmsg_request;
108 enum{ k_inetmsg_request = 300, k_inetmsg_response = 301 };
109 struct netmsg_request {
110 u16 inetmsg_id;
111 u8 id, status;
112 u8 q[];
113 };
114
115 enum request_status {
116 k_request_status_client_error = 0,
117 k_request_status_invalid_endpoint = 1,
118 k_request_status_unauthorized = 2,
119
120 k_request_status_server_error = 100,
121 k_request_status_out_of_memory = 101,
122 k_request_status_database_error = 102,
123
124 k_request_status_ok = 200,
125 k_request_status_not_found = 201
126 };
127
128 #pragma pack(pop)
129 #endif /* NETWORK_MSG_H */