Ticket #124: highlight.2.diff

File highlight.2.diff, 4.1 KB (added by Beliar, 10 years ago)

patch for world.py. Added docstring to highlightFrontObject

  • world.py

     
    8080        if (TDS.readSetting("PlaySounds") == "1"): 
    8181            if(self.sounds.music_init == False): 
    8282                self.sounds.playMusic("/music/preciouswasteland.ogg") 
    83                  
     83         
     84        #The current highlighted object 
     85        self.highlight_obj = None 
     86         
     87        #Last saved mouse coords 
     88        self.last_mousecoords = None 
     89     
    8490    def quitGame(self): 
    8591        """Quits the game 
    8692        @return: None""" 
     
    233239           @type evt: fife.event 
    234240           @param evt: The event that fife caught 
    235241           @return: None""" 
    236         click = fife.ScreenPoint(evt.getX(), evt.getY()) 
     242        self.last_mousecoords = fife.ScreenPoint(evt.getX(), evt.getY()) 
     243        self.highlightFrontObject() 
     244 
     245    def highlightFrontObject(self): 
     246        """Highlights the object that is at the current mouse coordinates""" 
     247        if(self.last_mousecoords): 
     248            front_obj = self.getObjectAtCoords(self.last_mousecoords) 
     249            if front_obj != None: 
     250                if self.highlight_obj == None or front_obj.getId() != self.highlight_obj.getId(): 
     251                    self.active_map.outline_render.removeAllOutlines() 
     252                    self.highlight_obj = front_obj 
     253                    if self.highlight_obj:                     
     254                        self.active_map.outline_render.addOutlined(self.highlight_obj, 0, \ 
     255                                                                    137, 255, 2) 
     256                        # get the text 
     257                        item = self.data.objectActive(self.highlight_obj.getId()) 
     258                        if(item is not None): 
     259                            self.displayObjectText(self.highlight_obj, item.name) 
     260            else: 
     261                self.active_map.outline_render.removeAllOutlines() 
     262                self.highlight_obj = None 
     263                 
     264    def getObjectAtCoords(self, coords): 
     265        """Get the object which is at the given coords 
     266            @type coords: fife.Screenpoint 
     267            @param coords: Coordinates where to check for an object 
     268            @rtype: fife.Object 
     269            @return: An object or None""" 
    237270        i=self.active_map.cameras[self.active_map.my_cam_id].\ 
    238                 getMatchingInstances(click, self.active_map.agent_layer) 
     271            getMatchingInstances(coords, self.active_map.agent_layer) 
    239272        # no object returns an empty tuple 
    240273        if(i != ()): 
    241274            front_y = 0 
    242             front_obj = None 
     275             
    243276 
    244277            for obj in i: 
    245278                # check to see if this in our list at all 
     
    254287                    if obj_screen_coords.y > front_y: 
    255288                        #Object on the foreground 
    256289                        front_y = obj_screen_coords.y 
    257                         front_obj = obj 
    258  
    259             if front_obj:                     
    260                 self.active_map.outline_render.removeAllOutlines()  
    261                 self.active_map.outline_render.addOutlined(front_obj, 0, \ 
    262                                                                137, 255, 2) 
    263                 # get the text 
    264                 item = self.data.objectActive(front_obj.getId()) 
    265                 if(item is not None): 
    266                     self.displayObjectText(front_obj, item.name) 
     290                        return obj 
     291                    else: 
     292                        return None 
    267293        else: 
    268             # erase the outline 
    269             self.active_map.outline_render.removeAllOutlines() 
     294            return None          
    270295 
    271296    def getCoords(self, click): 
    272297        """Get the map location x, y coordinates from the screen coordinates 
     
    292317        self.maps = {} 
    293318 
    294319    def pump(self): 
    295         """Routine called during each frame. Our main loop is in ./run.py 
    296            We ignore this main loop (but FIFE complains if it is missing).""" 
    297         pass 
     320        """Routine called during each frame. Our main loop is in ./run.py""" 
     321        self.highlightFrontObject()