Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-02-21 21:01:17 +0000
committerStijn Buys <ingar@osirion.org>2008-02-21 21:01:17 +0000
commit71b6b902732bfc0c53033d58f91a6b1e70e8371f (patch)
tree0ff75879667ff985c9d69f8057727f6c805ad8b4 /src/core/player.cc
parent8aa04fc836116a58f8ffd1e0c3539b9ea8a94ddf (diff)
more minor updates
Diffstat (limited to 'src/core/player.cc')
-rw-r--r--src/core/player.cc39
1 files changed, 31 insertions, 8 deletions
diff --git a/src/core/player.cc b/src/core/player.cc
index f4ee6ea..488e407 100644
--- a/src/core/player.cc
+++ b/src/core/player.cc
@@ -25,18 +25,38 @@ void Player::clear()
player_id = 0;
player_name.clear();
player_dirty = false;
- control = 0;
+ 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 (control)
- co = control->id();
+ if (player_control)
+ co = player_control->id();
else
co = 0;
- os << player_id << " " << co << " \"" << player_name << "\"";
+ os << player_id << " " << co << " " << player_color << " \"" << player_name << "\"";
}
void Player::recieve_server_update(std::istream &is)
@@ -47,22 +67,25 @@ void Player::recieve_server_update(std::istream &is)
if (co) {
Entity *e = Entity::find(co);
if (e && e->type() == Entity::Controlable) {
- control = (EntityControlable *) e;
+ player_control = (EntityControlable *) e;
} else {
- control = 0;
+ player_control = 0;
con_warn << "control set to unknown entity " << co << "\n";
}
} else {
- control = 0;
+ player_control = 0;
}
+ is >> player_color;
+
std::string n;
char c;
while ( (is.get(c)) && (c != '"'));
while ( (is.get(c)) && (c != '"'))
n += c;
- player_name = n;
+ if (n.size())
+ player_name = n;
}
}