diff options
Diffstat (limited to 'frontend/cmd/equip.cpp')
-rw-r--r-- | frontend/cmd/equip.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/frontend/cmd/equip.cpp b/frontend/cmd/equip.cpp index fe951b1..8f37c0c 100644 --- a/frontend/cmd/equip.cpp +++ b/frontend/cmd/equip.cpp @@ -16,21 +16,21 @@ void GameController::cmd_equip(string & target_name) { Object & object = **it; - WeaponObject * weapon = dynamic_cast<WeaponObject *>(&object); - if (weapon != nullptr) { - player.inventory.remove(weapon); - player.equip(weapon); + try { + WeaponObject & weapon = dynamic_cast<WeaponObject &>(object); + player.inventory.remove(&weapon); + player.equip(&weapon); this->dungeon->update(); return; - } + } catch (std::bad_cast &) {}; - ArmorObject * armor = dynamic_cast<ArmorObject *>(&object); - if (armor != nullptr) { - player.inventory.remove(armor); - player.equip(armor); + try { + ArmorObject & armor = dynamic_cast<ArmorObject &>(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()); } |