import time
import util.Strings as Strings
from operationscore.Input import *
import pygame
from pygame.locals import *
#This class processes input from an already running pygame instance and passes
#it to the parent. This class requires an already running pygame instance.
class PygameInput(Input):
"""PygameInput is an input tied to the PygameDisplay. Specify:
True to receive an input every frame specifying the current mouse
position.
True to grab keystrokes
True to grab clicks.
NB: If follow mouse is enabled, PygameInput will not return mouse and keypresses. You can, however,
instantiate other PygameInputs in the XML that will capture mouse and keypresses."""
def sensingLoop(self):
if 'Scale' in self:
scale = self['Scale']
else:
scale = 1
if self['FollowMouse']:
self.respond({Strings.LOCATION: pygame.mouse.get_pos()})
return
for event in pygame.event.get():
if event.type is KEYDOWN:
if event.key == 27:
self.die()
if self['Keyboard']:
try:
self.respond({'Key': event.key, 'KeyChar': chr(event.key)})
except:
self.respond({'Key': event.key})
return
else:
pygame.event.post(event)
if event.type is MOUSEBUTTONDOWN:
if self['Clicks']:
self.respond({Strings.LOCATION: pygame.mouse.get_pos()})
else:
pygame.event.post(event)