Files
cc3k/src/input/console_input.cc
2024-07-20 15:11:13 -04:00

65 lines
1.9 KiB
C++

#include "console_input.h"
#include <utility>
#include <string>
#include "../constants.h"
console_input::console_input(std::istream &cin):
in{cin} {}
game_command console_input::get_command() {
std::string cmd;
in >> cmd;
if (in.eof())
return GAME_COMMAND_TERMINATE;
if (cmd == "q")
return GAME_COMMAND_TERMINATE;
else if (cmd == "f")
return THE_WORLD;
else if (cmd == "r")
return GAME_RESTART;
else if (cmd == "u" || cmd == "a" || cmd == "T") {
auto cmdtmp = cmd;
in >> cmd;
if (in.eof())
return GAME_COMMAND_PANIC;
auto tmp = get_direction(cmd);
if (cmdtmp == "u")
return static_cast<game_command>
(tmp + APPLY_NORTH);
else if (cmdtmp == "a")
return static_cast<game_command>
(tmp + ATTACK_NORTH);
else
return static_cast<game_command>
(tmp + THROW_NORTH);
} else if (cmd == "yes") {
return game_command::ENTER;
} else if (cmd == "i") {
return TOGGLE_INVENTORY;
} else if (cmd == "s") {
return SELECT_SHADE;
} else if (cmd == "d") {
return SELECT_DROW;
} else if (cmd == "v") {
return SELECT_VAMPIRE;
} else if (cmd == "g") {
return SELECT_GOBLIN;
} else if (cmd == "t") {
return SELECT_TROLL;
} else {
auto tmp = get_direction(cmd);
if (tmp != GAME_COMMAND_PANIC)
return static_cast<game_command>
(tmp + MOVE_NORTH);
}
return GAME_COMMAND_PASS;
}