home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / MusicTool.py < prev    next >
Encoding:
Text File  |  2000-10-27  |  2.3 KB  |  105 lines

  1. #
  2. #  Libreria para simplificar el manejo de musicas ambientes
  3. #
  4. import Bladex
  5. import darfuncs
  6.  
  7. def LaunchMusicEvent(musicname):
  8.     Bladex.ExeMusicEvent(Bladex.GetMusicEvent(musicname))
  9.  
  10. AsociatedMusic = {}
  11. def OnEnterSectorMusic(id):
  12.     global AsociatedMusic
  13.     
  14.     if AsociatedMusic.has_key(id):
  15.         music = AsociatedMusic[id]        
  16.         Bladex.AddScheduledFunc(Bladex.GetTime(),LaunchMusicEvent,(music,))
  17.     else:
  18.         music = None
  19.  
  20.     for key in AsociatedMusic.keys():
  21.         if AsociatedMusic[key] != music:
  22.             darfuncs.EnterSecIdEvent(key,OnEnterSectorMusic)
  23.  
  24. def Music2Sector(sec,music):
  25.     global AsociatedMusic
  26.     
  27.     id = darfuncs.GetSectorIdx(sec)
  28.     if not AsociatedMusic.has_key(id):
  29.         darfuncs.EnterSecIdEvent(id,OnEnterSectorMusic)
  30.     
  31.     if music:
  32.         AsociatedMusic[id] = music
  33.     else:
  34.         if AsociatedMusic.has_key(id):
  35.             del AsociatedMusic[id]
  36.  
  37. ##################################################################################
  38.  
  39. MusicChanges = {}
  40. def OnEnterMusicChange(id):
  41.     global MusicChanges
  42.     
  43.     for mtr in MusicChanges[id]:
  44.         if len(mtr)==2:
  45.             Music2Sector(mtr[0],mtr[1])
  46.         else:
  47.             LaunchMusicEvent(mtr[0])
  48.     
  49.     del MusicChanges[id]
  50.     
  51.     for key in MusicChanges.keys():
  52.         darfuncs.EnterSecIdEvent(key,OnEnterMusicChange)
  53.  
  54.  
  55. def ModifyMusicEvent(sec,tarsec,music=None):
  56.     global MusicChanges
  57.     
  58.     id = darfuncs.GetSectorIdx(sec)
  59.     ev = darfuncs.GetSectorIdx(tarsec),music
  60.     if not MusicChanges.has_key(id):
  61.         MusicChanges[id] = [ev]
  62.         darfuncs.EnterSecIdEvent(id,OnEnterMusicChange)
  63.     else:
  64.         MusicChanges[id].append(ev)
  65.     
  66. def AddPrelude(sec,Prelude):
  67.     global MusicChanges
  68.     
  69.     id = darfuncs.GetSectorIdx(sec)
  70.     ev = (Prelude,)
  71.     if not MusicChanges.has_key(id):
  72.         MusicChanges[id] = [ev]
  73.         darfuncs.EnterSecIdEvent(id,OnEnterMusicChange)
  74.     else:
  75.         MusicChanges[id].append(ev)
  76.  
  77.  
  78. def SaveData(filename):
  79.   import cPickle
  80.  
  81.   funcfile=open(filename,"wt")
  82.   p=cPickle.Pickler(funcfile)
  83.   d=(AsociatedMusic,MusicChanges)
  84.   p.dump(d)
  85.   funcfile.close()
  86.  
  87.  
  88. def LoadData(filename):
  89.   import cPickle
  90.  
  91.   funcfile=open(filename,"rt")
  92.   p=cPickle.Unpickler(funcfile)
  93.   d=p.load()
  94.   funcfile.close()
  95.   print d
  96.  
  97.   global AsociatedMusic
  98.   global MusicChanges
  99.  
  100.   AsociatedMusic=d[0]
  101.   MusicChanges=d[1]
  102.  
  103. import GameState
  104. GameState.ModulesToBeSaved.append(__import__(__name__))
  105.