// TCF2Hint.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "TCF2Hint.h"
#include "TCF2HintDlg.h"
#include <Stuff\Stuff.hpp>
#include <DLLPlatform\DLLPlatform.hpp>


void __stdcall InitializeGameEngine()
{
	Stuff::InitializeClasses();
}

/////////////////////////////////////////////////////////////////////////////
// CTCF2HintApp

BEGIN_MESSAGE_MAP(CTCF2HintApp, CWinApp)
	//{{AFX_MSG_MAP(CTCF2HintApp)
		// 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()

/////////////////////////////////////////////////////////////////////////////
// CTCF2HintApp construction

CTCF2HintApp::CTCF2HintApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CTCF2HintApp object

CTCF2HintApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CTCF2HintApp initialization

BOOL CTCF2HintApp::InitInstance()
{

	InitGameOS(NULL, NULL, "blabla");
	InitializeGameEngine();
	AfxEnableControlContainer();

	// 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
	

	
	CTCF2HintDlg dlg;
	CString cmdline=m_lpCmdLine;
	if(cmdline!="")
	{
	WIN32_FIND_DATA file_data;
	HANDLE mission_search = FindFirstFile(cmdline , &file_data);
	CString path;
	int pos;
	pos=cmdline.ReverseFind('\\');
	if(pos>=0)
	{
	path=cmdline.Left(pos+1);
	}
	else
	path="";

	CString fname;
	if(mission_search != INVALID_HANDLE_VALUE)
	{
		do
		{
			fname=path+file_data.cFileName;
			fname=fname.Left(fname.ReverseFind('.'));
			dlg.Convert(fname);
		}
		while (FindNextFile(mission_search,&file_data));
	}	



	}
else
{
	m_pMainWnd = &dlg;
	int nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
	}
	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 __stdcall TerminateGameEngine()
{
	Stuff::TerminateClasses();
}


void __stdcall GetGameOSEnvironment(char* CommandLine)
{

//	Environment.UpdateRenderers			= UpdateDisplay;
//	Environment.DoGameLogic				= DoGameLogic;
	Environment.InitializeGameEngine	= InitializeGameEngine;
	Environment.TerminateGameEngine		= TerminateGameEngine;


}


int CTCF2HintApp::ExitInstance() 
{
		ExitGameOS();	
	return CWinApp::ExitInstance();
}
