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-10-09 20:23:01 +0000
committerStijn Buys <ingar@osirion.org>2010-10-09 20:23:01 +0000
commit0ecdd8bc98ba583bbee801b838d785c6f881d7df (patch)
tree0ae456cb1254544e43de8abf8fa4dbb6afc91e79 /src/game/base/shipmodel.cc
parente5be0871b6fed09eed40ff17201d1c7a4a990744 (diff)
removed physics references, transfer inventory on ship aquisition
Diffstat (limited to 'src/game/base/shipmodel.cc')
-rw-r--r--src/game/base/shipmodel.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/game/base/shipmodel.cc b/src/game/base/shipmodel.cc
index 6ff6c43..9133d28 100644
--- a/src/game/base/shipmodel.cc
+++ b/src/game/base/shipmodel.cc
@@ -224,6 +224,12 @@ void ShipModel::buy(core::EntityControlable *buyer, core::Entity *seller)
assert(seller_item->info() == this);
}
+ // check if there's enough space available to transfer inventory
+ if (player->control() && (maxcargo() < player->control()->inventory()->capacity_used())) {
+ player->send("^WNot enough cargo space to transfer inventory!");
+ return;
+ }
+
// check price
if (price() > player->credits()) {
player->send("^WCan not afford transaction!");
@@ -243,6 +249,14 @@ void ShipModel::buy(core::EntityControlable *buyer, core::Entity *seller)
ship->set_state(core::Entity::Docked);
ship->get_axis().assign(seller->axis());
ship->get_axis().change_direction(180.0f);
+
+ // transfer inventory
+ for (core::Inventory::Items::iterator it = player->control()->inventory()->items().begin();
+ it != player->control()->inventory()->items().end(); it++) {
+ ship->inventory()->add(new core::Item(*(*it)));
+ }
+ ship->inventory()->set_dirty();
+
player->set_control(ship);
player->set_view(seller);