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

  1.  
  2. import Bladex
  3. import InitDataField
  4. import GameStateAux
  5. import ObjStore
  6.  
  7. #####################################################################################
  8. #                                                                                    #
  9. #    FireCheck.py                                                                    #
  10. #                                                                                    #
  11. #    Las culpas a --> Yuio                                                            #
  12. #                                                                                    #
  13. #####################################################################################
  14.  
  15.  
  16.  
  17. ######## handler por defecto 
  18.  
  19. def debugPSCEvent(name,hit_entity,x,y,z,vx,vy,vz,wcx,wcy,wcz,wdx,wdy,wdz):
  20.     print("unhandled hit_entity:"+hit_entity+" by:"+name)
  21.     if hit_entity=="Player1":
  22.         print "player hit!!!!!!!!!!!!!!!!!!!!!!!!!!!"
  23.  
  24.  
  25.  
  26. ######## timer de checkeo
  27.  
  28. def checkPSysTimer(partSys,time):
  29.     #print("checkPSysTimer(partSys,time)");
  30.     partSysEnt            = Bladex.GetEntity(partSys)
  31.     partSysCheckerEnt    = partSysEnt.Data.psCheckerData    
  32.  
  33.     if (time > partSysCheckerEnt.stopTime) :
  34.         #print("stopTimer");
  35.         partSysCheckerEnt.stopCheck()
  36.         return 
  37.  
  38.     i=0
  39.     n=partSysCheckerEnt.precission
  40.     for i in range(n) :
  41.         hitParticle            = partSysEnt.GetParticleEntity()
  42.         hitParticle.HitFunc = partSysCheckerEnt.onHitFunc
  43.         hitParticle.ObjCTest= 1
  44.  
  45. Bladex.CreateTimer("partSysCheck", 0.1 )
  46.  
  47.  
  48.  
  49. ######### clase checkeadora de colisiones (PSysChecker)
  50.  
  51. class PSysChecker:
  52.  
  53.     ObjId=""
  54.     onHitFunc = debugPSCEvent
  55.     precission = 1
  56.  
  57.  
  58.     def __init__(self):
  59.  
  60.         self.ObjId=ObjStore.GetNewId() # Para identificarlo al grabar/guardar
  61.         ObjStore.ObjectsStore[self.ObjId]=self
  62.  
  63.     def __del__(self):
  64.         del ObjStore.ObjectsStore[self.ObjId]
  65.  
  66.     def startCheck(self,partSys,time):        
  67.         #print("PSysChecker.startCheck(time)")
  68.         t = Bladex.GetTime()
  69.         self.startTime    = t
  70.         self.stopTime    = t+ time
  71.         self.pSys        = partSys
  72.         InitDataField.Initialise(self.pSys)
  73.         self.pSys.Data.psCheckerData=self
  74.         self.pSys.TimerFunc=checkPSysTimer
  75.         self.pSys.SubscribeToList("partSysCheck")
  76.  
  77.     def stopCheck(self):
  78.         #print("PSysChecker.stopCheck()")
  79.         self.pSys.TimerFunc=""
  80.         self.pSys.RemoveFromList("partSysCheck")
  81.  
  82.     def persistent_id(self):
  83.         return self.ObjId
  84.  
  85.     def __getstate__(self):
  86.         # Tiene que devolver c≤mo poder guardar el estado de la clase
  87.         return (1,
  88.                 self.ObjId,
  89.                 GameStateAux.SaveFunctionAux(self.onHitFunc),
  90.                 self.precission,
  91.                 GameStateAux.SaveNewMembers(self)
  92.                 )
  93.  
  94.     def __setstate__(self,parm):
  95.         # Toma como parßmetro lo que devuelve __getstate__() y debe recrear la clase
  96.         if parm[0]==1:
  97.             self.ObjId=parm[1]
  98.             ObjStore.ObjectsStore[self.ObjId]=self
  99.             GameStateAux.LoadFunctionAux(parm[2],self,"onHitFunc")
  100.             self.precission=parm[3]
  101.             GameStateAux.LoadNewMembers(self,parm[4])
  102.         else:
  103.             print "PSysChecker.__setstate__() -> Version mismatch"
  104.             # Valores de creaci≤n por si valen para algo.
  105.             self.onHitFunc    = debugPSCEvent
  106.             self.precission = 1
  107.             self.ObjId=ObjStore.GetNewId() # Para identificarlo al grabar/guardar
  108.  
  109.  
  110.  
  111. ######### creacion de la clase PSysChecker
  112.  
  113. def createPSysChecker():
  114.     #print("createPSysChecker(*)")
  115.     psChecker=PSysChecker()
  116.     return psChecker
  117.  
  118.