ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSVC/Flatline.h
Revision: 589
Committed: Sat Aug 20 09:47:49 2011 UTC (14 years, 1 month ago) by gumby
Content type: text/x-chdr
File size: 6155 byte(s)
Log Message:
stuff

File Contents

# Content
1 #pragma once
2 #ifndef FLATLINE_H
3 #define FLATLINE_H
4
5 #include <stdlib.h>
6 #include <stdio.h>
7 #include <time.h>
8 //#define DDrStartupMessage printf
9
10 #include <string.h>
11 #include "bool.h"
12 ////#include <stdint.h>
13
14 #define thread __thread
15
16 #include "Flatline_Public.h"
17
18 #ifdef WIN32
19 #include <winsock2.h>
20 #include "Flatline_Win32.h"
21 #else
22 #include <sys/ioctl.h>
23 #include <sys/types.h>
24 #include <sys/socket.h>
25 #include <unistd.h>
26 #include <stropts.h>
27 #include <arpa/inet.h>
28 #include <netinet/in.h>
29
30 #define NetPlatform_Initalize() /* */
31 #define NetPlatform_Shutdown() /* */
32 #define closesocket close
33 #define ioctlsocket ioctl
34 #endif
35
36 #include "Daodan.h"
37 #include "BFW_Utility.h"
38 #include "Daodan_Console.h"
39 #include "Oni_Character.h"
40 #include "Flatline_Packet.h"
41
42
43 //#define breakpoint asm("int3")
44
45
46 #include "Flatline_Net.h"
47
48 DWORD WINAPI StartServer(void* lol);
49 DWORD WINAPI StartClient(void* lol);
50
51
52 //initial connection
53 typedef struct {
54 char country[2];
55 char name[256];
56 } connect_send; //signature="CONNECT\0"
57
58 //reply to connection.
59 //goodtogo is if it is going to let you in
60 //message is optional, only used for denial message
61 typedef struct {
62 bool goodtogo;
63 int player_slot;
64 char message[256];
65 } connect_reply;
66
67 //um, status of the server? :/
68 //probably obsolete. revive again once i do something crazy
69 //like make a master server
70 typedef struct {
71 char name[256];
72 uint32_t numplayers; //signature="STATUS\0\0"
73 } server_status;
74
75 typedef struct {
76 uint16_t Playernumber;
77 CharacterObject Character;
78 } new_player;
79
80 //extern int update_rate;
81
82 typedef struct {
83 float MouseDeltaX;
84 float MouseDeltaY;
85 uint32_t Actions1;
86 uint32_t Actions2;
87 float DesiredFacing;
88 //unsigned int Time;
89 } input_struct;
90
91 //TODO:
92 //Varient
93 //Figure out + fix overlays
94 //AC->HeadFacing
95 //AC->HeadPitch
96 typedef struct {
97 uint16_t throwing;
98 uint16_t throwFrame;
99 char throwName[32];
100 } td;
101 /*
102 typedef struct {
103 uint16_t PlayerNum;
104 //Vector3 Position;
105
106 //float Facing;
107 //float DesiredFacing;
108
109 float UD;
110 float LR;
111
112 uint32_t Health;
113 uint32_t MaxHealth;
114 //input_struct Inputs;
115 int rare_sync_index;
116 char Animation[32];
117 uint16_t Frame;
118 td throw_data;
119 int Kills;
120 int Damage;
121 int Deaths;
122 uint16_t Ping;
123
124 } player_data;
125
126 //todo, move health in...
127 /*typedef struct {
128 short unsigned int PlayerNum;
129 unsigned int index;
130 Inventory Inventory;
131 char Class[32];
132 } rare_sync_data;
133 */
134 typedef struct {
135 unsigned int event_index;
136 int intArray[];
137 } flatline_event;
138 /*
139 typedef struct {
140 int16_t PlayerNum;
141 float MouseDeltaX;
142 float MouseDeltaY;
143 uint32_t Actions1;
144 uint32_t Actions2;
145 float Facing;
146 float DesiredFacing;
147 Vector3 Position;
148 } player_input;
149 */
150 //used for storing data about each player
151 typedef struct {
152 //int FLATLINE;
153 short signature;
154 short id;
155 int size;
156 //int packet_index;
157 union
158 {
159 char data[1080];
160 connect_reply connect_reply;
161 connect_send connect_send;
162 input_struct input_struct;
163 new_player new_player;
164 server_status server_status;
165 //player_data player_data;
166 //rare_sync_data rare_sync_data;
167 uint16_t sync_request;
168 flatline_event flatline_event;
169 uint32_t ping;
170 //player_input all_input[33];
171 uint32_t integer; //generic integer ;)
172 };
173 } flatline_packet;
174 #define FLATLINE_HEADER (sizeof(flatline_packet)-sizeof(char)*1080)
175 //#define FLATLINE_PACKET_SIZE sizeof(flatline_packet)
176
177
178 bool FLrServer_PacketCallback(char* data, int datalen, int from);
179 bool FLrServer_Run();
180 bool FLrClient_Run(flatline_packet* packet);
181 extern int sock;
182
183 enum {
184 NULL_PACKET, //Don't use. ;)
185 CONNECT_SEND,
186 CONNECT_REPLY,
187 STATUS,
188 MESSAGE,
189 CHANGE_NAME,
190 ECHO,
191 NEW_PLAYER,
192 PLAYER_INPUT,
193 //PLAYER_DATA,
194 //RARE_SYNC_DATA,
195 //RARE_SYNC_DATA_REQUEST,
196 FLATLINE_EVENT,
197 PK_PING,
198 PK_PONG,
199 //PK_ALL_INPUT,
200 PK_PLAYER_DATA,
201 PK_MISSING_PLAYER,
202 };
203
204 enum FlatlineEvent {
205 EV_RESPAWN,
206 EV_KILLED,
207 EV_DISCONNECT,
208 EV_DOOR_OPEN,
209 EV_CONSOLE_USE,
210 EV_MAX,
211 };
212
213
214 typedef struct {
215 //Server Only
216 bool PleaseUpdateAllPlayers;
217 //Client stuff (can be used by server "client")
218
219 //Move from random scattered bools to these, please.
220 bool ClientConnected;
221 unsigned int ClientSlot;
222 bool ServerStatus;
223 } multiplayer_status;
224
225 enum {
226 STATE_ALIVE,
227 STATE_DEAD,
228 };
229 enum {
230 PF_HOST,
231 PF_BOT,
232 PF_SCRIPTEDAI,
233 };
234 typedef struct {
235 int ip;
236 char name[32];
237 char country[2];
238 Character* Chr;
239 uint16_t spawnnumber;
240 uint16_t list_slot;
241
242 PlayerInput InputFromClient;
243 float FacingFromClient;
244
245 ////////////////////////////
246 //Sync stuff
247 ////////////////////////////
248 uint16_t UpdateFlags;
249
250 PlayerInput Input;
251 PlayerHealth Health;
252 PlayerFacing Facings;
253 PlayerScore Score;
254 void* Animation;
255 char AnimationString[32];
256 uint16_t Frame;
257 PlayerThrowData ThrowData;
258 void* Class;
259 char ClassString[32];
260 PlayerInventory Inventory;
261 Vector3 Position;
262 ////////////////////////////
263 bool HasAppliedThrow;
264
265 unsigned int LastInputTime;
266
267
268 uint16_t state;
269 int flags;
270 int DeathTime;
271 uint32_t Ping;
272 bool DataApplied;
273 bool NeedToSetFP;
274 uint32_t ShapeshiftCooldown;
275 } player_info;
276
277 player_info * FLr_FindEmptySlot();
278 uint16_t FLr_FindEmptyListSlot();
279 void * ONICALL FLrInput_Update_Keys(void);
280
281 void NetCatchError();
282 #define MAX_PLAYERS 32
283 #define CONNECTION_TIMEOUT 15
284 #define MAX_CONNECTIONS 32
285 #define NetTCPSocket_Send NetUDPSocket_Send
286 #define NetTCPServer_Send NetUDPServer_Send
287 extern int client_sock;
288 //these two could probably be combined
289 extern sockaddr_in client_address;
290 extern sockaddr_in address;
291 extern player_info Players[];
292 extern player_info * PlayerList[];
293 extern multiplayer_status MultiplayerStatus;
294 int UDPServer_SendToAll(void* packet, int size);
295
296
297 void FLrRun_Scores();
298 void FLrPlayerDisconnect( int Player );
299 void FLrPlayerRespawn( int Player );
300 int FLrEvent_GetNumArgs( int eventIndex );
301 bool FlatlineInitialize();
302
303 bool DoWeUpdateThis( uint16_t BitSet, uint16_t Flag );
304
305 extern unsigned int lastPingTime;
306 #endif