--- deliantra/server/include/player.h 2006/12/23 15:49:40 1.34 +++ deliantra/server/include/player.h 2006/12/31 10:28:36 1.38 @@ -90,31 +90,31 @@ }; /* not really the player, but tied pretty closely */ +INTERFACE_CLASS (partylist) struct partylist { - char *partyleader; - char passwd[9]; - partylist *next; - char *partyname; + char *ACC (RW, partyleader); + char ACC (RW, passwd)[9]; + partylist *ACC (RW, next); + char *ACC (RW, partyname); -#ifdef PARTY_KILL_LOG struct party_kill { char killer[MAX_NAME + 1], dead[MAX_NAME + 1]; sint64 exp; } party_kills[PARTY_KILL_LOG]; -#endif - sint64 total_exp; - uint32 kills; + + sint64 ACC (RW, total_exp); + uint32 ACC (RW, kills); }; #define for_all_players(var) for (player *var = first_player; var; var = var->next) -ACC_CLASS (player) -struct player : zero_initialised, refcounted, attachable +INTERFACE_CLASS (player) +struct player : zero_initialised, attachable { player *ACC (RW, next); /* Pointer to next player, NULL if this is last */ - client *ACC (RO, ns); /* Socket information for this player */ + client_ptr ACC (RO, ns); /* Socket information for this player */ object_ptr ACC (RW, ob); /* The object representing the player */ maptile *loading; /* When entering a map in progress of loading, not really used */ rangetype ACC (RW, shoottype); /* Which range-attack is being used by player */ @@ -206,11 +206,17 @@ bool ACC (RW, enable_save); Output_Buf outputs[NUM_OUTPUT_BUFS]; /* holds output strings to client */ - static player *create (); - static player *load (const char *path); - void save (bool final = false); + MTH static player *create (); + MTH static player *load (const char *path); + MTH void save (bool final = false); + void do_destroy (); + void gather_callbacks (AV *&callbacks, event_type event) const; + + MTH void connect (client *ns); + MTH void disconnect (); - void connect (client *ns); + // enters the initial map, after login or creation + MTH void enter_map (); ~player ();