#pragma once #include //#include #include #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 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();