#ifndef _CTROOPERENGINECORE_HPP_
#define _CTROOPERENGINECORE_HPP_

/*** SDL Header Files ***/
#include <SDL.h>  

/*** DLL Header File ***/
#include "dllExport.h"

#define __TROOPERENGINE__VERSION "1.0.0"

namespace TrooperEngineCore {
	/* Singleton */
	class EXPORT_FROM_MYDLL cTrooperEngineCore
	{
	private:
		cTrooperEngineCore();
		~cTrooperEngineCore();

	public:			
		///Functions
		static const char* Version();
		static cTrooperEngineCore& Inst();
		static void Delete();

		/* Initiates the video */
		const bool VideoInit();
		/* Initiates the audio */
		const bool AudioInit();
		/* Initiates the input (Keyboard Mouse Joystick)*/
		const bool InputInit();
		/* Initiates the joystick */
		const bool JoystickInit();
		/* Initiates the timer */
		const bool TimerInit();
		/* Initiates the text */
		const bool TextTypeInit();
		/* Initiates the event */
		const bool EventInit();

		/* Print lib versions */
		void PrintSDLVersion() const;

		/* Cleans up */
		void CleanUp();
			
		///Gets
		/* Gets returns true if Video was initiated other wise it returns false */
		const bool getVideo() const;
		/* Gets returns true if Audio was initiated other wise it returns false */
		const bool getAudio() const;
		/* Gets returns true if Input was initiated other wise it returns false */
		const bool getInput() const;
		/* Gets returns true if Joystick was initiated other wise it returns false */
		const bool getJoystick() const;
		/* Gets returns true if Timer was initiated other wise it returns false */
		const bool getTimer() const;
		/* Gets returns true if Text was initiated other wise it returns false */
		const bool getText() const;
		/* Gets returns true if Event was initiated other wise it returns false */
		const bool getEvent() const;
					
	private:
		///Variables
		static cTrooperEngineCore* sp_inst;// = nullptr
	};/// END CLASS DEFINITION cTrooperEngineCore
}/// END NAMESPACE DEFINITION TroopperENgineCore
#endif/// END IFNDEF _CTROOPERENGINECORE_HPP_
