#include "backend/Location.h" #include "backend/print.h" #include "backend/Dungeon.h" #include "../GameController.h" #include "../strings.h" #include "../Exception.h" using namespace std; static const unordered_map direction_map = { { "noord", Direction::NORTH }, { "oost", Direction::EAST }, { "zuid", Direction::SOUTH }, { "west", Direction::WEST }, }; void GameController::cmd_go(string & argv) { string direction_str = str_consume_arg(argv); if (direction_str.size() == 0) throw Exception("Dit commando heeft nog een argument met een richting nodig"); if (!direction_map.contains(direction_str)) throw Exception("Onbekende richting \"%s\", probeer noord|zuid|oost|west", direction_str.c_str()); Player & player = this->dungeon->get_player(); Direction direction = direction_map.at(direction_str); Location * next_location = player.get_location().get_exit(direction); if (next_location == nullptr) throw Exception("Er is geen uitgang in deze richting"); player.set_location(*next_location); this->dungeon->update(); }