squirrel-battle/squirrelbattle/enums.py

95 lines
2.6 KiB
Python
Raw Permalink Normal View History

2021-01-10 09:46:17 +00:00
# Copyright (C) 2020-2021 by ÿnérant, eichhornchen, nicomarg, charlse
2020-11-27 15:33:17 +00:00
# SPDX-License-Identifier: GPL-3.0-or-later
2021-01-10 10:25:53 +00:00
from enum import auto, Enum
2020-11-11 21:51:02 +00:00
from typing import Optional
2020-11-11 21:22:33 +00:00
2020-11-19 01:18:08 +00:00
from squirrelbattle.settings import Settings
2020-11-11 21:22:33 +00:00
2020-11-18 13:56:59 +00:00
# This file contains a few useful enumeration classes used elsewhere in the code
2020-11-12 00:58:10 +00:00
class DisplayActions(Enum):
"""
Display actions options for the callable displayaction Game uses
2020-11-18 13:56:59 +00:00
It just calls the same action on the display object displayaction refers to.
"""
REFRESH = auto()
UPDATE = auto()
MOUSE = auto()
2020-11-11 21:22:33 +00:00
2020-11-12 00:58:10 +00:00
2020-11-11 21:22:33 +00:00
class GameMode(Enum):
"""
Game mode options.
"""
2020-11-11 21:22:33 +00:00
MAINMENU = auto()
PLAY = auto()
SETTINGS = auto()
INVENTORY = auto()
STORE = auto()
CHEST = auto()
2020-12-18 21:24:41 +00:00
CREDITS = auto()
2020-11-11 21:22:33 +00:00
class KeyValues(Enum):
"""
Key values options used in the game.
"""
2020-11-11 21:22:33 +00:00
UP = auto()
DOWN = auto()
LEFT = auto()
RIGHT = auto()
ENTER = auto()
2020-12-04 13:41:59 +00:00
INVENTORY = auto()
2020-12-04 15:53:27 +00:00
USE = auto()
EQUIP = auto()
DROP = auto()
2020-11-11 21:22:33 +00:00
SPACE = auto()
2020-12-09 14:32:37 +00:00
CHAT = auto()
2020-12-12 17:12:37 +00:00
WAIT = auto()
2021-01-06 13:55:16 +00:00
LADDER = auto()
2021-01-08 17:06:26 +00:00
LAUNCH = auto()
2021-01-10 16:10:00 +00:00
DANCE = auto()
2020-11-11 21:22:33 +00:00
@staticmethod
2021-01-10 18:17:04 +00:00
def translate_key(key: str, settings: Settings) \
-> Optional["KeyValues"]: # noqa: C901
2020-11-11 21:22:33 +00:00
"""
Translates the raw string key into an enum value that we can use.
2020-11-11 21:22:33 +00:00
"""
if key in (settings.KEY_DOWN_SECONDARY,
settings.KEY_DOWN_PRIMARY):
return KeyValues.DOWN
2020-11-11 21:22:33 +00:00
elif key in (settings.KEY_LEFT_PRIMARY,
settings.KEY_LEFT_SECONDARY):
return KeyValues.LEFT
2020-11-11 21:22:33 +00:00
elif key in (settings.KEY_RIGHT_PRIMARY,
settings.KEY_RIGHT_SECONDARY):
return KeyValues.RIGHT
2020-11-11 21:22:33 +00:00
elif key in (settings.KEY_UP_PRIMARY,
settings.KEY_UP_SECONDARY):
return KeyValues.UP
2020-11-11 21:22:33 +00:00
elif key == settings.KEY_ENTER:
return KeyValues.ENTER
2020-12-04 13:41:59 +00:00
elif key == settings.KEY_INVENTORY:
return KeyValues.INVENTORY
2020-12-04 15:53:27 +00:00
elif key == settings.KEY_USE:
return KeyValues.USE
elif key == settings.KEY_EQUIP:
return KeyValues.EQUIP
elif key == settings.KEY_DROP:
return KeyValues.DROP
2020-11-11 21:22:33 +00:00
elif key == ' ':
return KeyValues.SPACE
2020-12-09 14:32:37 +00:00
elif key == settings.KEY_CHAT:
return KeyValues.CHAT
2020-12-12 17:12:37 +00:00
elif key == settings.KEY_WAIT:
return KeyValues.WAIT
2021-01-06 13:55:16 +00:00
elif key == settings.KEY_LADDER:
return KeyValues.LADDER
2021-01-08 17:06:26 +00:00
elif key == settings.KEY_LAUNCH:
return KeyValues.LAUNCH
2021-01-10 16:10:00 +00:00
elif key == settings.KEY_DANCE:
return KeyValues.DANCE