134 lines
3.7 KiB
C++
134 lines
3.7 KiB
C++
|
|
|
|
#pragma once
|
|
|
|
#include <Windows.h>
|
|
//#include <vector>
|
|
#include <mmo/ArType.h>
|
|
#include "SNetMessage.h"
|
|
|
|
#include "SGameUIMgr.h"
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
/// Store Data
|
|
struct STORE_ITEM : public TS_SC_WATCH_BOOTH::TS_BOOTH_ITEM_INFO
|
|
{
|
|
STORE_ITEM()
|
|
{
|
|
}
|
|
|
|
STORE_ITEM( AR_HANDLE _handle,
|
|
ItemBase::ItemCode _code,
|
|
__int64 _count,
|
|
__int64 _gold,
|
|
int _level,
|
|
int _enhance,
|
|
int _endurance,
|
|
int _flag,
|
|
const int _socket[ ItemBase::MAX_SOCKET_NUMBER ],
|
|
int _remain_time,
|
|
char eet,
|
|
int eert,
|
|
int eeap,
|
|
int eemp,
|
|
int ed,
|
|
ItemBase::ItemCode ap,
|
|
AwakenOption* _pAwakenOption,
|
|
LPRANDOM_OPTION _pRandomOption,
|
|
int nSummonID,
|
|
int _additional_item_effect // Fraun Sky Accessories 7/12/2025
|
|
)
|
|
{
|
|
nIdx = 0;
|
|
handle = _handle;
|
|
uid = 0;
|
|
Code = _code;
|
|
endurance = _endurance;
|
|
count = _count;
|
|
gold = _gold;
|
|
enhance = _enhance;
|
|
Flag = _flag;
|
|
level = _level;
|
|
remain_time = _remain_time;
|
|
memcpy( socket, _socket, sizeof(socket) );
|
|
elemental_effect_type = eet;
|
|
elemental_effect_remain_time = eert;
|
|
elemental_effect_attack_point = eeap;
|
|
elemental_effect_magic_point = eemp;
|
|
ethereal_durability = ed; // bintitle
|
|
appearance_code = ap;
|
|
summon_id = nSummonID;
|
|
nAdditionalItemEffect = _additional_item_effect;
|
|
|
|
memcpy( &awakenoption, _pAwakenOption, sizeof(awakenoption) );
|
|
memcpy( &random_option, _pRandomOption, sizeof( random_option ) );
|
|
}
|
|
|
|
int nIdx;
|
|
};
|
|
|
|
/// 상점 윈도우의 슬롯 데이터를 보관. (다른것들과 공유할 필요가 없어 이곳에 정의함)
|
|
class SStoreMgr : public SGameUIMgr
|
|
{
|
|
public:
|
|
static SStoreMgr & GetInstance();
|
|
|
|
int AddItem( STORE_ITEM info );
|
|
|
|
void RemoveItem( ItemBase::ItemCode code );
|
|
|
|
void RemoveItem( AR_HANDLE handle );
|
|
|
|
STORE_ITEM GetBoothItemInfo( size_t idx );
|
|
|
|
void Clear();
|
|
|
|
void DecItemCount( AR_HANDLE hItem, count_t count );
|
|
void SetItemCount( AR_HANDLE hItem, count_t count );
|
|
XFlag< int > GetItemFlag( size_t idx ) const;
|
|
size_t GetListCount() const;
|
|
int GetEnhance( size_t idx ) const;
|
|
int GetLevel( size_t idx ) const;
|
|
int GetEndurance( size_t idx ) const;
|
|
ItemBase::ItemCode GetItemCode( size_t idx ) const;
|
|
count_t GetItemCount( size_t idx ) const;
|
|
money_t GetItemPrice( size_t idx ) const;
|
|
AR_HANDLE GetItemHandle( size_t idx ) const;
|
|
int GetItemRemainTime( size_t idx ) const;
|
|
int* GetItemSocket( size_t idx );
|
|
AR_HANDLE GetTargetHandle() const { return m_hHandle; }
|
|
void SetTargetHandle( AR_HANDLE h ) { m_hHandle = h; }
|
|
TS_ITEM_BASE_INFO::AwakenOption* GetAwakening( size_t idx );
|
|
TS_ITEM_BASE_INFO::LPRANDOM_OPTION GetRandomOption( size_t idx );
|
|
int GetSummonID( size_t idx );
|
|
|
|
// Fraun Sky Accessories 7/12/2025
|
|
int GetAdditionalItemEffect(size_t idx);
|
|
|
|
int GetItemElementalEffectType( size_t idx ) const ;
|
|
int GetItemElementalEffectRemainTime( size_t idx ) const ;
|
|
int GetItemElementalEffectAttackPoint( size_t idx ) const ;
|
|
int GetItemElementalEffectMagicPoint( size_t idx ) const ;
|
|
|
|
// bintitle 추가. 2010.03.17
|
|
int GetEtherealDurability( size_t idx ) const ;
|
|
|
|
void ChangeItemPrice( size_t idx, money_t nPrice );
|
|
void ChangeItemCount( size_t idx, count_t nCnt );
|
|
|
|
bool IsSellMode() const;
|
|
|
|
void SwitchStoreMode( bool bIsSellMode );
|
|
int GetItemAppearanceCode( size_t idx ) const; // 2012. 7. 26 - marine
|
|
|
|
private:
|
|
|
|
SStoreMgr() : m_bIsSellMode( true ), m_hHandle(0) {}
|
|
|
|
void arrangeIndex();
|
|
|
|
AR_HANDLE m_hHandle;
|
|
bool m_bIsSellMode;
|
|
std::vector< STORE_ITEM > m_vItemList;
|
|
}; |