Files
2022-10-26 12:25:11 +08:00

69 lines
2.4 KiB
C++

#pragma once
//=======================================================================================================================
/// QuickManager class
/**
@author
Kim Min Wook < taiyo@webzen.com >
@since
2004. 8. 11~
@history
- 2006/2/14(발렌타인데이^^/) : SerializeQuickTotalInfo()함수 추가, stream관련 함수 template화
*/
//=======================================================================================================================
class SCSlotContainer;
class SCQuickSlotContainer;
class SlotManager;
class Player;
class SCQuickSlot;
class QuickManager
{
public:
QuickManager(void);
~QuickManager(void);
VOID Init( SlotManager * pMGR );
VOID Release();
SCQuickSlotContainer * GetQuickSlotContainer();
BOOL ValidPos( SLOTIDX atIndex, POSTYPE atPos, BOOL bEmptyCheck = TRUE );
BOOL ValidState();
BOOL IsEmpty( POSTYPE pos );
template< class QUICK_TOTAL_INFO_TYPE >
VOID SerializeQuickTotalInfo( QUICK_TOTAL_INFO_TYPE & QuickInfo, eSERIALIZE eType );
template< class QUICKSTREAM_TYPE >
VOID SerializeQuickStream( POSTYPE pos, QUICKSTREAM_TYPE * IN pStream, eSERIALIZE eType = SERIALIZE_LOAD );
RC::eQUICK_RESULT LinkSkill( SLOTCODE code, POSTYPE toPos );
RC::eQUICK_RESULT LinkItem( POSTYPE orgPos, POSTYPE toPos );
RC::eQUICK_RESULT Unlink( POSTYPE atPos );
RC::eQUICK_RESULT Move( POSTYPE fromPos, POSTYPE toPos );
RC::eQUICK_RESULT UnlinkByCode( SLOTIDX atIndex, SLOTCODE Code );
#ifdef _NA_0_20100901_SKILLTREE_SYSTEM
RC::eQUICK_RESULT ChangeSkill( SLOTCODE old_skill_code, SLOTCODE new_skill_code );
#endif
// TODO f100825.3L, need a validation test whether a quick slot has a correctly link.
// maybe I think a below method's name which need change to UpdateValidateLink()
void UpdateOriginalItems();
// 대상 퀵슬롯의 연결된 아이템 정보를 갱신한다.
void UpdateLinkedItem(const POSTYPE target_quick_slot_position,
const SLOTIDX new_linked_item_container_type,
const POSTYPE new_linked_item_position);
private:
// CHANGES f100825.2L, remove an unused method
//VOID _IteratingOriginalItem( SCSlotContainer * pContainer, SCQuickSlot & rQuickSlot, SLOTCODE ItemCode );
Player * m_pPlayer;
SlotManager * m_pSlotMGR;
SCSlotContainer ** m_ppSlotContainer;
};
// stream관련 template 구현부
#include "QuickManager_Stream.hpp"