#pragma once #include "DnWorldBrokenProp.h" #include "DnSkillPropComponent.h" #include "MAActorProp.h" class CDnPropState; // #24282 º¹¼öÀÇ ³»±¸µµ¸¦ °¡Áö´Â broken prop class CDnWorldMultiDurabilityProp : public CDnWorldBrokenProp, public MAActorProp, public CDnDamageBase, public TBoostMemoryPool { private: CDnSkillPropComponent m_SkillComponent; //string m_strLastActionName; struct S_STATE_INFO { const char* pActionNameWhenSubDurabilityZero; int iOriginalDurability; int iNowDurability; CDnPropState* pState; S_STATE_INFO( void ) : pActionNameWhenSubDurabilityZero( NULL ), iOriginalDurability(0 ), iNowDurability( 0 ), pState( NULL ) {}; void RestoreDurability( void ) { iNowDurability = iOriginalDurability; } }; DNVector( S_STATE_INFO ) m_vlStateInfos; int m_iNowStateIndex; CDnPropState* m_pActivateState; // Æ®¸®°Å·Î Activate ¾×¼ÇÀ» ½ÇÇà½ÃÄ×À» ¶§ ÀÌ State ·Î µé¾î¿À°Ô µÈ´Ù. protected: void _InitializeFSM( void ); public: CDnWorldMultiDurabilityProp( CMultiRoom* pRoom ); virtual ~CDnWorldMultiDurabilityProp( void ); bool Initialize( CEtWorldSector *pParentSector, const char *szPropName, EtVector3 &vPos, EtVector3 &vRotate, EtVector3 &vScale ); bool InitializeTable( int nTableID ); void ReleasePostCustomParam( void ) { if( m_pData && m_bPostCreateCustomParam ) { MultiDurabilityBrokenPropStruct* pMultiDurabilityStruct = static_cast( m_pData ); SAFE_DELETE( pMultiDurabilityStruct ); m_pData = NULL; // ¹Ýµå½Ã NULL ·Î ÇØÁÖ¾î¾ß ÀÌ Å¬·¡½º¸¦ »ó¼Ó¹ÞÀº Ŭ·¡½ºÀÇ ¼Ò¸êÀÚ¿¡¼­ ´Ù½Ã Áö¿öÁöÁö ¾Ê½À´Ï´Ù. } }; virtual void SetActionQueue( const char *szActionName, int nLoopCount /* = 0 */, float fBlendFrame /* = 3.f */, float fStartFrame /* = 0.f */ ); void OnSignal( SignalTypeEnum Type, void *pPtr, LOCAL_TIME LocalTime, LOCAL_TIME SignalStartTime, LOCAL_TIME SignalEndTime, int nSignalIndex ); void OnSyncComplete( CDNUserSession* pBreakIntoGameSession/*=NULL*/ ); void OnChangeAction( const char *szPrevAction ); // from CDnDamageBase virtual DnActorHandle GetActorHandle( void ) { return m_hMonster; }; virtual DWORD GetDamageObjectUniqueID() { return GetUniqueID(); }; // from CDnWorldBrokenProp virtual void CalcDamage( CDnDamageBase *pHitter, CDnDamageBase::SHitParam &HitParam ); virtual int GetSubDurability( int iIndex ); virtual void OnFSMStateEntry( const TDnFSMState* pState ); };