summaryrefslogtreecommitdiff
path: root/utils/tfstats/ui/ui.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/tfstats/ui/ui.cpp
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'utils/tfstats/ui/ui.cpp')
-rw-r--r--utils/tfstats/ui/ui.cpp268
1 files changed, 268 insertions, 0 deletions
diff --git a/utils/tfstats/ui/ui.cpp b/utils/tfstats/ui/ui.cpp
new file mode 100644
index 0000000..e7a15aa
--- /dev/null
+++ b/utils/tfstats/ui/ui.cpp
@@ -0,0 +1,268 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//
+//=============================================================================//
+// UI.cpp : Defines the class behaviors for the application.
+//
+
+#include "stdafx.h"
+#include "propsht.h"
+#include "UI.h"
+#include "UIDlg.h"
+#include "PersistentString.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CUIApp
+
+BEGIN_MESSAGE_MAP(CUIApp, CWinApp)
+ //{{AFX_MSG_MAP(CUIApp)
+ // NOTE - the ClassWizard will add and remove mapping macros here.
+ // DO NOT EDIT what you see in these blocks of generated code!
+ //}}AFX_MSG
+ ON_COMMAND(ID_HELP, CWinApp::OnHelp)
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CUIApp construction
+
+CUIApp::CUIApp()
+{
+ // Place all significant initialization in InitInstance
+ pause=false;
+ pauseSecs=0;
+
+ CPersistentString cps("RunBefore");
+ FirstEverTimeRun=!cps.toBool();
+ cps=true;
+
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// The one and only CUIApp object
+
+CUIApp theApp;
+
+/////////////////////////////////////////////////////////////////////////////
+// CUIApp initialization
+
+BOOL CUIApp::InitInstance()
+{
+ // Standard initialization
+ // If you are not using these features and wish to reduce the size
+ // of your final executable, you should remove from the following
+ // the specific initialization routines you do not need.
+
+#ifdef _AFXDLL
+ Enable3dControls(); // Call this when using MFC in a shared DLL
+#else
+ Enable3dControlsStatic(); // Call this when linking to MFC statically
+#endif
+ persistPlayerStats=false;
+ useSupportDir=true;
+ displayMM2=false;
+
+ CAllControlsSheet dlg("TFStats");
+ m_pMainWnd = &dlg;
+ int nResponse = dlg.DoModal();
+ if (nResponse == IDOK)
+ {
+ // TODO: Place code here to handle when the dialog is
+ // dismissed with OK
+ execTFStats();
+ }
+ else if (nResponse == IDCANCEL)
+ {
+ // TODO: Place code here to handle when the dialog is
+ // dismissed with Cancel
+ }
+
+ // Since the dialog has been closed, return FALSE so that we exit the
+ // application, rather than start the application's message pump.
+ return FALSE;
+}
+
+void reporterror31337(LONG i)
+{
+ LPVOID lpMsgBuf;
+FormatMessage(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ i,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+ (LPTSTR) &lpMsgBuf,
+ 0,
+ NULL
+);
+// Process any inserts in lpMsgBuf.
+// ...
+// Display the string.
+MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
+// Free the buffer.
+LocalFree( lpMsgBuf );
+
+}
+
+
+
+string& addSlash(string& tempbuf)
+{
+ if (tempbuf!="")
+ {
+ int buflen=tempbuf.length();
+ if (tempbuf.at(buflen-1) != '\\')
+ tempbuf+= '\\';
+ }
+ return tempbuf;
+}
+
+
+string& removeSlash(string& tempbuf)
+{
+ int buflen=tempbuf.length();
+ if (buflen > 0 && tempbuf.at(buflen-1) == '\\')
+ tempbuf.erase(tempbuf.length()-1,1);
+ return tempbuf;
+}
+
+string CUIApp::CTFStatsExec::getExecString()
+{
+ string retval("\"");
+ retval+=addSlash(TFStatsdirectory);
+ retval+="TFStatsRT.exe\" \"" ;
+ retval+=fullpath;
+ retval+="\" outputDir=\"";
+ retval+=addSlash(outputdirectory);
+ retval+=removeSlash(outputsubdir);
+ retval+="\" ";
+
+ retval+="ruleDir=\"";
+ retval+=removeSlash(ruledirectory);
+ retval+="\" ";
+
+ retval+=" useSupportDir=";
+ retval+=useSupportDir?"yes":"no";
+ if (useSupportDir)
+ {
+ retval+=" supportDir=\"";
+ retval+=removeSlash(supportdirectory);
+ retval+="\" supportHTTPPath=\"";
+ retval+=removeSlash(supporthttp);
+ retval+="\"";
+ }
+ retval+=" persistPlayerStats=";
+ retval+=persistPlayerStats?"yes":"no";
+ if (persistPlayerStats)
+ {
+ retval+=" playerDir=\"";
+ retval+=removeSlash(playerdirectory);
+ retval+="\" ";
+ retval+=" playerHTTPPath=\"";
+ retval+=removeSlash(playerhttp);
+ retval+="\"";
+ }
+
+ retval+=" eliminateOldPlayers=";
+ retval+=elimOldPlayers?"yes":"no";
+ if (elimOldPlayers)
+ {
+ retval+=" oldPlayerCutoff=";
+ char buf[100];
+ itoa(elimDays,buf,10);
+ retval+=buf;
+ retval+=" ";
+ }
+
+
+
+ retval+=" displayMM2=";
+ retval+=displayMM2?"yes":"no";
+ retval+=" displayStartUpInfo=";
+ retval+=displayStartupInfo?"yes":"no";
+
+
+ return retval;
+}
+
+
+#include <list>
+void CUIApp::execTFStats()
+{
+ std::list<CUIApp::CTFStatsExec>::iterator it;
+
+ AllocConsole();
+ for (it=m_pLogs->begin();it!=m_pLogs->end();++it)
+ {
+ CUIApp::CTFStatsExec& c=*it;
+ it->TFStatsdirectory=m_TFStatsDir;
+ it->outputdirectory=m_OutDir;
+ it->ruledirectory=m_RuleDir;
+ it->supportdirectory=m_SupportDir;
+ it->playerdirectory=m_PlayerDir;
+ it->displayMM2=displayMM2;
+ it->persistPlayerStats=persistPlayerStats;
+ it->useSupportDir=useSupportDir;
+ it->supporthttp=m_SupportHTTPPath;
+ it->playerhttp=m_PlayerHTTPPath;
+ it->displayStartupInfo=displayStartupInfo;
+ it->elimOldPlayers=elimOldPlayers;
+ it->elimDays=elimDays;
+
+
+ string exec=it->getExecString();
+ //create process takes a non-const char buffer?
+ char createProcBuf[4000];
+ memset(createProcBuf,0,4000);
+ exec.copy(createProcBuf,4000);
+
+ PROCESS_INFORMATION pi;
+ STARTUPINFO si;
+ memset(&si,0,sizeof(si));
+ si.cb=sizeof(si);
+ char buffer[500];
+ sprintf(buffer,"TFStats is creating a Match report for %s",it->inputfile.c_str());
+ si.lpTitle=buffer;
+ SetConsoleTitle(buffer);
+
+ BOOL result=CreateProcess(NULL,createProcBuf,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
+
+
+ if (pi.hProcess && result)
+ {
+ //wait for this one to finish before running next one!
+ DWORD exitCode=STILL_ACTIVE;
+ do
+ {
+ GetExitCodeProcess(pi.hProcess,&exitCode);
+
+ //check every 10th of a second
+ if (exitCode==STILL_ACTIVE)
+ Sleep(100);
+
+ if (pause)
+ Sleep(pauseSecs*1000);
+
+ } while (exitCode==STILL_ACTIVE);
+ }
+ else
+ {
+ string badmojo("***ERROR: Could not run \"");
+ badmojo+=addSlash(it->TFStatsdirectory);
+ badmojo+="TFStatsRT.exe\"\n\n";
+ HANDLE hConsOutput=GetStdHandle(STD_OUTPUT_HANDLE);
+ WriteConsole(hConsOutput,badmojo.c_str(),badmojo.length(),NULL,0);
+ Sleep(4000);
+ }
+ }
+ FreeConsole();
+}