]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/server/server_player.h
Add items
[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 "item.h"
9 #include "types.h"
10
11 typedef struct {
12         u64 id;                        // unique identifier
13         Refcount rc;                   // delete yourself if no one cares about you
14
15         DragonnetPeer *peer;           // not to be confused with beer
16         pthread_rwlock_t lock_peer;    // programming socks make you 100% cuter
17
18         bool auth;                     // YES OR NO I DEMAND AN ANSWER
19         char *name;                    // player name
20         pthread_rwlock_t lock_auth;    // poggers based cringe
21
22         v3f64 pos;                     // player position
23         v3f32 rot;                     // you wont guess what this is
24         pthread_rwlock_t lock_pos;     // git commit crime
25
26         struct {
27                 ItemStack left;
28                 ItemStack right;
29         } inventory;
30         pthread_rwlock_t lock_inv;
31 } ServerPlayer;
32
33 void server_player_init();
34 void server_player_deinit();
35
36 void server_player_add(DragonnetPeer *peer);
37 void server_player_remove(DragonnetPeer *peer);
38
39 ServerPlayer *server_player_grab(u64 id);
40 ServerPlayer *server_player_grab_named(char *name);
41
42 bool server_player_auth(ServerPlayer *player, char *name);
43 void server_player_disconnect(ServerPlayer *player);
44 void server_player_move(ServerPlayer *player, v3f64 pos, v3f32 rot);
45 void server_player_iterate(void *func, void *arg);
46
47 #endif // _SERVER_PLAYER_H_