void BagManager::manage() { if ( AMenuItemPtr mItem = _bagMenu->getSelectedItem() ) { ActorPtr selectedItem( mItem->getObject<Actor>() ); if ( selectedItem ) { ItemOperation operation = chooseItemOperationFromMenu(selectedItem); switch(operation) { case EQUIP: equip( selectedItem ); break; case DROP: Actor::Player->performAction( std::make_shared<DropAction>(selectedItem, getAmountToDrop(selectedItem) ) ); break; //TODO display actor info text instead of test string case INSPECT: Engine::instance() .windowManager() .getWindow<FixedSizeTextWindow>() .setText( selectedItem->getDescription() ) .show(); break; default:; } fillBag(); } } }
BagManager::BagManager(int w, int h) : AInventoryPanel(w, h) , _bagMenu( new AMenu ) { _bagMenu->setPosition(2,2); _bagMenu->setAutosize(false); _bagMenu->setWidth( getWidth() - 2 ); _bagMenu->setHeight( getHeight() - 2 ); addWidget(_bagMenu); setTitle("Inventory"); fillBag(); }
// === OPERATION CHOOSING === // void BagManager::manage() { if ( AMenuItemPtr mItem = _bagMenu->getSelectedItem() ) { if ( Actor* selectedItem = mItem->getObject<Actor>() ) { ItemOperation operation = chooseItemOperationFromMenu(selectedItem); switch(operation) { case EQUIP: equip( selectedItem ); break; case DROP: drop( selectedItem ); break; default:; } fillBag(); } } }