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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Bladex
  5. import AuxFuncs
  6. import EnemyTypes
  7. import Sparks
  8. import Actions
  9. import math
  10. import Breakings
  11. import types
  12. import Reference
  13. import Blood
  14. import SolidMask
  15. import ObjStore
  16. import GameStateAux
  17. import os
  18. import Blood
  19. import ItemTypes
  20. ActualLevel = 'Noname'
  21.  
  22. def Cafin(entity_name, camera_element, node):
  23.     cam = Bladex.GetEntity('Camera')
  24.     if node == 1:
  25.         cam.SType = 0
  26.         cam.ETarget = 'Player1'
  27.         cam.TType = 2
  28.         cam.CameraClearPath(0)
  29.         cam.CameraClearPath(1)
  30.     
  31.  
  32.  
  33. def BackPlayer():
  34.     Cam = Bladex.GetEntity('Camera')
  35.     Cam.SetPersonView('Player1')
  36.  
  37.  
  38. def ChangePointOfView(ox2, oy2, oz2, time, person = 'Player1'):
  39.     cam = Bladex.GetEntity('Camera')
  40.     ox1 = cam.Position[0]
  41.     oy1 = cam.Position[1]
  42.     oz1 = cam.Position[2]
  43.     cam.AddCameraNode(0, time, ox1, oy1, oz1)
  44.     cam.AddCameraNode(0, time / 2.0, ox2, oy2, oz2)
  45.     cam.AddCameraNode(0, time / 2.0, (ox1 + ox2) / 2.0, (oy1 + oy2) / 2.0, (oz1 + oz2) / 2.0)
  46.     cam.ETarget = person
  47.     cam.TType = 2
  48.     cam.SType = 1
  49.     cam.CameraStartPath(0)
  50.     cam.ChangeNodeFunc = Cafin
  51.  
  52.  
  53. def ChangeCam(ox2, oy2, oz2, tx2, ty2, tz2, time, CafinProx):
  54.     cam = Bladex.GetEntity('Camera')
  55.     ox1 = cam.Position[0]
  56.     oy1 = cam.Position[1]
  57.     oz1 = cam.Position[2]
  58.     tx1 = cam.TPos[0]
  59.     ty1 = cam.TPos[1]
  60.     tz1 = cam.TPos[2]
  61.     cam.AddCameraNode(0, time, ox1, oy1, oz1)
  62.     cam.AddCameraNode(0, time / 2.0, ox2, oy2, oz2)
  63.     cam.AddCameraNode(0, time / 2.0, (ox1 + ox2) / 2.0, (oy1 + oy2) / 2.0, (oz1 + oz2) / 2.0)
  64.     cam.AddCameraNode(1, time, tx1, ty1, tz1)
  65.     cam.AddCameraNode(1, time / 2.0, tx2, ty2, tz2)
  66.     cam.AddCameraNode(1, time / 2.0, (tx1 + tx2) / 2.0, (ty1 + ty2) / 2.0, (tz1 + tz2) / 2.0)
  67.     cam.ETarget = 'Player1'
  68.     cam.SType = 1
  69.     cam.TType = 1
  70.     cam.CameraStartPath(0)
  71.     cam.ChangeNodeFunc = CafinProx
  72.  
  73.  
  74. def InitGiroCamera():
  75.     cam = Bladex.GetEntity('Camera')
  76.     VecRot = (2 * cam.TPos[0] - cam.Position[0], 2 * cam.TPos[1] - cam.Position[1], 2 * cam.TPos[2] - cam.Position[2])
  77.     cam.ESource = 'Player1'
  78.     cam.SType = 2
  79.     cam.TType = 0
  80.     cam.TPos = VecRot
  81.  
  82.  
  83. def GiraCamara(AngleVariation):
  84.     cam = Bladex.GetEntity('Camera')
  85.     VecRot = (cam.TPos[0] - cam.Position[0], cam.TPos[1] - cam.Position[1], cam.TPos[2] - cam.Position[2])
  86.     vtpos = (VecRot[0] * math.cos(AngleVariation) - VecRot[2] * math.sin(AngleVariation), VecRot[0], VecRot[0] * math.sin(AngleVariation) + VecRot[2] * math.cos(AngleVariation))
  87.     cam.TPos = (vtpos[0] + cam.Position[0], cam.TPos[1], vtpos[2] + cam.Position[2])
  88.  
  89. DeathState = 0
  90. DeathFile = None
  91.  
  92. def DetieneArmaMuerto(obj_name):
  93.     if DeathFile:
  94.         o = Bladex.GetEntity(obj_name)
  95.         o.OnStopFunc = None
  96.         DeathFile.write("o = Bladex.CreateEntity('" + obj_name + "','" + o.Kind + "'," + str(o.Position[0]) + ',' + str(o.Position[1]) + ',' + str(o.Position[2]) + ",'Weapon')\n")
  97.         DeathFile.write('o.Orientation = ' + str(o.Orientation[0]) + ',' + str(o.Orientation[1]) + ',' + str(o.Orientation[2]) + ',' + str(o.Orientation[3]) + '\n')
  98.         DeathFile.write('ItemTypes.ItemDefaultFuncs(o)\n\n')
  99.     
  100.  
  101.  
  102. def DetieneMutilacion(obj_name):
  103.     if DeathFile:
  104.         o = Bladex.GetEntity(obj_name)
  105.         o.OnStopFunc = None
  106.         DeathFile.write('\no = ' + o.Data[0] + '.SeverLimb(' + str(o.Data[1]) + ')\n')
  107.         DeathFile.write('o.Stop()\n')
  108.         DeathFile.write('o.Position    = ' + str(o.Position[0]) + ',' + str(o.Position[1]) + ',' + str(o.Position[2]) + '\n')
  109.         DeathFile.write('o.Orientation = ' + str(o.Orientation[0]) + ',' + str(o.Orientation[1]) + ',' + str(o.Orientation[2]) + ',' + str(o.Orientation[3]) + '\n')
  110.     
  111.  
  112.  
  113. def GrabarLaSangre(x, y, z):
  114.     if DeathFile:
  115.         DeathFile.write("Bladex.CreateEntity('BloodPool','Entity Pool'," + str(x) + ',' + str(y) + ',' + str(z) + ')\n')
  116.     
  117.  
  118.  
  119. def CloseDeathFile():
  120.     global DeathFile
  121.     if DeathFile:
  122.         print "closing 'death.py'..."
  123.         DeathFile.close()
  124.         DeathFile = None
  125.         os.rename('pak/deaths.py_', 'pak/deaths.py')
  126.         Blood.AfterCreateBlood = None
  127.     
  128.  
  129.  
  130. def MuertoyTroceado2(name, trozos):
  131.     muertoint2 = Bladex.GetEntity(name)
  132.     muertoint2.CastShadows = 0
  133.     muertoint2.SetOnFloor()
  134.     muertoint2.Life = 0
  135.     for i in trozos:
  136.         mut = muertoint2.SeverLimb(i)
  137.     
  138.  
  139. muertonum = 0
  140.  
  141. def MuertoyTroceado(x, y, z, raze, weapon, trozos, angul = 2.19288423389, MeshName = None):
  142.     global DeathState, DeathFile, muertonum
  143.     if DeathState:
  144.         return None
  145.     
  146.     if not DeathFile:
  147.         if 'deaths.py' in os.listdir('./pak/'):
  148.             execfile('pak/deaths.py')
  149.             DeathState = 1
  150.             return None
  151.         
  152.         print "Creating 'deaths.py'..."
  153.         DeathFile = open('pak/deaths.py_', 'w')
  154.         DeathFile.write('import Bladex\nimport ItemTypes \n\n')
  155.         DeathFile.write("print 'loading deaths...'\n\n\n")
  156.         Blood.AfterCreateBlood = GrabarLaSangre
  157.     
  158.     if weapon != '':
  159.         armamuertoint2 = Bladex.CreateEntity(ActualLevel + 'WeapDeath' + `muertonum`, weapon, 0, 0, 0, 'Weapon')
  160.         ItemTypes.ItemDefaultFuncs(armamuertoint2)
  161.         armamuertoint2.OnStopFunc = DetieneArmaMuerto
  162.     
  163.     muertoint2 = Bladex.CreateEntity(ActualLevel + 'GuyInPieces' + `muertonum`, raze, x, y, z, 'Person')
  164.     if MeshName:
  165.         muertoint2.SetMesh(MeshName)
  166.     
  167.     muertoint2.Angle = angul
  168.     if weapon != '':
  169.         Actions.TakeObject(muertoint2.Name, armamuertoint2.Name)
  170.         print 'The guy ', muertoint2.Name, ' got a gun named ', armamuertoint2.Name
  171.     else:
  172.         print 'The guy ', muertoint2.Name, 'is armless'
  173.     EnemyTypes.EnemyDefaultFuncs(muertoint2)
  174.     MuertoyTroceado2(muertoint2.Name, trozos)
  175.     DeathFile.write(muertoint2.Name + ' = ' + "Bladex.CreateEntity('" + muertoint2.Name + "','" + muertoint2.Kind + "'," + str(muertoint2.Position[0]) + ',' + str(muertoint2.Position[1]) + ',' + str(muertoint2.Position[2]) + ",'Person'")
  176.     if MeshName:
  177.         DeathFile.write(",'" + MeshName + "')\n\n")
  178.     else:
  179.         DeathFile.write(')\n\n')
  180.     DeathFile.write(muertoint2.Name + '.Angle = ' + str(angul) + '\n')
  181.     DeathFile.write(muertoint2.Name + '.Life = 0\n\n')
  182.     Bladex.AddScheduledFunc(Bladex.GetTime() + 60.0, CloseDeathFile, ())
  183.     muertonum = muertonum + 1
  184.  
  185.  
  186. def Let_temblOff():
  187.     cam = Bladex.GetEntity('Camera')
  188.     cam.EarthQuakeFactor = 0
  189.     cam.EarthQuake = 0
  190.  
  191.  
  192. def Temblores(time, pianoforte = 500):
  193.     cam = Bladex.GetEntity('Camera')
  194.     cam.EarthQuakeFactor = pianoforte
  195.     cam.EarthQuake = 1
  196.     Bladex.AddScheduledFunc(Bladex.GetTime() + time, Let_temblOff, ())
  197.  
  198.  
  199. def DetenLaCamaraDeLaConchaELaLora(Camera, frame):
  200.     import Scorer
  201.     cam = Bladex.GetEntity('Camera')
  202.     cam.SetPersonView('Player1')
  203.     cam.Cut()
  204.     Bladex.ActivateInput()
  205.     Scorer.SetVisible(1)
  206.     Bladex.SetListenerPosition(1)
  207.  
  208.  
  209. def LaunchMaxCamera(CamName, Start, End, Funchi = DetenLaCamaraDeLaConchaELaLora):
  210.     import Scorer
  211.     cam = Bladex.GetEntity('Camera')
  212.     cam.SetMaxCamera(CamName, Start, End)
  213.     Scorer.SetVisible(0)
  214.     Bladex.SetListenerPosition(2)
  215.     Bladex.DeactivateInput()
  216.     cam.AddCameraEvent(-1, Funchi)
  217.  
  218.  
  219. def HideObject(oname):
  220.     pass
  221.  
  222.  
  223. def UnhideObject(oname):
  224.     pass
  225.  
  226.  
  227. def HideBadGuy(name, ciego = 1, sordo = 1):
  228.     pers = Bladex.GetEntity(name)
  229.     if not pers:
  230.         print 'WARNING : Trying to hide `' + name + '`but was deleted !'
  231.         return None
  232.     
  233.     pers.Deaf = sordo
  234.     pers.Blind = ciego
  235.     pers.Freeze()
  236.     pers.RemoveFromWorld()
  237.     HideObject(pers.InvLeft)
  238.     HideObject(pers.InvRight)
  239.     HideObject(pers.InvRightBack)
  240.     HideObject(pers.InvLeftBack)
  241.     HideObject(pers.InvLeft2)
  242.     char = Bladex.GetEntity('Player1')
  243.     if char.ActiveEnemy == name:
  244.         char.SetActiveEnemy('')
  245.     
  246.  
  247.  
  248. def UnhideBadGuy(name):
  249.     pers = Bladex.GetEntity(name)
  250.     pers.Deaf = 0
  251.     pers.Blind = 0
  252.     pers.UnFreeze()
  253.     pers.PutToWorld()
  254.     UnhideObject(pers.InvLeft)
  255.     UnhideObject(pers.InvRight)
  256.     UnhideObject(pers.InvRightBack)
  257.     UnhideObject(pers.InvLeftBack)
  258.     UnhideObject(pers.InvLeft2)
  259.  
  260.  
  261. def OnUse(entity, onuse):
  262.     import GameText
  263.     GameText.WriteText(Bladex.GetEntity(entity).Data.MessageHint)
  264.  
  265.  
  266. class EmptyClass:
  267.     pass
  268.  
  269.  
  270. def SetHint(gp, Name, OnUseData = '', Priority = 8.0, Distance = 4000.0):
  271.     Reference.EntitiesSelectionData[gp.Name] = (Priority, Distance, Name)
  272.     if type(OnUseData) == type(''):
  273.         if OnUseData != '':
  274.             gp.UseFunc = OnUse
  275.             if not (gp.Data):
  276.                 gp.Data = EmptyClass()
  277.             
  278.             gp.Data.MessageHint = OnUseData
  279.         
  280.     else:
  281.         gp.UseFunc = OnUseData
  282.  
  283. QuakeFactor = 100
  284.  
  285. def QuakeStep(personaje):
  286.     cam = Bladex.GetEntity('Camera')
  287.     cam.EarthQuakeFactor = QuakeFactor
  288.     cam.EarthQuake = 1
  289.     Bladex.AddScheduledFunc(Bladex.GetTime() + 0.125, QuakeHalf, ())
  290.  
  291.  
  292. def QuakeHalf():
  293.     QuakeStepCounter = 1
  294.     cam = Bladex.GetEntity('Camera')
  295.     cam.EarthQuakeFactor = cam.EarthQuakeFactor / 2
  296.     Bladex.AddScheduledFunc(Bladex.GetTime() + 0.125, QuakeStop, ())
  297.  
  298.  
  299. def QuakeStop():
  300.     QuakeStepCounter = 2
  301.     cam = Bladex.GetEntity('Camera')
  302.     cam.EarthQuakeFactor = 0
  303.     cam.EarthQuake = 0
  304.  
  305. FIRE_DAMAGE = 1
  306.  
  307. def QuemaTimer(e_name, time):
  308.     char = Bladex.GetEntity(e_name)
  309.     char.Life = char.Life - FIRE_DAMAGE
  310.     if char.Life <= 0:
  311.         Actions.FireDeath(e_name)
  312.         char.RemoveFromList('Timer15')
  313.         char.TimerFunc = ''
  314.     
  315.  
  316.  
  317. def EntraQuema(triggername, entityname):
  318.     if entityname == 'Player1':
  319.         char = Bladex.GetEntity('Player1')
  320.         char.SubscribeToList('Timer15')
  321.         char.TimerFunc = QuemaTimer
  322.     
  323.  
  324.  
  325. def SaleQuema(triggername, entityname):
  326.     if entityname == 'Player1':
  327.         char = Bladex.GetEntity('Player1')
  328.         char.RemoveFromList('Timer15')
  329.         char.TimerFunc = ''
  330.     
  331.  
  332.  
  333. def FireOnGS(name):
  334.     Bladex.SetTriggerSectorFunc(name, 'OnEnter', EntraQuema)
  335.     Bladex.SetTriggerSectorFunc(name, 'OnLeave', SaleQuema)
  336.  
  337.  
  338. def FireOnS(sec):
  339.     sec.OnEnter = EntraQuema
  340.     sec.OnLeave = SaleQuema
  341.  
  342.  
  343. def EntraPincha(triggername, entityname):
  344.     import Scorer
  345.     ent = Bladex.GetEntity(entityname)
  346.     if ent.Person:
  347.         if entityname == 'Player1':
  348.             Bladex.GetEntity('Camera').TType = 0
  349.             AuxFuncs.FadeTo(1.0, 60.0, 32, 0, 0)
  350.             Scorer.SetVisible(0)
  351.         
  352.         Bladex.AddScheduledFunc(Bladex.GetTime() + 0.5, MuereDeVerdadPincha, (ent,))
  353.         p = ent.Position
  354.     
  355.  
  356.  
  357. def MuereDeVerdadPincha(ent):
  358.     ent.Life = 0
  359.     ent.Wuea = Reference.WUEA_ENDED
  360.     ent.SetTmpAnmFlags(1, 1, 1, 0, 5, 1, 0)
  361.     ent.LaunchAnmType('dth_rock')
  362.  
  363.  
  364. def NailOnGS(name):
  365.     Bladex.SetTriggerSectorFunc(name, 'OnEnter', EntraPincha)
  366.  
  367.  
  368. def NailOnS(sec):
  369.     sec.OnEnter = EntraPincha
  370.  
  371.  
  372. class E_Grup:
  373.     ObjId = 0
  374.     n = 0
  375.     OnDeath = None
  376.     Guys = []
  377.     ImDeadFuncs = { }
  378.     
  379.     def __init__(self):
  380.         self.ObjId = ObjStore.GetNewId()
  381.         self.n = 0
  382.         self.OnDeath = None
  383.         self.Guys = []
  384.         self.ImDeadFuncs = { }
  385.         ObjStore.ObjectsStore[self.ObjId] = self
  386.  
  387.     
  388.     def __del__(self):
  389.         del ObjStore.ObjectsStore[self.ObjId]
  390.  
  391.     
  392.     def persistent_id(self):
  393.         return self.ObjId
  394.  
  395.     
  396.     def ImDeadFunc(self, Name):
  397.         self.ImDeadFuncs[Name](Name)
  398.         self.n = self.n - 1
  399.         print 'Quedan', self.n
  400.         self.Guys.remove(Name)
  401.         if self.n == 0:
  402.             if self.OnDeath:
  403.                 self.OnDeath()
  404.             
  405.         
  406.  
  407.     
  408.     def AddGuy(self, Name):
  409.         e = Bladex.GetEntity(Name)
  410.         self.ImDeadFuncs[Name] = e.ImDeadFunc
  411.         e.ImDeadFunc = self.ImDeadFunc
  412.         self.n = self.n + 1
  413.         if Name in self.Guys:
  414.             print 'E_Grup error : ' + Name + ' is allready here.'
  415.         else:
  416.             self.Guys.append(Name)
  417.  
  418.     
  419.     def HideBadGuys(self):
  420.         for Name in self.Guys:
  421.             HideBadGuy(Name)
  422.         
  423.  
  424.     
  425.     def UnhideBadGuys(self, number):
  426.         counter = 0
  427.         for Name in self.Guys:
  428.             counter = counter + 1
  429.             UnhideBadGuy(Name)
  430.         
  431.         return counter
  432.  
  433.     
  434.     def __getstate__(self):
  435.         return (1, self.ObjId, self.n, GameStateAux.SaveFunctionAux(self.OnDeath), self.Guys, self.ImDeadFuncs)
  436.  
  437.     
  438.     def __setstate__(self, parm):
  439.         if parm[0] == 1:
  440.             self.ObjId = parm[1]
  441.             ObjStore.ObjectsStore[self.ObjId] = self
  442.             self.n = parm[2]
  443.             GameStateAux.LoadFunctionAux(parm[3], self, 'OnDeath')
  444.             self.Guys = parm[4]
  445.             self.ImDeadFuncs = parm[5]
  446.         else:
  447.             print 'Door.__setstate__() -> Version mismatch'
  448.             self.ObjId = ObjStore.GetNewId()
  449.             ObjStore.ObjectsStore[self.ObjId] = self
  450.  
  451.  
  452. PersonasEnLlamas = []
  453.  
  454. def EnciendeEnLlamas(o, Intensity = 15, Precission = 0.1):
  455.     if not (o.Kind in PersonasEnLlamas):
  456.         PersonasEnLlamas.append(o.Kind)
  457.         Bladex.AddCombustionDataFor(o.Kind, 'Fire', 250, 400, 4, 1, 3, 144000)
  458.     
  459.     o.SelfIlum = 0.0
  460.     o.CatchOnFire(0, 0, 0)
  461.     luz = Bladex.CreateEntity(o.Name + 'Luz', 'Entity Spot', 0, 0, 0)
  462.     luz.Color = (200, 100, 0)
  463.     luz.Intensity = Intensity
  464.     luz.Precission = Precission
  465.     luz.CastShadows = 0
  466.     luz.Visible = 1
  467.     luz.SizeFactor = 0
  468.     o.Link(luz)
  469.  
  470.  
  471. def ObjAlpha(o, alpha = 0.8, SelfIlum = 0.0):
  472.     o.Alpha = alpha
  473.     o.RasterMode = 'AdditiveAlpha'
  474.     o.RasterMode = 'Read'
  475.     o.CastShadows = 0
  476.     o.SelfIlum = SelfIlum
  477.  
  478.  
  479. def ValidAppear(pos, func = None, param = None):
  480.     entid = Bladex.GetEntitiesAt(pos[0], pos[1], pos[2], 4000)
  481.     for on in entid:
  482.         o = Bladex.GetEntity(on)
  483.         if o.Person:
  484.             if o.Life > 0:
  485.                 if o.Alpha > 0.01:
  486.                     print 'Trying to do it, but', on, 'is bothering. Next try in 5 seconds.'
  487.                     if func:
  488.                         Bladex.AddScheduledFunc(Bladex.GetTime() + 5.0, ValidAppear, (pos, func, param))
  489.                     
  490.                     return 0
  491.                 
  492.             
  493.         
  494.     
  495.     if func:
  496.         apply(func, param)
  497.         print 'The function was XQted'
  498.     else:
  499.         return 1
  500.  
  501.  
  502. def CreateFalseCube(pos, timeToKill = -1, Name = ''):
  503.     o = Bladex.CreateEntity(Name + 'quad', 'Bloque', pos[0], pos[1] - 1500, pos[2])
  504.     o.Orientation = (0.707107245922, 0.0, 0.0, 0.707106292248)
  505.     o.Scale = 4
  506.     o.CastShadows = 0
  507.     o.Alpha = 0.0
  508.     o.RasterMode = 'Read'
  509.     if timeToKill != -1:
  510.         Bladex.AddScheduledFunc(Bladex.GetTime() + timeToKill, o.SubscribeToList, ('Pin',))
  511.     
  512.     return o
  513.  
  514.  
  515. def CleanArea(x, y, z, radius):
  516.     list = Bladex.GetEntitiesAt(x, y, z, radius)
  517.     enCounter = 0
  518.     for name in list:
  519.         o = Bladex.GetEntity(name)
  520.     
  521.     return enCounter
  522.  
  523.  
  524. def EnterSecEvent(x, y, z, func):
  525.     sec = Bladex.GetSector(x, y, z)
  526.     EnterSecEventSector(sec, func)
  527.  
  528.  
  529. def GetSectorIdx(pos):
  530.     if type(pos) != types.TupleType:
  531.         return pos
  532.     else:
  533.         return Bladex.GetSector(pos[0], pos[1], pos[2]).Index
  534.  
  535.  
  536. def EnterSecIdEvent(id, func):
  537.     if type(id) == types.StringType:
  538.         EnterTSEvent(id, func)
  539.         return id
  540.     elif type(id) == types.TupleType:
  541.         sec = Bladex.GetSector(id[0], id[1], id[2])
  542.         EnterSecEventSector(sec, func)
  543.         return sec.Index
  544.     else:
  545.         sec = Bladex.GetSector(id)
  546.         EnterSecEventSector(sec, func)
  547.         return id
  548.  
  549.  
  550. def EnterSecEventSector(sec, func):
  551.     if sec:
  552.         if not SectorTable.has_key(sec.Index):
  553.             if sec.OnEnter:
  554.                 print 'ERROR : OnEnter Asigned to', sec.OnEnter
  555.             else:
  556.                 SectorTable[sec.Index] = []
  557.         else:
  558.             numerox = len(SectorTable[sec.Index])
  559.             if numerox > 0:
  560.                 if Reference.PYTHON_DEBUG >= 2:
  561.                     print 'Warning : OnEnter have', numerox, 'functions'
  562.                 
  563.             
  564.         SectorTable[sec.Index].insert(0, func)
  565.         sec.OnEnter = OnPlayerEnter
  566.         return sec.Index
  567.     else:
  568.         print 'ERROR : Sector invalid!'
  569.  
  570.  
  571. def OnPlayerEnter(sectorindex, entityname):
  572.     pass
  573.  
  574. SectorTable = { }
  575.  
  576. def EnterTSEvent(secname, func):
  577.     if secname:
  578.         if not SectorTable.has_key(secname):
  579.             if Bladex.GetTriggerSectorFunc(secname, 'OnEnter'):
  580.                 print 'ERROR : OnEnter Asigned to ', secname
  581.             else:
  582.                 SectorTable[secname] = []
  583.         else:
  584.             numerox = len(SectorTable[secname])
  585.             if numerox > 0:
  586.                 if Reference.PYTHON_DEBUG >= 2:
  587.                     print 'Warning : OnEnter have', numerox, 'functions'
  588.                 
  589.             
  590.         SectorTable[secname].insert(0, func)
  591.         Bladex.SetTriggerSectorFunc(secname, 'OnEnter', OnPlayerEnter)
  592.         return secname
  593.     else:
  594.         print "ERROR : Sector '" + secname + "' invalid!"
  595.  
  596.  
  597. def LuzChapuzera(light, FinishTime, delta = 1):
  598.     t = Bladex.GetTime()
  599.     light.Move(0, 0, delta)
  600.     if t < FinishTime:
  601.         Bladex.AddScheduledFunc(t + 0.0, LuzChapuzera, (light, FinishTime, -delta))
  602.     
  603.  
  604.  
  605. def SaveData(filename):
  606.     import cPickle
  607.     funcfile = open(filename, 'wt')
  608.     p = cPickle.Pickler(funcfile)
  609.     d = (muertonum, ActualLevel, QuakeFactor, FIRE_DAMAGE, PersonasEnLlamas, SectorTable)
  610.     p.dump(d)
  611.     funcfile.close()
  612.  
  613.  
  614. def LoadData(filename):
  615.     global muertonum, ActualLevel, QuakeFactor, FIRE_DAMAGE, PersonasEnLlamas, SectorTable
  616.     import cPickle
  617.     funcfile = open(filename, 'rt')
  618.     p = cPickle.Unpickler(funcfile)
  619.     d = p.load()
  620.     funcfile.close()
  621.     print d
  622.     muertonum = d[0]
  623.     ActualLevel = d[1]
  624.     QuakeFactor = d[2]
  625.     FIRE_DAMAGE = d[3]
  626.     PersonasEnLlamas = d[4]
  627.     SectorTable = d[5]
  628.  
  629. import GameState
  630. GameState.ModulesToBeSaved.append(__import__(__name__))
  631.