Files
Client/Server/AdminTool/AdminToolClient/ItemManageDlg.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

895 lines
32 KiB
C++

// ItemManageDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "AdminToolClient.h"
#include "ItemManageDlg.h"
#include "WindowMgr.h"
#include "GlobalFunctions.h"
#include "PacketManager.h"
#include "ItemDistributeDlg.h"
#include <Item/Item.h>
#include <Item/ItemMgr.h>
#include <Item/ItemFactory.h>
#include <Character/ModifyCharacter.h>
#include ".\itemmanagedlg.h"
// CItemManageDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CItemManageDlg, CDialog)
CItemManageDlg::CItemManageDlg(MANAGE_TYPE cType, CWnd* pParent /*=NULL*/)
: CDialog(CItemManageDlg::IDD, pParent)
, m_cManageType(cType)
, m_strNewItemName(_T(""))
{
INSERT_WINDOW(IDD_ITEMMANAGEDLG, static_cast<CWnd*>(this));
}
CItemManageDlg::~CItemManageDlg()
{
ERASE_WINDOW(IDD_ITEMMANAGEDLG);
}
void CItemManageDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_NEWIM_NEWITEMNAME_EDIT, m_strNewItemName);
}
BEGIN_MESSAGE_MAP(CItemManageDlg, CDialog)
ON_BN_CLICKED(IDC_NEWIM_CREATEPLURAL_BTN, OnBnClickedNewimCreatepluralBtn)
ON_BN_CLICKED(IDC_NEWIM_CREATESING_BTN, OnBnClickedNewimCreatesingBtn)
ON_BN_CLICKED(IDC_NEWIM_UPDATE_BTN, OnBnClickedNewimUpdateBtn)
ON_BN_CLICKED(IDC_NEWIM_ITEMINFOINIT_BTN, OnBnClickedNewimIteminfoinitBtn)
ON_BN_CLICKED(IDC_NEWIM_ITEMDISTRIBUTE_BTN, OnBnClickedNewimItemdistributeBtn)
ON_BN_CLICKED(IDC_NEWIM_CALCGRADE_BTN, OnBnClickedNewimCalcgradeBtn)
ON_BN_CLICKED(IDC_CONVERT_BTN, OnBnClickedConvertBtn)
ON_BN_CLICKED(IDC_APPLY_BTN, OnBnClickedApplyBtn)
END_MESSAGE_MAP()
// CItemManageDlg 메시지 처리기입니다.
BOOL CItemManageDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ClearToZero();
CString strDlgTitle;
CString strSerial;
// ZeroMemory(&g_stMyItemInfo.m_stItemInfo, sizeof(g_stMyItemInfo.m_stItemInfo));
switch(m_cManageType)
{
case MANAGE_TYPE::CREATE: // 완전히 새로운 아이템 생성
{
strDlgTitle = GetLocalString("ITEM_CREATE_DLG");
GetDlgItem(IDC_NEWIM_ITEMINFOINIT_BTN)->EnableWindow(true);
GetDlgItem(IDC_NEWIM_NEWITEMNAME_EDIT)->EnableWindow(true);
GetDlgItem(IDC_NEWIM_CREATEPLURAL_BTN)->EnableWindow(true);
GetDlgItem(IDC_NEWIM_CREATESING_BTN)->EnableWindow(true);
//GetDlgItem(IDC_NEWIM_ITEMDISTRIBUTE_BTN)->EnableWindow(true);
GetDlgItem(IDC_APPLY_BTN)->EnableWindow(true);
// 아이템 생성시 시즌 레코드는 1로 강제
SetDlgItemInt(IDC_NEWIM_SEASONRECORD_EDIT, 1, FALSE);
SetDlgItemInt(IDC_NEWIM_CORELEVEL_EDIT, 0, FALSE);
}
break;
case MANAGE_TYPE::CREATE_ADMINSTORE: // 운영창고의 아이템 속성으로 지급하는 경우
{
strDlgTitle = GetLocalString("ITEM_CREATE_ADMINSTORE_DLG");
InitItemData(CREATE_ADMINSTORE);
// 기존의 속성 그대로 생성해야 하기 때문에 수정 가능한 속성이 없도록 셋팅
EnableEditBox(false);
GetDlgItem(IDC_NEWIM_NUMORDUR_EDIT)->EnableWindow(false);
GetDlgItem(IDC_NEWIM_CREATEPLURAL_BTN)->EnableWindow(true);
GetDlgItem(IDC_NEWIM_CREATESING_BTN)->EnableWindow(true);
//GetDlgItem(IDC_NEWIM_ITEMDISTRIBUTE_BTN)->EnableWindow(true);
}
break;
case MANAGE_TYPE::EDIT: // 인벤토리나 창고에 있는 아이템 수정
{
strDlgTitle = GetLocalString("ITEM_EDIT_DLG");
InitItemData(EDIT);
strSerial.Format(_T("0x%016I64X"), g_stMyItemInfo.m_dwItemSerial);
SetDlgItemText(IDC_NEWIM_ITEMSERIAL_EDIT, strSerial);
SetDlgItemText(IDC_NEWIM_ITEMNAME_EDIT, g_stMyItemInfo.m_szItemName);
GetDlgItem(IDC_NEWIM_UPDATE_BTN)->EnableWindow(true);
}
break;
case MANAGE_TYPE::EDIT_ADMINSTORE: // 운영창고에 있는 아이템 수정
{
strDlgTitle = GetLocalString("ADMINSTORE_ITEM_EDIT_DLG");
InitItemData(EDIT_ADMINSTORE);
SetDlgItemText(IDC_NEWIM_ITEMNAME_EDIT, m_strNewItemName);
GetDlgItem(IDC_NEWIM_UPDATE_BTN)->EnableWindow(true);
}
break;
default:
{
strDlgTitle = GetLocalString("MSG_0143");
}
break;
}
SetWindowText(strDlgTitle);
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_01, "IDC_ITEMMANAGE_01");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_02, "IDC_ITEMMANAGE_02");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_03, "IDC_ITEMMANAGE_03");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_04, "IDC_ITEMMANAGE_04");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_05, "IDC_ITEMMANAGE_05");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_06, "IDC_ITEMMANAGE_06");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_07, "IDC_ITEMMANAGE_07");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_08, "IDC_ITEMMANAGE_08");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_09, "IDC_ITEMMANAGE_09");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_10, "IDC_ITEMMANAGE_10");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_11, "IDC_ITEMMANAGE_11");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_12, "IDC_ITEMMANAGE_12");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_13, "IDC_ITEMMANAGE_13");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_14, "IDC_ITEMMANAGE_14");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_15, "IDC_ITEMMANAGE_15");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_16, "IDC_ITEMMANAGE_16");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_17, "IDC_ITEMMANAGE_17");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_18, "IDC_ITEMMANAGE_18");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_19, "IDC_ITEMMANAGE_19");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_20, "IDC_ITEMMANAGE_20");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_21, "IDC_ITEMMANAGE_21");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_22, "IDC_ITEMMANAGE_22");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_23, "IDC_ITEMMANAGE_23");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_24, "IDC_ITEMMANAGE_24");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_25, "IDC_ITEMMANAGE_25");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_26, "IDC_ITEMMANAGE_26");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_27, "IDC_ITEMMANAGE_27");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_28, "IDC_ITEMMANAGE_28");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_29, "IDC_ITEMMANAGE_29");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_30, "IDC_ITEMMANAGE_30");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_31, "IDC_ITEMMANAGE_31");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_32, "IDC_ITEMMANAGE_32");
SetUIString(this->m_hWnd, IDC_ITEMMANAGE_33, "IDC_ITEMMANAGE_33");
SetUIString(this->m_hWnd, IDC_NEWIM_CALCGRADE_BTN, "IDC_NEWIM_CALCGRADE_BTN");
SetUIString(this->m_hWnd, IDC_NEWIM_UPDATE_BTN, "IDC_NEWIM_UPDATE_BTN");
SetUIString(this->m_hWnd, IDC_NEWIM_CREATEPLURAL_BTN, "IDC_NEWIM_CREATEPLURAL_BTN");
SetUIString(this->m_hWnd, IDC_NEWIM_CREATESING_BTN, "IDC_NEWIM_CREATESING_BTN");
SetUIString(this->m_hWnd, IDC_PROTOTYPEID_STATIC, "ADDED_STRING_032");
SetUIString(this->m_hWnd, IDC_GEMCONFER1_STATIC, "ADDED_STRING_065");
SetUIString(this->m_hWnd, IDC_GEMCONFER2_STATIC, "ADDED_STRING_066");
SetUIString(this->m_hWnd, IDC_GEMCONFER3_STATIC, "ADDED_STRING_067");
SetUIString(this->m_hWnd, IDC_GEMCONFER4_STATIC, "ADDED_STRING_068");
SetUIString(this->m_hWnd, IDC_GEMCONFER5_STATIC, "ADDED_STRING_069");
return TRUE;
}
void CItemManageDlg::InitItemData(MANAGE_TYPE cFlag)
{
UpdateData(true);
Item::CItem* lpItem = NULL;
const Item::ItemInfo* lpItemInfo;
if((CREATE == cFlag) || (EDIT_ADMINSTORE == cFlag) || (CREATE_ADMINSTORE == cFlag))
{
if (false == m_strNewItemName.IsEmpty())
{
TCHAR szInputedItemName[60];
_sntprintf(szInputedItemName, 60, _T("%s"), m_strNewItemName);
lpItemInfo =
Item::CItemMgr::GetInstance().GetItemInfoFromItemName(CONV_NETSTRING(szInputedItemName));
if(NULL == lpItemInfo)
{
Report(GetLocalString("MSG_0102"), CAUTION);
return;
}
lpItem = Item::CItemFactory::GetInstance().CreateItem(lpItemInfo->m_usProtoTypeID);
}
else
{
Report(GetLocalString("MSG_0103"), CAUTION);
return;
}
}
else if(EDIT == cFlag)
{
lpItem = g_stMyItemInfo.m_lpModifyCharInfo->UIDbyItem(
g_stMyItemInfo.m_dwItemSerial, g_stMyItemInfo.m_cTakeType);
}
if (NULL == lpItem)
{
Report(GetLocalString("MSG_0104"), CAUTION);
return;
}
if ((EDIT_ADMINSTORE == cFlag) || (CREATE_ADMINSTORE == cFlag))
{
lpItem->SetNumOrDurability(g_stMyItemInfo.m_stItemInfo.m_cNumOrDurability);
}
Item::CEquipment* lpEquipment = Item::CEquipment::DowncastToEquipment(lpItem);
if (NULL != lpEquipment)
{
EnableEditBox(true);
if ((EDIT_ADMINSTORE == cFlag) || (CREATE_ADMINSTORE == cFlag))
{
lpEquipment->SetNumOrDurability(g_stMyItemInfo.m_stItemInfo.m_cNumOrDurability);
static_cast<CModifyEquipment*>(lpEquipment)->AdjustData(g_stMyItemInfo.m_stItemInfo);
}
short ItemAttribute[Item::Attribute::MAX_ATTRIBUTE_NUM];
unsigned char cSocket[Item::EquipmentInfo::MAX_SOCKET_NUM];
lpEquipment->GetAttribute(ItemAttribute, sizeof(ItemAttribute));
lpEquipment->GetSocket(cSocket, sizeof(cSocket));
SetDlgItemInt(IDC_NEWIM_MAXDAMAGE_EDIT, ItemAttribute[Item::Attribute::MAX_DAMAGE], FALSE);
SetDlgItemInt(IDC_NEWIM_MINDAMAGE_EDIT, ItemAttribute[Item::Attribute::MIN_DAMAGE], FALSE);
SetDlgItemInt(IDC_NEWIM_ARMOR_EDIT, ItemAttribute[Item::Attribute::ARMOR], FALSE);
SetDlgItemInt(IDC_NEWIM_HITRATE_EDIT, ItemAttribute[Item::Attribute::HIT_RATE], FALSE);
SetDlgItemInt(IDC_NEWIM_EVADE_EDIT, ItemAttribute[Item::Attribute::EVADE], FALSE);
SetDlgItemInt(IDC_NEWIM_MAXHP_EDIT, ItemAttribute[Item::Attribute::MAX_HP] * 10, FALSE);
SetDlgItemInt(IDC_NEWIM_HPREGEN_EDIT, ItemAttribute[Item::Attribute::HP_REGEN], FALSE);
SetDlgItemInt(IDC_NEWIM_MAXMP_EDIT, ItemAttribute[Item::Attribute::MAX_MP] * 10, FALSE);
SetDlgItemInt(IDC_NEWIM_MPREGEN_EDIT, ItemAttribute[Item::Attribute::MP_REGEN], FALSE);
SetDlgItemInt(IDC_NEWIM_CRITICAL_EDIT, ItemAttribute[Item::Attribute::CRITICAL], FALSE);
SetDlgItemInt(IDC_NEWIM_BLOCK_EDIT, ItemAttribute[Item::Attribute::BLOCK], FALSE);
SetDlgItemInt(IDC_NEWIM_SPEED_EDIT, ItemAttribute[Item::Attribute::SPEED], FALSE);
SetDlgItemInt(IDC_NEWIM_MAGICPOWER_EDIT, ItemAttribute[Item::Attribute::MAGIC_POWER], FALSE);
SetDlgItemInt(IDC_NEWIM_MAGICRESI_EDIT, ItemAttribute[Item::Attribute::MAGIC_RESIST], FALSE);
SetDlgItemInt(IDC_NEWIM_RUNESOCKET_EDIT, lpEquipment->GetRuneSocket(0), FALSE);
SetDlgItemInt(IDC_NEWIM_RUNESOCKET2_EDIT, lpEquipment->GetRuneSocket(1), FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKETNUM_EDIT, lpEquipment->GetCurrentSocketNum(), FALSE);
SetDlgItemInt(IDC_NEWIM_MAXSOCKETNUM_EDIT, lpEquipment->GetMaxSocketNum(), FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET1_EDIT, cSocket[0], FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET2_EDIT, cSocket[1], FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET3_EDIT, cSocket[2], FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET4_EDIT, cSocket[3], FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET5_EDIT, cSocket[4], FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET6_EDIT, cSocket[5], FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET7_EDIT, cSocket[6], FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET8_EDIT, cSocket[7], FALSE);
SetDlgItemInt(IDC_NEWIM_UPGRADELV_EDIT, lpEquipment->GetUpgradeLevel(), FALSE);
SetDlgItemInt(IDC_NEWIM_NUMORDUR_EDIT, lpEquipment->GetNumOrDurability(), FALSE);
SetDlgItemInt(IDC_NEWIM_MAXDUR_EDIT, lpEquipment->GetMaxNumOrDurability(), FALSE);
if ((EDIT == cFlag) || (EDIT_ADMINSTORE == cFlag) || (CREATE_ADMINSTORE == cFlag))
{
SetDlgItemInt(IDC_NEWIM_SEASONRECORD_EDIT, lpEquipment->GetSeasonRecord(), FALSE);
SetDlgItemInt(IDC_NEWIM_CORELEVEL_EDIT, lpEquipment->GetCoreLevel(), FALSE);
}
else
{
SetDlgItemInt(IDC_NEWIM_SEASONRECORD_EDIT, 1, FALSE);
SetDlgItemInt(IDC_NEWIM_CORELEVEL_EDIT, 0, FALSE);
}
}
else
{
EnableEditBox(false);
SetDlgItemInt(IDC_NEWIM_MAXDAMAGE_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MINDAMAGE_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_ARMOR_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_HITRATE_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_EVADE_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAXHP_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_HPREGEN_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAXMP_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MPREGEN_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_CRITICAL_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_BLOCK_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SPEED_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAGICPOWER_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAGICRESI_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_RUNESOCKET_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKETNUM_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAXSOCKETNUM_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET1_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET2_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET3_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET4_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET5_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET6_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET7_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET8_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_UPGRADELV_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAXDUR_EDIT, 0, FALSE);
unsigned int dwNumOrDur =
(cFlag == EDIT) || (cFlag == EDIT_ADMINSTORE) || (cFlag == CREATE_ADMINSTORE)
? lpItem->GetNumOrDurability() : lpItem->GetItemInfo().m_DetailData.m_cDefaultDurabilityOrStack;
SetDlgItemInt(IDC_NEWIM_NUMORDUR_EDIT, dwNumOrDur, FALSE);
}
if ((CREATE == cFlag) || (EDIT_ADMINSTORE == cFlag) || (CREATE_ADMINSTORE == cFlag))
{
DELETE_ITEM(lpItem);
}
}
bool CItemManageDlg::SetManageItemData(bool bUpdateData)
{
if (true == bUpdateData)
{
UpdateData(true);
}
if (TRUE == ExistEmptyItem())
{
Report(GetLocalString("MSG_0164"), CAUTION);
return false;
}
const int MAX_ITEM_NAME = 64;
TCHAR szItemName[MAX_ITEM_NAME];
const Item::ItemInfo* lpItemInfo = NULL;
if (g_stMyItemInfo.m_nModeIndex == MyItemInfo::CREATE_PLURAL
|| g_stMyItemInfo.m_nModeIndex == MyItemInfo::CREATE_SINGLE
|| g_stMyItemInfo.m_nModeIndex == MyItemInfo::EDIT_ADMINSTORE
|| g_stMyItemInfo.m_nModeIndex == MyItemInfo::CREATE_DISTRIBUTE)
{
_sntprintf(szItemName, MAX_ITEM_NAME, _T("%s"), m_strNewItemName);
lpItemInfo = Item::CItemMgr::GetInstance().GetItemInfoFromItemName(CONV_NETSTRING(szItemName));
}
else if(g_stMyItemInfo.m_nModeIndex == MyItemInfo::EDIT)
{
Item::CItem *lpGetItemInfo =
g_stMyItemInfo.m_lpModifyCharInfo->UIDbyItem(
g_stMyItemInfo.m_dwItemSerial, g_stMyItemInfo.m_cTakeType);
lpItemInfo = &(lpGetItemInfo->GetItemInfo());
CopyMemory(szItemName, lpItemInfo->m_SpriteData.m_szName, sizeof(char) * MAX_ITEM_NAME);
Item::ItemPos ItemPos = lpGetItemInfo->GetPos();
g_stMyItemInfo.m_stItemInfo.m_cTakePos = (unsigned char)lpGetItemInfo->GetItemPos();
g_stMyItemInfo.m_stItemInfo.m_cXPos = ItemPos.GetXIndex();
g_stMyItemInfo.m_stItemInfo.m_cYPos = ItemPos.GetYIndex();
g_stMyItemInfo.m_stItemInfo.m_cZPos = ItemPos.GetZIndex();
}
if (NULL == lpItemInfo)
{
Report(GetLocalString("MSG_0165"), CAUTION);
return false;
}
unsigned int nNumOrDur = GetDlgItemInt(IDC_NEWIM_NUMORDUR_EDIT, 0, FALSE);
// 장비가 아닌 아이템일 경우 스택 기본값과 최대값 사이에서 스택이 되도록 조정
if (Item::DetailData::EQUIP != lpItemInfo->m_DetailData.m_dwFlags)
{
if (0 == nNumOrDur)
{
nNumOrDur = lpItemInfo->m_DetailData.m_cDefaultDurabilityOrStack;
}
else if(nNumOrDur > lpItemInfo->m_DetailData.m_cMaxDurabilityOrStack)
{
nNumOrDur = lpItemInfo->m_DetailData.m_cMaxDurabilityOrStack;
}
}
g_stMyItemInfo.m_stItemInfo.m_cNumOrDurability = nNumOrDur;
g_stMyItemInfo.m_stItemInfo.m_cMaxDurability = GetDlgItemInt(IDC_NEWIM_MAXDUR_EDIT, 0, FALSE);
g_stMyItemInfo.m_stItemInfo.m_cUpgradeLevel = GetDlgItemInt(IDC_NEWIM_UPGRADELV_EDIT, 0, FALSE);
CopyMemory(g_stMyItemInfo.m_szItemName, lpItemInfo->m_SpriteData.m_szName, MAX_ITEM_NAME);
g_stMyItemInfo.m_SizeX = lpItemInfo->m_DetailData.m_cXSize;
g_stMyItemInfo.m_SizeY = lpItemInfo->m_DetailData.m_cYSize;
short ItemAttribute[Item::Attribute::MAX_ATTRIBUTE_NUM];
unsigned char cSocket[Item::EquipmentInfo::MAX_SOCKET_NUM];
ZeroMemory(ItemAttribute, sizeof(ItemAttribute));
ZeroMemory(cSocket, sizeof(cSocket));
CopyMemory(ItemAttribute,
lpItemInfo->m_EquipAttribute.m_usAttributeValue, Item::Attribute::MAX_ATTRIBUTE_NUM);
CopyMemory(g_stMyItemInfo.m_stItemInfo.m_szItemName,
lpItemInfo->m_SpriteData.m_szName, sizeof(char) * PktAdminMgr::MAX_LENGEH::MAX_ITEM_NAME);
// 속성 (※ 속성중에 클라이언트에서 보여지는 값이 다른 경우가 있음. 주의!)
ItemAttribute[Item::Attribute::MAX_DAMAGE] = GetDlgItemInt(IDC_NEWIM_MAXDAMAGE_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::MIN_DAMAGE] = GetDlgItemInt(IDC_NEWIM_MINDAMAGE_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::ARMOR] = GetDlgItemInt(IDC_NEWIM_ARMOR_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::HIT_RATE] = GetDlgItemInt(IDC_NEWIM_HITRATE_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::EVADE] = GetDlgItemInt(IDC_NEWIM_EVADE_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::MAX_HP] = (unsigned short)(GetDlgItemInt(IDC_NEWIM_MAXHP_EDIT, 0, FALSE) / 10);
ItemAttribute[Item::Attribute::HP_REGEN] = GetDlgItemInt(IDC_NEWIM_HPREGEN_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::MAX_MP] = (unsigned short)(GetDlgItemInt(IDC_NEWIM_MAXMP_EDIT, 0, FALSE) / 10);
ItemAttribute[Item::Attribute::MP_REGEN] = GetDlgItemInt(IDC_NEWIM_MPREGEN_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::CRITICAL] = GetDlgItemInt(IDC_NEWIM_CRITICAL_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::BLOCK] = GetDlgItemInt(IDC_NEWIM_BLOCK_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::SPEED] = GetDlgItemInt(IDC_NEWIM_SPEED_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::MAGIC_POWER] = GetDlgItemInt(IDC_NEWIM_MAGICPOWER_EDIT, 0, FALSE);
ItemAttribute[Item::Attribute::MAGIC_RESIST] = GetDlgItemInt(IDC_NEWIM_MAGICRESI_EDIT, 0, FALSE);
CopyMemory(g_stMyItemInfo.m_stItemInfo.m_usAttribute,
ItemAttribute, sizeof(short) * Item::Attribute::MAX_ATTRIBUTE_NUM);
// 룬 소켓
g_stMyItemInfo.m_stItemInfo.m_usRuneSocket[0] = GetDlgItemInt(IDC_NEWIM_RUNESOCKET_EDIT, 0, FALSE);
g_stMyItemInfo.m_stItemInfo.m_usRuneSocket[1] = GetDlgItemInt(IDC_NEWIM_RUNESOCKET2_EDIT, 0, FALSE);
// 주얼 소켓
g_stMyItemInfo.m_stItemInfo.m_cCurrentSocketNum = GetDlgItemInt(IDC_NEWIM_SOCKETNUM_EDIT, 0, FALSE);
g_stMyItemInfo.m_stItemInfo.m_cMaxSocketNum = GetDlgItemInt(IDC_NEWIM_MAXSOCKETNUM_EDIT, 0, FALSE);
cSocket[0] = GetDlgItemInt(IDC_NEWIM_SOCKET1_EDIT, 0, FALSE);
cSocket[1] = GetDlgItemInt(IDC_NEWIM_SOCKET2_EDIT, 0, FALSE);
cSocket[2] = GetDlgItemInt(IDC_NEWIM_SOCKET3_EDIT, 0, FALSE);
cSocket[3] = GetDlgItemInt(IDC_NEWIM_SOCKET4_EDIT, 0, FALSE);
cSocket[4] = GetDlgItemInt(IDC_NEWIM_SOCKET5_EDIT, 0, FALSE);
cSocket[5] = GetDlgItemInt(IDC_NEWIM_SOCKET6_EDIT, 0, FALSE);
cSocket[6] = GetDlgItemInt(IDC_NEWIM_SOCKET7_EDIT, 0, FALSE);
cSocket[7] = GetDlgItemInt(IDC_NEWIM_SOCKET8_EDIT, 0, FALSE);
CopyMemory(g_stMyItemInfo.m_stItemInfo.m_cSocket,
cSocket, sizeof(unsigned char) * Item::EquipmentInfo::MAX_SOCKET_NUM);
// 시즌 레코드
g_stMyItemInfo.m_stItemInfo.m_cSeasonRecord = GetDlgItemInt(IDC_NEWIM_SEASONRECORD_EDIT, 0, FALSE);
g_stMyItemInfo.m_stItemInfo.m_cCoreLevel = GetDlgItemInt(IDC_NEWIM_CORELEVEL_EDIT, 0, FALSE);
if (true == IsValidItemValue())
{
Item::CItem* lpItem = Item::CItemFactory::GetInstance().CreateItem(lpItemInfo->m_usProtoTypeID);
Item::CEquipment* lpEquipment = Item::CEquipment::DowncastToEquipment(lpItem);
if(NULL != lpEquipment)
{
for(unsigned char cAttributeIndex = 0;
cAttributeIndex < Item::Attribute::MAX_ATTRIBUTE_NUM;
++cAttributeIndex)
{
lpEquipment->SetAttribute(static_cast<Item::Attribute::Type>(cAttributeIndex), ItemAttribute[cAttributeIndex]);
}
lpEquipment->CalculateItemGrade();
Item::Grade::GradeInfo gradeInfo = lpEquipment->GetItemGrade();
m_ManageItemGrade.m_cPlus = gradeInfo.m_cPlus;
m_ManageItemGrade.m_eItemGrade = gradeInfo.m_eItemGrade;
CopyMemory(m_ManageItemGrade.m_aryAttributeGrade, gradeInfo.m_aryAttributeGrade, sizeof(short) * Item::Attribute::MAX_ATTRIBUTE_NUM);
}
DELETE_ITEM(lpItem);
return true;
}
return false;
}
void CItemManageDlg::CalculateItemGrade()
{
m_ManageItemGrade = Item::Grade::GradeInfo();
const Item::ItemInfo* lpItemInfo =
Item::CItemMgr::GetInstance().GetItemInfoFromItemName(g_stMyItemInfo.m_szItemName);
if(0 == lpItemInfo->m_DetailData.m_wDropOption)
{
Report(GetLocalString("MSG_0166"), CAUTION);
m_ManageItemGrade.m_eItemGrade = Item::EquipType::MAX_GRADE;
return;
}
for(unsigned char cAttributeIndex = 0; cAttributeIndex < Item::Attribute::MAX_ATTRIBUTE_NUM; ++cAttributeIndex)
{
const float fGradeFactor =
(g_stMyItemInfo.m_stItemInfo.m_usAttribute[cAttributeIndex] -
lpItemInfo->m_EquipAttribute.m_usAttributeValue[cAttributeIndex]) /
static_cast<float>(lpItemInfo->m_DetailData.m_wDropOption);
// D 그레이드를 초과하면 F 그레이드가 된다.
for(unsigned char cGradeIndex = 0; cGradeIndex <= Item::EquipType::D_GRADE; ++cGradeIndex)
{
const Item::CItemType::ArrayType eEquipType =
Item::CItemType::GetEquipType(lpItemInfo->m_DetailData.m_dwFlags);
const float fGradeValue = Item::Grade::GetGradeValue(eEquipType, Item::Grade::VALUE_GRADE,
static_cast<Item::EquipType::Grade>(cGradeIndex), static_cast<Item::Attribute::Type>(cAttributeIndex));
if(0 != fGradeValue && fGradeFactor > fGradeValue)
{
m_ManageItemGrade.m_aryAttributeGrade[cAttributeIndex] = static_cast<Item::EquipType::Grade>(cGradeIndex);
if(m_ManageItemGrade.m_eItemGrade > m_ManageItemGrade.m_aryAttributeGrade[cAttributeIndex])
{
m_ManageItemGrade.m_eItemGrade = m_ManageItemGrade.m_aryAttributeGrade[cAttributeIndex];
m_ManageItemGrade.m_cPlus = 0;
}
else
{
if (m_ManageItemGrade.m_eItemGrade == m_ManageItemGrade.m_aryAttributeGrade[cAttributeIndex])
{
++m_ManageItemGrade.m_cPlus;
}
}
break;
}
}
}
}
bool CItemManageDlg::IsValidItemValue()
{
CString strErrMessage;
const Item::ItemInfo* lpValidItemInfo =
Item::CItemMgr::GetInstance().GetItemInfoFromItemName(g_stMyItemInfo.m_stItemInfo.m_szItemName);
if(NULL == lpValidItemInfo)
{
return false;
}
// 속성 체크
for(int nIdx = 0; nIdx < Item::EquipmentInfo::MAX_ATTRIBUTE_NUM; ++nIdx)
{
if(g_stMyItemInfo.m_stItemInfo.m_usAttribute[nIdx] <
lpValidItemInfo->m_EquipAttribute.m_usAttributeValue[nIdx])
{
strErrMessage.Format("Invalid value detect: Attribute %d\r\n(Min Limit: %u > Input Value: %u)",
nIdx, lpValidItemInfo->m_EquipAttribute.m_usAttributeValue[nIdx],
g_stMyItemInfo.m_stItemInfo.m_usAttribute[nIdx]);
MessageBox(strErrMessage);
return false;
}
}
// 소켓 체크
/*
if(g_stMyItemInfo.m_stItemInfo.m_cCurrentSocketNum >
(int)lpValidItemInfo->m_DetailData.m_cMaxSocketNum)
{
strErrMessage.Format("Invalid Value: Socket Num surplus (Max Limit: %u < Input Value: %u)",
(int)lpValidItemInfo->m_DetailData.m_cMaxSocketNum,
g_stMyItemInfo.m_stItemInfo.m_cCurrentSocketNum);
MessageBox(strErrMessage);
return false;
}
*/
return true;
}
void CItemManageDlg::EnableEditBox(bool bEnable)
{
GetDlgItem(IDC_NEWIM_MAXDAMAGE_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_MINDAMAGE_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_ARMOR_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_HITRATE_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_EVADE_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_MAXHP_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_HPREGEN_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_MAXMP_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_MPREGEN_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_CRITICAL_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_BLOCK_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SPEED_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_MAGICPOWER_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_MAGICRESI_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_RUNESOCKET_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_RUNESOCKET2_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SOCKETNUM_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_MAXSOCKETNUM_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SOCKET1_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SOCKET2_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SOCKET3_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SOCKET4_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SOCKET5_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SOCKET6_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SOCKET7_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SOCKET8_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_UPGRADELV_EDIT)->EnableWindow(bEnable);
//GetDlgItem(IDC_NEWIM_NUMORDUR_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_MAXDUR_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_SEASONRECORD_EDIT)->EnableWindow(bEnable);
GetDlgItem(IDC_NEWIM_CORELEVEL_EDIT)->EnableWindow(bEnable);
}
void CItemManageDlg::OnBnClickedNewimCreatepluralBtn()
{
g_stMyItemInfo.m_nModeIndex = MyItemInfo::CREATE_PLURAL;
if(!SetManageItemData(true))
{
Report(GetLocalString("MSG_0167"), FAILED);
return;
}
g_bItemGrab = true;
EndDialog(true);
}
void CItemManageDlg::OnBnClickedNewimCreatesingBtn()
{
g_stMyItemInfo.m_nModeIndex = MyItemInfo::CREATE_SINGLE;
if(!SetManageItemData(true))
{
Report(GetLocalString("MSG_0167"), FAILED);
return;
}
g_bItemGrab = true;
EndDialog(true);
}
void CItemManageDlg::OnBnClickedNewimItemdistributeBtn()
{
g_stMyItemInfo.m_nModeIndex = MyItemInfo::CREATE_DISTRIBUTE;
if(!SetManageItemData(true))
{
Report(GetLocalString("MSG_0167"), FAILED);
return;
}
CItemDistributeDlg dlg;
dlg.DoModal();
}
void CItemManageDlg::OnBnClickedNewimUpdateBtn()
{
if(!SetManageItemData(true))
{
Report(GetLocalString("MSG_0167"), FAILED);
return;
}
if(g_stMyItemInfo.m_nModeIndex == MyItemInfo::EDIT)
{
Item::CItem* lpItem =
g_stMyItemInfo.m_lpModifyCharInfo->UIDbyItem(
g_stMyItemInfo.m_dwItemSerial, g_stMyItemInfo.m_cTakeType);
CPacketMgr::GetInstance()->SendUpdateItem(g_stMyItemInfo.m_lpModifyCharInfo->GetServerGroup(),
g_stMyItemInfo.m_lpModifyCharInfo->GetCID(), g_stMyItemInfo.m_lpModifyCharInfo->GetUID(),
g_stMyItemInfo.m_dwDocKey, g_stMyItemInfo.m_dwItemSerial, lpItem->GetPrototypeID(),
g_stMyItemInfo.m_stItemInfo);
}
else if(g_stMyItemInfo.m_nModeIndex == MyItemInfo::EDIT_ADMINSTORE)
{
CPacketMgr::GetInstance()->SendPktUpdateAdminStore();
}
else
{
Report(GetLocalString("MSG_0105"), CAUTION);
}
EndDialog(true);
}
void CItemManageDlg::OnBnClickedNewimIteminfoinitBtn()
{
InitItemData(CREATE);
}
void CItemManageDlg::OnBnClickedNewimCalcgradeBtn()
{
if(0 == g_stMyItemInfo.m_nModeIndex)
{
g_stMyItemInfo.m_nModeIndex = MyItemInfo::CREATE_SINGLE;
}
TCHAR strGrade[128];
if(!SetManageItemData(true))
{
Report(GetLocalString("MSG_0167"), FAILED);
_stprintf(strGrade, _T("?"));
SetDlgItemText(IDC_NEWIM_GRADE_EDIT, strGrade);
return;
}
else
{
int iPlus = m_ManageItemGrade.m_cPlus;
switch(m_ManageItemGrade.m_eItemGrade)
{
case Item::EquipType::S_GRADE: _stprintf(strGrade, _T("S")); break;
case Item::EquipType::AAA_GRADE: _stprintf(strGrade, _T("AAA")); break;
case Item::EquipType::AA_GRADE: _stprintf(strGrade, _T("AA")); break;
case Item::EquipType::A_GRADE: _stprintf(strGrade, _T("A")); break;
case Item::EquipType::B_GRADE: _stprintf(strGrade, _T("B")); break;
case Item::EquipType::C_GRADE: _stprintf(strGrade, _T("C")); break;
case Item::EquipType::D_GRADE: _stprintf(strGrade, _T("D")); break;
case Item::EquipType::F_GRADE: _stprintf(strGrade, _T("F")); break;
default: _stprintf(strGrade, _T("?")); break;
}
if(iPlus > 0)
{
char strCa[32];
_stprintf(strCa, _T(" +%d"), iPlus);
_tcscat(strGrade, strCa);
}
SetDlgItemText(IDC_NEWIM_GRADE_EDIT, strGrade);
}
}
void CItemManageDlg::OnOK()
{
// CDialog::OnOK();
}
BOOL CItemManageDlg::ExistEmptyItem()
{
BOOL bIsEmpty = TRUE;
if(CREATE == m_cManageType)
{
CString strItemName;
GetDlgItemText(IDC_NEWIM_NEWITEMNAME_EDIT, strItemName);
if(strItemName.IsEmpty())
{
bIsEmpty = FALSE;
}
}
GetDlgItemInt(IDC_NEWIM_MAXDAMAGE_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_MINDAMAGE_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_ARMOR_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_HITRATE_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_EVADE_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_MAXHP_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_HPREGEN_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_MAXMP_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_MPREGEN_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_CRITICAL_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_BLOCK_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SPEED_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_MAGICPOWER_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_MAGICRESI_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_RUNESOCKET_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_RUNESOCKET2_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SOCKETNUM_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_MAXSOCKETNUM_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SOCKET1_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SOCKET2_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SOCKET3_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SOCKET4_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SOCKET5_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SOCKET6_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SOCKET7_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SOCKET8_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_UPGRADELV_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_NUMORDUR_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_MAXDUR_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_SEASONRECORD_EDIT, &bIsEmpty, FALSE);
GetDlgItemInt(IDC_NEWIM_CORELEVEL_EDIT, &bIsEmpty, FALSE);
return !bIsEmpty;
}
void CItemManageDlg::ClearToZero()
{
SetDlgItemInt(IDC_NEWIM_MAXDAMAGE_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MINDAMAGE_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_ARMOR_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_HITRATE_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_EVADE_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAXHP_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_HPREGEN_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAXMP_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MPREGEN_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_CRITICAL_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_BLOCK_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SPEED_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAGICPOWER_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAGICRESI_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_RUNESOCKET_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_RUNESOCKET2_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKETNUM_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAXSOCKETNUM_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET1_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET2_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET3_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET4_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET5_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET6_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET7_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SOCKET8_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_UPGRADELV_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_NUMORDUR_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_MAXDUR_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_SEASONRECORD_EDIT, 0, FALSE);
SetDlgItemInt(IDC_NEWIM_CORELEVEL_EDIT, 0, FALSE);
}
BOOL CItemManageDlg::PreTranslateMessage(MSG* pMsg)
{
if((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_RETURN))
{
if ((pMsg->hwnd == GetDlgItem(IDC_NEWIM_NEWITEMNAME_EDIT)->m_hWnd))
{
InitItemData(CREATE);
}
else if(pMsg->hwnd == GetDlgItem(IDC_CONVERT_EDIT)->m_hWnd)
{
OnBnClickedConvertBtn();
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CItemManageDlg::OnBnClickedConvertBtn()
{
char szBuffer[256];
GetDlgItemText(IDC_CONVERT_EDIT, szBuffer, 256);
const Item::ItemInfo* lpItemInfo = Item::CItemMgr::GetInstance().GetItemInfo((unsigned short)(atoi(szBuffer)));
if (NULL == lpItemInfo)
{
Report(GetLocalString("ADDED_STRING_034"), FAILED);
}
else
{
SetDlgItemText(IDC_CONVERT_EDIT, lpItemInfo->m_SpriteData.m_szName);
}
}
void CItemManageDlg::OnBnClickedApplyBtn()
{
CString strGetValue;
GetDlgItemText(IDC_CONVERT_EDIT, strGetValue);
m_strNewItemName = strGetValue;
UpdateData(false);
}