blob: dcea64d0b0b76af71529ae6f5e93df9d2a8d396f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#ifndef EVENTS_H
#define EVENTS_H
#include "SDL/SDL.h"
#include "data_types.h"
#include "utils.h"
// Event and eventList management
enum eventType_t { eReady, eTimeSync, eLemAction };
typedef struct _event_t {
id_t clientId;
tick_t eventTick;
tick_t serverTick;
enum eventType_t type;
id_t lemId;
unsigned int newRole: 4;
struct _event_t *prev, *next;
} event_t;
typedef struct {
event_t *first, *last;
SDL_mutex *lock;
} eventList_t;
int eventSerializedSize();
void eventSerialize(const event_t *e, char *buf);
int eventUnserialize(event_t *e, char *buf);
void eventListInit(eventList_t *elist);
void eventListFree(eventList_t *elist);
int eventListLock(eventList_t *elist);
int eventListUnlock(eventList_t *elist);
void eventListAdd(eventList_t *elist, event_t *event);
event_t * eventListPop(eventList_t *elist);
int eventListItemCount(eventList_t *elist);
void eventListSort(eventList_t *elist);
#endif //EVENTS_H
|