initial
This commit is contained in:
217
game/client/cstrike15/gameui/loadgamedialog_xbox.cpp
Normal file
217
game/client/cstrike15/gameui/loadgamedialog_xbox.cpp
Normal file
@ -0,0 +1,217 @@
|
||||
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#include "basepanel.h"
|
||||
#include "loadgamedialog.h"
|
||||
|
||||
#include "winlite.h"
|
||||
#include "vgui/ISurface.h"
|
||||
|
||||
#include "engineinterface.h"
|
||||
#include "gameui_interface.h"
|
||||
#include "ixboxsystem.h"
|
||||
#include "filesystem.h"
|
||||
|
||||
#include "savegamebrowserdialog.h"
|
||||
|
||||
using namespace vgui;
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include <tier0/memdbgon.h>
|
||||
|
||||
CLoadGameDialogXbox::CLoadGameDialogXbox( vgui::Panel *parent ) : BaseClass( parent )
|
||||
{
|
||||
m_bFilterAutosaves = false;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CLoadGameDialogXbox::ApplySchemeSettings( vgui::IScheme *pScheme )
|
||||
{
|
||||
BaseClass::ApplySchemeSettings( pScheme );
|
||||
|
||||
vgui::Label *pTitle = (Label *) FindChildByName( "TitleLabel" );
|
||||
if ( pTitle )
|
||||
{
|
||||
pTitle->SetText( "#GameUI_LoadGame" );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CLoadGameDialogXbox::PerformSelectedAction( void )
|
||||
{
|
||||
BaseClass::PerformSelectedAction();
|
||||
|
||||
if ( !GetNumPanels() )
|
||||
return;
|
||||
|
||||
SetControlDisabled( true );
|
||||
|
||||
// Warn the player if they're already in a map
|
||||
if ( !GameUI().HasSavedThisMenuSession() && GameUI().IsInLevel() && engine->GetMaxClients() == 1 )
|
||||
{
|
||||
BasePanel()->ShowMessageDialog( MD_SAVE_BEFORE_LOAD, this );
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwise just do it
|
||||
OnCommand( "LoadGame" );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CLoadGameDialogXbox::PerformDeletion( void )
|
||||
{
|
||||
// Cannot delete autosaves!
|
||||
CGameSavePanel *pPanel = GetActivePanel();
|
||||
if ( pPanel == NULL || ( pPanel && pPanel->IsAutoSaveType() ) )
|
||||
return;
|
||||
|
||||
BaseClass::PerformDeletion();
|
||||
|
||||
SetControlDisabled( true );
|
||||
|
||||
vgui::surface()->PlaySound( "UI/buttonclickrelease.wav" );
|
||||
BasePanel()->ShowMessageDialog( MD_DELETE_SAVE_CONFIRM, this );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : bNewSaveSelected -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CLoadGameDialogXbox::UpdateFooterOptions( void )
|
||||
{
|
||||
CFooterPanel *pFooter = GetFooterPanel();
|
||||
|
||||
// Show available buttons
|
||||
pFooter->ClearButtons();
|
||||
|
||||
// Make sure we have panels to show
|
||||
if ( HasActivePanels() )
|
||||
{
|
||||
pFooter->AddNewButtonLabel( "#GameUI_Load", "#GameUI_Icons_A_BUTTON" );
|
||||
|
||||
// Don't allow deletions of autosaves!
|
||||
CGameSavePanel *pPanel = GetActivePanel();
|
||||
if ( pPanel && pPanel->IsAutoSaveType() == false )
|
||||
{
|
||||
pFooter->AddNewButtonLabel( "#GameUI_Delete", "#GameUI_Icons_X_BUTTON" );
|
||||
}
|
||||
}
|
||||
|
||||
// Always allow storage devices changes and cancelling
|
||||
pFooter->AddNewButtonLabel( "#GameUI_Close", "#GameUI_Icons_B_BUTTON" );
|
||||
pFooter->AddNewButtonLabel( "#GameUI_Console_StorageChange", "#GameUI_Icons_Y_BUTTON" );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : *command -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CLoadGameDialogXbox::OnCommand( const char *command )
|
||||
{
|
||||
if ( !Q_stricmp( command, "LoadGame" ) )
|
||||
{
|
||||
// Must have an active panel to perform this action
|
||||
if ( GetNumPanels() == 0 )
|
||||
{
|
||||
SetControlDisabled( false );
|
||||
return;
|
||||
}
|
||||
|
||||
const SaveGameDescription_t *pSave = GetActivePanelSaveDescription();
|
||||
|
||||
// Load the saved game
|
||||
char szCmd[ 256 ];
|
||||
Q_snprintf( szCmd, sizeof( szCmd ), "xload %s", pSave->szShortName );
|
||||
engine->ClientCmd_Unrestricted( szCmd );
|
||||
|
||||
// Ignore all other input while we're open
|
||||
OnClose();
|
||||
}
|
||||
else if ( !Q_stricmp( command, "DeleteGame" ) )
|
||||
{
|
||||
// Must have an active panel to perform this action
|
||||
if ( GetNumPanels() == 0 )
|
||||
{
|
||||
SetControlDisabled( false );
|
||||
return;
|
||||
}
|
||||
|
||||
// Delete the game they've selected
|
||||
const SaveGameDescription_t *pSave = GetActivePanelSaveDescription();
|
||||
DeleteSaveGame( pSave );
|
||||
RemoveActivePanel();
|
||||
}
|
||||
else if ( !Q_stricmp( command, "RefreshSaveGames" ) )
|
||||
{
|
||||
// FIXME: At this point the rug has been pulled out from undereath us!
|
||||
RefreshSaveGames();
|
||||
}
|
||||
else if ( !Q_stricmp( command, "LoadGameCancelled" ) )
|
||||
{
|
||||
SetControlDisabled( false );
|
||||
}
|
||||
else if ( !Q_stricmp( command, "ReleaseModalWindow" ) )
|
||||
{
|
||||
vgui::surface()->RestrictPaintToSinglePanel( NULL );
|
||||
}
|
||||
else if ( !Q_stricmp( command, "DeleteGameCancelled" ) )
|
||||
{
|
||||
SetControlDisabled( false );
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseClass::OnCommand(command);
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: deletes an existing save game
|
||||
//-----------------------------------------------------------------------------
|
||||
void CLoadGameDialogXbox::DeleteSaveGame( const SaveGameDescription_t *pSaveDesc )
|
||||
{
|
||||
if ( pSaveDesc == NULL )
|
||||
{
|
||||
SetControlDisabled( false );
|
||||
return;
|
||||
}
|
||||
|
||||
// If we're deleting our more recent save game, we need to make sure we setup the engine to properly load the last most recent
|
||||
if ( Q_stristr( engine->GetMostRecentSaveGame(), pSaveDesc->szShortName ) )
|
||||
{
|
||||
// We must have at least two active save games that we know about
|
||||
if ( GetNumPanels() > 1 )
|
||||
{
|
||||
// The panels are sorted by how recent they are, so the first element is the most recent
|
||||
const SaveGameDescription_t *pDesc = GetPanelSaveDecription( 0 );
|
||||
if ( pDesc == pSaveDesc )
|
||||
{
|
||||
// If we're deleting our most recent, we need to pick the next most recent
|
||||
pDesc = GetPanelSaveDecription( 1 );
|
||||
}
|
||||
|
||||
// Remember this filename for the next time we need to reload
|
||||
if ( pDesc )
|
||||
{
|
||||
engine->SetMostRecentSaveGame( pDesc->szShortName );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Delete the save game file
|
||||
g_pFullFileSystem->RemoveFile( pSaveDesc->szFileName, "MOD" );
|
||||
|
||||
vgui::surface()->PlaySound( "UI/buttonclick.wav" );
|
||||
|
||||
// Return control
|
||||
SetControlDisabled( false );
|
||||
}
|
Reference in New Issue
Block a user