From 8aa04fc836116a58f8ffd1e0c3539b9ea8a94ddf Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Thu, 21 Feb 2008 19:06:15 +0000 Subject: dedicated server, entity transfer --- src/core/player.cc | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'src/core/player.cc') diff --git a/src/core/player.cc b/src/core/player.cc index 8fc4ebf..f4ee6ea 100644 --- a/src/core/player.cc +++ b/src/core/player.cc @@ -4,6 +4,7 @@ the terms of the GNU General Public License version 2. */ +#include "sys/sys.h" #include "core/player.h" namespace core @@ -23,9 +24,46 @@ void Player::clear() { player_id = 0; player_name.clear(); - dirty = false; + player_dirty = false; control = 0; } +void Player::serialize_server_update(std::ostream & os) const +{ + unsigned int co; + if (control) + co = control->id(); + else + co = 0; + + os << player_id << " " << co << " \"" << 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) { + control = (EntityControlable *) e; + } else { + control = 0; + con_warn << "control set to unknown entity " << co << "\n"; + } + } else { + control = 0; + } + + std::string n; + char c; + while ( (is.get(c)) && (c != '"')); + while ( (is.get(c)) && (c != '"')) + n += c; + + player_name = n; +} + } -- cgit v1.2.3