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