home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / Room.py < prev    next >
Encoding:
Python Source  |  2000-10-27  |  2.1 KB  |  94 lines

  1. import Bladex
  2. import Traps_C
  3.  
  4. Traps_C.InitSector()
  5.  
  6. last_room = 0
  7.  
  8. rooms = [0,0]
  9.  
  10. class ROOM:
  11.     def __init__(self,enter,leave,sld):
  12.         self.n_entrances = 0
  13.         self.room = 0
  14.         self.entrance = 0
  15.         self.inside = 0
  16.         self.enter_func = enter
  17.         self.leave_func = leave
  18.         self.sld = sld
  19.         self.sld_doors = [0,0]
  20.  
  21.     def IsInside(self):
  22.         return self.inside
  23.  
  24.     def AddDoor(self,sector_x,sector_y,sector_z):
  25.         sector = Bladex.GetSector(sector_x,sector_y,sector_z)
  26.         i = Traps_C.AddSector(sector,self)
  27.         rooms[i:i] = [self]
  28.         self.sld_doors[self.n_entrances:self.n_entrances] = [sector.Index]
  29.         sector.OnEnter = EnterEntrance
  30.         sector.OnLeave = LeaveEntrance
  31.         self.n_entrances = self.n_entrances + 1
  32.  
  33.     def AddEntity(self,name):
  34.         Traps_C.AddName(self.sld,name)
  35.  
  36.         for i in range(self.n_entrances):
  37.             Traps_C.AddName(self.sld_doors[i],name)
  38.  
  39.     def AddAllObjects(self,v):
  40.         Traps_C.AddAllObjects(self.sld,v)
  41.     
  42.         for i in range(self.n_entrances):
  43.             Traps_C.AddAllObjects(self.sld_doors[i],v)
  44.  
  45.  
  46.     def AddAllPersons(self,v):
  47.         Traps_C.AddAllPersons(self.sld,v)    
  48.             
  49.         for i in range(self.n_entrances):
  50.             Traps_C.AddAllPersons(self.sld_doors[i],v)
  51.  
  52. def CreateRoom(sector_x,sector_y,sector_z,enter_func,leave_func):    
  53.     sector = Bladex.GetSector(sector_x,sector_y,sector_z)
  54.     room = ROOM(enter_func,leave_func,sector.Index)    
  55.     i = Traps_C.AddSector(sector,room)
  56.     rooms[i:i] = [room]
  57.     sector.OnEnter = EnterRoom
  58.     sector.OnLeave = LeaveRoom
  59.  
  60.     return room
  61.  
  62. def EnterEntrance(sld,entity):
  63.     i = Traps_C.IsValidEntity(sld,entity)        
  64.     if (i >= 0):
  65.         p = rooms[i]
  66.         p.entrance = 1
  67.         p.room = 0
  68.  
  69. def EnterRoom(sld,entity):
  70.     i = Traps_C.IsValidEntity(sld,entity)
  71.     if (i >= 0):
  72.         p = rooms[i]
  73.         p.room = 1
  74.  
  75. def LeaveRoom(sld,entity):
  76.     i = Traps_C.IsValidEntity(sld,entity)
  77.     if (i >= 0):
  78.         p = rooms[i]
  79.         p.room = 0
  80.  
  81.         if (p.inside):
  82.             p.inside = 0
  83.             if (p.entrance):
  84.                 apply(p.leave_func, (sld,entity))
  85.  
  86. def LeaveEntrance(sld,entity):
  87.     i = Traps_C.IsValidEntity(sld,entity)
  88.     if (i >= 0):
  89.         p = rooms[i]
  90.         p.entrance = 0
  91.  
  92.         if (p.room):
  93.             p.inside = 1        
  94.             apply(p.enter_func, (sld,entity))