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.
237 lines
5.1 KiB
237 lines
5.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
//============================================================================= |
|
|
|
|
|
#include <windows.h> |
|
|
|
// Valve includes |
|
#include "itemtest/itemtest.h" |
|
#include "p4lib/ip4.h" |
|
#include "tier0/icommandline.h" |
|
|
|
|
|
// Local includes |
|
#include "itemtestapp.h" |
|
#include "runexe.h" |
|
|
|
|
|
// Last include |
|
#include <tier0/memdbgon.h> |
|
|
|
|
|
//============================================================================= |
|
// |
|
//============================================================================= |
|
class CItemTestConApp : public CItemTestApp |
|
{ |
|
typedef CItemTestApp BaseClass; |
|
|
|
public: |
|
// Methods of IApplication |
|
virtual bool Create(); |
|
virtual int Main(); |
|
|
|
protected: |
|
static bool DoSteamId(); |
|
|
|
static bool DoHelp(); |
|
}; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
DEFINE_CONSOLE_STEAM_APPLICATION_OBJECT( CItemTestConApp ); |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
bool CItemTestConApp::Create() |
|
{ |
|
AppSystemInfo_t appSystems[] = |
|
{ |
|
{ "", "" } // Required to terminate the list |
|
}; |
|
|
|
if ( FindParam( kDev ) && !FindParam( kNoP4 ) ) |
|
{ |
|
AppModule_t p4Module = LoadModule( "p4lib.dll" ); |
|
AddSystem( p4Module, P4_INTERFACE_VERSION ); |
|
} |
|
|
|
return AddSystems( appSystems ); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
bool View( CAsset &asset ) |
|
{ |
|
CUtlString sBinDir; |
|
if ( !CItemUpload::GetBinDirectory( sBinDir ) ) |
|
{ |
|
Warning( "Cannot determine bin directory\n" ); |
|
return false; |
|
} |
|
|
|
CSmartPtr< CTargetMDL > pTargetMDL = asset.GetTargetMDL(); |
|
if ( !pTargetMDL.IsValid() ) |
|
{ |
|
Warning( "No target MDL\n" ); |
|
return false; |
|
} |
|
|
|
CUtlString sMdlPath; |
|
if ( !pTargetMDL->GetOutputPath( sMdlPath ) ) |
|
{ |
|
Warning( "Cannot determine path to MDL\n" ); |
|
return false; |
|
} |
|
|
|
CFmtStrMax sHlmvCmd; |
|
|
|
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 |
|
{ |
|
Warning( "Cannot determine VPROJECT (gamedir)\n" ); |
|
return false; |
|
} |
|
} |
|
|
|
char szBinLaunchDir[ MAX_PATH ]; |
|
V_ExtractFilePath( sBinDir.String(), szBinLaunchDir, ARRAYSIZE( szBinLaunchDir ) ); |
|
|
|
return CItemUpload::RunCommandLine( sHlmvCmd.String(), szBinLaunchDir, false ); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
bool Explore( CAsset &asset ) |
|
{ |
|
CUtlString sBinDir; |
|
if ( !CItemUpload::GetBinDirectory( sBinDir ) ) |
|
{ |
|
Warning( "Cannot determine bin directory\n" ); |
|
return false; |
|
} |
|
|
|
CUtlString sDir; |
|
asset.GetAbsoluteDir( sDir, NULL, &asset ); |
|
|
|
char szBuf[ MAX_PATH ]; |
|
V_FixupPathName( szBuf, ARRAYSIZE( szBuf ), sDir.Get() ); |
|
|
|
char szBinLaunchDir[ MAX_PATH ]; |
|
V_ExtractFilePath( sBinDir.String(), szBinLaunchDir, ARRAYSIZE( szBinLaunchDir ) ); |
|
|
|
ShellExecute( NULL, "explore", NULL, NULL, szBuf, SW_SHOWNORMAL ); |
|
|
|
return true; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
int CItemTestConApp::Main() |
|
{ |
|
if ( DoHelp() ) |
|
return 0; |
|
|
|
if ( DoSteamId() ) |
|
return 0; |
|
|
|
CItemUpload::InitManifest(); |
|
|
|
// If launched with -batch stay in console app and run from parameters specified on the command line only |
|
|
|
const bool bListMats = FindParam( kListMats ); |
|
|
|
if ( bListMats || FindParam( kBatch ) ) |
|
{ |
|
CAssetTF assetTF; |
|
if ( !ProcessCommandLine( &assetTF, bListMats ) ) |
|
return 1; |
|
|
|
if ( !bListMats ) |
|
{ |
|
if ( !assetTF.Compile() ) |
|
{ |
|
Warning( "Error! Compile Failed\n" ); |
|
return 1; |
|
} |
|
|
|
Msg( "Compile OK!\n" ); |
|
|
|
if ( FindParam( kView ) ) |
|
{ |
|
View( assetTF ); |
|
} |
|
|
|
if ( FindParam( kExplore ) ) |
|
{ |
|
Explore( assetTF ); |
|
} |
|
} |
|
} |
|
else |
|
{ |
|
// If launched without -batch then launch the .exe with the same name in the same directory as this .com executable |
|
RunExe(); |
|
} |
|
|
|
return 0; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
bool CItemTestConApp::DoHelp() |
|
{ |
|
if ( !FindParam( kHelp ) ) |
|
return false; |
|
|
|
PrintHelp(); |
|
|
|
return true; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
bool CItemTestConApp::DoSteamId() |
|
{ |
|
if ( !FindParam( kSteamId ) ) |
|
return false; |
|
|
|
CUtlString sSteamId; |
|
|
|
if ( CItemUpload::GetSteamId( sSteamId ) ) |
|
{ |
|
Msg( "%s\n", sSteamId.String() ); |
|
} |
|
else |
|
{ |
|
Warning( "Error! Couldn't determine SteamId\n" ); |
|
} |
|
|
|
return true; |
|
} |
|
|
|
|