/* core/player.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2. */ #ifndef __INCLUDED_CORE_PLAYER_H__ #define __INCLUDED_CORE_PLAYER_H__ namespace core { class Player; } #include "core/entity.h" #include "math/mathlib.h" #include #include namespace core { /// a player in the game class Player { public: /// default constructor Player(); /// default destructor ~Player(); /*----- inspectors ------------------------------------------------ */ /// id of the player inline int id() const { return player_id; } /// name of the player inline std::string const &name() const { return player_name; } /// dirty flag inline bool dirty() const { return player_dirty; } /// the entity the Player is currently controling inline EntityControlable *control() const { return player_control; } /// player base color inline math::Color const & color() const { return player_color; } /*----- mutators -------------------------------------------------- */ /// serialize player info to a stream void serialize_server_update(std::ostream & os) const; /// receive player info from a stream void recieve_server_update(std::istream &is); /// serialize player info to a stream void serialize_client_update(std::ostream & os); /// receive player info from a stream void recieve_client_update(std::istream &is); /// clear all the data void clear(); /// clear assets void clear_assets(); /// add an asset void add_asset(EntityControlable *entity); /// remove an asset void remove_asset(EntityControlable *entity); /// remove an asset void remove_asset(unsigned int id); /// update player info from client variables void update_info(); /* -- should actually not be public --*/ /// dirty state bool player_dirty; /// indicates rcon access bool player_rcon; /// id of the player int player_id; // name of the player std::string player_name; /// player color math::Color player_color; /// the entity the Player is currently controling EntityControlable *player_control; std::list assets; }; } #endif // __INCLUDED_CORE_PLAYER_H__