]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/server/server_player.h
Use dragonnet
[dragonblocks_alpha.git] / src / server / server_player.h
1 #ifndef _SERVER_PLAYER_H_
2 #define _SERVER_PLAYER_H_
3
4 #include <pthread.h>
5 #include <stdbool.h>
6 #include <dragonnet/peer.h>
7 #include "types.h"
8
9 typedef struct
10 {
11         u64 id;                     // unique identifier
12         DragonnetPeer *peer;
13         pthread_rwlock_t ref;       // programming socks make you 100% cuter
14
15         bool auth;
16         char *name;                 // player name
17         pthread_rwlock_t auth_lock; // why
18
19         v3f64 pos;                  // player position
20         pthread_rwlock_t pos_lock;  // i want to commit die
21 } ServerPlayer;
22
23 void server_player_init();
24 void server_player_deinit();
25
26 void server_player_add(DragonnetPeer *peer);
27 void server_player_remove(DragonnetPeer *peer);
28
29 u64 server_player_find(char *name);
30
31 ServerPlayer *server_player_grab(u64 id);
32 void server_player_drop(ServerPlayer *player);
33
34 bool server_player_auth(ServerPlayer *player, char *name);
35 void server_player_disconnect(ServerPlayer *player);
36 void server_player_send_pos(ServerPlayer *player);
37 void server_player_iterate(void (cb)(ServerPlayer *, void *), void *arg);
38
39 #endif