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>
395 lines
9.0 KiB
C++
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;
|
|
}
|