Files
Client/Server/ToolProject/Arrangement2/Arrangement2Dlg.h
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

312 lines
6.6 KiB
C++

// Arrangement2Dlg.h : 헤더 파일
//
#pragma once
#include "afxwin.h"
#include <map>
#include <vector>
using namespace std;
// CArrangement2Dlg 대화 상자
class CArrangement2Dlg : public CDialog
{
// 생성
public:
CArrangement2Dlg(CWnd* pParent = NULL); // 표준 생성자
// 대화 상자 데이터
enum { IDD = IDD_ARRANGEMENT2_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원
// 구현
protected:
HICON m_hIcon;
// 메시지 맵 함수를 생성했습니다.
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnZoom(UINT nID);
afx_msg void OnUpdateZoom(CCmdUI *pCmdUI);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnBnClickedCreatescript();
afx_msg void OnBnClickedVisualkid();
afx_msg void OnCbnSelchangeKidcombo();
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
afx_msg void OnZone(UINT nID);
afx_msg void OnUpdateZone(CCmdUI* pCmdUI);
afx_msg void OnBnClickedVisualpid();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnAppExit();
afx_msg void OnCbnSelchangePidcombo();
protected:
virtual BOOL DestroyWindow();
public:
int m_nPositionX;
int m_nPositionY;
int m_nPositionZ;
int m_nProcess;
int m_nPID;
BOOL m_bVisualKID;
BOOL m_bVisualPID;
BOOL m_bVisualLevel;
CString m_strName;
CString m_strLevel;
CString m_strClass;
int m_nNumOfKID;
int m_nNumOfWorld;
CComboBox m_ctrKIDCombo;
BOOL m_bErase;
short m_wRespawnArea;
CComboBox m_ctrPIDCombo;
int m_nPartyMemNum;
// ------------------------------------------------------------------
// 사용자 정의
private:
enum _Const
{
MAP_PAGE_X = 1100,
MAP_PAGE_Z = 900,
SECTOR_SIZE = 315,
MAX_NUM = 0xffff,
ID_LENGTH = 8,
MONSTER_BIT = 0x80000000,
MONSTER_PARTY_BIT = 0x80000000,
MAX_STRING_LENGTH = 32,
MAX_PARTY_MEMBER_NUM = 10
};
enum Process
{
ARRANGEMENT = 0,
ERASE,
PARTY
};
enum MovingPattern
{
PATTERN_AREA = 0,
PATTERN_FIX,
PATTERN_ROUTE,
PATTERN_NONAREA
};
enum RespawnArea
{
DEFAULT_DISTANCE = 32
};
enum SpeacialKindID
{
// 소환수
SUMMON_KINDLING = 3500,
SUMMON_FLAMEWALKER = 3506,
SUMMON_BURNINGSHIELD = 3513,
SUMMON_FIREWING = 3520,
SUMMON_DEATHBURN = 3527,
// 명예의 석상
STATUE_NEUTRALITY = 4001,
STATUE_HUMAN_LOADING = 4002,
STATUE_HUMAN_COMPLETE = 4003,
STATUE_AKHAN_LOADING = 4004,
STATUE_AKHAN_COMPLETE = 4005,
// BattleGround Server 명예의 석상
BG_STATUE_NEUTRALITY = 4006,
BG_STATUE_HUMAN_LOADING = 4007,
BG_STATUE_HUMAN_COMPLETE = 4008,
BG_STATUE_AKHAN_LOADING = 4009,
BG_STATUE_AKHAN_COMPLETE = 4010,
// 다크 카나번 석상
POWER_STATUE_NEUTRALITY = 4011, // 힘의 석상
POWER_STATUE_HUMAN_LOADING = 4012,
POWER_STATUE_HUMAN_COMPLETE = 4013,
POWER_STATUE_AKHAN_LOADING = 4014,
POWER_STATUE_AKHAN_COMPLETE = 4015,
INT_STATUE_NEUTRALITY = 4016, // 지능의 석상
INT_STATUE_HUMAN_LOADING = 4017,
INT_STATUE_HUMAN_COMPLETE = 4018,
INT_STATUE_AKHAN_LOADING = 4019,
INT_STATUE_AKHAN_COMPLETE = 4020,
EXP_STATUE_NEUTRALITY = 4021, // 경험의 석상
EXP_STATUE_HUMAN_LOADING = 4022,
EXP_STATUE_HUMAN_COMPLETE = 4023,
EXP_STATUE_AKHAN_LOADING = 4024,
EXP_STATUE_AKHAN_COMPLETE = 4025,
WEALTH_STATUE_NEUTRALITY = 4026, // 부의 석상
WEALTH_STATUE_HUMAN_LOADING = 4027,
WEALTH_STATUE_HUMAN_COMPLETE = 4028,
WEALTH_STATUE_AKHAN_LOADING = 4029,
WEALTH_STATUE_AKHAN_COMPLETE = 4030,
LIFE_EXTRACT_NEUTRALITY = 4031, // 생명 축출기
LIFE_EXTRACT_HUMAN_LOADING = 4032,
LIFE_EXTRACT_HUMAN_COMPLETE = 4033,
LIFE_EXTRACT_AKHAN_LOADING = 4034,
LIFE_EXTRACT_AKHAN_COMPLETE = 4035,
// 석상 KID (CreatureStructure.h 에도 정의되어 있음)
MIN_STATUE_KID = 4001,
MAX_STATUE_KID = 4035
};
struct Monster
{
unsigned long m_dwCID;
int m_nKID;
int m_nPID;
int m_nLevel;
BOOL m_bScout;
int m_nMovingPattern;
short m_wRespawnArea;
int m_nPosX;
int m_nPosY;
int m_nPosZ;
Monster()
: m_dwCID(0), m_nKID(0), m_nPID(0), m_bScout(FALSE), m_nMovingPattern(0),
m_nPosX(0), m_nPosY(0), m_nPosZ(0), m_wRespawnArea(DEFAULT_DISTANCE), m_nLevel(0)
{ }
};
typedef struct _MonsterInfo
{
int m_nKID;
char m_strName[MAX_STRING_LENGTH];
char m_strLevel[MAX_STRING_LENGTH];
char m_strClass[MAX_STRING_LENGTH];
} MonsterInfo, *LPMonsterInfo;
int m_nMapStartX;
int m_nMapStartZ;
UINT_PTR m_nTimer;
bool m_bBlink;
// 석상 몬스터 ID 유지를 위해
struct sStatueKey
{
sStatueKey(unsigned short wPosX, unsigned short wPosZ)
{
m_dwValue = static_cast<unsigned long>( (wPosX << 16) | wPosZ ) ;
}
operator unsigned long() const
{
return m_dwValue ;
}
unsigned long m_dwValue ;
} ;
// 몬스터 정보의 리스트
typedef vector<Monster *> MonsterList;
typedef std::map<int, MonsterInfo> MonsterInfoList;
typedef std::map<unsigned long, unsigned long> StatueIDMap; // <sStatueKey::m_dwValue, StatueCID>
MonsterList m_lstMonster;
MonsterInfoList m_lstMonsterInfo;
StatueIDMap m_mapStatueID;
// 맵이미지 크기
unsigned long m_dwPageX;
unsigned long m_dwPageZ;
// 다이얼로그 과거와 현제 크기 및 차이
int m_nPrevX;
int m_nPrevY;
int m_nNextX;
int m_nNextY;
int m_nGapX;
int m_nGapY;
// 다이얼로그 위치
RECT m_rectWindow;
// 이미 그려진 녀석을 이동시 참조하는 변수
bool m_bDragObject;
int m_DragObjectIndex;
CPoint DragScreenStartPoint;
bool m_bDragScreen;
// 줌
UINT m_nSelectedZoom;
float m_fMagnification;
// 선택된(로딩된 존)
UINT m_nLoadedZone;
// 이미지
BYTE* m_imageData;
SIZE m_imageDims;
int m_imageChannels;
BITMAPINFO m_bmi;
BYTE* m_bmp;
void CalculateNumOfKID(int nKID);
void CalculateNumOfPID();
void ClearBitmap();
void ClearData();
BOOL OpenJPGFile(LPCTSTR lpszPathName);
void RGBA_FPX_to_BGRA(BYTE* data,int width,int height);
void InitialUpdate();
void LoadScript(void);
void DrawOutLineText(Graphics& graphics, Font& font, PointF pointF, wchar_t* strText);
BOOL IsStatue(unsigned short wKID) CONST;
template <class T>
void SetObjectPos(T* pObject);
public:
afx_msg void OnSize(UINT nType, int cx, int cy);
};