diff options
author | Stijn Buys <ingar@osirion.org> | 2010-09-17 18:58:46 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2010-09-17 18:58:46 +0000 |
commit | 66ce015e5927c30801110acd289310fdff181792 (patch) | |
tree | 7beaa6b533eefdd26f0705bd65dfb5c3c9b5996a /src/game/base/ship.cc | |
parent | c62fe609a69058e2e30f757e9a06f72a98464232 (diff) |
Initial support for players docking other players' ships.
Diffstat (limited to 'src/game/base/ship.cc')
-rw-r--r-- | src/game/base/ship.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/game/base/ship.cc b/src/game/base/ship.cc index 6aaba40..7edc183 100644 --- a/src/game/base/ship.cc +++ b/src/game/base/ship.cc @@ -49,6 +49,23 @@ Ship::Ship(core::Player *owner, ShipModel *shipmodel) : core::EntityControlable( set_label(shipmodel->label()); } + if (shipmodel->dock()) { + using core::MenuDescription; + using core::ButtonDescription; + + MenuDescription *menu_main = new MenuDescription(); + menu_main->set_label("main"); + menu_main->set_text("Launch area"); + add_menu(menu_main); + + ButtonDescription *button = new ButtonDescription(); + button->set_text("Launch"); + button->set_command("launch", ButtonDescription::CommandGame); + button->set_alignment(ButtonDescription::Center); + menu_main->add_button(button); + + set_flag(core::Entity::Dockable); + } reset(); } @@ -293,7 +310,12 @@ void Ship::frame(float seconds) } else { get_location().assign(ship_jumpdepart->target()->location() + location() - ship_jumpdepart->location()); } + set_zone(ship_jumpdepart->target()->zone()); + + if (owner() && owner()->view()->zone() != ship_jumpdepart->target()->zone()) + owner()->set_view(0); + owner()->send("^BJumping to the " + ship_jumpdepart->target()->zone()->name()); } else { set_state(core::Entity::Normal); |