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

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. import re
  8. import sys
  9. import string
  10. #import win32dbg
  11.  
  12.  
  13. GSPattern=r"[^a-zA-Z0-9.:\\\-_]*"
  14.  
  15. def __ReadGSLine(fileobject):
  16.   Line=fileobject.readline()
  17.   if(Line==""):  # Estoy en EOF
  18.     raise EOFError
  19.  
  20.   return string.strip(Line)
  21.  
  22.  
  23. def __ReadGhostSector(fileobject):
  24.   Line=__ReadGSLine(fileobject)
  25.   GSDesc={}
  26.   GSDesc["Vertex"]=[]
  27.  
  28.   # Primero busco el BeginGhostSector
  29.   BeginNotFound=1
  30.   while BeginNotFound:
  31.     Line=__ReadGSLine(fileobject)
  32.  
  33.     res=re.split(GSPattern,Line)
  34.     if res[0]=="BeginGhostSector":
  35.       break
  36.  
  37.   Line=__ReadGSLine(fileobject)
  38.   res=re.split(GSPattern,Line)
  39.   while res[0]!="EndGhostSector":
  40.     Tag=res[0]
  41.     if Tag=="Name":
  42.       GSDesc["Name"]=res[1]
  43.     elif Tag=="FloorHeight":
  44.       GSDesc["FloorHeight"]=-1000*string.atof(res[1])
  45.     elif Tag=="RoofHeight":
  46.       GSDesc["RoofHeight"]=-1000*string.atof(res[1])
  47.     elif Tag=="Vertex":
  48.       GSDesc["Vertex"].append( (1000*string.atof(res[1]),-1000*string.atof(res[2])) )
  49.     elif Tag=="Grupo":
  50.       GSDesc["Grupo"]=res[1]
  51.     elif Tag=="Sonido":
  52.       GSDesc["Sonido"]=res[1]
  53.     elif Tag=="Volumen":
  54.       GSDesc["Volumen"]=string.atof(res[1])
  55.     elif Tag=="VolumenBase":
  56.       GSDesc["VolumenBase"]=string.atof(res[1])
  57.     elif Tag=="DistanciaMinima":
  58.       GSDesc["DistanciaMinima"]=string.atof(res[1])
  59.     elif Tag=="DistanciaMaxima":
  60.       GSDesc["DistanciaMaxima"]=string.atof(res[1])
  61.     elif Tag=="DistMaximaVertical":
  62.       GSDesc["DistMaximaVertical"]=string.atof(res[1])
  63.     elif Tag=="Escala":
  64.       GSDesc["Escala"]=string.atof(res[1])
  65.     Line=__ReadGSLine(fileobject)
  66.     res=re.split(GSPattern,Line)
  67.  
  68.   return GSDesc
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75. def ReadGhostSectorFile(filename):
  76.   print filename
  77. #  win32dbg.set_trace()
  78.   f=open(filename,"rt")
  79.   ret=[]
  80.   CurrLine=__ReadGSLine(f)
  81.   while CurrLine!="":
  82.     res=re.split(GSPattern,CurrLine)
  83.     if res[0]=="NumGhostSectors":
  84.       for i in range(int(res[1])):
  85.         dsc=__ReadGhostSector(f)
  86.         ret.append(dsc)
  87.         #print "Dsc: ",dsc
  88.         #print "Bladex.AddGhostSector(\"",dsc["Name"],"\", ",
  89.         #print dsc["FloorHeight"],",",
  90.         #print dsc["RoofHeight"],",",
  91.         #print dsc["Vertex"],
  92.         #print ")"
  93.     CurrLine=__ReadGSLine(f)
  94.   return ret
  95.     
  96.  
  97.  
  98.  
  99. def ProcessGhostSectorFile(filename):
  100.   try:
  101.     import Bladex
  102.     res=ReadGhostSectorFile(filename)
  103.     for igs in res:
  104.       Bladex.AddGhostSector(igs["Name"],igs["Grupo"],igs["FloorHeight"],igs["RoofHeight"],igs["Vertex"])
  105.       Bladex.SetGhostSectorSound(igs["Name"],igs["Sonido"],igs["Volumen"],igs["VolumenBase"],
  106.                                igs["DistanciaMinima"],igs["DistanciaMaxima"],igs["DistMaximaVertical"],
  107.                                igs["Escala"])
  108.  
  109.   except KeyError:
  110.     print "Error processing",filename,"Unknown attribute"
  111.   except:
  112.     print "Error processing",filename
  113.  
  114.  
  115.  
  116.  
  117.  
  118. if __name__ == '__main__':
  119.   res=ReadGhostSectorFile("DesPrb2.sf")
  120.   print res
  121.  
  122.  
  123.  
  124.