/* 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 "core/zone.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; } /// set the entity the player is currenty controlling /** This will automaticly set zone() to the zone the entity is in */ void set_control(EntityControlable *entitycontrolable); /// the zone the player is currently in inline Zone *zone() const { return player_zone; } /// set the zone the player is currently in void set_zone(Zone *zone); inline bool zonechange() const { return player_zonechange; } /// player primary color inline math::Color const & color() const { return player_color; } /// player secondary color inline math::Color const & color_second() const { return player_color_second; } /// player has been muted by admin or console inline bool mute() const { return player_mute; } /// mission target inline Entity *mission_target() { return player_mission_target; } /*----- mutators -------------------------------------------------- */ /// serialize player info to a stream void serialize_server_update(std::ostream & os) const; /// receive player info from a stream void receive_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 receive_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(); void set_mission_target(Entity *new_mission_target); /* -- should actually not be public --*/ /// dirty state bool player_dirty; /// player has changed zone bool player_zonechange; /// indicates rcon access bool player_rcon; /// id of the player int player_id; /// name of the player std::string player_name; /// player primary color math::Color player_color; /// player secondary color math::Color player_color_second; /// player is muted by admin bool player_mute; std::list assets; private: // the entity the Player is currently controling EntityControlable *player_control; Entity *player_mission_target; // the zone the player is currently in Zone *player_zone; float player_credits; }; } #endif // __INCLUDED_CORE_PLAYER_H__