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>
158 lines
3.7 KiB
C++
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;
|
|
} |