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>
This commit is contained in:
173
Server/ToolProject/GameDBTool/CharSkill.cpp
Normal file
173
Server/ToolProject/GameDBTool/CharSkill.cpp
Normal file
@@ -0,0 +1,173 @@
|
||||
// CharSkill.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "GameDBTool.h"
|
||||
#include "CharSkill.h"
|
||||
|
||||
#include "GameDBTool.h"
|
||||
#include "GameDBToolDlg.h"
|
||||
|
||||
#include <BaseLibrary/Utility/Math/Math.h>
|
||||
#include ".\charskill.h"
|
||||
|
||||
// CCharSkill 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CCharSkill, CDialog)
|
||||
CCharSkill::CCharSkill(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CCharSkill::IDD, pParent), m_CID(0)
|
||||
, m_Slot(_T(""))
|
||||
, m_Total(_T(""))
|
||||
, m_SkillID(_T(""))
|
||||
{
|
||||
memset(&m_Skill, 0, sizeof(SKILL));
|
||||
}
|
||||
|
||||
CCharSkill::~CCharSkill()
|
||||
{
|
||||
}
|
||||
|
||||
void CCharSkill::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Text(pDX, IDC_SLOT, m_Slot);
|
||||
DDX_Text(pDX, IDC_NUM, m_Total);
|
||||
DDX_Control(pDX, IDC_SKILL_LIST, m_SkillList);
|
||||
DDX_Text(pDX, IDC_SKILL, m_SkillID);
|
||||
}
|
||||
|
||||
BOOL CCharSkill::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
m_SkillList.SetColumn();
|
||||
|
||||
CCharSkill::OnBnClickedLoad();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CCharSkill, CDialog)
|
||||
ON_BN_CLICKED(IDC_RESET, OnBnClickedReset)
|
||||
ON_BN_CLICKED(IDC_LOAD, OnBnClickedLoad)
|
||||
ON_BN_CLICKED(IDC_UPDATE, OnBnClickedUpdate)
|
||||
ON_NOTIFY(LVN_KEYDOWN, IDC_SKILL_LIST, OnLvnKeydownSkillList)
|
||||
ON_BN_CLICKED(IDC_ADD, OnBnClickedAdd)
|
||||
ON_WM_CTLCOLOR()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
void CCharSkill::OnBnClickedReset()
|
||||
{
|
||||
m_SkillList.DeleteAllItems();
|
||||
}
|
||||
|
||||
void CCharSkill::OnBnClickedLoad()
|
||||
{
|
||||
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
|
||||
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
|
||||
|
||||
if(!DBComponent::GameDB::GetCharSkill(CDBSingleObject::GetInstance(), m_CID, &m_Skill))
|
||||
{
|
||||
pDlgWnd->m_Log.LogPrint("[스킬] 캐릭터 스킬 읽기중에 오류가 발생. %s", CDBSingleObject::GetInstance().GetErrorString());
|
||||
}
|
||||
|
||||
m_Slot.Format("%d", m_Skill.wSlotNum);
|
||||
m_Total.Format("%d", m_Skill.wSkillNum);
|
||||
m_SkillList.AddSkillRows(&m_Skill);
|
||||
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
void CCharSkill::OnBnClickedUpdate()
|
||||
{
|
||||
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
|
||||
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
|
||||
|
||||
m_SkillList.GetSkillRows(&m_Skill);
|
||||
|
||||
m_Slot.Format("%d", m_Skill.wSlotNum);
|
||||
m_Total.Format("%d", m_Skill.wSkillNum);
|
||||
|
||||
if(!DBComponent::GameDB::UpdateCharSkill(CDBSingleObject::GetInstance(), m_CID, &m_Skill))
|
||||
{
|
||||
pDlgWnd->m_Log.LogPrint("[스킬] 캐릭터 스킬 쓰기중에 오류가 발생. %s", CDBSingleObject::GetInstance().GetErrorString());
|
||||
}
|
||||
else
|
||||
{
|
||||
pDlgWnd->m_Log.LogPrint("[스킬] 캐릭터 스킬 쓰기 완료.");
|
||||
}
|
||||
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
void CCharSkill::OnLvnKeydownSkillList(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
LPNMLVKEYDOWN pLVKeyDow = reinterpret_cast<LPNMLVKEYDOWN>(pNMHDR);
|
||||
|
||||
POSITION Pos;
|
||||
int IndexCount = 0, IndexNum = 0;
|
||||
int Index[2000] = {0,};
|
||||
|
||||
if(pLVKeyDow->wVKey == VK_DELETE)
|
||||
{
|
||||
Pos= m_SkillList.GetFirstSelectedItemPosition();
|
||||
if(Pos != NULL)
|
||||
{
|
||||
while(Pos)
|
||||
{
|
||||
Index[IndexNum++] = m_SkillList.GetNextSelectedItem(Pos);
|
||||
}
|
||||
|
||||
for(IndexCount = IndexNum - 1; IndexCount >= 0; IndexCount--)
|
||||
m_SkillList.DeleteItem(Index[IndexCount]);
|
||||
}
|
||||
}
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CCharSkill::OnBnClickedAdd()
|
||||
{
|
||||
UpdateData();
|
||||
|
||||
unsigned short SkillID = Math::Convert::StrToHex16(m_SkillID.GetBuffer(0));
|
||||
|
||||
m_Skill.SSlot[m_Skill.wSlotNum].SKILLINFO.wSkill = SkillID;
|
||||
m_Skill.SSlot[m_Skill.wSlotNum].SKILLINFO.cLockCount = 0;
|
||||
m_Skill.SSlot[m_Skill.wSlotNum].SKILLINFO.cSkillLevel = 1;
|
||||
|
||||
m_Skill.wSlotNum += 1;
|
||||
m_Skill.wSkillNum += 1;
|
||||
|
||||
m_Slot.Format("%d", m_Skill.wSlotNum);
|
||||
m_Total.Format("%d", m_Skill.wSkillNum);
|
||||
m_SkillList.AddSkillRows(&m_Skill);
|
||||
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
HBRUSH CCharSkill::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
||||
{
|
||||
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
|
||||
|
||||
// TODO: 여기서 DC의 특성을 변경합니다.
|
||||
|
||||
HBRUSH m_hBrush;
|
||||
|
||||
m_hBrush = CreateSolidBrush(RGB( 255, 169, 128));
|
||||
|
||||
switch( nCtlColor ){
|
||||
case CTLCOLOR_DLG:
|
||||
pDC->SetBkColor(RGB( 255, 255, 255));
|
||||
pDC->SetTextColor(RGB( 0, 0, 0));
|
||||
return m_hBrush;
|
||||
break;
|
||||
case CTLCOLOR_STATIC:
|
||||
pDC->SetBkColor(RGB( 255, 169, 128));
|
||||
pDC->SetTextColor(RGB( 0, 0, 0));
|
||||
return m_hBrush;
|
||||
break;
|
||||
default:
|
||||
return hbr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user