//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007-2008)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: type.hpp
//      Краткое описание: type from file
//

#ifndef DSE_RS_TEXT_TYPE_HPP
#define DSE_RS_TEXT_TYPE_HPP

#include <Darkstar/common.hpp>
#include <Darkstar/math.hpp>
#include <Darkstar/Resource System/Textures/baseTexture.hpp>

namespace rs
{
	struct TypeChar
	{
		unsigned int ref;
		unsigned int sizex, sizey;
		unsigned int tx, ty;
		unsigned int aw;
	};

	struct TypeTexture
	{
		unsigned int ref;
		shared_ptr<BaseTexture> texture;
	};

	struct RectTextCoord
	{
		math::Vect2 lu_corner;
		math::Vect2 ld_corner;
		math::Vect2 ru_corner;
		math::Vect2 rd_corner;

		unsigned int aw;
		unsigned int height;
		unsigned int width;
	};

	struct TextureChar
	{
		unsigned int texture_ref;
		RectTextCoord tex_coord;
	};

	class Type
	{
	private:
		std::vector<TypeTexture> type_textures;

		std::string name;

		std::map<char, TypeChar> chars;
	public:
		Type();
		~Type();

		bool create(const std::string& filename);

		unsigned int getTypeTexturesNumber() const;
		const shared_ptr<BaseTexture>& getTypeTextureByRef(const unsigned int ref) const;

		const std::string& getName() const;

		TextureChar getChar(const char ch) const;
	};
};

#endif