#pragma once

#include <vector>
#include <windows.h>


//////////////////////////////////////////////////////////////////////////
#pragma pack(push)
#pragma pack(4)

#define MAX_PACKAGE_FILE_NAME_LENGTH	50
#define MAX_FILE_NAME_LENGTH	200

struct FilePatchInfoRecordV1
{
	DWORD dwSize;
	DWORD dwCRC32;
	char szFileName[MAX_FILE_NAME_LENGTH];	// (게임루트로부터의)서브폴더명+파일명
	char szPackageFileName[MAX_PACKAGE_FILE_NAME_LENGTH];	// 년월일_시분_nnn (확장자 ".zip" 제외)
	
	FilePatchInfoRecordV1()
	{
		dwSize = 0;
		dwCRC32 = 0;
		szFileName[0] = '\0';
		szPackageFileName[0] = '\0';
	}
	
};


//////////////////////////////////////////////////////////////////////////

class CPatchInfoListV1
{
public:
	bool Load( const char* szFileName );
	bool Save( const char* szFileName );
	
	void Reset();
	
	void SetVersion( DWORD dwVer )
	{
		m_dwVersion = dwVer;
	}
	
	DWORD GetVersion()
	{
		return m_dwVersion;
	}
	
	std::vector<FilePatchInfoRecordV1> &GetList()
	{
		return m_vecPatchInfo;
	}
	
protected:
	DWORD m_dwVersion;
	
	std::vector<FilePatchInfoRecordV1> m_vecPatchInfo;
	
	static const char* ms_cszHeaderString;
};



#pragma pack(pop)
