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>2010-09-17 18:58:46 +0000
committerStijn Buys <ingar@osirion.org>2010-09-17 18:58:46 +0000
commit66ce015e5927c30801110acd289310fdff181792 (patch)
tree7beaa6b533eefdd26f0705bd65dfb5c3c9b5996a /src/game/base/ship.cc
parentc62fe609a69058e2e30f757e9a06f72a98464232 (diff)
Initial support for players docking other players' ships.
Diffstat (limited to 'src/game/base/ship.cc')
-rw-r--r--src/game/base/ship.cc22
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);