home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / Levers.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-10-27  |  8.8 KB  |  237 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Bladex
  5. import InitDataField
  6. import Actions
  7. import GameStateAux
  8. import ObjStore
  9. import B3DLib
  10. LEVER_DISTANCE = 2000
  11. LEVER_OFF = 0
  12. LEVER_ON = 1
  13. LEVER_OFF2ON = 2
  14. LEVER_ON2OFF = 3
  15.  
  16. class LeverType:
  17.     bod_name = ''
  18.     stick_bod_name = ''
  19.     stick_offset = (0, 0, 0)
  20.     center = (0, 0, 0)
  21.     axis = (0, 0, 0)
  22.     iang = 0.0
  23.     on_time = 0.0
  24.     off_time = 0.0
  25.  
  26.  
  27. def ActivateLever(pj_name, event):
  28.     pj = Bladex.GetEntity(pj_name)
  29.     lever = pj.Data.obj_used.Data.leverdata
  30.     if lever.state == LEVER_ON:
  31.         lever.TurnOff()
  32.     elif lever.state == LEVER_OFF:
  33.         lever.TurnOn()
  34.     
  35.     pj.Data.obj_used = None
  36.     pj.DelAnmEventFunc('Activate')
  37.  
  38.  
  39. def LeverUseFunc(lever_name, use_from):
  40.     obj = Bladex.GetEntity(lever_name)
  41.     if B3DLib.GetXZDistance('Player1', lever_name) < LEVER_DISTANCE:
  42.         lever = obj.Data.leverdata
  43.         if lever.state == LEVER_ON and lever.mode != 2 or lever.state == LEVER_OFF:
  44.             pj = Bladex.GetEntity('Player1')
  45.             if lever.state == LEVER_ON:
  46.                 pj.LaunchAnmType('lvr_u')
  47.             else:
  48.                 pj.LaunchAnmType('lvr_d')
  49.             pj.Data.obj_used = obj
  50.             Actions.QuickTurnToFaceEntity('Player1', lever_name)
  51.             pj.AddAnmEventFunc('Activate', ActivateLever)
  52.         
  53.     
  54.  
  55.  
  56. def MoveLeverFunc(lever_name, time):
  57.     stick_obj = Bladex.GetEntity(lever_name)
  58.     lever = stick_obj.Data.leverdata
  59.     if time < lever.end_time:
  60.         c = lever.type.center
  61.         e = lever.type.axis
  62.         itime = time - lever.last_time
  63.         stick_obj.RotateRel(c[0], c[1], c[2], e[0], e[1], e[2], lever.w * itime)
  64.         lever.last_time = time
  65.     else:
  66.         c = lever.type.center
  67.         e = lever.type.axis
  68.         itime = lever.end_time - lever.last_time
  69.         stick_obj.RotateRel(c[0], c[1], c[2], e[0], e[1], e[2], lever.w * itime)
  70.         stick_obj.RemoveFromList('Timer60')
  71.         stick_obj.TimerFunc = None
  72.         if lever.state == LEVER_ON2OFF:
  73.             lever.state = LEVER_OFF
  74.         elif lever.state == LEVER_OFF2ON:
  75.             lever.state = LEVER_ON
  76.             if lever.mode == 1:
  77.                 lever.TurnOff()
  78.             
  79.         
  80.  
  81.  
  82. class Lever:
  83.     ObjId = ''
  84.     state = LEVER_OFF
  85.     mode = 1
  86.     OnTurnOnFunc = None
  87.     OnTurnOnArgs = ()
  88.     OnTurnOffFunc = None
  89.     OnTurnOffArgs = ()
  90.     stick_obj = None
  91.     type = None
  92.     obj = None
  93.     
  94.     def __init__(self):
  95.         self.ObjId = ObjStore.GetNewId()
  96.         ObjStore.ObjectsStore[self.ObjId] = self
  97.  
  98.     
  99.     def __del__(self):
  100.         del ObjStore.ObjectsStore[self.ObjId]
  101.  
  102.     
  103.     def TurnOn(self):
  104.         if self.state == LEVER_OFF:
  105.             self.stick_obj.TimerFunc = MoveLeverFunc
  106.             self.stick_obj.SubscribeToList('Timer60')
  107.             self.start_time = Bladex.GetTime()
  108.             self.last_time = Bladex.GetTime()
  109.             self.end_time = self.start_time + self.type.on_time
  110.             self.w = self.type.iang / self.type.on_time
  111.             self.state = LEVER_OFF2ON
  112.             if self.OnTurnOnFunc:
  113.                 apply(self.OnTurnOnFunc, self.OnTurnOnArgs)
  114.             
  115.         
  116.  
  117.     
  118.     def TurnOff(self):
  119.         if self.state == LEVER_ON:
  120.             self.stick_obj.TimerFunc = MoveLeverFunc
  121.             self.stick_obj.SubscribeToList('Timer60')
  122.             self.start_time = Bladex.GetTime()
  123.             self.last_time = Bladex.GetTime()
  124.             self.end_time = self.start_time + self.type.off_time
  125.             self.w = -(self.type.iang) / self.type.off_time
  126.             self.state = LEVER_ON2OFF
  127.             if self.OnTurnOffFunc:
  128.                 apply(self.OnTurnOffFunc, self.OnTurnOffArgs)
  129.             
  130.         
  131.  
  132.     
  133.     def persistent_id(self):
  134.         return self.ObjId
  135.  
  136.     
  137.     def __getstate__(self):
  138.         stick_objId = None
  139.         if self.stick_obj:
  140.             stick_objId = self.stick_obj.Name
  141.         
  142.         return (1, self.ObjId, self.state, self.mode, GameStateAux.SaveFunctionAux(self.OnTurnOnFunc), self.OnTurnOnArgs, GameStateAux.SaveFunctionAux(self.OnTurnOffFunc), self.OnTurnOffArgs, stick_objId, self.type, GameStateAux.SaveEntityAux(self.obj), GameStateAux.SaveNewMembers(self))
  143.  
  144.     
  145.     def __setstate__(self, parm):
  146.         if parm[0] == 1:
  147.             self.ObjId = parm[1]
  148.             ObjStore.ObjectsStore[self.ObjId] = self
  149.             self.state = parm[2]
  150.             self.mode = parm[3]
  151.             GameStateAux.LoadFunctionAux(parm[4], self, 'OnTurnOnFunc')
  152.             self.OnTurnOnArgs = parm[5]
  153.             GameStateAux.LoadFunctionAux(parm[6], self, 'OnTurnOffFunc')
  154.             self.OnTurnOffArgs = parm[7]
  155.             stick_objId = parm[8]
  156.             self.type = parm[9]
  157.             self.obj = GameStateAux.LoadEntityAux(parm[10])
  158.             GameStateAux.LoadNewMembers(self, parm[11])
  159.             if stick_objId:
  160.                 self.stick_obj = Bladex.GetEntity(stick_objId)
  161.             else:
  162.                 self.stick_obj = None
  163.         else:
  164.             print 'Lever.__setstate__() -> Version mismatch'
  165.             self.state = LEVER_OFF
  166.             self.mode = 1
  167.             self.OnEndOpenFunc = None
  168.             self.OnTurnOnArgs = ()
  169.             self.OnEndCloseFunc = None
  170.             self.OnTurnOffArgs = ()
  171.             self.ObjId = ObjStore.GetNewId()
  172.             ObjStore.ObjectsStore[self.ObjId] = self
  173.  
  174.  
  175. LeverType1 = LeverType()
  176. LeverType1.bod_name = 'Zocalo1'
  177. LeverType1.stick_bod_name = 'Palanca1'
  178. LeverType1.stick_offset = (0.0, -99.0, 131.0)
  179. LeverType1.center = (0.0, 225.0, -125.0)
  180. LeverType1.axis = (1.0, 0.0, 0.0)
  181. LeverType1.iang = 3.1416 / 2
  182. LeverType1.on_time = 0.5
  183. LeverType1.off_time = 0.5
  184. LeverType2 = LeverType()
  185. LeverType2.bod_name = 'Zocalo2'
  186. LeverType2.stick_bod_name = 'Palanca2'
  187. LeverType2.stick_offset = (83.0, -238.0, 235.0)
  188. LeverType2.center = (0.0, 237.0, -237.0)
  189. LeverType2.axis = (1.0, 0.0, 0.0)
  190. LeverType2.iang = -3.1416 / 2
  191. LeverType2.on_time = 0.5
  192. LeverType2.off_time = 0.5
  193. LeverType3 = LeverType()
  194. LeverType3.bod_name = 'Zocalo3'
  195. LeverType3.stick_bod_name = 'Palanca3'
  196. LeverType3.stick_offset = (0.0, -160.0, 218.0)
  197. LeverType3.center = (0.0, 218.0, -218.0)
  198. LeverType3.axis = (1.0, 0.0, 0.0)
  199. LeverType3.iang = 3.1416 / 2
  200. LeverType3.on_time = 0.5
  201. LeverType3.off_time = 0.5
  202. LeverTypeFloor = LeverType()
  203. LeverTypeFloor.bod_name = 'ZocaloSuelo'
  204. LeverTypeFloor.stick_bod_name = 'PalancaSuelo'
  205. LeverTypeFloor.stick_offset = (0.0, -297.0, 467.0)
  206. LeverTypeFloor.center = (0.0, 297.0, -520.0)
  207. LeverTypeFloor.axis = (1.0, 0.0, 0.0)
  208. LeverTypeFloor.iang = -3 * (3.1416 / 4)
  209. LeverTypeFloor.on_time = 0.5
  210. LeverTypeFloor.off_time = 0.5
  211. LeverTypeSnake = LeverType()
  212. LeverTypeSnake.bod_name = 'ZocaloSerpiente'
  213. LeverTypeSnake.stick_bod_name = 'MandibulaSerpiente'
  214. LeverTypeSnake.stick_offset = (0.0, -78.699, -118.771)
  215. LeverTypeSnake.center = (0.0, 91.753, 65.783)
  216. LeverTypeSnake.axis = (1.0, 0.0, 0.0)
  217. LeverTypeSnake.iang = -3.1416 / 5
  218. LeverTypeSnake.on_time = 0.5
  219. LeverTypeSnake.off_time = 0.5
  220.  
  221. def PlaceLever(name, type, position, orientation, scale):
  222.     lever = Lever()
  223.     lever.type = type
  224.     lever.obj = Bladex.CreateEntity(name, type.bod_name, position[0], position[1], position[2])
  225.     lever.obj.Orientation = orientation
  226.     abs_offset = lever.obj.Rel2AbsVector(lever.type.stick_offset[0], lever.type.stick_offset[1], lever.type.stick_offset[2])
  227.     InitDataField.Initialise(lever.obj)
  228.     lever.obj.Data.leverdata = lever
  229.     lever.stick_obj = Bladex.CreateEntity(name + 'Stick', type.stick_bod_name, position[0] + abs_offset[0], position[1] + abs_offset[1], position[2] + abs_offset[2])
  230.     lever.stick_obj.Orientation = orientation
  231.     InitDataField.Initialise(lever.stick_obj)
  232.     lever.stick_obj.Data.leverdata = lever
  233.     lever.stick_obj.UseFunc = LeverUseFunc
  234.     lever.stick_obj.Solid = 0
  235.     return lever
  236.  
  237.