2013-07-21 02:23:57 +02:00
var g _Descriptions ;
2014-01-04 11:14:53 +01:00
var savedGameData ;
2013-07-21 02:23:57 +02:00
function selectDescription ( )
{
2014-01-04 11:14:53 +01:00
var gameSelection = Engine . GetGUIObjectByName ( "gameSelection" ) ;
2013-07-21 02:23:57 +02:00
if ( gameSelection . selected != - 1 )
{
2014-01-04 11:14:53 +01:00
Engine . GetGUIObjectByName ( "deleteGameButton" ) . enabled = true ;
2013-07-21 02:23:57 +02:00
var gameID = gameSelection . list _data [ gameSelection . selected ] ;
2014-01-04 11:14:53 +01:00
Engine . GetGUIObjectByName ( "saveGameDesc" ) . caption = g _Descriptions [ gameID ] ;
2013-07-21 02:23:57 +02:00
}
}
function init ( data )
{
if ( data )
{
2014-01-04 11:14:53 +01:00
if ( data . savedGameData )
savedGameData = data . savedGameData ;
2013-07-21 02:23:57 +02:00
}
2014-01-04 11:14:53 +01:00
var gameSelection = Engine . GetGUIObjectByName ( "gameSelection" ) ;
Engine . GetGUIObjectByName ( "deleteGameButton" ) . enabled = false ;
2013-07-21 02:23:57 +02:00
var savedGames = Engine . GetSavedGames ( ) ;
if ( savedGames . length == 0 )
{
2014-04-20 22:51:48 +02:00
gameSelection . list = [ translate ( "No saved games found" ) ] ;
2013-07-21 02:23:57 +02:00
gameSelection . selected = - 1 ;
return ;
}
savedGames . sort ( sortDecreasingDate ) ;
var gameListIDs = [ game . id for each ( game in savedGames ) ] ;
var gameListLabels = [ generateLabel ( game . metadata ) for each ( game in savedGames ) ] ;
g _Descriptions = { } ;
[ g _Descriptions [ game . id ] = ( game . metadata . description ? game . metadata . description : "" ) for each ( game in savedGames ) ] ;
gameSelection . list = gameListLabels ;
gameSelection . list _data = gameListIDs ;
gameSelection . selected = - 1 ;
}
function saveGame ( )
{
2014-01-04 11:14:53 +01:00
var gameSelection = Engine . GetGUIObjectByName ( "gameSelection" ) ;
2013-07-21 02:23:57 +02:00
var gameLabel = gameSelection . list [ gameSelection . selected ] ;
var gameID = gameSelection . list _data [ gameSelection . selected ] ;
2014-01-04 11:14:53 +01:00
var desc = Engine . GetGUIObjectByName ( "saveGameDesc" ) . caption ;
2013-07-21 02:23:57 +02:00
var name = gameID ? gameID : "savegame" ;
if ( gameSelection . selected != - 1 )
{
// Ask for confirmation
2014-04-20 22:51:48 +02:00
var btCaptions = [ translate ( "Yes" ) , translate ( "No" ) ] ;
2013-07-21 02:23:57 +02:00
var btCode = [ function ( ) { reallySaveGame ( name , desc , false ) ; } , null ] ;
2014-04-20 22:51:48 +02:00
messageBox ( 500 , 200 , sprintf ( translate ( "\"%(label)s\"" ) , { label : gameLabel } ) + "\n" + translate ( "Saved game will be permanently overwritten, are you sure?" ) , translate ( "OVERWRITE SAVE" ) , 0 , btCaptions , btCode ) ;
2013-07-21 02:23:57 +02:00
}
else
reallySaveGame ( name , desc , true ) ;
}
function reallySaveGame ( name , desc , nameIsPrefix )
{
if ( nameIsPrefix )
2014-01-04 11:14:53 +01:00
Engine . SaveGamePrefix ( name , desc , savedGameData ) ;
2013-07-21 02:23:57 +02:00
else
2014-01-04 11:14:53 +01:00
Engine . SaveGame ( name , desc , savedGameData ) ;
2013-07-21 02:23:57 +02:00
closeSave ( ) ;
}
function closeSave ( )
{
2014-01-04 11:14:53 +01:00
Engine . PopGuiPageCB ( 0 ) ;
2013-07-21 02:23:57 +02:00
}
function deleteGame ( )
{
2014-01-04 11:14:53 +01:00
var gameSelection = Engine . GetGUIObjectByName ( "gameSelection" ) ;
2013-07-21 02:23:57 +02:00
var gameLabel = gameSelection . list [ gameSelection . selected ] ;
var gameID = gameSelection . list _data [ gameSelection . selected ] ;
// Ask for confirmation
2014-04-20 22:51:48 +02:00
var btCaptions = [ translate ( "Yes" ) , translate ( "No" ) ] ;
2013-07-21 02:23:57 +02:00
var btCode = [ function ( ) { reallyDeleteGame ( gameID ) ; } , null ] ;
2014-04-20 22:51:48 +02:00
messageBox ( 500 , 200 , sprintf ( translate ( "\"%(label)s\"" ) , { label : gameLabel } ) + "\n" + translate ( "Saved game will be permanently deleted, are you sure?" ) , translate ( "DELETE" ) , 0 , btCaptions , btCode ) ;
2013-07-21 02:23:57 +02:00
}
function reallyDeleteGame ( gameID )
{
if ( ! Engine . DeleteSavedGame ( gameID ) )
2014-04-20 22:51:48 +02:00
error ( sprintf ( "Could not delete saved game '%(id)s'" , { id : gameID } ) ) ;
2013-07-21 02:23:57 +02:00
// Run init again to refresh saved game list
init ( ) ;
}
2014-01-04 11:14:53 +01:00
// HACK: Engine.SaveGame* expects this function to be defined on the current page.
// That's why we have to pass the data to this page even if we don't need it.
2013-07-21 02:23:57 +02:00
function getSavedGameData ( )
{
2014-01-04 11:14:53 +01:00
return savedGameData ;
2013-07-21 02:23:57 +02:00
}