/* core/player.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2. */ #include "sys/sys.h" #include "core/player.h" namespace core { Player::Player() { clear(); } Player::~Player() { clear(); } void Player::clear() { player_id = 0; player_name.clear(); player_dirty = false; player_control = 0; } void Player::serialize_client_update(std::ostream & os) const { os << " " << player_color << " \"" << player_name << "\""; } void Player::recieve_client_update(std::istream &is) { is >> player_color; std::string n; char c; while ( (is.get(c)) && (c != '"')); while ( (is.get(c)) && (c != '"')) n += c; if (n.size()) player_name = n; } void Player::serialize_server_update(std::ostream & os) const { unsigned int co; if (player_control) co = player_control->id(); else co = 0; os << player_id << " " << co << " " << player_color << " \"" << player_name << "\""; } void Player::recieve_server_update(std::istream &is) { is >> player_id; unsigned int co = 0; is >> co; if (co) { Entity *e = Entity::find(co); if (e && e->type() == Entity::Controlable) { player_control = (EntityControlable *) e; } else { player_control = 0; con_warn << "control set to unknown entity " << co << "\n"; } } else { player_control = 0; } is >> player_color; std::string n; char c; while ( (is.get(c)) && (c != '"')); while ( (is.get(c)) && (c != '"')) n += c; if (n.size()) player_name = n; } }