Files
Leviathan/Client/Game/game/Env/EditParameterDialog.h
T
2026-06-01 12:46:52 +02:00

256 lines
5.6 KiB
C++

//-----------------------------------------------------------------------------------------------
//
// EditParameterDialog.h
// * 환경 값 편집 다이얼로그
//
//-----------------------------------------------------------------------------------------------
#pragma once
#ifdef _EDIT_ENVIRONMENT_
//#include <vector>
#include <Commdlg.h>
//-----------------------------------------------------------------------------------------------
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<SColorBar*> vcColorCtrl;
std::vector<HWNDIDS*> 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_