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>
895 lines
32 KiB
C++
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);
|
|
}
|