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