#pragma once #include #include #include "backend/Player.h" class Dungeon; class Location; enum FollowupAction { NONE, UPDATE, EXIT, RESTART, }; class GameController { typedef FollowupAction Cmd(std::string &); public: GameController(Dungeon & dungeon); virtual ~GameController() = default; public: FollowupAction cmd(std::string &); private: void cmdset_default(); void cmdset_death(); private: std::unordered_map cmds; Cmd cmd_query; Cmd cmd_search; Cmd cmd_go; Cmd cmd_get; Cmd cmd_put; Cmd cmd_view; Cmd cmd_hit; Cmd cmd_equip; Cmd cmd_wait; Cmd cmd_use; Cmd cmd_help; Cmd cmd_cheat; Cmd cmd_quit; Cmd cmd_restart; private: Player & player; Dungeon & dungeon; };