// CharStatusPage.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "AdminToolClient.h" #include "CharStatusPage.h" #include "PacketManager.h" #include "GlobalFunctions.h" #include #include #include #include // CCharStatusPage ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CCharStatusPage, CPropertyPage) CCharStatusPage::CCharStatusPage() : CPropertyPage(CCharStatusPage::IDD) , m_lpStatusPageInfo( NULL ) , m_dwFame(0) , m_dwMileage(0) , m_dwLV(0) , m_dwSTR(0) , m_dwDEX(0) , m_dwWIS(0) , m_dwINT(0) , m_dwCON(0) , m_dwIP(0) , m_dwHP(0) , m_dwMP(0) , m_dwEXP(0) , m_dwEXPLimit(0) , m_dwDocKey(0) { } CCharStatusPage::~CCharStatusPage() { } void CCharStatusPage::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); DDX_Control(pDX, IDC_CHARSEX, m_ctrlCharSex); DDX_Control(pDX, IDC_CHARHAIR, m_ctrlCharHair); DDX_Control(pDX, IDC_CHARFACE, m_ctrlCharFace); DDX_Control(pDX, IDC_CHARNATIONALITY, m_ctrlCharRace); DDX_Control(pDX, IDC_CHARCLASS, m_ctrlCharClass); DDX_Text(pDX, IDC_STATUS_FAME, m_dwFame); DDX_Text(pDX, IDC_STATUS_MILEAGE, m_dwMileage); DDX_Text(pDX, IDC_STATUS_LV, m_dwLV); DDX_Text(pDX, IDC_STATUS_STR, m_dwSTR); DDX_Text(pDX, IDC_STATUS_DEX, m_dwDEX); DDX_Text(pDX, IDC_STATUS_WIS, m_dwWIS); DDX_Text(pDX, IDC_STATUS_INT, m_dwINT); DDX_Text(pDX, IDC_STATUS_CON, m_dwCON); DDX_Text(pDX, IDC_STATUS_IP, m_dwIP); DDX_Text(pDX, IDC_STATUS_HP, m_dwHP); DDX_Text(pDX, IDC_STATUS_MP, m_dwMP); DDX_Text(pDX, IDC_STATUS_EXP, m_dwEXP); DDX_Text(pDX, IDC_STATUS_EXPLIMIT, m_dwEXPLimit); } BEGIN_MESSAGE_MAP(CCharStatusPage, CPropertyPage) ON_BN_CLICKED(IDC_UPDATE_STATUS, OnBnClickedUpdateStatus) END_MESSAGE_MAP() // CCharStatusPage ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CCharStatusPage::OnInitDialog() { CPropertyPage::OnInitDialog(); // ¼ºº° m_ctrlCharSex.InsertString(0, GetLocalString("MALE")); m_ctrlCharSex.InsertString(1, GetLocalString("FEMALE")); // ¸Ó¸®¸ð¾ç°ú ¾ó±¼ for(int nIndex = 1; nIndex < 8; ++nIndex) { CString strFaceandHair; strFaceandHair.Format(_T("Type %d"), nIndex); m_ctrlCharFace.AddString(strFaceandHair); m_ctrlCharHair.AddString(strFaceandHair); } // Á¾Á· (³ªÁß¿¡ ÄÞº¸¹Ú½º À妽º¸¦ ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Àμ­Æ®ÇÒ¶§ À妽º ¾ö¼ö) for(unsigned int nIndex = 0; nIndex < CClass::MAX_RACE; ++nIndex) { m_ctrlCharRace.InsertString(nIndex, GetRaceString(nIndex)); } // Ŭ·¡½º (³ªÁß¿¡ ÄÞº¸¹Ú½º À妽º¸¦ ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Àμ­Æ®ÇÒ¶§ À妽º ¾ö¼ö) for(int nClass = 0; nClass < CClass::MAX_CLASS; ++nClass) { m_ctrlCharClass.InsertString(nClass, GetClassString(nClass)); } if(NULL == m_lpStatusPageInfo) { GetDlgItem(IDC_UPDATE_STATUS)->EnableWindow(false); } SetUIString(this->m_hWnd, IDC_STATUSPAGE_01, "IDC_STATUSPAGE_01"); SetUIString(this->m_hWnd, IDC_STATUSPAGE_02, "IDC_STATUSPAGE_02"); SetUIString(this->m_hWnd, IDC_STATUSPAGE_03, "IDC_STATUSPAGE_03"); SetUIString(this->m_hWnd, IDC_STATUSPAGE_04, "IDC_STATUSPAGE_04"); SetUIString(this->m_hWnd, IDC_STATUSPAGE_05, "IDC_STATUSPAGE_05"); SetUIString(this->m_hWnd, IDC_STATUSPAGE_06, "IDC_STATUSPAGE_06"); SetUIString(this->m_hWnd, IDC_STATUSPAGE_07, "IDC_STATUSPAGE_07"); SetUIString(this->m_hWnd, IDC_STATUSPAGE_08, "IDC_STATUSPAGE_08"); SetUIString(this->m_hWnd, IDC_UPDATE_STATUS, "IDC_UPDATE_STATUS"); SetUIString(this->m_hWnd, IDC_STATCHANCE, "ADDED_STRING_082"); SetUIString(this->m_hWnd, IDC_NATION_STATIC, "ADDED_STRING_083"); return TRUE; } bool CCharStatusPage::SetStatusPageData(unsigned int dwDocKey, CModifyCharacter* lpModifyCharacter) { if(NULL != lpModifyCharacter && 0 != dwDocKey) { m_lpStatusPageInfo = lpModifyCharacter; m_dwDocKey = dwDocKey; GetDlgItem(IDC_UPDATE_STATUS)->EnableWindow(true); return true; } else { GetDlgItem(IDC_UPDATE_STATUS)->EnableWindow(false); } return false; } bool CCharStatusPage::SetStatusPage(CModifyCharacter* lpCharInfo) { m_dwEXPLimit = 0; if(NULL != lpCharInfo) { PktAdminMgr::CHAR_STATUS_ST CharStatusInfo; lpCharInfo->GetModifyCharStatus(CharStatusInfo); m_ctrlCharRace.SetCurSel((int)lpCharInfo->GetRace()); m_dwLV = (unsigned int)CharStatusInfo.m_cLevel; m_ctrlCharClass.SetCurSel((unsigned int)CharStatusInfo.m_nClass); m_dwEXP = (unsigned long)CharStatusInfo.m_dwExp; if(m_dwLV > 0 && m_dwLV < Creature::PC_MAX_LEVEL) m_dwEXPLimit = (unsigned long)EXP::ExpTable[m_dwLV-1]; m_ctrlCharSex.SetCurSel ((unsigned int)CharStatusInfo.m_cSex - 1); m_ctrlCharFace.SetCurSel((unsigned int)CharStatusInfo.m_cFace - 1); m_ctrlCharHair.SetCurSel((unsigned int)CharStatusInfo.m_cHair - 1); m_dwFame = (unsigned long)CharStatusInfo.m_dwFame; m_dwMileage = (unsigned long)CharStatusInfo.m_dwMileage; m_dwSTR = (unsigned int)CharStatusInfo.m_nSTR; m_dwDEX = (unsigned int)CharStatusInfo.m_nDEX; m_dwCON = (unsigned int)CharStatusInfo.m_nCON; m_dwWIS = (unsigned int)CharStatusInfo.m_nWIS; m_dwINT = (unsigned int)CharStatusInfo.m_nINT; m_dwIP = (unsigned int)CharStatusInfo.m_nIP; m_dwHP = (unsigned long)lpCharInfo->GetMaxHP(); m_dwMP = (unsigned long)lpCharInfo->GetMaxMP(); SetDlgItemText(IDC_STATUS_NATION, GetNationString(lpCharInfo->GetUserNation())); SetDlgItemInt(IDC_STATUS_CHANCE, (unsigned int)lpCharInfo->GetChance(), false); } else { m_dwFame = m_dwMileage = m_dwLV = 0; m_dwSTR = m_dwDEX = m_dwCON = m_dwWIS = m_dwINT = m_dwIP = 0; m_dwHP = m_dwMP = 0; m_dwEXP = 0; m_ctrlCharRace.SetCurSel(CB_ERR); m_ctrlCharClass.SetCurSel(CB_ERR); m_ctrlCharSex.SetCurSel(CB_ERR); m_ctrlCharFace.SetCurSel(CB_ERR); m_ctrlCharHair.SetCurSel(CB_ERR); SetDlgItemInt(IDC_STATUS_CHANCE, 0, false); } UpdateData(false); return true; } void CCharStatusPage::OnBnClickedUpdateStatus() { PktAdminMgr::CHAR_STATUS_ST stStatus; UpdateData(true); CString strGetString; m_ctrlCharRace.GetLBText(m_ctrlCharRace.GetCurSel(), strGetString); if(0 == strGetString.CompareNoCase(_T("UNKNOWN"))) { MessageBox(GetLocalString("MSG_0168")); return; } stStatus.m_cRace = (char)m_ctrlCharRace.GetCurSel(); stStatus.m_cLevel = m_dwLV; stStatus.m_nClass = m_ctrlCharClass.GetCurSel(); stStatus.m_dwExp = m_dwEXP; stStatus.m_cFace = m_ctrlCharFace.GetCurSel() + 1; stStatus.m_cHair = m_ctrlCharHair.GetCurSel() + 1; stStatus.m_cSex = m_ctrlCharSex.GetCurSel() + 1; stStatus.m_dwFame = m_dwFame; stStatus.m_dwMileage = m_dwMileage; stStatus.m_nCON = m_dwCON; stStatus.m_nDEX = m_dwDEX; stStatus.m_nINT = m_dwINT; stStatus.m_nSTR = m_dwSTR; stStatus.m_nWIS = m_dwWIS; stStatus.m_nIP = m_dwIP; stStatus.m_cChance = (char)GetDlgItemInt(IDC_STATUS_CHANCE, 0, false); if(NULL != m_lpStatusPageInfo) { CPacketMgr::GetInstance()->SendUpdateStatus(m_lpStatusPageInfo->GetServerGroup(), m_lpStatusPageInfo->GetCID(), m_lpStatusPageInfo->GetUID(), m_dwDocKey, stStatus); } }