1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-07 11:17:46 +00:00
sapphire/src/world/Territory/QuestBattle.h

102 lines
2.6 KiB
C
Raw Normal View History

2019-03-31 01:39:49 +01:00
#ifndef SAPPHIRE_QUESTBATTLE_H
#define SAPPHIRE_QUESTBATTLE_H
2019-07-21 22:33:33 +10:00
#include "Territory.h"
2019-03-31 01:39:49 +01:00
#include "Event/Director.h"
#include "Forwards.h"
2019-03-31 11:27:11 +02:00
namespace Sapphire::Data
{
2019-03-31 01:39:49 +01:00
struct QuestBattle;
}
2019-03-31 11:27:11 +02:00
namespace Sapphire
2019-03-31 01:39:49 +01:00
{
2019-07-21 22:33:33 +10:00
class QuestBattle : public Event::Director, public Territory
2019-03-31 11:27:11 +02:00
{
public:
QuestBattle( std::shared_ptr< Sapphire::Data::QuestBattle > pBattleDetails,
uint16_t territoryType,
uint32_t guId,
const std::string& internalName,
const std::string& contentName,
uint32_t questBattleId, uint16_t contentFinderConditionId = 0 );
2019-03-31 01:39:49 +01:00
virtual ~QuestBattle() = default;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
bool init() override;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void onBeforePlayerZoneIn( Entity::Player& player ) override;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void onPlayerZoneIn( Entity::Player& player ) override;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void onLeaveTerritory( Entity::Player& player ) override;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void onFinishLoading( Entity::Player& player ) override;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void onInitDirector( Entity::Player& player ) override;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void onDirectorSync( Entity::Player& player ) override;
2019-03-31 01:39:49 +01:00
void onUpdate( uint64_t tickCount ) override;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void onTalk( Entity::Player& player, uint32_t eventId, uint64_t actorId );
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void onEnterTerritory( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void onRegisterEObj( Entity::EventObjectPtr object ) override;
2019-03-31 01:39:49 +01:00
void onEnterSceneFinish( Entity::Player& player );
2019-03-31 11:27:11 +02:00
void setVar( uint8_t index, uint8_t value );
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void setSequence( uint8_t value );
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void setBranch( uint8_t value );
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void startQte();
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void startEventCutscene();
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
void endEventCutscene();
2019-03-31 01:39:49 +01:00
uint32_t getQuestId() const;
void fail();
void success();
uint32_t getCountEnemyBNpc();
2019-03-31 11:27:11 +02:00
void clearDirector( Entity::Player& player );
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
Event::Director::DirectorState getState() const;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
std::shared_ptr< Sapphire::Data::QuestBattle > getQuestBattleDetails() const;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
uint32_t getQuestBattleId() const;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
Entity::EventObjectPtr getEObjByName( const std::string& name );
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
/*! number of milliseconds after all players are ready for the instance to commence (spawn circle removed) */
const uint32_t instanceStartDelay = 1250;
2019-03-31 01:39:49 +01:00
Entity::PlayerPtr getPlayerPtr();
2019-03-31 11:27:11 +02:00
private:
std::shared_ptr< Sapphire::Data::QuestBattle > m_pBattleDetails;
uint32_t m_questBattleId;
Event::Director::DirectorState m_state;
2019-03-31 01:39:49 +01:00
uint64_t m_instanceExpireTime;
2019-03-31 11:27:11 +02:00
uint64_t m_instanceCommenceTime;
uint64_t m_instanceFailTime;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
std::map< std::string, Entity::EventObjectPtr > m_eventObjectMap;
std::unordered_map< uint32_t, Entity::EventObjectPtr > m_eventIdToObjectMap;
Entity::PlayerPtr m_pPlayer;
2019-03-31 01:39:49 +01:00
2019-03-31 11:27:11 +02:00
};
2019-03-31 01:39:49 +01:00
}
#endif