def handle_event(self, event): event_handled = False if event.type == KEYDOWN: if event.key == K_SPACE: self.caption += 1 if self.caption >= len( self.script[self.panel][1]): self.caption = 0 self.panel += 1 if self.panel >= len(self.script): self.finish() return None self.update_tut() elif event.key == K_ESCAPE: self.finish() if not event_handled: Activity.handle_event( self, event)
def handle_event( self, event): event_handled = False if event.type == MOUSEMOTION: event_handled = True if self._selectedwidget is not None and not self._selectedwidget.rect.collidepoint( event.pos): self._selectedwidget.unselect() self._selectedwidget = None for x in self._widgets: if x.is_selectable() and x.rect.collidepoint(event.pos): self._selectedwidget = x self._selectedwidget.select() break elif event.type == MOUSEBUTTONDOWN: for x in self._widgets: if x.is_clickable() and x.rect.collidepoint(event.pos): if x.onclick is not None: event_handled = True x.onclick() break elif event.type == KEYDOWN: if event.key == K_UP: if self._selectedwidget is not None: index = self._widgets.index( self._selectedwidget)-1 for i in xrange(len(self._widgets)-1): index2 = (index-i)%len(self._widgets) if self._widgets[index2].is_selectable(): print "changing selection", index2 self._selectedwidget.unselect() self._selectedwidget = self._widgets[index2] self._selectedwidget.select() break else: if len( self._widgets) > 0: self._selectedwidget = self._widgets[0] self._selectedwidget.select() elif event.key == K_DOWN: if self._selectedwidget is not None: index = self._widgets.index( self._selectedwidget)+1 for i in xrange(len(self._widgets)-1): index2 = (index+i)%len(self._widgets) if self._widgets[index2].is_selectable(): print "changing selection", index2 self._selectedwidget.unselect() self._selectedwidget = self._widgets[index2] self._selectedwidget.select() break else: if len( self._widgets) > 0: self._selectedwidget = self._widgets[0] self._selectedwidget.select() elif event.key == K_SPACE or event.key == K_RETURN: if self._selectedwidget is not None and self._selectedwidget.is_clickable: if self._selectedwidget.onclick is not None: self._selectedwidget.onclick() elif event.key == K_ESCAPE: self.finish() if not event_handled: Activity.handle_event( self, event)
def handle_event(self, event): event_handled = False if (event.type == MOUSEBUTTONDOWN and event.button == 3) or (event.type == KEYDOWN and event.key == K_TAB): if self.player_launchable: self.charging = True elif (event.type == MOUSEBUTTONUP and event.button == 3) or (event.type == KEYUP and event.key == K_TAB): if self.charging: #figure out the impulse vector diff = self.mousepos-self.player.position dist = diff.get_length() mag = IMPULSEMOD*self.charge force = diff * mag/dist #unstick the player from any sticky objects, re-enable collisions for x in self.player.joints: self.space.remove( x) self.player.shape.collision_type = COLL_PLAYER self.player.joints = [] #finish up self.make_particles( self.player.position, int(self.charge*20), PLAYER_PARTICLE_COLOR) self.player.apply_impulse( force) self.charging = False self.player_launchable = False self.charge = 0.0 self.charge_cap = 0.0 elif event.type == MOUSEBUTTONDOWN and event.button == 1: #deal with draggable spinners mousepos = pygame.mouse.get_pos() mousepos = (mousepos[0],750-mousepos[1]) shapes = self.space.point_query( mousepos) for shape in shapes: if hasattr( shape.body, "draggable") and shape.body.draggable: self.grabbed = shape.body mousebod = pymunk.Body() mousebod.position = self.mousepos joint = pymunk.PivotJoint(mousebod, shape.body, mousepos) joint.max_force = 2e9 self.space.add(joint) self.drag_joint = joint self.drag_body = mousebod break elif event.type == MOUSEBUTTONUP and event.button == 1: #release the grabbed spinner if self.grabbed is not None: self.grabbed.velocity = Vec2d(0,0) self.grabbed.angular_velocity = 0.0 self.grabbed.position = self.grabbed.home_pos self.grabbed.shape.position = self.grabbed.position self.grabbed.reset_forces() self.grabbed = None if self.drag_joint is not None: self.space.remove( self.drag_joint) self.drag_joint = None self.drag_body = None elif event.type == KEYDOWN: if event.key == K_ESCAPE: if self.game_mode != GAME_NORMAL: self.finish() else: self.pause_game() elif event.key == K_F2: self.complex_drawing = not self.complex_drawing elif event.key == K_SPACE: if self.game_mode == GAME_WON: self.start_next_level() elif self.game_mode == GAME_OVER: self.reload_level() else: self.resume_game() elif event.key == K_r: SegmentRenderer.extended_segment_render = not SegmentRenderer.extended_segment_render print SegmentRenderer.extended_segment_render elif event.key == K_q: self.level_elements = ET.parse( self.filename).getroot() self.reload_level() elif event.key == K_1: self.complex_drawing = not self.complex_drawing elif event.key == K_z: self.reposition_player( self.mousepos, (0,0)) elif event.key == K_v: self.player_float += 100 print self.player_float elif event.key == K_b: self.player_float -= 100 print self.player_float elif event.key == K_p: self.make_particles( self.mousepos, 20, PLAYER_PARTICLE_COLOR) elif event.key == K_F12: resources.force_reload() print "schwat" elif event.key == K_d: self.optimize_drawing = not self.optimize_drawing elif event.key == K_F4: pygame.image.save(pygame.display.get_surface(), "screen.png") if not event_handled: Activity.handle_event(self, event)