// CharSkillEditDlg.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "AdminToolClient.h" #include "CharSkillEditDlg.h" #include "CharSkillPage.h" #include "GlobalFunctions.h" #include "PacketManager.h" #include #include // CCharSkillEditDlg ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CCharSkillEditDlg, CDialog) CCharSkillEditDlg::CCharSkillEditDlg(unsigned char cDlgType, CWnd* pParent) : CDialog(CCharSkillEditDlg::IDD, pParent) , m_lpParent(pParent) , m_cDlgType(cDlgType) { } CCharSkillEditDlg::~CCharSkillEditDlg() { } void CCharSkillEditDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_SKILLLEVELEDIT, m_ctrlSkillLevelEdit); DDX_Text(pDX, IDC_CURRENT_SKILL_NAME, m_strSkillName); DDX_Text(pDX, IDC_CURRENT_SKILL_LV, m_cSkillLevel); } BEGIN_MESSAGE_MAP(CCharSkillEditDlg, CDialog) ON_BN_CLICKED(IDC_SKILLLV_EDIT, OnBnClickedSkillLVEdit) END_MESSAGE_MAP() // CCharSkillEditDlg ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CCharSkillEditDlg::OnInitDialog() { CDialog::OnInitDialog(); CString strWindowText = _T("Don't use thjs dialog~ -_ -;"); if(m_cDlgType == SKILL_ADD) { strWindowText = GetLocalString("SKILL_ADD"); } else if(m_cDlgType == SKILL_EDIT) { strWindowText = GetLocalString("SKILL_EDIT"); } CCharSkillPage* lpSkillPage = static_cast(m_lpParent); CModifyCharacter* lpCharacter = lpSkillPage->GetCharacter(); SKILLSLOT& SkillSlot = lpSkillPage->GetLastSkill(); const Skill::ProtoType* lpPrototype = CSkillMgr::GetInstance().GetSkillProtoType(SkillSlot.SKILLINFO.wSkill); if((NULL != lpPrototype) && (NULL != lpCharacter)) { char cLockCount = SkillSlot.SKILLINFO.cLockCount; if(cLockCount <= CSkillMgr::MAX_SKILL_LOCKCOUNT) { m_strSkillName.Format(_T("%s"), lpPrototype[cLockCount].m_SpriteInfo.m_szName); } else { return false; } short wSkillLevel = lpCharacter->GetSkillLevelEX(SkillSlot.SKILLINFO.wSkill, cLockCount); if(-1 != wSkillLevel) { m_cSkillLevel = (unsigned char)wSkillLevel; m_ctrlSkillLevelEdit.SetCurSel((int)m_cSkillLevel); } else { m_cSkillLevel = 0; m_ctrlSkillLevelEdit.SetCurSel(0); } } else { return false; } int nSkillLV = 0; if(0 == SkillSlot.SKILLINFO.cLockCount) { nSkillLV = 1; } for(nSkillLV; nSkillLV <= CSkillMgr::MAX_SKILL_LEVEL; ++nSkillLV) { CString strSkillLevel; strSkillLevel.Format(_T("LV %d"), nSkillLV); m_ctrlSkillLevelEdit.AddString(strSkillLevel); } UpdateData(false); SetUIString(this->m_hWnd, IDC_SKILLADDEDIT_01, "IDC_SKILLADDEDIT_01"); SetWindowText(strWindowText); return TRUE; } void CCharSkillEditDlg::OnBnClickedSkillLVEdit() { CCharSkillPage* lpSkillPage = (CCharSkillPage*)m_lpParent; CModifyCharacter* lpCharacter = lpSkillPage->GetCharacter(); SKILLSLOT& SkillSlot = lpSkillPage->GetLastSkill(); CCharSkillPage::SKILL_EDIT_MODE eSkillMode = lpSkillPage->GetMode(); int iSkillLevel = m_ctrlSkillLevelEdit.GetCurSel(); if(0 == SkillSlot.SKILLINFO.cLockCount) { ++iSkillLevel; // 0´Ü°è ½ºÅ³ÀÎ °æ¿ì¿¡´Â ÄÞº¸¹Ú½º À妽º + 1 } if((CCharSkillPage::MODE_EMPTY != eSkillMode) && (-1 != iSkillLevel)) { SkillSlot.SKILLINFO.cSkillLevel = (char)iSkillLevel; CPacketMgr::GetInstance()->SendPktSkillEdit( lpCharacter->GetUID(), lpCharacter->GetCID(), lpCharacter->GetServerGroup(), lpCharacter->GetClientKey(), SkillSlot.SKILLINFO.wSkill, (char)iSkillLevel, SkillSlot.SKILLINFO.cLockCount, lpSkillPage->GetMode()); } EndDialog(IDOK); }