// ResourceLoader.h: interface for the CResourceLoader class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_RESOURCELOADER_H__16578E31_424F_4D74_9304_44BEC2BE6F95__INCLUDED_) #define AFX_RESOURCELOADER_H__16578E31_424F_4D74_9304_44BEC2BE6F95__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "./LoadedObj.h" #include "./ByteDataObj.h" #include "./ThreadQueue.h" namespace Caldron { namespace Base { /* ********************************************************************* * CResourceLoaderObj * ÆÄÀÏ : ResourceLoader.h * ±â´É : Caldron Engine³» CResourceLoader ¿¡¼­ Load Queue¿¡ µé¾î°¥ resource ´ÜÀ§ * ÀÛ¼ºÀÏ : 2004.01.06 * history : wizardbug ( 2004.01.06) ********************************************************************** */ enum CResourceLoaderObjState { RLOBJSTATE_READY = 0, RLOBJSTATE_LOADING, RLOBJSTATE_LOADED, RLOBJSTATE_FAILED, }; const int g_iMaxLoaderQueue = 1023; class CResourceLoaderObj { public: CResourceLoaderObj(); CResourceLoaderObj(const char *strFileName,CLoadedObj *pObj); virtual ~CResourceLoaderObj(); CResourceLoaderObjState m_State; CByteDataObj m_ByteData; char m_strFileName[40]; CLoadedObj *m_pObj; }; /* ********************************************************************* * CResourceLoader * ÆÄÀÏ : ResourceLoader.h * ±â´É : Caldron Engine³» ResourceLoader * ÀÛ¼ºÀÏ : 2004.01.06 * history : wizardbug ( 2004.01.06) ********************************************************************** */ class CResourceLoader { public: CResourceLoader(); virtual ~CResourceLoader(); int FinishPercent(); // ÇöÀç queue¾È¿¡ µé¾îÀÖ´Â obj µéÀÇ ·Îµù ½ÃÀÛ ·çƾ void Loading(); void ClearAllObj(); int AddObj(CResourceLoaderObj &); void SetObj(int iIndex,CResourceLoaderObj &); int GetObjNum(); CResourceLoaderObj GetObj(int iIndex); // ÇöÀç ·Îµù»óÅ CResourceLoaderObjState GetObjState(int iIndex); DWORD WaitFinished(); // ÇÁ·Î¼¼½º ½º·¹µå¿¡¼­ È£Ãâ void ProcessFunc(); // ·Î´õ ½º·¹µå¿¡¼­ È£Ãâ void LoaderFunc(); bool Finished(); void Process(); protected: // Loading Thread È£ÃâµÚ ±â´Ù¸®´Â ½Ã°£ // 0 : °ð¹Ù·Î return, INFINIT : Loading ³¡³¯¶§ ±îÁö ±â´Ù¸². (default : 0) DWORD m_dwWait; std::vector m_lstObj; std::vector m_lstReady; CThreadQueuem_Queue; CRITICAL_SECTION m_ObjCriticalSection; unsigned long m_LoaderThreadID; unsigned long m_ProcessThreadID; HANDLE m_EndEvent; HANDLE m_LoaderHandle; HANDLE m_ProcessHandle; bool m_bLoading; }; }} #endif // !defined(AFX_RESOURCELOADER_H__16578E31_424F_4D74_9304_44BEC2BE6F95__INCLUDED_)