Files
2026-06-01 12:46:52 +02:00

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();