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-11-08 10:17:37 +0000
committerStijn Buys <ingar@osirion.org>2008-11-08 10:17:37 +0000
commit4cad4a27677b0490d3ba0018bc3404961f925ed5 (patch)
treef9d59542f27f66a9fb4c8938f40aec66994449fc /src/core/player.cc
parent27ab3566118e77754fefb32a41ee06cf24a59dfe (diff)
docking, bumps network protocol version
Diffstat (limited to 'src/core/player.cc')
-rw-r--r--src/core/player.cc18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/core/player.cc b/src/core/player.cc
index 26ea070..f5f28bd 100644
--- a/src/core/player.cc
+++ b/src/core/player.cc
@@ -35,6 +35,7 @@ void Player::clear()
player_rcon = false;
player_mute = false;
player_mission_target = 0;
+ player_view = 0;
clear_assets();
player_control = 0;
@@ -46,6 +47,7 @@ void Player::set_control(EntityControlable *entitycontrolable)
if (entitycontrolable) {
set_zone(entitycontrolable->zone());
+ player_view = 0;
}
player_dirty = true;
}
@@ -58,6 +60,15 @@ void Player::set_zone(Zone *zone)
}
}
+void Player::set_view(Entity *view)
+{
+ player_view = view;
+ player_dirty = true;
+ if (player_view) {
+ set_zone(player_view->zone());
+ }
+}
+
void Player::set_mission_target(Entity *new_mission_target)
{
if (new_mission_target != player_mission_target) {
@@ -119,8 +130,9 @@ void Player::serialize_server_update(std::ostream & os) const
unsigned int zo = (zone() ? zone()->id() : 0);
unsigned int co = (player_control ? player_control->id() : 0);
unsigned int mission = (player_mission_target ? player_mission_target->id() : 0);
+ unsigned int view = (player_view ? player_view->id() : 0);
- os << player_id << " " << zo << " " << co << " " << mission << " " << player_color << " \"" << player_name << "\"";
+ os << player_id << " " << zo << " " << view << " " << co << " " << mission << " " << player_color << " \"" << player_name << "\"";
}
void Player::receive_server_update(std::istream &is)
@@ -131,6 +143,10 @@ void Player::receive_server_update(std::istream &is)
is >> zo;
set_zone(Zone::find(zo));
+ unsigned int view = 0;
+ is >> view;
+ set_view(Entity::find(view));
+
unsigned int co = 0;
is >> co;
if (co) {