diff options
author | Stijn Buys <ingar@osirion.org> | 2008-11-08 10:17:37 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-11-08 10:17:37 +0000 |
commit | 4cad4a27677b0490d3ba0018bc3404961f925ed5 (patch) | |
tree | f9d59542f27f66a9fb4c8938f40aec66994449fc /src/core/player.cc | |
parent | 27ab3566118e77754fefb32a41ee06cf24a59dfe (diff) |
docking, bumps network protocol version
Diffstat (limited to 'src/core/player.cc')
-rw-r--r-- | src/core/player.cc | 18 |
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) { |