From 66ce015e5927c30801110acd289310fdff181792 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Fri, 17 Sep 2010 18:58:46 +0000 Subject: Initial support for players docking other players' ships. --- src/game/base/ship.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/game/base/ship.cc') 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); -- cgit v1.2.3