Key handler does not depend on curses's screen anymore

This commit is contained in:
Yohann D'ANELLO
2020-11-11 22:36:42 +01:00
parent 748561e87d
commit 0c17e74d6a
5 changed files with 68 additions and 45 deletions

View File

@ -1,4 +1,5 @@
from enum import Enum, auto
from typing import Optional, Tuple
from dungeonbattle.settings import Settings
@ -19,23 +20,25 @@ class KeyValues(Enum):
SPACE = auto()
@staticmethod
def translate_key(key: str, settings: Settings) -> "KeyValues":
def translate_key(key: str, settings: Settings) \
-> Tuple[Optional["KeyValues"], str]:
"""
Translate the raw string key into an enum value that we can use.
"""
if key in (settings.KEY_DOWN_SECONDARY,
settings.KEY_DOWN_PRIMARY):
return KeyValues.DOWN
return KeyValues.DOWN, key
elif key in (settings.KEY_LEFT_PRIMARY,
settings.KEY_LEFT_SECONDARY):
return KeyValues.LEFT
return KeyValues.LEFT, key
elif key in (settings.KEY_RIGHT_PRIMARY,
settings.KEY_RIGHT_SECONDARY):
return KeyValues.RIGHT
return KeyValues.RIGHT, key
elif key in (settings.KEY_UP_PRIMARY,
settings.KEY_UP_SECONDARY):
return KeyValues.UP
return KeyValues.UP, key
elif key == settings.KEY_ENTER:
return KeyValues.ENTER
return KeyValues.ENTER, key
elif key == ' ':
return KeyValues.SPACE
return KeyValues.SPACE, key
return None, key