2022-01-23 11:04:26 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <cstdint>
|
|
|
|
#include <string>
|
|
|
|
#include <ForwardsZone.h>
|
|
|
|
#include <Util/Util.h>
|
2022-01-27 21:08:43 +01:00
|
|
|
#include <unordered_map>
|
2022-01-23 11:04:26 +01:00
|
|
|
|
|
|
|
namespace Sapphire::World::Manager
|
|
|
|
{
|
|
|
|
|
2022-01-27 21:08:43 +01:00
|
|
|
struct WarpInfo
|
|
|
|
{
|
2022-01-30 14:44:17 +01:00
|
|
|
uint32_t m_targetTerritoryId;
|
2022-01-27 21:08:43 +01:00
|
|
|
Common::WarpType m_warpType;
|
2022-01-30 14:44:17 +01:00
|
|
|
Common::FFXIVARR_POSITION3 m_targetPos;
|
|
|
|
float m_targetRot;
|
2022-01-27 21:08:43 +01:00
|
|
|
};
|
|
|
|
|
2022-01-23 11:04:26 +01:00
|
|
|
class WarpMgr
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
WarpMgr() = default;
|
2022-01-30 14:44:17 +01:00
|
|
|
void requestMoveTerritory( Entity::Player& player, Common::WarpType warpType, uint32_t targetTerritoryId, Common::FFXIVARR_POSITION3 targetPos, float targetRot );
|
|
|
|
void requestWarp( Entity::Player& player, Common::WarpType warpType, Common::FFXIVARR_POSITION3 targetPos, float targetRot );
|
|
|
|
void finishWarp( Entity::Player& player );
|
2022-01-23 11:04:26 +01:00
|
|
|
|
2022-01-27 21:08:43 +01:00
|
|
|
private:
|
2022-01-30 14:44:17 +01:00
|
|
|
std::unordered_map< uint32_t, WarpInfo > m_entityIdToWarpInfoMap;
|
2022-01-27 21:08:43 +01:00
|
|
|
|
2022-01-23 11:04:26 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|