43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
#include "console_input.h"
|
|
#include <utility>
|
|
#include <string>
|
|
|
|
console_input::console_input(std::istream &cin):
|
|
in{cin} {}
|
|
|
|
game_command console_input::get_command() {
|
|
std::string cmd;
|
|
in >> cmd;
|
|
game_command tmp;
|
|
|
|
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") {
|
|
bool use = cmd == "u";
|
|
|
|
in >> cmd;
|
|
|
|
if (in.eof())
|
|
return game_command_panic;
|
|
|
|
return (game_command)((tmp = get_direction(cmd)) ==
|
|
game_command_panic
|
|
? tmp : tmp - move_north +
|
|
(use ? apply_north : attack_north));
|
|
} else {
|
|
auto tmp = get_direction(cmd);
|
|
|
|
if (tmp != game_command_panic)
|
|
return tmp;
|
|
}
|
|
|
|
return game_command_pass;
|
|
}
|