//----------------------------------------------------------------------------------------------- // // EditParameterDialog.h // * 환경 값 편집 다이얼로그 // //----------------------------------------------------------------------------------------------- #pragma once #ifdef _EDIT_ENVIRONMENT_ //#include #include //----------------------------------------------------------------------------------------------- class WinBitmap { public: enum { COPY = 0, STRECH, MAX }; struct SCreatePR { SCreatePR(); SCreatePR(int w_, int h_, BYTE bitCount_, BYTE r_, BYTE g_, BYTE b_); int w; int h; BYTE bitCount; BYTE r, g, b; }; protected: BITMAP m_bitmap; // Bitmap Header Definition BYTE* m_pBuffer; // Bitmap total buffer ( Header + Image ) BOOL m_bLoadOK; // load flag BYTE* m_pRaster; // image buffer RGBQUAD* m_pPalette; // palette BITMAPINFO m_sBmpInfo; // BITMAPFILEHEADER m_sBmpFileHeader; // BITMAPINFOHEADER m_sBmpInfoHeader; // public: RGBQUAD* get_Palette() { return m_pPalette; } BITMAPINFO* get_BmpInfo() { return &m_sBmpInfo; } BITMAPFILEHEADER* get_BmpFileHeader() { return &m_sBmpFileHeader; } BITMAPINFOHEADER* get_BmpInfoHeader() { return &m_sBmpInfoHeader; } // Laster 얻기 BYTE* getLaster() { return m_pRaster; } // 로딩 플래그 얻기 BOOL getLoadFlag() { return m_bLoadOK; } // 로딩 플래그 설정 void setLoadFlag(BOOL b) { m_bLoadOK = b; } public: // 생성 int create(); // 메모리 읽기 int loadMemory(BYTE* pMemBuf, int iSizeMemoryBuf); // 파일 읽기 int loadFile(const char* pName); // 파일 읽기 int load(const TCHAR* pName); // 파괴 int destroy(); // 이미지 그리기 int draw(HDC hdc, HWND hWnd, int x, int y, int w, int h, UINT uType); public: // 이미지 색깔 바꾸기 bool changeColor(BYTE r, BYTE g, BYTE b); // 아무 이미지가 안들어간 까만색 기본 텍스처 만들기 bool makeEmptyBitmap(SCreatePR* pPR); public: virtual ~WinBitmap(); WinBitmap(); }; struct SCheckParam { void set(int id_, HWND hWnd_) { id = id_; hWnd = hWnd_; bCheck = FALSE; } int id; HWND hWnd; BOOL bCheck; }; struct HWNDIDS { void set(int id_e, HWND hWnd_e, int id_p, HWND hWnd_p) { id_edit = id_e; hWnd_edit = hWnd_e; id_progress = id_p; hWnd_progress = hWnd_p; cost = 0; } HWNDIDS(); HWNDIDS(int id_e, HWND hWnd_e, int id_p, HWND hWnd_p); int id_edit; HWND hWnd_edit; int id_progress; HWND hWnd_progress; int cost; }; struct SColorBar { SColorBar(HWND _hParent, int* pEditCtrID, int* pProgressCtrID, int nCheckCtrID, WinBitmap::SCreatePR* pPR); ~SColorBar(); void Paint(HDC hdc); BOOL ColorBarMessageProc(HWND, UINT, WPARAM, LPARAM); void UpdateColorEdit(int id); void UpdateColorProgress(int id); enum COLORID { R_COLORID = 0, G_COLORID, B_COLORID, MAX_COLORID }; enum CONTRLID { R_CONTROL = 0, G_CONTROL, B_CONTROL, MAX_CONTROL }; HWND hParent; SCheckParam hCheck; HWNDIDS hIDControl[ MAX_CONTROL ]; BYTE color[ MAX_COLORID ]; RECT rtColor; WinBitmap colorBox; CHOOSECOLOR COL; }; class CEditParameterDialog { public: CEditParameterDialog(void); ~CEditParameterDialog(void); void GetGameEnvironmentParameter(); void SetGameEnvironmentParameter(int nType); void CopyGameEnvironmentParameter(); void Show(); void End(); void SetParam(HINSTANCE hInst, HWND hWnd); void Create(HWND hWnd); void Destroy(); void Paint(HWND hWnd); void Init(HWND hWnd); void initCost(HWNDIDS* pIDSet, int min, int max); void UpdateEdit(HWNDIDS* pIDSet); void UpdateProgress(HWNDIDS* pIDSet); public: int LoadData(); int SaveData(); void ApplyDataTool(int nType); void ApplyDataToolCore(int nType); void GetFogInfo(HWNDIDS* pStart, HWNDIDS* pEnd, char* pBuffer); void GetSound(HWNDIDS* pDry, HWNDIDS* pWet, char* pBuffer); void GetPercent(HWNDIDS* pCtrl, char* pBuffer); void GetRGB(SColorBar* pColorBar, char* pBuffer); void GetOriginDataEditing(); void ShowFogModel(bool bShow, int nFogType); public: HWND GetEnvironmentEditHandle() { return m_hEnvironmentEdit; } bool GetLoadedSataFlag() { return m_bInitData; } bool GetApplyFlag(); void SetApplyFlag(bool b); BOOL ColorBarMessageProc(HWND, UINT, WPARAM, LPARAM); BOOL MessageProc(HWND, UINT, WPARAM, LPARAM); public: enum APPLY_TYPE { APPLY_ORIGIN = 0, APPLY_EDITING, APPLY_BOTH, APPLY_MAX }; enum DATA_TYPE { DATA_ORIGIN = 0, DATA_EDITING, DATA_MAX }; enum SLIDER_EDIT { SE_START_FOG = 0, SE_END_FOG, SE_DRY_SOUND_VLOUME, SE_WET_SOUND_VLOUME, SE_SKY_MID, SE_MAX }; enum COLORBAR { CB_SKY_START = 0, CB_SKY_MID, CB_SKY_END, CB_FOG, CB_CLOUD, CB_LIGHT_DFF, CB_LIGHT_SPC, CB_LIGHT_AMB, CB_MAX }; struct SParam { std::vector vcColorCtrl; std::vector vSilderEdit; }; private: HWND m_hEnvironmentEdit; HINSTANCE m_hInst; HWND m_hWnd; HWND m_hWndDialog; bool m_bInitData; bool m_bApply; SParam m_aParam[ DATA_MAX ]; }; extern CEditParameterDialog& GetEditParameterDialog(); INT_PTR CALLBACK EditParameterDialogProc(HWND, UINT, WPARAM, LPARAM); #endif _EDIT_ENVIRONMENT_