Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================
#include "ModWizard_Intro.h"
#include <vgui_controls/WizardPanel.h>
#include <vgui/ILocalize.h>
#include "ModWizard_GetModInfo.h"
#include "filesystem_tools.h"
#include "SourceAppInfo.h"
#include "steam/steam_api.h"
using namespace vgui;
extern CSteamAPIContext *steamapicontext;
extern char g_engineDir[50];
//-----------------------------------------------------------------------------
// Purpose: Determines whether the specified game is subscribed to
// Output : Returns true on success, false on failure.
//-----------------------------------------------------------------------------
bool IsGameSubscribed( int nSteamAppId ) { bool bIsSubscribed = false;
if ( g_pFullFileSystem != NULL && g_pFullFileSystem->IsSteam() && steamapicontext->SteamApps() ) { // See if specified app is installed
bIsSubscribed = steamapicontext->SteamApps()->BIsSubscribedApp( nSteamAppId ); }
return bIsSubscribed; }
CModWizardSubPanel_Intro::CModWizardSubPanel_Intro( Panel *parent, const char *panelName ) : BaseClass( parent, panelName ) { m_pModHL2Button = new RadioButton( this, "ModHL2Button", "" ); m_pModHL2MPButton = new RadioButton( this, "ModHL2MPButton", "" ); m_pModFromScratchButton = new RadioButton( this, "ModFromScratchButton", "" ); m_pSourceCodeOnlyButton = new RadioButton( this, "ModSourceCodeOnlyButton", "" );
LoadControlSettings( "ModWizardSubPanel_Intro.res");
// We presently don't support SDK scratch configuration using the "orangebox" codebase
if ( !V_strcmp( g_engineDir, "orangebox" ) ) { m_pModFromScratchButton->SetVisible( false ); }
//
// Enable and select the appropriate mod types
//
if ( !V_strcmp( g_engineDir, "orangebox" ) || !V_strcmp( g_engineDir, "source2007" ) ) m_pModHL2Button->SetEnabled( IsGameSubscribed( GetAppSteamAppId( k_App_HL2_EP2 ) ) ); else { // do it without nesting.
if ( ( IsGameSubscribed( GetAppSteamAppId( k_App_HL2 ) ) || IsGameSubscribed( GetAppSteamAppId( k_App_HL2_EP1 ) ) ) ) m_pModHL2Button->SetEnabled( true ); else m_pModHL2Button->SetEnabled( false ); }
m_pModHL2MPButton->SetEnabled( IsGameSubscribed( GetAppSteamAppId( k_App_HL2MP ) ) );
// De-select all
m_pModHL2Button->SetSelected( false ); m_pModHL2MPButton->SetSelected( false ); m_pModFromScratchButton->SetSelected( false );
// Select the most common possible option
if ( m_pModHL2Button->IsEnabled() ) { m_pModHL2Button->SetSelected( true ); } else if ( m_pModHL2MPButton->IsEnabled() ) { m_pModHL2Button->SetSelected( true ); } else if ( m_pModFromScratchButton->IsVisible() ) { m_pModFromScratchButton->SetSelected( true ); } }
WizardSubPanel *CModWizardSubPanel_Intro::GetNextSubPanel() { return dynamic_cast<WizardSubPanel *>(GetWizardPanel()->FindChildByName("CModWizardSubPanel_GetModInfo")); }
void CModWizardSubPanel_Intro::PerformLayout() { BaseClass::PerformLayout();
// Update the scratch button text - in orange box, the text is different, but it's the same button.
if ( !V_strcmp( g_engineDir, "source2007" ) ) SetDialogVariable( "ScratchLabel", g_pVGuiLocalize->Find( "#StartFromTemplate" ) ); else SetDialogVariable( "ScratchLabel", g_pVGuiLocalize->Find( "#StartFromScratch" ) );
GetWizardPanel()->SetFinishButtonEnabled(false); }
void CModWizardSubPanel_Intro::OnDisplayAsNext() { GetWizardPanel()->SetTitle( "#ModWizard_Intro_Title", true ); }
ModType_t CModWizardSubPanel_Intro::GetModType() { if ( m_pModHL2Button && m_pModHL2Button->IsSelected() ) { return ModType_HL2; } else if ( m_pModHL2MPButton && m_pModHL2MPButton->IsSelected() ) { return ModType_HL2_Multiplayer; } else if ( m_pSourceCodeOnlyButton && m_pSourceCodeOnlyButton->IsSelected() ) { return ModType_SourceCodeOnly; } else { return ModType_FromScratch; } }
bool CModWizardSubPanel_Intro::OnNextButton() { // If we're only installing the source code, then we don't care about the game directory.
bool bShowModName = true; if ( GetModType() == ModType_SourceCodeOnly ) bShowModName = false;
CModWizardSubPanel_GetModInfo *pNextPanel = dynamic_cast<CModWizardSubPanel_GetModInfo*>(GetWizardPanel()->FindChildByName("CModWizardSubPanel_GetModInfo")); if ( pNextPanel ) { if ( pNextPanel->m_pModName ) pNextPanel->m_pModName->SetVisible( bShowModName ); if ( pNextPanel->m_pModNameInfoLabel ) pNextPanel->m_pModNameInfoLabel->SetVisible( bShowModName ); pNextPanel->m_ModType = GetModType(); }
return true; }
|