37 lines
1.0 KiB
C++
37 lines
1.0 KiB
C++
#include "file_input.h"
|
|
#include <utility>
|
|
#include <string>
|
|
|
|
file_input::file_input(std::ifstream &&ifs):
|
|
in{std::move(ifs)} {}
|
|
|
|
game_command file_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") {
|
|
in >> cmd;
|
|
|
|
if (in.eof())
|
|
return game_command_panic;
|
|
|
|
return (game_command)((tmp = get_direction(cmd)) ==
|
|
game_command_panic
|
|
? tmp : tmp - move_north +
|
|
(cmd == "u" ? apply_north : attack_north));
|
|
} else // is just moving
|
|
return get_direction(cmd);
|
|
|
|
return game_command_pass;
|
|
}
|