view LightClone/Source/ResourceManager.h @ 58:5e382dee4c70

Rename CodePanel/CodeSlot to ProgramPanel/ActionSlot
author koryspansel <koryspansel@bendbroadband.com>
date Fri, 30 Sep 2011 22:39:08 -0700
parents 5656c8e382fc
children 44dcff5abf12
line wrap: on
line source

/*
 * ResourceManager
 */

#ifndef __RESOURCEMANAGER_H__
#define __RESOURCEMANAGER_H__

#include "Core.h"
#include "GraphicsDevice.h"
#include "FixedString.h"
#include "HashMap.h"

/*
 * ResourceType
 */
enum
{
	ResourceType_Texture,
	ResourceType_Effect,
	ResourceType_Font,
	ResourceType_VertexBuffer,
	ResourceType_IndexBuffer,
};

/*
 * ResourcePath
 *	TODO: Wasting memory
 */
typedef FixedString<> ResourcePath;

/*
 * ResourceManager
 */
class ResourceManager
{
	/*
	 * TextureCache
	 */
	typedef HashMap<ResourcePath, IDirect3DTexture9*, ResourcePath::Hash> TextureCache;

	/*
	 * EffectCache
	 */
	typedef HashMap<ResourcePath, ID3DXEffect*, ResourcePath::Hash> EffectCache;

	/*
	 * FontCache
	 */
	typedef HashMap<ResourcePath, ID3DXFont*, ResourcePath::Hash> FontCache;

	/*
	 * pGraphicsDevice
	 */
	GraphicsDevice* pGraphicsDevice;

	/*
	 * kTextureCache
	 */
	TextureCache kTextureCache;

	/*
	 * kEffectCache
	 */
	EffectCache kEffectCache;

	/*
	 * kFontCache
	 */
	FontCache kFontCache;

public:

	/*
	 * ResourceManager
	 */
	ResourceManager();

	/*
	 * Initialize
	 */
	ErrorCode Initialize(GraphicsDevice* pDevice);

	/* 
	 * Terminate
	 */
	void Terminate();

	/*
	 * CreateTextureFromFile
	 */
	ErrorCode CreateTextureFromFile(const char* pName, IDirect3DTexture9** pTexture);

	/*
	 * CreateEffectFromFile
	 */
	ErrorCode CreateEffectFromFile(const char* pName, ID3DXEffect** pEffect);

	/*
	 * CreateFontFromName
	 */
	ErrorCode CreateFontFromName(const char* pName, uint32 nSize, uint32 nWeight, ID3DXFont** pFont);

	/*
	 * CreateVertexBuffer
	 */
	ErrorCode CreateVertexBuffer(uint32 nSize, uint32 nUsage, uint32 nPool, IDirect3DVertexBuffer9** pBuffer);
};

#endif //__RESOURCEMANAGER_H__