// This file is part of ThriceBall.
//
// Author: Kai Hillenbrand (AnTeevY)
// © Copyright, 2009 by Kai Hillenbrand, http://www.anteevy.de

// --------------------------------------------------

#define NOMINMAX

// extern includes
#include <windows.h>

// intern includes
#include "renderer.h"
#include "audio.h"

// --------------------------------------------------

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
#else
int main(int argc, char **argv)
#endif
{
	// create renderer and audio instances
	CRenderer *renderer = new CRenderer();
	CAudio *audio = new CAudio();

	// make them happy friends
	renderer->setAudio(audio);
	audio->setRenderer(renderer);

	try {renderer->go();}
	catch(Exception& e)
    {
		#if OGRE_PLATFORM == PLATFORM_WIN32 || OGRE_PLATFORM == OGRE_PLATFORM_WIN32
        MessageBoxA(NULL, e.getFullDescription().c_str(), "An exception has occurred!", 
			MB_OK | MB_ICONERROR | MB_TASKMODAL);
		#else
        fprintf(stderr, "An exception has occurred: %s\n", e.getFullDescription().c_str());
		#endif
    }

	return 0;
}