home *** CD-ROM | disk | FTP | other *** search
- import MenuText
- import Bladex
- import netwidgets
- import MenuWidget
- import os
- import time
- import string
- import Reference
-
- EMPTY_SLOT = "<Empty Slot>"
- DATE_FORMAT = "%d/%m %H:%M"
- SaveCounter = []
-
- for i in range(2):
- SaveCounter.append("Awesome!")
-
- for i in range(3):
- SaveCounter.append("Heroic")
-
- for i in range(4):
- SaveCounter.append("Bold")
-
- for i in range(5):
- SaveCounter.append("Normal")
-
- for i in range(6):
- SaveCounter.append("Cautious")
-
- for i in range(7):
- SaveCounter.append("Overcautious")
-
- SaveCounter.append("Lame")
- #
- # Utils to save/load games.
- #
-
- def ElUsuarioPresionaLaTeclaEscape(Salio):
- return 1
-
-
- def LoadGameAux(name):
- path="../../Save/%s_files"%(name,)
- execfile="execfile('../../Scripts/sys_init.py');execfile('../../Save/%s.py')"%(name,)
-
- file_data_aux=open("%s/%saux"%(path,"aux"),"rt")
- text=file_data_aux.read()
- print text
- file_data_aux.close()
-
- Bladex.BeginLoadGame()
- Bladex.CloseLevel(execfile,text)
-
- def LoadGameFromDisk(menu_class):
- LoadGameAux("SaveGame"+menu_class.MenuDescr["Clave"])
-
- def SaveGameToDisk(menu_class):
- import Menu
- import Scorer
- import MenuText
- import GameText
-
- global SaveGameString
-
- # Back to game
- Menu._MainMenu.DeActivateMenuItem()
- Menu._MainMenu.DeActivateMenuItem()
- Menu._MainMenu.DeActivateMenuItem()
- Menu._MainMenu.DeActivateMenuItem()
-
-
- # save aditional data
- file = open("../../Save/"+menu_class.MenuDescr["Clave"]+".sv","w")
-
- char = Bladex.GetEntity("Player1")
- if char.Kind[0] =="K":
- cad = MenuText.GetMenuText("Knight")
- if char.Kind[0] =="B":
- cad = MenuText.GetMenuText("Barbarian")
- if char.Kind[0] =="D":
- cad = MenuText.GetMenuText("Dwarf")
- if char.Kind[0] =="A":
- cad = MenuText.GetMenuText("Amazon")
-
- cadtime = time.strftime(DATE_FORMAT,time.localtime(time.time()))
-
- cad = `char.Level+1`+" Lv. "+cad+" "+" - "+cadtime+" - "
- cad = cad + GameText.MapDescriptor(Bladex.GetCurrentMap())
- Reference.TimesSaved = Reference.TimesSaved+1
- if Reference.TimesSaved >= len(SaveCounter):
- DisgustingMessage = SaveCounter[len(SaveCounter)-1]
- else:
- DisgustingMessage = SaveCounter[Reference.TimesSaved-1]
- cad = cad + " - "+`Reference.TimesSaved`+" ("+MenuText.GetMenuText(DisgustingMessage)+")"
- file.write(cad)
- file.close()
- print cad
-
- # save Screen shoot
- Scorer.SetVisible(0)
- Bladex.SaveScreenShot('../../Save/'+menu_class.MenuDescr["Clave"]+'.BMP',160,120)
- SaveGameString = "import GameState;state=GameState.WorldState();state.GetState();state.SaveState('../../Save/SaveGame"+menu_class.MenuDescr["Clave"]+".py');state=None;"
- SavegameMessage="import SaveGameImage;SaveGameImage.ShowImage('../Blade_save.bmp');"
-
- # Save the game
- Bladex.StopTime()
- Bladex.SetRunString(SavegameMessage+SaveGameString+"Scorer.SetVisible(1);Bladex.RestartTime();")
-
-
- def GetBack(menu_class):
- import Menu
- Menu._MainMenu.DeActivateMenuItem()
-
-
- SaveBitmaps = (
- ("1" , "../../Save/1.BMP" ),
- ("2" , "../../Save/2.BMP" ),
- ("3" , "../../Save/3.BMP" ),
- ("4" , "../../Save/4.BMP" ),
- ("5" , "../../Save/5.BMP" ),
- ("6" , "../../Save/6.BMP" ),
- ("7" , "../../Save/7.BMP" ),
- ("8" , "../../Save/8.BMP" ),
- )
-
- def GetSaveStatus():
- global EmptyImage
- if EmptyImage:
- return "0"
- elif FirstSaved:
- return FirstSaved
- else:
- return "1"
-
-
- def FocusOnBitmap(menu_class=0,parametro=0):
- netwidgets.ChangePlayer(menu_class.MenuDescr["Clave"])
-
-
- # called when the menu is called
- def CreateSaveMenu():
- import Menu
- import GameText
-
- InspectSaveList()
- if AllEmpty and not GameText.MapList.has_key(string.upper(Bladex.GetCurrentMap())):
- try:
- Menu.GetMenuItem (['Game','Load Saved'])['Kind' ] = MenuWidget.B_MenuItemTextNoFXNoFocus
- except:
- pass
- try:
- del Menu.GetMenuItem(['Game','Load Saved'])['ListDescr']
- except:
- pass
- else:
- try:
- CreateMenu('Load Saved',0)
- except:
- pass
- try:
- del Menu.GetMenuItem (['Game','Load Saved'])['Kind' ]
- except:
- pass
-
- if (Bladex.GetEntity("Player1").Life <= 0) or not GameText.MapList.has_key(string.upper(Bladex.GetCurrentMap())):
- try:
- Menu.GetMenuItem (['Game','Save Current'])['Kind' ] = MenuWidget.B_MenuItemTextNoFXNoFocus
- except:
- pass
- else:
- try:
- del Menu.GetMenuItem (['Game','Save Current'])['Kind' ]
- except:
- pass
- try:
- CreateMenu('Save Current',1)
- except:
- pass
-
- def InspectSaveList():
- global SaveBitmaps
- global AllEmpty
- global FirstSaved
-
- FirstSaved = None
- AllEmpty = 1
-
- SaveBitmaps = []
- path = "../../Save/"
- ListDir = os.listdir(path)
- for i in range(6):
- cad = `i+1`+".BMP"
- if cad in ListDir:
- file = open(path+`i+1`+".sv","r")
- name = file.readline()
- file.close()
-
- SaveBitmaps.append(`i+1`,path+cad,name)
- AllEmpty = 0
- if not FirstSaved:
- FirstSaved = `i+1`
- else:
- SaveBitmaps.append(`i+1`,"../../Data/Empty.BMP",EMPTY_SLOT)
- SaveBitmaps.append("0","../../Data/Empty.BMP",EMPTY_SLOT)
-
- def RestartLevel(menu_class):
- Bladex.LoadLevel(Bladex.GetCurrentMap())
-
- def MenuStart(EntityName):
- import AuxFuncs
- Bladex.GetEntity(EntityName).Freeze()
- print EntityName, "is death"
- AuxFuncs.FadeTo(1.0,1.0)
- Bladex.AddScheduledFunc(Bladex.GetTime()+1.0,ActivaMenuDeRegreso,())
-
- def ActivaMenuDeRegreso():
- import Menu
- if Bladex.GetEntity("Player1").Life<=0:
- Menu.GetMenuItem(["Back To Game"])['Kind' ] = MenuWidget.B_MenuItemTextNoFXNoFocus
- Menu.EscapeFunction = ElUsuarioPresionaLaTeclaEscape
-
- Menu.ActivateMenu()
- Menu._MainMenu.ActivateMenuItem()
- Menu._MainMenu.MenuNextItem()
- Menu._MainMenu.ActivateMenuItem()
-
- def CreateMenu(MenuName,SaveFlag):
- import Menu
- import MenuText
- import GameText
- global EmptyImage
-
- menuItem = Menu.GetMenuItem(['Game',MenuName])
-
- if menuItem == 1:
- return
-
- Save_Menu = []
-
- EmptyImage = (not SaveFlag) and GameText.MapList.has_key(string.upper(Bladex.GetCurrentMap()))
-
- Save_Menu.append( {"Name" : MenuText.GetMenuText(MenuName),
- "VSep" : 30,
- "Font" : Menu.MenuFontBig,
- "Kind" : MenuWidget.B_MenuItemTextNoFXNoFocus,
- })
-
- Save_Menu.append( {"Name":"GameList",
- "Kind":netwidgets.B_ImageListWidget,
- "ImageList":SaveBitmaps,
- "GetCharType":GetSaveStatus,
- "VSep":10
- })
-
- if EmptyImage:
- Save_Menu.append( {"Name" : MenuText.GetMenuText("Restart")+' "'+GameText.MapDescriptor(Bladex.GetCurrentMap())+'"',
- "VSep" : 10,
- "Clave" : "0",
- "FocusCallBack" : FocusOnBitmap,
- "Font" : Menu.MenuFontMed,
- "Kind" : MenuWidget.B_MenuItemTextNoFX,
- "Command" : RestartLevel
- })
- menuItem["iFocus"] =3
- else:
- if menuItem.has_key("iFocus"):
- del menuItem["iFocus"]
-
-
- ####################################
- for i in range(6):
- SaveGameName = SaveBitmaps[i][2]
- if SaveFlag:
- val = {"Name" : SaveGameName,
- "VSep" : 10,
- "Font" : Menu.MenuFontMed,
- "FocusCallBack" : FocusOnBitmap,
- "Clave" : `i+1`,
- "iFocus" : 1,
- "ListDescr" : [
- {"Name":MenuText.GetMenuText("Overwrite a previous saved game?"),
- "VSep":200,
- "Font":Menu.MenuFontBig,
- "Kind":MenuWidget.B_MenuItemTextNoFXNoFocus
- },
- {"Name" : MenuText.GetMenuText("Yes"),
- "VSep" : 20,
- "Command" : SaveGameToDisk,
- "Font" : Menu.MenuFontMed,
- "Clave" : `i+1`,
- },
- {"Name":MenuText.GetMenuText("No"),
- "VSep":10,
- "Font":Menu.MenuFontMed,
- "Command" : GetBack
- },
- {"Name":"Back",
- "Kind":MenuWidget.B_BackBlank
- }
- ]
- }
- if SaveGameName == EMPTY_SLOT:
- del val["ListDescr"]
- val["Command"] = SaveGameToDisk
- Save_Menu.append(val)
- else:
- val = {"Name" : SaveGameName,
- "VSep" : 10,
- "Font" : Menu.MenuFontMed,
- "Kind" : MenuWidget.B_MenuItemTextNoFX,
- "Command" : LoadGameFromDisk,
- "FocusCallBack" : FocusOnBitmap,
- "Clave" : `i+1`
- }
- if SaveGameName == EMPTY_SLOT:
- val["Kind"] = MenuWidget.B_MenuItemTextNoFXNoFocus
- Save_Menu.append(val)
-
- ####################################
-
- Save_Menu.append( Menu.BackOption )
- Save_Menu.append( {"Name":"Back",
- "Kind":MenuWidget.B_BackBlank
- })
-
- menuItem["ListDescr"] = Save_Menu
-
-
-
-
-
-
-