Ejemplo n.º 1
0
 def run(self, on_frame, on_keydown=None, on_keyup=None, on_mousedown=None, on_mouseup=None, on_mousemotion=None):
     latencies = []
     while not self.done:
         frame_begin = now = time.time()
         on_frame()
         pygame.display.flip()
         now = time.time()
         latencies.append(now - frame_begin)
         if len(latencies) >= 100:
             latencies.pop(0)
         self.avg_latency = sum(latencies) / len(latencies)
         for event in pygame.event.get():
             if event.type == QUIT:
                 self.done = True
             if on_keydown and event.type == KEYDOWN:
                 name = keyboard.bindings.get(event.key, None)
                 modifiers = frozenset(keyboard.parse_modifiers(event.mod))
                 on_keydown(name, modifiers, event.unicode)
             if on_keyup and event.type == KEYUP:
                 name = keyboard.bindings.get(event.key, None)
                 modifiers = frozenset(keyboard.parse_modifiers(event.mod))
                 on_keyup(name, modifiers)
             if on_mousedown and event.type == MOUSEBUTTONDOWN:
                 on_mousedown(event.button, event.pos)
             if on_mouseup and event.type == MOUSEBUTTONUP:
                 on_mouseup(event.button, event.pos)
             if on_mousemotion and event.type == MOUSEMOTION:
                 on_mousemotion(event.pos, event.rel)
Ejemplo n.º 2
0
 def run(self):
     self.running = True
     latencies = []
     while self.running:
         frame_begin = now = time.time()
         self.listeners["on_frame"](now)
         pygame.display.flip()
         now = time.time()
         latencies.append(now - frame_begin)
         if len(latencies) >= 100:
             latencies.pop(0)
         self.average_latency = sum(latencies) / len(latencies)
         for event in pygame.event.get():
             if event.type == QUIT:
                 self.running = False
             if 'on_keydown' in self.listeners and event.type == KEYDOWN:
                 name = keyboard.bindings.get(event.key, None)
                 modifiers = frozenset(keyboard.parse_modifiers(event.mod))
                 self.listeners["on_keydown"](name, modifiers, event.unicode)
             if 'on_keyup' in self.listeners and event.type == KEYUP:
                 name = keyboard.bindings.get(event.key, None)
                 modifiers = frozenset(keyboard.parse_modifiers(event.mod))
                 self.listeners["on_keyup"](name, modifiers)
             if 'on_mousedown' in self.listeners and event.type == MOUSEBUTTONDOWN:
                 self.listeners["on_mousedown"](event.button, event.pos)
             if 'on_mouseup' in self.listeners and event.type == MOUSEBUTTONUP:
                 self.listeners["on_mouseup"](event.button, event.pos)
             if 'on_mousemotion' in self.listeners and event.type == MOUSEMOTION:
                 self.listeners["on_mousemotion"](event.pos, event.rel)
Ejemplo n.º 3
0
def dispatch(emit, event):
    global screen
    if event.type == pygame.QUIT:
        if not emit('quit', []):
            sys.exit(0)
    if event.type == pygame.VIDEORESIZE:
        size = [event.w, event.h]
        emit('resize', size)
        screen = Surface(pygame.display.set_mode(size, pygame.RESIZABLE))
        emit('frame', [screen])
        pygame.display.flip()
    if event.type == pygame.KEYDOWN:
        key = keyboard.bindings.get(event.key)
        modifiers = frozenset(keyboard.parse_modifiers(event.mod))
        emit('keydown', [key, modifiers, event.unicode])
    if event.type == pygame.KEYUP:
        key = keyboard.bindings.get(event.key)
        modifiers = frozenset(keyboard.parse_modifiers(event.mod))
        emit('keyup', [key, modifiers])
    if event.type == pygame.MOUSEMOTION:
        emit('motion', [vec2(*event.pos), vec2(*event.rel), event.buttons])
    if event.type == pygame.MOUSEBUTTONDOWN:
        emit('buttondown', [vec2(*event.pos), event.button])
    if event.type == pygame.MOUSEBUTTONUP:
        emit('buttonup', [vec2(*event.pos), event.button])
Ejemplo n.º 4
0
def event_dispatch(event, listeners):
    if 'on_keydown' in listeners     and event.type == KEYDOWN:
        name = keyboard.bindings.get(event.key, None)
        modifiers = frozenset(keyboard.parse_modifiers(event.mod))
        listeners["on_keydown"](name, modifiers, event.unicode)
    if 'on_keyup' in listeners       and event.type == KEYUP:
        name = keyboard.bindings.get(event.key, None)
        modifiers = frozenset(keyboard.parse_modifiers(event.mod))
        listeners["on_keyup"](name, modifiers)
    if 'on_mousedown' in listeners   and event.type == MOUSEBUTTONDOWN:
        listeners["on_mousedown"](event.button, event.pos)
    if 'on_mouseup' in listeners     and event.type == MOUSEBUTTONUP:
        listeners["on_mouseup"](event.button, event.pos)
    if 'on_mousemotion' in listeners and event.type == MOUSEMOTION:
        listeners["on_mousemotion"](event.pos, event.rel)