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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Bladex
  5. import EnemyTypes
  6. import Actions
  7. import math
  8. import B3DLib
  9. import PickInit
  10. import GameStateAux
  11. import darfuncs
  12. import ItemTypes
  13. import ObjStore
  14.  
  15. def GeneratorReady(ent_name):
  16.     enm = Bladex.GetEntity(ent_name)
  17.     enmgen = enm.Data.enmgendata
  18.     enmgen.Ready = 1
  19.     enm.Data.OldImDeadFunc(ent_name)
  20.  
  21.  
  22. def EnemyReady(ent_name):
  23.     o = Bladex.GetEntity(ent_name + 'quad')
  24.     if o:
  25.         o.SubscribeToList('Pin')
  26.     
  27.     enm = Bladex.GetEntity(ent_name)
  28.     enm.InitPos = enm.Position
  29.     alfa = B3DLib.GetEntity2EntityAngle(ent_name, 'Player1')
  30.     enm.Face(alfa)
  31.     enm.Blind = 0
  32.     enm.Deaf = 0
  33.     Bladex.AddScheduledFunc(Bladex.GetTime(), enm.SetOnFloor, ())
  34.     if enm.Data.CallBackGen != '':
  35.         enm.Data.CallBackGen(enm)
  36.     
  37.  
  38.  
  39. def TryToGenerateEnemy(trsector, ent_name):
  40.     enmgen = Bladex.GetTriggerSectorData(trsector)
  41.     darfuncs.ValidAppear(enmgen.Position, GenerateEnemy, (trsector, ent_name))
  42.  
  43.  
  44. def GenerateEnemy(trsector, ent_name):
  45.     enmgen = Bladex.GetTriggerSectorData(trsector)
  46.     if ent_name == 'Player1':
  47.         if enmgen.Ready:
  48.             enmgen.Ready = 0
  49.             enm = Bladex.GetEntity(enmgen.RootName + `enmgen.NextEnemy`)
  50.             enm.UnFreeze()
  51.             enmgen.NextEnemy = enmgen.NextEnemy + 1
  52.             if enmgen.NextEnemy > enmgen.NEnemies:
  53.                 enmgen.Deactivate()
  54.             
  55.             if enmgen.Animation:
  56.                 char = Bladex.GetEntity('Player1')
  57.                 enm.SetTmpAnmFlags(1, 1, 1, 0, 5, 1, 0)
  58.                 enm.LaunchAnimation(enmgen.Animation)
  59.                 enm.Position = enmgen.Position
  60.                 alfa = B3DLib.GetEntity2EntityAngle(enm.Name, 'Player1')
  61.                 enm.Angle = alfa
  62.                 enm.AnmEndedFunc = EnemyReady
  63.                 darfuncs.CreateFalseCube(enmgen.Position, -1.0, enm.Name)
  64.             else:
  65.                 EnemyReady(enm.Name)
  66.             if enmgen.InitGenFunc:
  67.                 apply(enmgen.InitGenFunc, enmgen.InitGenArgs)
  68.             
  69.         
  70.     
  71.  
  72.  
  73. class EnmGen:
  74.     
  75.     def __init__(self):
  76.         self.ObjId = ObjStore.GetNewId()
  77.         ObjStore.ObjectsStore[self.ObjId] = self
  78.         self.Active = 0
  79.         self.Ready = 0
  80.         self.Position = (0.0, 0.0, 0.0)
  81.         self.TrSector = ''
  82.         self.NEnemies = 4
  83.         self.NextEnemy = 1
  84.         self.RootName = 'Skl'
  85.         self.EnemyType = 'Skeleton'
  86.         self.WeaponType = ''
  87.         self.ShieldType = ''
  88.         self.Animation = ''
  89.         self.InitGenFunc = ''
  90.         self.InitGenArgs = ()
  91.  
  92.     
  93.     def __del__(self):
  94.         del ObjStore.ObjectsStore[self.ObjId]
  95.  
  96.     
  97.     def Activate(self):
  98.         if self.NextEnemy <= self.NEnemies:
  99.             self.Active = 1
  100.             self.Ready = 1
  101.             Bladex.SetTriggerSectorFunc(self.TrSector, 'OnEnter', TryToGenerateEnemy)
  102.         else:
  103.             print 'Generador agotado!'
  104.  
  105.     
  106.     def Deactivate(self):
  107.         self.Active = 0
  108.         self.Ready = 0
  109.         Bladex.RemoveTriggerSectorFunc(self.TrSector, 'OnEnter')
  110.  
  111.     
  112.     def persistent_id(self):
  113.         return self.ObjId
  114.  
  115.     
  116.     def __getstate__(self):
  117.         return (1, self.ObjId, self.Active, self.Ready, self.Position, self.TrSector, self.NEnemies, self.NextEnemy, self.RootName, self.EnemyType, self.WeaponType, self.ShieldType, self.Animation, GameStateAux.SaveFunctionAux(self.InitGenFunc), self.InitGenArgs)
  118.  
  119.     
  120.     def __setstate__(self, parm):
  121.         if parm[0] == 1:
  122.             self.ObjId = parm[1]
  123.             ObjStore.ObjectsStore[self.ObjId] = self
  124.             self.Active = parm[2]
  125.             self.Ready = parm[3]
  126.             self.Position = parm[4]
  127.             self.TrSector = parm[5]
  128.             self.NEnemies = parm[6]
  129.             self.NextEnemy = parm[7]
  130.             self.RootName = parm[8]
  131.             self.EnemyType = parm[9]
  132.             self.WeaponType = parm[10]
  133.             self.ShieldType = parm[11]
  134.             self.Animation = parm[12]
  135.             GameStateAux.LoadFunctionAux(parm[13], self, 'InitGenFunc')
  136.             self.InitGenArgs = parm[14]
  137.         else:
  138.             print 'EnmGen.__setstate__() -> Version mismatch'
  139.             self.ObjId = ObjStore.GetNewId()
  140.             ObjStore.ObjectsStore[self.ObjId] = self
  141.             self.Active = 0
  142.             self.Ready = 0
  143.             self.Position = (0.0, 0.0, 0.0)
  144.             self.TrSector = ''
  145.             self.NEnemies = 4
  146.             self.NextEnemy = 1
  147.             self.RootName = 'Skl'
  148.             self.EnemyType = 'Skeleton'
  149.             self.WeaponType = ''
  150.             self.ShieldType = ''
  151.             self.Animation = ''
  152.             self.InitGenFunc = ''
  153.             self.InitGenArgs = ()
  154.  
  155.  
  156.  
  157. def CreateEnemiesGenerator(x = 0.0, y = 0.0, z = 0.0, trsector = '', nenemies = 4, enemydscr = ('Skl', 'Skeleton', '', 0, '', 0), animation = '', CallBack = ''):
  158.     enmgen = EnmGen()
  159.     enmgen.Position = (x, y, z)
  160.     enmgen.TrSector = trsector
  161.     enmgen.NEnemies = nenemies
  162.     enmgen.RootName = rootname = enemydscr[0]
  163.     enmgen.EnemyType = enemytype = enemydscr[1]
  164.     enmgen.WeaponType = weapontype = enemydscr[2]
  165.     enmgen.ShieldType = shieldtype = enemydscr[4]
  166.     enmgen.Animation = animation
  167.     Bladex.SetTriggerSectorData(trsector, enmgen)
  168.     for n in range(nenemies):
  169.         enm = Bladex.CreateEntity(rootname + `n + 1`, enemytype, x, y, z, 'Person')
  170.         enm.Angle = 0.0
  171.         if shieldtype:
  172.             shield = Bladex.CreateEntity('Shield' + rootname + `n + 1`, shieldtype, 0.0, 0.0, 0.0)
  173.             ItemTypes.ItemDefaultFuncs(shield)
  174.             Actions.TakeObject(enm.Name, shield.Name)
  175.         
  176.         if len(enemydscr) == 7:
  177.             enm.Level = enemydscr[6]
  178.         
  179.         EnemyTypes.EnemyDefaultFuncs(enm)
  180.         enm.Blind = 1
  181.         enm.Deaf = 1
  182.         if n < nenemies - 1:
  183.             enm.Data.OldImDeadFunc = enm.ImDeadFunc
  184.             enm.ImDeadFunc = GeneratorReady
  185.         
  186.         enm.Data.enmgendata = enmgen
  187.         enm.Data.CallBackGen = CallBack
  188.         enm.Freeze()
  189.         enm.RemoveFromWorldWithChilds()
  190.     
  191.     return enmgen
  192.  
  193.