1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 22:37:45 +00:00

forceZoneing overload with more args

This commit is contained in:
collett 2024-06-20 23:51:37 +09:00
parent 2b78ab0808
commit a2a1afc92a
2 changed files with 27 additions and 8 deletions

View file

@ -467,6 +467,16 @@ void Sapphire::Entity::Player::forceZoneing( uint32_t zoneId )
//performZoning( zoneId, Common::ZoneingType::None, getPos() );
}
void Sapphire::Entity::Player::forceZoneing( uint32_t zoneId, FFXIVARR_POSITION3 pos, float rot, bool showZoneName )
{
if( zoneId == 0 )
{
zoneId = getCurrentTerritory()->getTerritoryTypeId();
}
m_queuedZoneing = std::make_shared< QueuedZoning >( zoneId, pos, Util::getTimeMs(), rot );
prepareZoning( showZoneName ? zoneId : 0, true, 1, 0 );
}
void Sapphire::Entity::Player::returnToHomepoint()
{
setZoningType( Common::ZoneingType::Return );
@ -514,10 +524,14 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance )
// zoning within the same zone won't cause the prev data to be overwritten
if( instance->getTerritoryTypeId() != m_territoryTypeId )
{
m_prevPos = m_pos;
m_prevRot = m_rot;
m_prevTerritoryTypeId = currentZone->getTerritoryTypeId();
m_prevTerritoryId = getTerritoryId();
// never returning to a BeforeTrialDung zone.
if( currentZone->getTerritoryTypeInfo()->territoryIntendedUse != Sapphire::World::Manager::TerritoryMgr::TerritoryIntendedUse::BeforeTrialDung )
{
m_prevPos = m_pos;
m_prevRot = m_rot;
m_prevTerritoryTypeId = currentZone->getTerritoryTypeId();
m_prevTerritoryId = getTerritoryId();
}
}
return teriMgr.movePlayer( instance, getAsPlayer() );
@ -535,10 +549,14 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIV
// zoning within the same zone won't cause the prev data to be overwritten
if( instance->getTerritoryTypeId() != m_territoryTypeId )
{
m_prevPos = m_pos;
m_prevRot = m_rot;
m_prevTerritoryTypeId = currentZone->getTerritoryTypeId();
m_prevTerritoryId = getTerritoryId();
// never returning to a BeforeTrialDung zone.
if( currentZone->getTerritoryTypeInfo()->territoryIntendedUse != Sapphire::World::Manager::TerritoryMgr::TerritoryIntendedUse::BeforeTrialDung )
{
m_prevPos = m_pos;
m_prevRot = m_rot;
m_prevTerritoryTypeId = currentZone->getTerritoryTypeId();
m_prevTerritoryId = getTerritoryId();
}
}
m_pos = pos;

View file

@ -512,6 +512,7 @@ namespace Sapphire::Entity
uint32_t getTerritoryTypeId() const;
void forceZoneing( uint32_t zoneId );
void forceZoneing( uint32_t zoneId, Sapphire::Common::FFXIVARR_POSITION3 pos, float rot, bool showZoneName );
/*! return player to preset homepoint */
void returnToHomepoint();