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

158 lines
3.7 KiB
C++

// SkillList.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "GameDBTool.h"
#include <Skill/SkillMgr.h>
#include "SkillList.h""
// CSkillList
char g_SkillField[3][20] = { "Skill ID", "Lock", "Level" };
IMPLEMENT_DYNAMIC(CSkillList, CListCtrl)
CSkillList::CSkillList()
{
}
CSkillList::~CSkillList()
{
}
BEGIN_MESSAGE_MAP(CSkillList, 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 CSkillList::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
CListViewControl::OnCustomDraw(pNMHDR, pResult);
}
void CSkillList::OnEndLableEdit(NMHDR* pNMHDR, LRESULT* pResult)
{
CListViewControl::OnEndLableEdit(pNMHDR, pResult);
}
void CSkillList::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CListViewControl::OnLButtonDblClk(nFlags, point);
}
void CSkillList::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CListViewControl::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CSkillList::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CListViewControl::OnVScroll(nSBCode, nPos, pScrollBar);
}
// CSkillList 메시지 처리기입니다.
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// SetColumn [ public ]
// - 테이블 컬럼 세팅
//
// Parameter :
// 1st : 컬럼 정보
//
// Return:
// 성공시 true
//
///////////////////////////////////////////////////////////////////////////////////////////////
bool CSkillList::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;
int IndexCounter = 0;
SetColumnType(0, CT_EDIT);
InsertColumn(0, g_SkillField[0], LVCFMT_CENTER, 5 * 20 + 10);
SetColumnType(1, CT_EDIT);
InsertColumn(1, g_SkillField[1], LVCFMT_CENTER, 3 * 20 + 10);
SetColumnType(2, CT_EDIT);
InsertColumn(2, g_SkillField[2], LVCFMT_CENTER, 3 * 20 + 10);
return true;
}
bool CSkillList::AddSkillRows(LPSKILL Skill_In)
{
CString strItem;
int Counter = 1;
int Index;
DeleteAllItems();
for(Index = 0; Index < Skill_In->wSlotNum; Index++, Counter = 1)
{
strItem.Format("0x%04x", Skill_In->SSlot[Index].SKILLINFO.wSkill);
InsertItem(Index, strItem);
strItem.Format("%d", Skill_In->SSlot[Index].SKILLINFO.cLockCount);
SetItemText(Index, Counter++, strItem);
strItem.Format("%d", Skill_In->SSlot[Index].SKILLINFO.cSkillLevel);
SetItemText(Index, Counter++, strItem);
}
return true;
}
bool CSkillList::GetSkillRows(LPSKILL Skill_Out)
{
char strItemText[256];
int Counter = 0;
int Index;
int Slot = GetItemCount();
unsigned short Skill;
int Lock, Level;
int SkillNum = 0;
ZeroMemory(Skill_Out, sizeof(SKILL));
for(Index = 0; Index < Slot; Index++, Counter = 0)
{
GetItemText(Index, Counter++, strItemText, 256);
Skill = Math::Convert::StrToHex16(strItemText);
GetItemText(Index, Counter++, strItemText, 256);
Lock = atoi(strItemText);
GetItemText(Index, Counter++, strItemText, 256);
Level = atoi(strItemText);
Skill_Out->SSlot[Index].SKILLINFO.wSkill = Skill;
Skill_Out->SSlot[Index].SKILLINFO.cLockCount = Lock;
Skill_Out->SSlot[Index].SKILLINFO.cSkillLevel = Level;
SkillNum = SkillNum + Lock * (CSkillMgr::MAX_SKILL_LEVEL - 1) + Level;
}
Skill_Out->wSkillNum = SkillNum;
Skill_Out->wSlotNum = Index;
return true;
}