2018-01-28 13:49:51 +01:00
|
|
|
#ifndef SAPPHIRE_INSTANCECONTENT_H
|
|
|
|
#define SAPPHIRE_INSTANCECONTENT_H
|
|
|
|
|
|
|
|
#include "Zone.h"
|
2018-02-06 00:01:23 +01:00
|
|
|
#include "Event/Director.h"
|
2018-01-28 13:49:51 +01:00
|
|
|
#include "Forwards.h"
|
|
|
|
|
|
|
|
namespace Core
|
|
|
|
{
|
2018-02-28 10:26:03 +01:00
|
|
|
namespace Data
|
|
|
|
{
|
|
|
|
struct InstanceContent;
|
|
|
|
}
|
2018-02-23 23:47:21 +01:00
|
|
|
class InstanceContent : public Event::Director, public Zone
|
2018-01-28 13:49:51 +01:00
|
|
|
{
|
|
|
|
public:
|
2018-01-28 22:36:43 +01:00
|
|
|
enum InstanceContentState
|
|
|
|
{
|
|
|
|
Created,
|
2018-02-07 00:00:48 +01:00
|
|
|
DutyReset,
|
|
|
|
DutyInProgress,
|
2018-01-28 22:36:43 +01:00
|
|
|
DutyFinished
|
|
|
|
};
|
|
|
|
|
2018-01-29 19:40:27 +11:00
|
|
|
InstanceContent( boost::shared_ptr< Core::Data::InstanceContent > pInstanceContent,
|
|
|
|
uint32_t guId,
|
|
|
|
const std::string& internalName,
|
2018-01-29 19:41:41 +01:00
|
|
|
const std::string& contentName,
|
|
|
|
uint32_t instanceContentId );
|
2018-01-28 13:49:51 +01:00
|
|
|
virtual ~InstanceContent();
|
|
|
|
|
2018-02-23 23:47:21 +01:00
|
|
|
bool init() override;
|
|
|
|
void onBeforeEnterTerritory( Entity::Player& player ) override;
|
2018-02-10 01:21:31 +01:00
|
|
|
void onEnterTerritory( Entity::Player& player ) override;
|
|
|
|
void onLeaveTerritory( Entity::Player& player ) override;
|
|
|
|
void onFinishLoading( Entity::Player& player ) override;
|
|
|
|
void onInitDirector( Entity::Player& player ) override;
|
2018-02-04 23:35:16 +01:00
|
|
|
void onUpdate( uint32_t currTime ) override;
|
2018-02-25 17:23:52 +11:00
|
|
|
void onTalk( Entity::Player& player, uint32_t eventId, uint64_t actorId );
|
2018-02-04 23:35:16 +01:00
|
|
|
|
2018-02-23 23:47:21 +01:00
|
|
|
void onRegisterEObj( Entity::EventObjectPtr object ) override;
|
|
|
|
|
2018-02-07 00:00:48 +01:00
|
|
|
void setVar( uint8_t index, uint8_t value );
|
|
|
|
|
2018-02-28 10:26:03 +01:00
|
|
|
boost::shared_ptr< Core::Data::InstanceContent > getInstanceContentInfo() const;
|
2018-01-29 19:40:27 +11:00
|
|
|
|
2018-01-29 19:41:41 +01:00
|
|
|
uint32_t getInstanceContentId() const;
|
2018-01-29 20:40:32 +11:00
|
|
|
|
2018-02-24 00:07:07 +01:00
|
|
|
Entity::EventObjectPtr getEObjByName( const std::string& name );
|
|
|
|
|
2018-01-28 13:49:51 +01:00
|
|
|
private:
|
2018-01-28 13:52:53 +01:00
|
|
|
Event::DirectorPtr m_pDirector;
|
2018-02-28 10:26:03 +01:00
|
|
|
boost::shared_ptr< Core::Data::InstanceContent > m_instanceContentInfo;
|
2018-01-29 20:40:32 +11:00
|
|
|
uint32_t m_instanceContentId;
|
2018-01-29 19:41:41 +01:00
|
|
|
InstanceContentState m_state;
|
2018-01-28 13:49:51 +01:00
|
|
|
|
2018-02-08 23:28:52 +11:00
|
|
|
int64_t m_instanceExpireTime;
|
2018-02-23 23:47:21 +01:00
|
|
|
|
|
|
|
Entity::EventObjectPtr m_pEntranceEObj;
|
2018-02-24 00:07:07 +01:00
|
|
|
|
|
|
|
std::map< std::string, Entity::EventObjectPtr > m_eventObjectMap;
|
2018-02-27 02:13:01 +11:00
|
|
|
std::unordered_map< uint32_t, Entity::EventObjectPtr > m_eventIdToObjectMap;
|
2018-01-28 13:49:51 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
#endif //SAPPHIRE_INSTANCECONTENT_H
|