Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tlevel_io.h"
Toshihiro Shimizu 890ddd
#include "tfile.h"
Toshihiro Shimizu 890ddd
#include <map>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifdef DOPO_LO_FACCIAMO
Toshihiro Shimizu 890ddd
class TImageReaderWriterZCC;
Toshihiro Shimizu 890ddd
struct C {
Toshihiro Shimizu 890ddd
	C() : m_offset(0), m_size(0), m_lx(0), m_ly(0) {}
Toshihiro Shimizu 890ddd
	C(TINT64 offset, long size, int lx, int ly)
Toshihiro Shimizu 890ddd
		: m_offset(offset), m_size(size), m_lx(lx), m_ly(ly)
Toshihiro Shimizu 890ddd
	{
Toshihiro Shimizu 890ddd
	}
Toshihiro Shimizu 890ddd
	TINT64 m_offset;
Toshihiro Shimizu 890ddd
	long m_size;
Toshihiro Shimizu 890ddd
	int m_lx;
Toshihiro Shimizu 890ddd
	int m_ly;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TLevelReaderWriterZCC : public TLevelReaderWriter
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	friend class TImageReaderWriterZCC;
Toshihiro Shimizu 890ddd
	TFile m_file;
Toshihiro Shimizu 890ddd
	TFile m_indexFile;
Toshihiro Shimizu 890ddd
	bool m_initDone;
Toshihiro Shimizu 890ddd
	ULONG m_blockSize;
Toshihiro Shimizu 890ddd
	std::map<int, C> m_map;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	TLevelReaderWriterZCC(const TFilePath &path, TReaderWriterInfo *winfo);
Toshihiro Shimizu 890ddd
	~TLevelReaderWriterZCC();
Toshihiro Shimizu 890ddd
	TImageReaderWriterP getFrameReaderWriter(TFrameId fid);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	static TLevelReaderWriter *create(const TFilePath &f, TReaderWriterInfo *winfo)
Toshihiro Shimizu 890ddd
	{
Toshihiro Shimizu 890ddd
		return new TLevelReaderWriterZCC(f, winfo);
Toshihiro Shimizu 890ddd
	};
Toshihiro Shimizu 890ddd
	TLevelP loadInfo();
Toshihiro Shimizu 890ddd
	void saveSoundTrack(TSoundTrack *st);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//------------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TReaderWriterInfoZCC : public TReaderWriterInfo
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	friend TLevelReaderWriterZCC;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	static TReaderWriterInfo *create(const string &ext);
Toshihiro Shimizu 890ddd
	~TReaderWriterInfoZCC();
Toshihiro Shimizu 890ddd
	TReaderWriterInfo *clone() const;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Toshihiro Shimizu 890ddd
	TReaderWriterInfoZCC();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TReaderWriterInfoZCC(const TReaderWriterInfoZCC &);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TReaderWriterInfoZCC &operator=(const TReaderWriterInfoZCC &); // not implemented
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
#endif