]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/server/server_player.h
71d0916bebbafaa4b18856096c33ed63988efd9f
[dragonblocks_alpha.git] / src / server / server_player.h
1 #ifndef _SERVER_PLAYER_H_
2 #define _SERVER_PLAYER_H_
3
4 #include <dragonnet/peer.h>
5 #include <dragonstd/refcount.h>
6 #include <pthread.h>
7 #include <stdbool.h>
8 #include "types.h"
9
10 typedef struct {
11         u64 id;                        // unique identifier
12         Refcount rc;                   // delete yourself if no one cares about you
13
14         DragonnetPeer *peer;           // not to be confused with beer
15         pthread_rwlock_t lock_peer;    // programming socks make you 100% cuter
16
17         bool auth;                     // YES OR NO I DEMAND AN ANSWER
18         char *name;                    // player name
19         pthread_rwlock_t lock_auth;    // poggers based cringe
20
21         v3f64 pos;                     // player position
22         v3f32 rot;                     // you wont guess what this is
23         pthread_rwlock_t lock_pos;     // git commit crime
24 } ServerPlayer;
25
26 void server_player_init();
27 void server_player_deinit();
28
29 void server_player_add(DragonnetPeer *peer);
30 void server_player_remove(DragonnetPeer *peer);
31
32 ServerPlayer *server_player_grab(u64 id);
33 ServerPlayer *server_player_grab_named(char *name);
34
35 bool server_player_auth(ServerPlayer *player, char *name);
36 void server_player_disconnect(ServerPlayer *player);
37 void server_player_iterate(void *func, void *arg);
38
39 #endif // _SERVER_PLAYER_H_