Huge refactor of the libstormgames library. It is hopefully mostly backwards compatible. Still lots of testing to do, and probably some fixes needed, but this is a good start.
This commit is contained in:
77
input.py
Normal file
77
input.py
Normal file
@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Input handling for Storm Games.
|
||||
|
||||
Provides functionality for:
|
||||
- Text input dialogs
|
||||
- Game pause functionality
|
||||
- Exit handling
|
||||
"""
|
||||
|
||||
import pygame
|
||||
import time
|
||||
import wx
|
||||
from .speech import speak
|
||||
|
||||
def get_input(prompt="Enter text:", text=""):
|
||||
"""Display a dialog box for text input.
|
||||
|
||||
Args:
|
||||
prompt (str): Prompt text to display (default: "Enter text:")
|
||||
text (str): Initial text in input box (default: "")
|
||||
|
||||
Returns:
|
||||
str: User input text, or None if cancelled
|
||||
"""
|
||||
app = wx.App(False)
|
||||
dialog = wx.TextEntryDialog(None, prompt, "Input", text)
|
||||
dialog.SetValue(text)
|
||||
if dialog.ShowModal() == wx.ID_OK:
|
||||
userInput = dialog.GetValue()
|
||||
else:
|
||||
userInput = None
|
||||
dialog.Destroy()
|
||||
return userInput
|
||||
|
||||
def pause_game():
|
||||
"""Pauses the game until user presses backspace."""
|
||||
speak("Game paused, press backspace to resume.")
|
||||
pygame.event.clear()
|
||||
try:
|
||||
pygame.mixer.pause()
|
||||
except:
|
||||
pass
|
||||
|
||||
try:
|
||||
pygame.mixer.music.pause()
|
||||
except:
|
||||
pass
|
||||
|
||||
while True:
|
||||
event = pygame.event.wait()
|
||||
if event.type == pygame.KEYDOWN and event.key == pygame.K_BACKSPACE:
|
||||
break
|
||||
|
||||
try:
|
||||
pygame.mixer.unpause()
|
||||
except:
|
||||
pass
|
||||
|
||||
try:
|
||||
pygame.mixer.music.unpause()
|
||||
except:
|
||||
pass
|
||||
|
||||
pygame.event.pump()
|
||||
|
||||
def check_for_exit():
|
||||
"""Check if user has pressed escape key.
|
||||
|
||||
Returns:
|
||||
bool: True if escape was pressed, False otherwise
|
||||
"""
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
|
||||
return True
|
||||
return False
|
||||
pygame.event.pump()
|
Reference in New Issue
Block a user