#include #include "../GameController.h" #include "../strings.h" #include "backend/Exception.h" #include "backend/print.h" #include "backend/GoldObject.h" #include "backend/Location.h" #include "backend/Dungeon.h" using namespace std; void GameController::cmd_get(string & target_name) { Player & player = this->dungeon->get_player(); Location & location = player.get_location(); unique_ptr target = nullptr; for (Object * object : location.get_visible_objects()) { if (str_lower(object->get_name().c_str()) != str_lower(target_name)) continue; target = unique_ptr(object); location.remove_visible_object(object); break; } if (target == nullptr) throw Exception("object \"%s\" niet gevonden", target_name.c_str()); // gold objects are collected and (implicitly) destroyed GoldObject * gold = dynamic_cast(target.get()); if (gold != nullptr) { int count = gold->get_count(); player.gold += count; lprtf("Je bent %d goudstuk%s rijker.\n", count, count == 1 ? "" : "ken"); return; } // other objects go in the inventory lprtf("Je voegt %s toe aan je bezit.\n", target->get_name().c_str()); player.inventory.push_back(target.release()); }