Changeset 620


Ignore:
Timestamp:
08/04/10 16:03:31 (9 years ago)
Author:
domtron_vox
Message:

Patch by domtron_vox.
-added the ability to scroll the screen when the cursor is at an edge.

Location:
trunk/game/scripts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/game/scripts/gamescenecontroller.py

    r603 r620  
    2222 
    2323from fife import fife 
     24from fife import extensions 
    2425 
    2526from controllerbase import ControllerBase 
     
    6364 
    6465        self.mouse_callback = None 
    65         self.original_cursor_id = self.engine.getCursor().getId()       
     66        self.original_cursor_id = self.engine.getCursor().getId() 
     67         
     68        self.scroll_direction = [0, 0] 
     69        self.scroll_timer = extensions.fife_timer.Timer(100, 
     70                                          lambda: self.view.moveCamera \ 
     71                                                   (self.scroll_direction))     
    6672 
    6773        if model.settings.get("FIFE",  "PlaySounds"): 
     
    217223        self.last_mousecoords = fife.ScreenPoint(evt.getX(), evt.getY()) 
    218224        self.view.highlightFrontObject(self.last_mousecoords)        
     225         
     226        #set the trigger area in pixles 
     227        pixle_edge = 20 
     228         
     229        mouse_x = self.last_mousecoords.x 
     230        screen_width = self.model.engine.getSettings().getScreenWidth() 
     231        mouse_y = self.last_mousecoords.y 
     232        screen_height = self.model.engine.getSettings().getScreenHeight() 
     233  
     234        #edge logic 
     235        self.scroll_direction = [0, 0] 
     236        direction = self.scroll_direction 
     237        #up 
     238        if mouse_y <= pixle_edge:  
     239            direction[0] += 1 
     240            direction[1] -= 1 
     241        #right 
     242        if mouse_x >= screen_width - pixle_edge: 
     243            direction[0] += 1 
     244            direction[1] += 1 
     245        #down 
     246        if mouse_y >= screen_height - 60 - pixle_edge: 
     247            direction[0] -= 1 
     248            direction[1] += 1 
     249        #left 
     250        if mouse_x <= pixle_edge: 
     251            direction[0] -= 1 
     252            direction[1] -= 1 
     253        
    219254 
    220255    def handleCommands(self): 
     
    343378        # uncomment to instrument 
    344379        # t0 = time.time() 
     380         
    345381        if self.model.active_map: 
    346382            self.view.highlightFrontObject(self.last_mousecoords) 
    347383            self.view.refreshTopLayerTransparencies() 
     384             
     385            if self.scroll_direction != [0,0]: 
     386                self.scroll_timer.start() 
     387            else: self.scroll_timer.stop() 
     388             
    348389        self.handleCommands() 
    349390        # print "%05f" % (time.time()-t0,) 
  • trunk/game/scripts/gamesceneview.py

    r604 r620  
    1818from sounds import SoundEngine 
    1919from viewbase import ViewBase 
     20from fife import fife 
    2021 
    2122class GameSceneView(ViewBase): 
     
    130131                self.highlight_obj = None   
    131132            
     133 
     134    def moveCamera(self, direction): 
     135        """Move the camera in the given direction. 
     136        @type direction: list of two integers 
     137        @param direction: the two integers can be 1, -1, or 0 
     138        @return: None """   
     139         
     140        if 'cameras' in dir(self.model.active_map): 
     141            cam = self.model.active_map.cameras[self.model.active_map.my_cam_id] 
     142            location = cam.getLocation() 
     143            position = location.getMapCoordinates() 
     144             
     145            #how many pixls to move by each call 
     146            move_by = 1 
     147            #create a new DoublePoint3D and add it to position DoublePoint3D 
     148            new_x, new_y = move_by * direction[0], move_by * direction[1] 
     149 
     150            position_offset = fife.DoublePoint3D(int(new_x), int(new_y)) 
     151            position += position_offset 
     152             
     153            #give location the new position 
     154            location.setMapCoordinates(position) 
     155 
     156            #detach the camera from any objects 
     157            cam.detach() 
     158            #move the camera to the new location 
     159            cam.setLocation(location) 
     160             
     161             
Note: See TracChangeset for help on using the changeset viewer.