Files
Client/Server/ToolProject/GameDBTool/CharList.cpp
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

395 lines
9.0 KiB
C++

#include "charlist.h"
char g_CharInfoField[25][20] =
{
"CID", "Name", "Sex", "Hair", "Face",
"Nationality", "Class", "Fame", "Mileage", "Guild",
"Party", "Level", "Gold", "IP", "STR",
"DEX", "CON", "INT", "WIS", "HP",
"MP", "EXP"
};
char g_Sex[2][7] = { "Male", "Female" };
CCharList::CCharList()
{
}
CCharList::~CCharList()
{
}
BEGIN_MESSAGE_MAP(CCharList, CListCtrl)
//{{AFX_MSG_MAP(CUserList)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
ON_NOTIFY_REFLECT(LVN_ENDLABELEDIT, OnEndLableEdit)
ON_WM_LBUTTONDBLCLK()
ON_WM_HSCROLL()
ON_WM_VSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CCharList::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
CListViewControl::OnCustomDraw(pNMHDR, pResult);
}
void CCharList::OnEndLableEdit(NMHDR* pNMHDR, LRESULT* pResult)
{
CListViewControl::OnEndLableEdit(pNMHDR, pResult);
}
void CCharList::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CListViewControl::OnLButtonDblClk(nFlags, point);
}
void CCharList::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CListViewControl::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CCharList::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CListViewControl::OnVScroll(nSBCode, nPos, pScrollBar);
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// SetColumn [ public ]
// - 테이블 컬럼 세팅
//
// Parameter :
// 1st : 컬럼 정보
//
// Return:
// 성공시 true
//
///////////////////////////////////////////////////////////////////////////////////////////////
bool CCharList::SetColumn(void)
{
DWORD ExStyle = LVS_EX_FLATSB | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, ExStyle);
DWORD Style = GetWindowLong(m_hWnd, GWL_STYLE);
Style |= LVS_EDITLABELS;
if (!SetWindowLong(m_hWnd, GWL_STYLE, Style))
return false;
CStringList StringList;
// 캐릭터 아이디
SetColumnType(0, CT_NORMAL);
InsertColumn(0, g_CharInfoField[0], LVCFMT_CENTER, 4 * 20 + 5);
// 이름
SetColumnType(1, CT_NORMAL);
InsertColumn(1, g_CharInfoField[1], LVCFMT_CENTER, 130 );
// 성별
SetColumnType(2, CT_COMBO);
StringList.AddTail(g_Sex[0]);
StringList.AddTail(g_Sex[1]);
SetColumnStringList(2, StringList);
InsertColumn(2, g_CharInfoField[2], LVCFMT_CENTER, 5 * 10);
// 머리
SetColumnType(3, CT_EDIT);
InsertColumn(3, g_CharInfoField[3], LVCFMT_CENTER, 4 * 10);
// 얼굴
SetColumnType(4, CT_EDIT);
InsertColumn(4, g_CharInfoField[4], LVCFMT_CENTER, 4 * 10);
// 종족
SetColumnType(5, CT_EDIT);
InsertColumn(5, g_CharInfoField[5], LVCFMT_CENTER, 4 * 10);
// 클래스
SetColumnType(6, CT_EDIT);
InsertColumn(6, g_CharInfoField[6], LVCFMT_CENTER, 6 * 10);
// 공헌도
SetColumnType(7, CT_EDIT);
InsertColumn(7, g_CharInfoField[7], LVCFMT_CENTER, 6 * 10);
// 명성
SetColumnType(8, CT_EDIT);
InsertColumn(8, g_CharInfoField[8], LVCFMT_CENTER, 4 * 10);
// 길드
SetColumnType(9, CT_EDIT);
InsertColumn(9, g_CharInfoField[9], LVCFMT_CENTER, 4 * 10);
// 파티
SetColumnType(10, CT_EDIT);
InsertColumn(10, g_CharInfoField[10], LVCFMT_CENTER, 4 * 10);
// 레벨
SetColumnType(11, CT_EDIT);
InsertColumn(11, g_CharInfoField[11], LVCFMT_CENTER, 4 * 10);
// 돈
SetColumnType(12, CT_EDIT);
InsertColumn(12, g_CharInfoField[12], LVCFMT_CENTER, 8 * 10);
// IP
SetColumnType(13, CT_EDIT);
InsertColumn(13, g_CharInfoField[13], LVCFMT_CENTER, 4 * 10);
// STR
SetColumnType(14, CT_EDIT);
InsertColumn(14, g_CharInfoField[14], LVCFMT_CENTER, 4 * 10);
// DEX
SetColumnType(15, CT_EDIT);
InsertColumn(15, g_CharInfoField[15], LVCFMT_CENTER, 4 * 10);
// CON
SetColumnType(16, CT_EDIT);
InsertColumn(16, g_CharInfoField[16], LVCFMT_CENTER, 4 * 10);
// INT
SetColumnType(17, CT_EDIT);
InsertColumn(17, g_CharInfoField[17], LVCFMT_CENTER, 4 * 10);
// WIS
SetColumnType(18, CT_EDIT);
InsertColumn(18, g_CharInfoField[18], LVCFMT_CENTER, 4 * 10);
// HP
SetColumnType(19, CT_EDIT);
InsertColumn(19, g_CharInfoField[19], LVCFMT_CENTER, 4 * 10);
// MP
SetColumnType(20, CT_EDIT);
InsertColumn(20, g_CharInfoField[20], LVCFMT_CENTER, 4 * 10);
// EXP
SetColumnType(21, CT_EDIT);
InsertColumn(21, g_CharInfoField[21], LVCFMT_CENTER, 6 * 10);
return true;
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// AddUserRow [ public ]
// - 줄 추가
//
// Parameter :
// 1st : 컬럼 정보
//
// Return:
// 성공시 true
//
///////////////////////////////////////////////////////////////////////////////////////////////
bool CCharList::AddCharRow(LPCHAR_INFOST CharInfo_In)
{
// TODO : 컴파일 에러가 나서 주석 처리해둡니다. 필요하신 분이 수정해주세요. (2005-01-26 by 로딘)
/*
CString strItem;
int Index;
Index = GetItemCount();
// 캐릭터 아이디
strItem.Format("%d", CharInfo_In->UID);
InsertItem(Index, strItem);
// 이름
strItem.Format("%s", CharInfo_In->Name);
SetItemText(Index, 1, strItem);
// 성별
strItem.Format("%s", g_Sex[CharInfo_In->Sex - 1]);
SetItemText(Index, 2, strItem);
// 머리
strItem.Format("%d", CharInfo_In->Hair);
SetItemText(Index, 3, strItem);
// 얼굴
strItem.Format("%d", CharInfo_In->Face);
SetItemText(Index, 4, strItem);
// 종족
strItem.Format("%d", CharInfo_In->Race);
SetItemText(Index, 5, strItem);
// 클래스
strItem.Format("%d", CharInfo_In->Class);
SetItemText(Index, 6, strItem);
// 명성
strItem.Format("%d", CharInfo_In->Fame);
SetItemText(Index, 7, strItem);
// 마일리지
strItem.Format("%d", CharInfo_In->Mileage);
SetItemText(Index, 8, strItem);
// 길드
strItem.Format("%d", CharInfo_In->Guild);
SetItemText(Index, 9, strItem);
// 파티
strItem.Format("%d", CharInfo_In->Party);
SetItemText(Index, 10, strItem);
// 레벨
strItem.Format("%d", CharInfo_In->Level);
SetItemText(Index, 11, strItem);
// 돈
strItem.Format("%d", CharInfo_In->Gold);
SetItemText(Index, 12, strItem);
// IP
strItem.Format("%d", CharInfo_In->IP);
SetItemText(Index, 13, strItem);
// STR
strItem.Format("%d", CharInfo_In->STR);
SetItemText(Index, 14, strItem);
// DEX
strItem.Format("%d", CharInfo_In->DEX);
SetItemText(Index, 15, strItem);
// CON
strItem.Format("%d", CharInfo_In->CON);
SetItemText(Index, 16, strItem);
// INT
strItem.Format("%d", CharInfo_In->INT);
SetItemText(Index, 17, strItem);
// WIS
strItem.Format("%d", CharInfo_In->WIS);
SetItemText(Index, 18, strItem);
// HP
strItem.Format("%d", CharInfo_In->HP);
SetItemText(Index, 19, strItem);
// MP
strItem.Format("%d", CharInfo_In->MP);
SetItemText(Index, 20, strItem);
// EXP
strItem.Format("%d", CharInfo_In->Exp);
SetItemText(Index, 21, strItem);
*/
return true;
}
bool CCharList::GetCharRow(unsigned long Item_In, LPCHAR_INFOST CharInfo_Out)
{
// TODO : 컴파일 에러가 나서 주석 처리해둡니다. 필요하신 분이 수정해주세요. (2005-01-26 by 로딘)
/*
int Counter = 0;
char strItemText[256];
// 캐릭터 아이디
GetItemText(Item_In, 0, strItemText, 256);
CharInfo_Out->UID = atoi(strItemText);
// 이름
GetItemText(Item_In, 1, strItemText, 256);
strncpy(CharInfo_Out->Name, strItemText, 16);
// 성별
GetItemText(Item_In, 2, strItemText, 256);
if(!strcmp(strItemText, g_Sex[0]))
CharInfo_Out->Sex = 1;
else
CharInfo_Out->Sex = 2;
// 머리
GetItemText(Item_In, 3, strItemText, 256);
CharInfo_Out->Hair = atoi(strItemText);
// 얼굴
GetItemText(Item_In, 4, strItemText, 256);
CharInfo_Out->Face = atoi(strItemText);
// 종족
GetItemText(Item_In, 5, strItemText, 256);
CharInfo_Out->Race = atoi(strItemText);
// 클래스
GetItemText(Item_In, 6, strItemText, 256);
CharInfo_Out->Class = atoi(strItemText);
// 명성
GetItemText(Item_In, 7, strItemText, 256);
CharInfo_Out->Fame = atoi(strItemText);
// 마일리지
GetItemText(Item_In, 8, strItemText, 256);
CharInfo_Out->Mileage = atoi(strItemText);
// 길드
GetItemText(Item_In, 9, strItemText, 256);
CharInfo_Out->Guild = atoi(strItemText);
// 파티
GetItemText(Item_In, 10, strItemText, 256);
CharInfo_Out->Party = atoi(strItemText);
// 레벨
GetItemText(Item_In, 11, strItemText, 256);
CharInfo_Out->Level = atoi(strItemText);
// 돈
GetItemText(Item_In, 12, strItemText, 256);
CharInfo_Out->Gold = atoi(strItemText);
// IP
GetItemText(Item_In, 13, strItemText, 256);
CharInfo_Out->IP = atoi(strItemText);
// STR
GetItemText(Item_In, 14, strItemText, 256);
CharInfo_Out->STR = atoi(strItemText);
// DEX
GetItemText(Item_In, 15, strItemText, 256);
CharInfo_Out->DEX = atoi(strItemText);
// CON
GetItemText(Item_In, 16, strItemText, 256);
CharInfo_Out->CON = atoi(strItemText);
// INT
GetItemText(Item_In, 17, strItemText, 256);
CharInfo_Out->INT = atoi(strItemText);
// WIS
GetItemText(Item_In, 18, strItemText, 256);
CharInfo_Out->WIS = atoi(strItemText);
// HP
GetItemText(Item_In, 19, strItemText, 256);
CharInfo_Out->HP = atoi(strItemText);
// MP
GetItemText(Item_In, 20, strItemText, 256);
CharInfo_Out->MP = atoi(strItemText);
// EXP
GetItemText(Item_In, 21, strItemText, 256);
CharInfo_Out->Exp = atoi(strItemText);
*/
return true;
}