#include "backend/ListIterator.h" #include "backend/Dungeon.h" #include "backend/Exception.h" #include "../GameController.h" #include "../util.h" using namespace std; void GameController::cmd_equip(string & target_name) { Player & player = this->dungeon->get_player(); auto it = find_if_range(player.inventory.range(), by_name_case_insensitive(target_name)); if (!it) throw Exception("object \"%s\" niet gevonden", target_name.c_str()); Object & object = **it; try { WeaponObject & weapon = dynamic_cast(object); player.inventory.remove(&weapon); player.equip(&weapon); this->dungeon->update(); return; } catch (std::bad_cast &) {}; try { ArmorObject & armor = dynamic_cast(object); player.inventory.remove(&armor); player.equip(&armor); this->dungeon->update(); return; } catch (std::bad_cast &) {}; throw Exception("object \"%s\" is niet draagbaar", target_name.c_str()); }