summaryrefslogtreecommitdiff
path: root/utils/itemtest_controls/finalsubpanel.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /utils/itemtest_controls/finalsubpanel.cpp
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'utils/itemtest_controls/finalsubpanel.cpp')
-rw-r--r--utils/itemtest_controls/finalsubpanel.cpp410
1 files changed, 410 insertions, 0 deletions
diff --git a/utils/itemtest_controls/finalsubpanel.cpp b/utils/itemtest_controls/finalsubpanel.cpp
new file mode 100644
index 0000000..4828308
--- /dev/null
+++ b/utils/itemtest_controls/finalsubpanel.cpp
@@ -0,0 +1,410 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+//=============================================================================
+
+
+// Valve includes
+#include "itemtest/itemtest_controls.h"
+#include "vgui_controls/ComboBox.h"
+#include "vgui_controls/MenuItem.h"
+#include "vgui_controls/PanelListPanel.h"
+#include "vgui/ISystem.h"
+#include "vgui_controls/MessageBox.h"
+#include "tier1/fmtstr.h"
+
+
+// Last include
+#include <tier0/memdbgon.h>
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+CFinalSubPanel::CFinalSubPanel( vgui::Panel *pParent, const char *pszName, const char *pszNextName )
+: BaseClass( pParent, pszName, pszNextName )
+{
+ CItemUploadWizard *pItemUploadWizard = dynamic_cast< CItemUploadWizard * >( GetWizardPanel() );
+ if ( !pItemUploadWizard )
+ return;
+
+ {
+ m_pHLMVButton = new vgui::Button( this, "hlmvButton", "#hlmvButton", this, "Hlmv" );
+ m_pHLMVLabel = new vgui::Label( this, "hlmvLabel", "#hlmvLabel" );
+
+ CFmtStrMax sCmd;
+ if ( GetHlmvCmd( sCmd ) )
+ {
+ m_pHLMVLabel->SetText( sCmd.Access() );
+ }
+
+ m_pPanelListPanel->AddItem( m_pHLMVButton, m_pHLMVLabel );
+ m_pHLMVButton->AddActionSignalTarget( this );
+ }
+
+ {
+ m_pExploreMaterialContentButton = new vgui::Button( this, "exploreMaterialContentButton", "#exploreMaterialContentButton", this, "ExploreMaterialContent" );
+ m_pExploreMaterialContentLabel = new vgui::Label( this, "exploreMaterialContentLabel", "#exploreMaterialContentLabel" );
+
+ m_pPanelListPanel->AddItem( m_pExploreMaterialContentButton, m_pExploreMaterialContentLabel );
+ }
+
+ {
+ m_pExploreModelContentButton = new vgui::Button( this, "exploreModelContentButton", "#exploreModelContentButton", this, "ExploreModelContent" );
+ m_pExploreModelContentLabel = new vgui::Label( this, "exploreModelContentLabel", "#exploreModelContentLabel" );
+
+ m_pPanelListPanel->AddItem( m_pExploreModelContentButton, m_pExploreModelContentLabel );
+ }
+
+ {
+ m_pExploreMaterialGameButton = new vgui::Button( this, "exploreMaterialGameButton", "#exploreMaterialGameButton", this, "ExploreMaterialGame" );
+ m_pExploreMaterialGameLabel = new vgui::Label( this, "exploreMaterialGameLabel", "#exploreMaterialGameLabel" );
+
+ m_pPanelListPanel->AddItem( m_pExploreMaterialGameButton, m_pExploreMaterialGameLabel );
+ }
+
+ {
+ m_pExploreModelGameButton = new vgui::Button( this, "exploreModelGameButton", "#exploreModelGameButton", this, "ExploreModelGame" );
+ m_pExploreModelGameLabel = new vgui::Label( this, "exploreModelGameLabel", "#exploreModelGameLabel" );
+
+ m_pPanelListPanel->AddItem( m_pExploreModelGameButton, m_pExploreModelGameLabel );
+ }
+
+ UpdateStatus();
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CFinalSubPanel::PerformLayout()
+{
+ BaseClass::PerformLayout();
+
+ m_pPanelListPanel->SetFirstColumnWidth( 256 );
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CFinalSubPanel::UpdateGUI()
+{
+ UpdateStatus();
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CFinalSubPanel::OnCommand( const char *command )
+{
+ if ( !V_strcmp( command, "Gather" ) )
+ {
+ OnGather();
+ }
+ else if ( !V_strcmp( command, "StudioMDL" ) )
+ {
+ OnStudioMDL();
+ }
+ else if ( !V_strcmp( command, "Zip" ) )
+ {
+ OnZip();
+ }
+ else if ( !V_strcmp( command, "Hlmv" ) )
+ {
+ OnHlmv();
+ }
+ else if ( !V_strcmp( command, "ExploreMaterialContent" ) )
+ {
+ OnExplore( true, true );
+ }
+ else if ( !V_strcmp( command, "ExploreModelContent" ) )
+ {
+ OnExplore( false, true );
+ }
+ else if ( !V_strcmp( command, "ExploreMaterialGame" ) )
+ {
+ OnExplore( true, false );
+ }
+ else if ( !V_strcmp( command, "ExploreModelGame" ) )
+ {
+ OnExplore( false, false );
+ }
+ else
+ {
+ BaseClass::OnCommand( command );
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+bool CFinalSubPanel::UpdateStatus()
+{
+ CItemUploadWizard *pItemUploadWizard = dynamic_cast< CItemUploadWizard * >( GetWizardPanel() );
+ if ( !pItemUploadWizard )
+ return false;
+
+ SetStatus( true, "", NULL, true );
+
+ CAsset &asset = pItemUploadWizard->Asset();
+
+ {
+ char szBuf[ MAX_PATH ];
+
+ CUtlString sDir;
+
+ asset.GetAbsoluteDir( sDir, "materialsrc", true );
+ V_FixupPathName( szBuf, ARRAYSIZE( szBuf ), sDir.Get() );
+ m_pExploreMaterialContentLabel->SetText( szBuf );
+
+ asset.GetAbsoluteDir( sDir, "materials", false );
+ V_FixupPathName( szBuf, ARRAYSIZE( szBuf ), sDir.Get() );
+ m_pExploreMaterialGameLabel->SetText( szBuf );
+
+ asset.GetAbsoluteDir( sDir, NULL, true );
+ V_FixupPathName( szBuf, ARRAYSIZE( szBuf ), sDir.Get() );
+ m_pExploreModelContentLabel->SetText( szBuf );
+
+ asset.GetAbsoluteDir( sDir, NULL, false );
+ V_FixupPathName( szBuf, ARRAYSIZE( szBuf ), sDir.Get() );
+ m_pExploreModelGameLabel->SetText( szBuf );
+
+ CFmtStrMax sCmd;
+ if ( GetHlmvCmd( sCmd ) )
+ {
+ m_pHLMVLabel->SetText( sCmd.Access() );
+ }
+ }
+
+ return BaseClass::UpdateStatus();
+
+ return true;
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CFinalSubPanel::OnGather()
+{
+ CItemUploadWizard *pItemUploadWizard = dynamic_cast< CItemUploadWizard * >( GetWizardPanel() );
+ if ( !pItemUploadWizard )
+ {
+// m_pGatherLabel->SetText( "Gather Failed" );
+ return;
+ }
+
+// m_pGatherLabel->SetText( "OnGather" );
+
+ m_pExploreMaterialContentButton->SetEnabled( true );
+ m_pExploreModelContentButton->SetEnabled( true );
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CFinalSubPanel::OnStudioMDL()
+{
+ CItemUploadWizard *pItemUploadWizard = dynamic_cast< CItemUploadWizard * >( GetWizardPanel() );
+ if ( !pItemUploadWizard )
+ {
+// m_pStudioMDLLabel->SetText( "StudioMDL Failed" );
+ return;
+ }
+
+ OnGather();
+
+// m_pStudioMDLLabel->SetText( "OnStudioMDL" );
+}
+
+
+//-----------------------------------------------------------------------------
+//
+// The idea is that there could be three steps...
+// 1. Gather data from user specified sources into properly named & organized content, make VMT's & QC
+// 2. Run StudioMDL on the gathered content
+// 3. Zip the results
+//
+// Right now all three steps are combined
+//-----------------------------------------------------------------------------
+void CFinalSubPanel::OnZip()
+{
+ CItemUploadWizard *pItemUploadWizard = dynamic_cast< CItemUploadWizard * >( GetWizardPanel() );
+
+ CAsset &asset = pItemUploadWizard->Asset();
+ const bool bOk = asset.Compile();
+
+ vgui::MessageBox *pMsgDialog = NULL;
+
+ if ( bOk )
+ {
+ pMsgDialog = new vgui::MessageBox( "Compile Ok", "Compile Ok", this );
+ }
+ else
+ {
+ pMsgDialog = new vgui::MessageBox( "Compile Failed", "Compile Failed", this );
+ }
+
+ pMsgDialog->SetOKButtonVisible( true );
+ pMsgDialog->SetOKButtonText( "Quit ItemTest" );
+ pMsgDialog->SetCommand( new KeyValues( "QuitApp" ) );
+
+ pMsgDialog->SetCancelButtonVisible( true );
+ pMsgDialog->SetCancelButtonText( "Dismiss And Continue" );
+
+ pMsgDialog->AddActionSignalTarget( this );
+
+ pMsgDialog->DoModal();
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CFinalSubPanel::OnHlmv()
+{
+ CUtlString sBinDir;
+ if ( !CItemUpload::GetBinDirectory( sBinDir ) )
+ {
+ m_pHLMVLabel->SetText( "Cannot determine bin directory" );
+ return;
+ }
+
+ char szBinLaunchDir[ MAX_PATH ];
+ V_ExtractFilePath( sBinDir.String(), szBinLaunchDir, ARRAYSIZE( szBinLaunchDir ) );
+
+ CFmtStrMax sCmd;
+ if ( !GetHlmvCmd( sCmd ) )
+ return;
+
+ if ( CItemUpload::RunCommandLine( sCmd.Access(), szBinLaunchDir, false ) )
+ {
+ m_pHLMVLabel->SetText( sCmd.Access() );
+ }
+ else
+ {
+ m_pHLMVLabel->SetText( "Hlmv launch failed" );
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CFinalSubPanel::OnExplore( bool bMaterial, bool bContent )
+{
+ vgui::Label *pLabel = NULL;
+ if ( bMaterial )
+ {
+ if ( bContent )
+ {
+ pLabel = m_pExploreMaterialContentLabel;
+ }
+ else
+ {
+ pLabel = m_pExploreMaterialGameLabel;
+ }
+ }
+ else
+ {
+ if ( bContent )
+ {
+ pLabel = m_pExploreModelContentLabel;
+ }
+ else
+ {
+ pLabel = m_pExploreModelGameLabel;
+ }
+ }
+
+ CItemUploadWizard *pItemUploadWizard = dynamic_cast< CItemUploadWizard * >( GetWizardPanel() );
+ if ( !pItemUploadWizard )
+ {
+ pLabel->SetText( "Explore game failed" );
+ return;
+ }
+
+ CAsset &asset = pItemUploadWizard->Asset();
+ CUtlString sDir;
+ const char *pszPrefix = bMaterial ? ( bContent ? "materialsrc" : "materials" ) : NULL;
+ asset.GetAbsoluteDir( sDir, pszPrefix, bContent );
+
+ char szBuf[ MAX_PATH ];
+ V_FixupPathName( szBuf, ARRAYSIZE( szBuf ), sDir.Get() );
+ vgui::system()->ShellExecute( "open", szBuf );
+
+ pLabel->SetText( szBuf );
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CFinalSubPanel::OnQuitApp()
+{
+ CItemUploadWizard *pItemUploadWizard = dynamic_cast< CItemUploadWizard * >( GetWizardPanel() );
+ if ( !pItemUploadWizard )
+ return;
+
+ pItemUploadWizard->Close();
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+bool CFinalSubPanel::GetHlmvCmd( CFmtStrMax &sHlmvCmd )
+{
+ CItemUploadWizard *pItemUploadWizard = dynamic_cast< CItemUploadWizard * >( GetWizardPanel() );
+ if ( !pItemUploadWizard )
+ {
+ m_pHLMVLabel->SetText( "Hlmv Failed" );
+ return false;
+ }
+
+ CUtlString sBinDir;
+ if ( !CItemUpload::GetBinDirectory( sBinDir ) )
+ {
+ m_pHLMVLabel->SetText( "Cannot determine bin directory" );
+ return false;
+ }
+
+ CAsset &asset = pItemUploadWizard->Asset();
+ CSmartPtr< CTargetMDL > pTargetMDL = asset.GetTargetMDL();
+ if ( !pTargetMDL.IsValid() )
+ {
+ m_pHLMVLabel->SetText( "No TargetMDL" );
+ return false;
+ }
+
+ CUtlString sMdlPath;
+ if ( !pTargetMDL->GetOutputPath( sMdlPath ) )
+ {
+ m_pHLMVLabel->SetText( "Cannot determine path to MDL" );
+ return false;
+ }
+
+
+ if ( CItemUpload::GetDevMode() )
+ {
+ sHlmvCmd.sprintf( "\"%s\\hlmv.exe\" \"%s\"", sBinDir.Get(), sMdlPath.Get() );
+ }
+ else
+ {
+ CUtlString sVProjectDir;
+ if ( CItemUpload::GetVProjectDir( sVProjectDir ) )
+ {
+ sHlmvCmd.sprintf( "\"%s\\hlmv.exe\" -allowdebug -game \"%s\" -nop4 \"%s\"", sBinDir.Get(), sVProjectDir.Get(), sMdlPath.Get() );
+ }
+ else
+ {
+ m_pHLMVLabel->SetText( "Cannot determine VPROJECT (gamedir)" );
+ return false;
+ }
+ }
+
+ return true;
+} \ No newline at end of file