
///////////////////////////////////////////////////////////////////////////////
//
// File   : Asura_ResourceBank.h
// Author : Andy Tate
// Date   : 20-Jun-2008
//
// Copyright (C) 2008 Rebellion, All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
	#pragma once
#endif   // ifdef ASURA_USE_PRAGMA_ONCE

#ifndef __ASURA_RESOURCEBANK_H__
#define __ASURA_RESOURCEBANK_H__

////////////////////////////////////////////////////////////////////////////////
// Include files...
////////////////////////////////////////////////////////////////////////////////

#include "Core/Asura_LinkList.h"
#include "Core/Asura_String.h"
#include "Core/Asura_TextureManagement.h"	// N.B. Removed ASAP.


////////////////////////////////////////////////////////////////////////////////
// Forward class declarations...
////////////////////////////////////////////////////////////////////////////////

class Asura_ResourceSet_Base;


////////////////////////////////////////////////////////////////////////////////
// Class declaration...
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Class        : Asura_ResourceBank
// Author       : Andy Tate
// Date         : 20-Jun-2008
//
// Description  : Class used to store a list of resource-sets used by this
//				  bank of resources.
////////////////////////////////////////////////////////////////////////////////

class Asura_ResourceBank
{
public:
	// Public functions...
	Asura_ResourceBank(void)	: m_uHash(ASURA_HASH_ID_UNSET), m_uTextureResetGroup(static_cast<u_int>(ASURA_TEXTURE_UNUSED))	{}
	~Asura_ResourceBank();

	// Initialisation functions...
	void	Initialise(const Asura_Hash_ID uHash, const char* szName, const u_int uTextureResetGroup);

	// Accessor functions...
	Asura_Hash_ID		GetHash(void) const					{ return(m_uHash); }
	const Asura_String&	GetName(void) const					{ return(m_xName); }
	u_int				GetTextureResetGroup(void) const	{ return(m_uTextureResetGroup); }


protected:
	// Protected variables...

	// Protected functions...


private:
	// Private variables...
	Asura_Hash_ID	m_uHash;					// The hash-ID of this resource-bank.
	Asura_String	m_xName;					// The name of this resource-bank (useful for debugging).
	u_int			m_uTextureResetGroup;		// The texture reset-group to use (N.B. Hopefully texture reset-groups can be removed soon).

	// Private functions...
	Asura_ResourceBank(const Asura_ResourceBank& xOther);

	Asura_ResourceBank&	operator=(const Asura_ResourceBank& xOther);

};   // End of class 'Asura_ResourceBank'.


#endif   // ifndef __ASURA_RESOURCEBANK_H__


/// End of file. ///
