#include "TextureManager.h"

TextureManager* TextureManager::instance = 0;

TextureManager& TextureManager::getInstance()
{
	if ( !instance )
	{
		instance = new TextureManager();
		instance->InitialiseInstence();
	}
	return *instance;
}

void TextureManager::destroy()
{
	if ( instance )
	{
		if ( instance->tSpriteSheet )
			delete instance->tSpriteSheet;

		if ( instance->tBackGrounds )
		    delete instance->tBackGrounds;

		if ( instance->tSplashScreen )
			delete instance->tSplashScreen;

		if ( instance->tSpriteSheetAlpha )
			delete instance->tSpriteSheetAlpha;
		
		delete instance;
	}
	instance = 0;
}

void TextureManager::InitialiseInstence()
{
	// Initialise Splash Screen
	tSplashScreen = new sf::Texture;
	NtSplashScreen = "resources/textures/splash-screen.jpg";
	tSplashScreen->loadFromFile(NtSplashScreen);

	// Initialise Background Screens
	tBackGrounds = new sf::Texture;
	NtBackgrndSheet = "resources/textures/backgrnds.jpg";
	tBackGrounds->loadFromFile(NtBackgrndSheet);

	// Initialise Sprite Sheet for Game Objects
	tSpriteSheet = new sf::Texture;
	NtSpriteSheet = "resources/textures/Objects-AlphaNO.jpg";
	tSpriteSheet->loadFromFile((NtSpriteSheet));

	// Initialise Sprite Sheet for Game Objects Requiring a Alpha Channel
	tSpriteSheetAlpha = new sf::Texture;
	NtSpriteSheetAlpha = "resources/textures/Objects-Alpha.png";
	tSpriteSheetAlpha->loadFromFile(NtSpriteSheetAlpha);
}

sf::Texture* TextureManager::rSpriteSheet()
{
	return tSpriteSheet;
}

sf::Texture* TextureManager::rBackGrounds()
{
	return tBackGrounds;
}

sf::Texture* TextureManager::rSplashScreen()
{
	return tSplashScreen;
}

sf::Texture* TextureManager::rSpriteSheetAlpha()
{
	return tSpriteSheetAlpha;
}

TextureManager::~TextureManager()
{

}
