139 lines
5.1 KiB
C++
139 lines
5.1 KiB
C++
|
|
#pragma once
|
|
|
|
#include <map>
|
|
//#include <vector>
|
|
#include <windows.h>
|
|
#include "DecomposeBase.h"
|
|
|
|
using std::map;
|
|
using std::vector;
|
|
|
|
namespace nsDecomposeDB
|
|
{
|
|
|
|
//----------------------------------------------------
|
|
// 분해 식 식별 타입
|
|
//----------------------------------------------------
|
|
enum eDecomposeType
|
|
{
|
|
eCHECK_ITEM_GROUP = 1, // 아이템 대분류가 지정 수치와 동일
|
|
eCHECK_ITEM_CLASS = 2,
|
|
eCHECK_ITEM_ID = 3,
|
|
eCHECK_ITEM_RANK = 4,
|
|
eCHECK_ITEM_LEVEL = 5,
|
|
eCHECK_FLAG_ON = 6,
|
|
eCHECK_FLAG_OFF = 7,
|
|
eCHECK_ENHANCE_MATCH = 8,
|
|
eCHECK_ENHANCE_DISMATCH = 9,
|
|
eCHECK_ITEM_COUNT = 10,
|
|
eCHECK_ELEMENTAL_EFFECT_MATCH = 11,
|
|
eCHECK_ELEMENTAL_EFFECT_MISMATCH = 12,
|
|
eCHECK_ITEM_WEAR_POSITION_MATCH = 13,
|
|
eCHECK_ITEM_WEAR_POSITION_MISMATCH = 14,
|
|
eCHECK_ITEM_COUNT_GE = 15, // 아이템 개수가 지정 수량 이상
|
|
eCHECK_ITEM_ETHEREAL_DURABILITY_E = 16, // 에테리얼 내구도가 지정 수치와 동일
|
|
eCHECK_ITEM_ETHEREAL_DURABILITY_NE = 17, // 에테리얼 내구도가 지정 수치와 다름
|
|
eCHECK_ITEM_GRADE = 18, // 아이템 등급이 지정 수치와 동일
|
|
eCHECK_SAME_ITEM_ID = 19, // 지정된 슬롯의 아이템과 동일한 아이템 코드(보조 재료 상호 참조형)
|
|
eCHECK_SAME_SUMMON_CODE = 20, // 지정된 슬롯의 아이템과 동일한 소환수 코드(보조 재료 상호 참조형)
|
|
eCHECK_ITEM_EXPIRED_TIME_GE = 21, // 기간제 아이템의 남은 시간이 지정 수치보다 크거나 같음
|
|
eCHECK_ITEM_EXPIRED_TIME_LE = 22, // 기간제 아이템의 남은 시간이 지정 수치보다 작거나 같음
|
|
eCHECK_ITEM_FIRST_SOCKET_CODE_MATCH = 23, // 첫번째 소켓의 코드가 지정 수치와 동일
|
|
eCHECK_SAME_ITEM_ENHANCE = 24, // 지정된 슬롯의 아이템과 동일한 강화(보조 재료 상호 참조형)
|
|
eCHECK_SAME_SKILL_ID = 25, // 지정된 슬롯의 아이템과 동일한 스킬 ID(보조 재료 상호 참조형)
|
|
eCHECK_ITEM_MAX_ETHEREAL_DURABILITY_E = 26, // 최대 에테리얼 내구도가 지정 수치와 동일
|
|
eCHECK_ITEM_MAX_ETHEREAL_DURABILITY_NE = 27, // 최대 에테리얼 내구도가 지정 수치와 다름
|
|
eCHECK_ITEM_FIRST_SOCKET_CODE_G = 28, // 첫번째 소켓의 코드가 지정 수치보다 작음(보조 재료 상호 참조형, 소켓의 코드에는 일반적으로 대소 비교의 의미가 없지만 벨트 소켓 비교를 위해 추가)
|
|
eCHECK_ITEM_FIRST_SOCKET_CODE_L = 29, // 첫번째 소켓의 코드가 지정 수치보다 작음(보조 재료 상호 참조형, 소켓의 코드에는 일반적으로 대소 비교의 의미가 없지만 벨트 소켓 비교를 위해 추가)
|
|
eCHECK_ITEM_TYPE = 30, // 아이템 타입이 지정 수치와 동일
|
|
eCHECK_SAME_ITEM_CLASS = 31, // 지정된 슬롯의 아이템과 동일한 중분류(보조 재료 상호 참조형)
|
|
eCHECK_ITEM_GROUP_NE = 32, // 아이템 대분류가 지정 수치와 다름
|
|
eCHECK_INCLUDE_RACE_LIMIT = 33, // 지정된 슬롯의 아이템의 직업 제한에 포함 관계(허용되는 직업 제한의 예. 아수라⊂아수라, 아수라⊂전종족, 아수라⊂(아수라 or 데바))
|
|
eCHECK_MIX_CHECK_AWAKEN_ITEM = 34, // 각성 대상 아이템의 상태 확인
|
|
eCHECK_MIX_CHECK_SAME_SUMMON_RATE = 35, // 지정된 슬롯의 아이템과 동일한 소환수 등급
|
|
eCHECK_MIX_CHECK_ENHANCE_GE = 39,
|
|
eCHECK_MIX_CHECK_ENHANCE_LE = 40,
|
|
eCHECK_MIX_CHECK_SAME_ITEM_GROUP = 41,
|
|
};
|
|
|
|
|
|
//----------------------------------------------------
|
|
// 분해 식 식별 정보 구조체
|
|
//----------------------------------------------------
|
|
typedef struct stDecomposeIdentityInfo
|
|
{
|
|
int m_nType;
|
|
int m_nValue;
|
|
|
|
stDecomposeIdentityInfo()
|
|
: m_nType( NULL )
|
|
, m_nValue( NULL )
|
|
{
|
|
}
|
|
|
|
}DECOMPOSE_IDENTITY_INFO, *PDECOMPOSE_IDENTITY_INFO;
|
|
|
|
|
|
//----------------------------------------------------
|
|
// 분해 식 정보 구조체
|
|
//----------------------------------------------------
|
|
typedef struct stDecomposeFormulaInfo
|
|
{
|
|
int m_nNeedPrice;
|
|
vector<DECOMPOSE_IDENTITY_INFO> m_vecIdentity;
|
|
|
|
stDecomposeFormulaInfo()
|
|
: m_nNeedPrice( NULL )
|
|
{
|
|
}
|
|
|
|
~stDecomposeFormulaInfo()
|
|
{
|
|
m_vecIdentity.clear();
|
|
}
|
|
|
|
}DECOMPOSE_FORMULA_INFO, *PDECOMPOSE_FORMULA_INFO;
|
|
|
|
}
|
|
|
|
using namespace nsDecomposeDB;
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
// 분해 식 DB
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
class SDecomposeDB
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
SDecomposeDB( void );
|
|
~SDecomposeDB( void );
|
|
|
|
map< UINT, DECOMPOSE_FORMULA_INFO* >* const GetDecomposeFormula( void );
|
|
|
|
typedef map< UINT, PDECOMPOSE_FORMULA_INFO > DECOMPOSE_FORMULA_LIST;
|
|
typedef map< UINT, PDECOMPOSE_FORMULA_INFO >::iterator DECOMPOSE_FORMULA_ITER;
|
|
|
|
|
|
private:
|
|
|
|
|
|
bool Load( void );
|
|
void Destroy( void );
|
|
|
|
|
|
private:
|
|
|
|
|
|
DECOMPOSE_FORMULA_LIST m_mapDecomposeFormula;
|
|
|
|
public:
|
|
static SDecomposeDB* m_pThis;
|
|
|
|
};
|
|
|
|
SDecomposeDB & GetDecomposeDB();
|
|
|