int main()
{
	//////////
	//Setup///
	//////////
	srand( (unsigned)time(0) );	
	Combat* pCombat = new Combat();	
	Report* pDamageReport = new Report( "damage_report.txt" );				
	pDamageReport->mFile.open( pDamageReport->getFilename(), ios::out | ios::app );
	Report* pInitReport   = new Report( "init_report.txt",   false, 1  );	
	pDamageReport->addToReport( "Damage Report\n\n"         );
	pInitReport->addToReport(   "Initialization Report\n\n" );
	pDamageReport->mFile.close();
	
	COORD newConsoleSize = {82,45};										//Resized the console so a more detailed output
	SMALL_RECT rDisplayArea = {0,0,0,0};								//of damage values, criticals, ability names,
	SetConsoleScreenBufferSize( pCombat->getHandle(), newConsoleSize );	//mana costs, and Damage Over Time ticks
	rDisplayArea.Right = newConsoleSize.X - 1;							//could be seen on screen without scrolling
	SetConsoleWindowInfo( pCombat->getHandle(), true, &rDisplayArea );	
	
	Unit* pPlayer = pCombat->charInit();									
	Boss* pBoss = new Boss();												
	pCombat->units = pCombat->enemyInit( GameFunctions::getNumEnemies() );	
	pInitReport->initReport( pPlayer, pCombat->units );						//Output name, health, mana, armor, abilities and their names and values
																			//for player and units vector of enemies
	pCombat->storyMsg( pPlayer->getPlayerName() );	

	stringstream initString;
	initString << "\nPrinting Story Message. Function call: storyMsg( pPlayer->getPlayerName() )"
	    	   << "\nSetting up Game Loop variables..."
			   << "\nDetermining Combat Order..."
			   << "\nEntering Game Loop...";
	pInitReport->addToReport( initString.str() );

	pInitReport->addToReport( "\nStarting Combat..." );		//Final output, switching to Combat report: pDamageReport
	pCombat->startGameCombat( pPlayer, pBoss, pDamageReport, pCombat->units );
	
	delete pPlayer;
	pPlayer= NULL;
	delete pBoss;
	pBoss = NULL;
	delete pCombat;
	pCombat = NULL;
	delete pDamageReport;
	pDamageReport = NULL;
	delete pInitReport;
	pInitReport = NULL;

	cin.ignore( 1000, '\n' );
	cin.get();
	return 0;
}