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

  1. import MenuText
  2. import Bladex
  3. import netwidgets
  4. import MenuWidget
  5. import os
  6. import time
  7. import string
  8. import Reference
  9.  
  10. EMPTY_SLOT  = "<Empty Slot>"
  11. DATE_FORMAT = "%d/%m %H:%M"
  12. SaveCounter = []
  13.  
  14. for i in range(2):
  15.         SaveCounter.append("Awesome!")
  16.  
  17. for i in range(3):
  18.         SaveCounter.append("Heroic")
  19.  
  20. for i in range(4):
  21.         SaveCounter.append("Bold")
  22.  
  23. for i in range(5):
  24.         SaveCounter.append("Normal")
  25.  
  26. for i in range(6):
  27.         SaveCounter.append("Cautious")
  28.  
  29. for i in range(7):
  30.         SaveCounter.append("Overcautious")
  31.  
  32. SaveCounter.append("Lame")
  33. #
  34. # Utils to save/load games.
  35. #
  36.  
  37. def ElUsuarioPresionaLaTeclaEscape(Salio):
  38.     return 1
  39.  
  40.  
  41. def LoadGameAux(name):
  42.     path="../../Save/%s_files"%(name,)
  43.     execfile="execfile('../../Scripts/sys_init.py');execfile('../../Save/%s.py')"%(name,)
  44.  
  45.     file_data_aux=open("%s/%saux"%(path,"aux"),"rt")
  46.     text=file_data_aux.read()
  47.     print text
  48.     file_data_aux.close()
  49.  
  50.     Bladex.BeginLoadGame()
  51.     Bladex.CloseLevel(execfile,text)
  52.     
  53. def LoadGameFromDisk(menu_class):
  54.     LoadGameAux("SaveGame"+menu_class.MenuDescr["Clave"])
  55.  
  56. def SaveGameToDisk(menu_class):
  57.     import Menu
  58.     import Scorer
  59.     import MenuText
  60.     import GameText
  61.  
  62.     global SaveGameString
  63.  
  64.     # Back to game
  65.     Menu._MainMenu.DeActivateMenuItem()
  66.     Menu._MainMenu.DeActivateMenuItem()
  67.     Menu._MainMenu.DeActivateMenuItem()
  68.     Menu._MainMenu.DeActivateMenuItem()
  69.     
  70.     
  71.     # save aditional data
  72.     file = open("../../Save/"+menu_class.MenuDescr["Clave"]+".sv","w")
  73.  
  74.     char = Bladex.GetEntity("Player1")
  75.     if char.Kind[0] =="K":
  76.         cad = MenuText.GetMenuText("Knight")
  77.     if char.Kind[0] =="B":
  78.         cad = MenuText.GetMenuText("Barbarian")
  79.     if char.Kind[0] =="D":
  80.         cad = MenuText.GetMenuText("Dwarf")
  81.     if char.Kind[0] =="A":
  82.         cad = MenuText.GetMenuText("Amazon")
  83.     
  84.     cadtime = time.strftime(DATE_FORMAT,time.localtime(time.time()))
  85.     
  86.     cad = `char.Level+1`+" Lv. "+cad+" "+" - "+cadtime+" - "
  87.     cad = cad + GameText.MapDescriptor(Bladex.GetCurrentMap())
  88.     Reference.TimesSaved = Reference.TimesSaved+1
  89.     if Reference.TimesSaved >= len(SaveCounter):
  90.         DisgustingMessage = SaveCounter[len(SaveCounter)-1]
  91.     else:
  92.         DisgustingMessage = SaveCounter[Reference.TimesSaved-1]
  93.     cad = cad + " - "+`Reference.TimesSaved`+" ("+MenuText.GetMenuText(DisgustingMessage)+")"
  94.     file.write(cad)    
  95.     file.close()
  96.     print cad
  97.  
  98.     # save Screen shoot
  99.     Scorer.SetVisible(0)
  100.     Bladex.SaveScreenShot('../../Save/'+menu_class.MenuDescr["Clave"]+'.BMP',160,120)
  101.     SaveGameString = "import GameState;state=GameState.WorldState();state.GetState();state.SaveState('../../Save/SaveGame"+menu_class.MenuDescr["Clave"]+".py');state=None;"
  102.     SavegameMessage="import SaveGameImage;SaveGameImage.ShowImage('../Blade_save.bmp');"
  103.     
  104.     # Save the game
  105.     Bladex.StopTime()
  106.     Bladex.SetRunString(SavegameMessage+SaveGameString+"Scorer.SetVisible(1);Bladex.RestartTime();")
  107.     
  108.  
  109. def GetBack(menu_class):
  110.     import Menu
  111.     Menu._MainMenu.DeActivateMenuItem()
  112.     
  113.  
  114. SaveBitmaps =     (
  115.             ("1"    , "../../Save/1.BMP"   ),
  116.             ("2"    , "../../Save/2.BMP"   ),
  117.             ("3"    , "../../Save/3.BMP"   ),
  118.             ("4"    , "../../Save/4.BMP"   ),
  119.             ("5"    , "../../Save/5.BMP"   ),
  120.             ("6"    , "../../Save/6.BMP"   ),
  121.             ("7"    , "../../Save/7.BMP"   ),
  122.             ("8"    , "../../Save/8.BMP"   ),
  123.         )
  124.  
  125. def GetSaveStatus():
  126.     global EmptyImage
  127.     if EmptyImage:
  128.         return "0"
  129.     elif FirstSaved:
  130.         return FirstSaved
  131.     else:
  132.         return "1"
  133.     
  134.  
  135. def FocusOnBitmap(menu_class=0,parametro=0):
  136.     netwidgets.ChangePlayer(menu_class.MenuDescr["Clave"])
  137.  
  138.  
  139. # called when the menu is called
  140. def CreateSaveMenu():
  141.     import Menu
  142.     import GameText
  143.     
  144.     InspectSaveList()
  145.     if AllEmpty and  not GameText.MapList.has_key(string.upper(Bladex.GetCurrentMap())):
  146.         try:
  147.             Menu.GetMenuItem    (['Game','Load Saved'])['Kind'     ] = MenuWidget.B_MenuItemTextNoFXNoFocus
  148.         except:
  149.             pass
  150.         try:
  151.             del Menu.GetMenuItem(['Game','Load Saved'])['ListDescr']
  152.         except:
  153.             pass
  154.     else:
  155.         try:
  156.             CreateMenu('Load Saved',0)
  157.         except:
  158.             pass
  159.         try:
  160.             del Menu.GetMenuItem    (['Game','Load Saved'])['Kind'     ]
  161.         except:
  162.             pass
  163.     
  164.     if (Bladex.GetEntity("Player1").Life <= 0) or not GameText.MapList.has_key(string.upper(Bladex.GetCurrentMap())):
  165.         try:
  166.             Menu.GetMenuItem    (['Game','Save Current'])['Kind'     ] = MenuWidget.B_MenuItemTextNoFXNoFocus
  167.         except:
  168.             pass
  169.     else:
  170.         try:
  171.             del Menu.GetMenuItem    (['Game','Save Current'])['Kind'     ] 
  172.         except:
  173.             pass
  174.         try:
  175.             CreateMenu('Save Current',1)
  176.         except:
  177.             pass
  178.     
  179. def InspectSaveList():
  180.     global SaveBitmaps
  181.     global AllEmpty
  182.     global FirstSaved
  183.     
  184.     FirstSaved = None
  185.     AllEmpty = 1
  186.      
  187.     SaveBitmaps = []
  188.     path = "../../Save/"
  189.     ListDir = os.listdir(path)
  190.     for i in range(6):
  191.         cad = `i+1`+".BMP"
  192.         if cad in ListDir:
  193.             file = open(path+`i+1`+".sv","r")
  194.             name = file.readline()
  195.             file.close()
  196.             
  197.             SaveBitmaps.append(`i+1`,path+cad,name)
  198.             AllEmpty = 0
  199.             if not FirstSaved:
  200.                 FirstSaved = `i+1`
  201.         else:
  202.             SaveBitmaps.append(`i+1`,"../../Data/Empty.BMP",EMPTY_SLOT)
  203.     SaveBitmaps.append("0","../../Data/Empty.BMP",EMPTY_SLOT)
  204.  
  205. def RestartLevel(menu_class):
  206.     Bladex.LoadLevel(Bladex.GetCurrentMap())
  207.  
  208. def MenuStart(EntityName):
  209.     import AuxFuncs
  210.     Bladex.GetEntity(EntityName).Freeze()
  211.     print EntityName, "is  death"
  212.     AuxFuncs.FadeTo(1.0,1.0)
  213.     Bladex.AddScheduledFunc(Bladex.GetTime()+1.0,ActivaMenuDeRegreso,())
  214.  
  215. def ActivaMenuDeRegreso():
  216.     import Menu
  217.     if Bladex.GetEntity("Player1").Life<=0:
  218.         Menu.GetMenuItem(["Back To Game"])['Kind'     ] = MenuWidget.B_MenuItemTextNoFXNoFocus
  219.         Menu.EscapeFunction = ElUsuarioPresionaLaTeclaEscape
  220.  
  221.     Menu.ActivateMenu()
  222.     Menu._MainMenu.ActivateMenuItem()
  223.     Menu._MainMenu.MenuNextItem()
  224.     Menu._MainMenu.ActivateMenuItem()
  225.  
  226. def CreateMenu(MenuName,SaveFlag):
  227.     import Menu
  228.     import MenuText
  229.     import GameText
  230.     global EmptyImage
  231.         
  232.     menuItem = Menu.GetMenuItem(['Game',MenuName])
  233.  
  234.     if menuItem == 1:
  235.         return
  236.  
  237.     Save_Menu = []
  238.     
  239.     EmptyImage = (not SaveFlag) and GameText.MapList.has_key(string.upper(Bladex.GetCurrentMap()))
  240.         
  241.     Save_Menu.append(  {"Name"    : MenuText.GetMenuText(MenuName),
  242.                         "VSep"    : 30,
  243.                         "Font"    : Menu.MenuFontBig,
  244.                         "Kind"    : MenuWidget.B_MenuItemTextNoFXNoFocus,
  245.                          })
  246.                          
  247.     Save_Menu.append(  {"Name":"GameList",
  248.                         "Kind":netwidgets.B_ImageListWidget,
  249.                         "ImageList":SaveBitmaps,
  250.                         "GetCharType":GetSaveStatus,
  251.                         "VSep":10
  252.                        })
  253.     
  254.     if EmptyImage:
  255.         Save_Menu.append(  {"Name"           : MenuText.GetMenuText("Restart")+' "'+GameText.MapDescriptor(Bladex.GetCurrentMap())+'"',
  256.                             "VSep"           : 10,
  257.                             "Clave"          : "0",
  258.                             "FocusCallBack"  : FocusOnBitmap,
  259.                             "Font"           : Menu.MenuFontMed,
  260.                             "Kind"           : MenuWidget.B_MenuItemTextNoFX,
  261.                             "Command"        : RestartLevel
  262.                              })
  263.         menuItem["iFocus"] =3
  264.     else:
  265.         if menuItem.has_key("iFocus"):
  266.           del menuItem["iFocus"]
  267.  
  268.     
  269.     ####################################
  270.     for i in range(6):
  271.         SaveGameName = SaveBitmaps[i][2]
  272.         if SaveFlag:
  273.             val =              {"Name"           : SaveGameName,
  274.                                 "VSep"           : 10,
  275.                                 "Font"           : Menu.MenuFontMed,
  276.                                 "FocusCallBack"  : FocusOnBitmap,
  277.                                 "Clave"          : `i+1`,
  278.                                 "iFocus"         : 1,
  279.                                 "ListDescr"      : [
  280.                                                     {"Name":MenuText.GetMenuText("Overwrite a previous saved game?"),
  281.                                                      "VSep":200,
  282.                                                      "Font":Menu.MenuFontBig,
  283.                                                      "Kind":MenuWidget.B_MenuItemTextNoFXNoFocus
  284.                                                     },
  285.                                                     {"Name"    : MenuText.GetMenuText("Yes"),
  286.                                                      "VSep"    : 20,
  287.                                                      "Command" : SaveGameToDisk,
  288.                                                      "Font"    : Menu.MenuFontMed,
  289.                                                      "Clave"   :  `i+1`,
  290.                                                     },
  291.                                                     {"Name":MenuText.GetMenuText("No"),
  292.                                                      "VSep":10,
  293.                                                      "Font":Menu.MenuFontMed,
  294.                                                      "Command" : GetBack
  295.                                                     },
  296.                                                     {"Name":"Back",
  297.                                                      "Kind":MenuWidget.B_BackBlank
  298.                                                     }
  299.                                                   ]
  300.                                  }
  301.             if SaveGameName == EMPTY_SLOT:
  302.                 del val["ListDescr"]
  303.                 val["Command"] = SaveGameToDisk
  304.             Save_Menu.append(val)
  305.         else:
  306.             val =              {"Name"           : SaveGameName,
  307.                                 "VSep"           : 10,
  308.                                 "Font"           : Menu.MenuFontMed,
  309.                                 "Kind"           : MenuWidget.B_MenuItemTextNoFX,
  310.                                 "Command"        : LoadGameFromDisk,
  311.                                 "FocusCallBack"  : FocusOnBitmap,
  312.                                 "Clave"          : `i+1`
  313.                                 }
  314.             if SaveGameName == EMPTY_SLOT:
  315.                 val["Kind"] = MenuWidget.B_MenuItemTextNoFXNoFocus
  316.             Save_Menu.append(val)
  317.                                  
  318.     ####################################
  319.                          
  320.     Save_Menu.append(   Menu.BackOption  )
  321.     Save_Menu.append(   {"Name":"Back",
  322.                          "Kind":MenuWidget.B_BackBlank
  323.                          })
  324.                                                   
  325.     menuItem["ListDescr"] = Save_Menu
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.