Files
cc3k/src/input/curses_input.cc

111 lines
2.5 KiB
C++

#include "curses_input.h"
#include "../constants.h"
curses_input::curses_input(cursor *new_curse):
curse{new_curse} {}
game_command curses_input::get_command() {
int tmp;
switch (curse->getcmd()) {
case 'h':
return game_command::MOVE_WEAT;
case 'j':
return game_command::MOVE_SOUTH;
case 'k':
return game_command::MOVE_NORTH;
case 'l':
return game_command::MOVE_EAST;
case 'y':
return game_command::MOVE_NORTHWEST;
case 'u':
return game_command::MOVE_NORTHEAST;
case 'b':
return game_command::MOVE_SOUTHWEST;
case 'n':
return game_command::MOVE_SOUTHEAST;
case 'a':
tmp = APPLY_NORTH;
break; // wait for another command
case '<':
return game_command::UP_STAIRS;
case '>':
return game_command::DOWN_STAIRS;
case 'q':
return GAME_COMMAND_TERMINATE;
case 'f':
return game_command::THE_WORLD;
case 'd':
return game_command::KING_CRIMSON;
case 'r':
return GAME_RESTART;
case 'e':
return game_command::ENTER;
case 'i':
return TOGGLE_INVENTORY;
case 't':
tmp = THROW_NORTH;
break;
default:
return GAME_COMMAND_PASS;
}
switch (curse->getcmd()) {
case 'h':
return static_cast<game_command>
(tmp + WEST);
case 'j':
return static_cast<game_command>
(tmp + SOUTH);
case 'k':
return static_cast<game_command>
(tmp + NORTH);
case 'l':
return static_cast<game_command>
(tmp + EAST);
case 'y':
return static_cast<game_command>
(tmp + NORTHWEST);
case 'u':
return static_cast<game_command>
(tmp + NORTHEAST);
case 'b':
return static_cast<game_command>
(tmp + SOUTHWEST);
case 'n':
return static_cast<game_command>
(tmp + SOUTHEAST);
default:
return GAME_COMMAND_PANIC;
}
return game_command::GAME_COMMAND_PANIC;
}