Ignore:
Timestamp:
05/13/09 16:21:58 (11 years ago)
Author:
maximinus_parpg
Message:

Cleaned up NPC class (a lot)
Right-clicking an object now shows info, albeit on the terminal.
Added information to /maps/map_objects.xml

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/PARPG/scripts/engine.py

    r66 r68  
    2121from agents.hero import Hero 
    2222from agents.npc import NPC 
     23from objects import GameObject 
    2324 
    2425# design note: 
     
    6566                ypos = attrs.getValue("ypos") 
    6667                gfx = attrs.getValue("gfx") 
     68                ident = attrs.getValue("id") 
     69                text = attrs.getValue("text") 
    6770            except(KeyError): 
    6871                sys.stderr.write("Error: Data missing in NPC definition\n") 
    6972                sys.exit(False) 
    7073            # now we have the data, save it for later 
    71             self.npcs.append([xpos,ypos,gfx]) 
     74            self.npcs.append([xpos, ypos, gfx, ident, text]) 
    7275        elif(name == "object"): 
    7376            # same old same old 
     
    7679                ypos = attrs.getValue("ypos") 
    7780                gfx = attrs.getValue("gfx") 
     81                ident = attrs.getValue("id") 
     82                text = attrs.getValue("text") 
    7883            except(KeyError): 
    7984                sys.stderr.write("Error: Data missing in object definition\n") 
    8085                sys.exit(False) 
    8186            # now we have the data, save it for later 
    82             self.objects.append([xpos, ypos, gfx]) 
     87            self.objects.append([xpos, ypos, gfx, ident, text]) 
    8388 
    8489class Engine: 
     
    132137        for i in objects: 
    133138            self.view.addObject(float(i[0]), float(i[1]), i[2]) 
     139            # now add it as an engine object 
     140            self.objects.append(GameObject(int(float(i[0])), 
     141                                           int(float(i[1])), i[3], i[4])) 
    134142 
    135143    def addNPCs(self,npcs): 
     
    137145           and into this class""" 
    138146        for i in npcs: 
    139             self.view.addObject(float(i[0]), float(i[1]),i[2]) 
     147            self.view.addObject(float(i[0]), float(i[1]), i[2]) 
     148            # now add as engine data 
     149            self.npcs.append(NPC(int(float(i[0])), int(float(i[1])), 
     150                                 i[3], i[4])) 
     151 
     152    def getObjectString(self, xpos, ypos): 
     153        """Get the objects description of itself""" 
     154        # cycle through all of the objects; do we have something there? 
     155        for i in self.objects: 
     156            if((xpos == i.xpos)and(ypos == i.ypos)): 
     157                # yes, we have a match, so return the text 
     158                return i.text 
     159        for i in self.npcs: 
     160            if((xpos == i.xpos)and(ypos == i.ypos)): 
     161                # yes, we have a match, so return the text 
     162                return i.text 
     163        # nothing, but return the empty string in case we print it 
     164        return "" 
    140165 
    141166    def loadMap(self,map_file): 
     
    146171        # then we update FIFE with the PC, NPC and object details 
    147172        self.loadObjects(map_file[:-4]+"_objects.xml") 
    148         # add a callbacks routine to handle mouse clicks 
    149         # TODO: not totally happy about this code 
    150         self.view.mouseCallback=self.handleMouseClick 
    151173 
    152174    def handleMouseClick(self,position): 
Note: See TracChangeset for help on using the changeset viewer.