Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)