Files
ages/agame/display/__init__.py

48 lines
1.3 KiB
Python
Raw Normal View History

import platform
from typing import Optional, Sequence, Tuple
from agame.action import Action
from agame.dialog import DialogOption
from .display import Display
if platform.system() in ("Linux", "Darwin", "Unix"):
from .unix import *
class BasicDisplay(Display):
"""
A basic display that should be supported on all platforms. It just outputs
text with some color.
"""
def line(self, line: str = ""):
print(line)
def input(self, prompt: Optional[str] = None) -> str:
if prompt is None:
prompt = "> "
return input(prompt)
def wait_for_ack(self, prompt: Optional[str] = "Press enter to continue..."):
input(prompt or "")
def dialog_options(self, options: Sequence[DialogOption]) -> DialogOption:
valid_opts = range(1, len(options) + 1)
def print_opts():
for i, opt in enumerate(options):
self.line(f"{i}. {opt.text}")
print_opts()
while True:
got = self.input("? ")
try:
choice = int(got)
except ValueError:
print_opts()
continue
if choice in valid_opts:
break
index = choice - 1
selection = options[index]
return selection