1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-30 08:07:46 +00:00

Finish zoning converted aswell

This commit is contained in:
Mordred 2022-01-30 16:26:44 +01:00
parent bfdf732579
commit cf69e1876a
5 changed files with 34 additions and 56 deletions

View file

@ -1581,55 +1581,6 @@ void Sapphire::Entity::Player::sendTitleList()
queuePacket( titleListPacket );
}
void Sapphire::Entity::Player::sendZoneInPackets( uint32_t param1, bool shouldSetStatus = false )
{
auto zoneInPacket = makeActorControlSelf( getId(), Appear, param1, 0, 0, 0 );
auto SetStatusPacket = makeActorControl( getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) );
if( !getGmInvis() )
sendToInRangeSet( zoneInPacket );
if( shouldSetStatus )
sendToInRangeSet( SetStatusPacket, true );
queuePacket( zoneInPacket );
setZoningType( Common::ZoneingType::None );
unsetStateFlag( PlayerStateFlag::BetweenAreas );
}
void Sapphire::Entity::Player::finishZoning()
{
switch( getZoningType() )
{
case ZoneingType::None:
sendZoneInPackets( 0x01 );
break;
case ZoneingType::Teleport:
sendZoneInPackets( 0x01 );
break;
case ZoneingType::Return:
case ZoneingType::ReturnDead:
{
if( getStatus() == Common::ActorStatus::Dead )
{
resetHp();
resetMp();
setStatus( Common::ActorStatus::Idle );
sendZoneInPackets( 0x01, true );
}
else
sendZoneInPackets( 0x01 );
}
break;
case ZoneingType::FadeIn:
break;
}
}
void Sapphire::Entity::Player::teleportQuery( uint16_t aetheryteId )
{
auto& exdData = Common::Service< Data::ExdData >::ref();

View file

@ -562,10 +562,6 @@ namespace Sapphire::Entity
/*! set the loading complete bool */
void setLoadingComplete( bool bComplete );
void sendZoneInPackets( uint32_t param1, bool pSetStatus );
void finishZoning();
void sendZonePackets();
Common::ZoneingType getZoningType() const;

View file

@ -61,6 +61,37 @@ void WarpMgr::requestMoveTerritory( Entity::Player& player, Common::WarpType war
void WarpMgr::finishWarp( Entity::Player& player )
{
WarpType warpType = WarpType::WARP_TYPE_NORMAL;
auto it = m_entityIdToWarpInfoMap.find( player.getId() );
if( it != m_entityIdToWarpInfoMap.end() )
warpType = it->second.m_warpType;
switch( warpType )
{
case WarpType::WARP_TYPE_REISE:
case WarpType::WARP_TYPE_HOME_POINT:
{
if( player.getStatus() == Common::ActorStatus::Dead )
{
player.resetHp();
player.resetMp();
player.setStatus( Common::ActorStatus::Idle );
}
}
}
auto zoneInPacket = makeActorControlSelf( player.getId(), Appear, warpType, 0, 0, 0 );
auto SetStatusPacket = makeActorControl( player.getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) );
if( !player.getGmInvis() )
player.sendToInRangeSet( zoneInPacket );
player.sendToInRangeSet( SetStatusPacket, true );
auto& server = Common::Service< WorldServer >::ref();
server.queueForPlayer( player.getCharacterId(), zoneInPacket );
player.unsetStateFlag( PlayerStateFlag::BetweenAreas );
}

View file

@ -648,8 +648,6 @@ void Sapphire::Network::GameConnection::gmCommandNameHandler( const Packets::FFX
targetPlayer->resetHp();
targetPlayer->resetMp();
targetPlayer->setStatus( Common::ActorStatus::Idle );
targetPlayer->sendZoneInPackets( 0x01, true );
targetPlayer->sendToInRangeSet( makeActorControlSelf( player.getId(), Appear, 0x01, 0x01, 0, 113 ), true );
targetPlayer->sendToInRangeSet( makeActorControl( player.getId(), SetStatus,

View file

@ -9,6 +9,7 @@
#include "Territory/Territory.h"
#include "Manager/HousingMgr.h"
#include "Manager/WarpMgr.h"
#include "Network/GameConnection.h"
@ -587,7 +588,8 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_
}
case PacketCommand::FINISH_LOADING: // Finish zoning
{
player.finishZoning();
auto& warpMgr = Service< WarpMgr >::ref();
warpMgr.finishWarp( player );
player.setLoadingComplete( true );
if( player.isLogin() )
player.setIsLogin( false );