///////////////////////////////////////////////////////////////////////////////
//  CHEOOverwriter.h

#pragma once

#include <string>
#include <vector>
#include "../Independent/Math3D/SColor.h"

namespace fileimage { class CFileImageAnalyser; }

namespace heo {

class CHEOOverwriter {

	enum class ETextureCompressionType {
		None = -1,
	
		PVRTC,
		ETC2,
		ASTC,
		DXT,

		Max,
	};

private:
	std::vector<std::vector<const unsigned char*>>		m_TextureCompressionInfoPointerList;

	// リフレクションプローブ
	std::vector<std::vector<const unsigned char*>>		m_CubemapTextureCompressionInfoPointerList;
	int													m_ReflectionProbeNum;
	std::vector<std::string>							m_ReflectionProbeFolderNameList;

private:
	bool	AnalyseNodeList(fileimage::CFileImageAnalyser& Analyser, int Version);
	bool	AnalyseNode(fileimage::CFileImageAnalyser& Analyser, int Version);

	bool	AnalyseMeshList(fileimage::CFileImageAnalyser& Analyser, int Version);
	bool	AnalyseMesh(fileimage::CFileImageAnalyser& Analyser, int Version);
	bool	AnalyseMeshSimple(fileimage::CFileImageAnalyser& Analyser, int Version);

	bool	AnalyseMaterialList(fileimage::CFileImageAnalyser& Analyser, int Version);
	bool	AnalyseTextureList(fileimage::CFileImageAnalyser& Analyser, int Version);

	bool	AnalyseBoneTable(fileimage::CFileImageAnalyser& Analyser);

	bool	AnalyseLightmapList(fileimage::CFileImageAnalyser& Analyser, int Version);

	SColor	AnalyseColor(fileimage::CFileImageAnalyser& Analyser);

	bool	AnalyseReflectionProbe(fileimage::CFileImageAnalyser& Analyser, int Version);
	bool	AnalyseReflectionProbeCubemap(int Version,const std::string& FileName);

public:
	CHEOOverwriter();
	virtual ~CHEOOverwriter();

	bool	Overwrite(const std::string& FileName);
};

}

