diff --git a/src/servers/sapphire_zone/Zone/InstanceContent.cpp b/src/servers/sapphire_zone/Zone/InstanceContent.cpp index 777138db..c4fc6514 100644 --- a/src/servers/sapphire_zone/Zone/InstanceContent.cpp +++ b/src/servers/sapphire_zone/Zone/InstanceContent.cpp @@ -4,8 +4,6 @@ #include #include #include -#include -#include #include "Event/Director.h" #include "Script/ScriptManager.h" @@ -212,52 +210,4 @@ void Core::InstanceContent::setVar( uint8_t index, uint8_t value ) { sendDirectorVars( *playerIt.second ); } -} - -void Core::InstanceContent::registerInstanceObj( Core::Entity::InstanceObjectPtr object ) -{ - if( !object ) - return; - - object->setParentInstance( InstanceContentPtr( this ) ); - - m_instanceObjects[object->getId()] = object; - - g_log.debug( "Registered instance eobj: " + std::to_string( object->getId() ) ); -} - -Core::Entity::InstanceObjectPtr Core::InstanceContent::getInstanceObject( uint32_t objId ) -{ - auto obj = m_instanceObjects.find( objId ); - if( obj == m_instanceObjects.end() ) - return nullptr; - - return obj->second; -} - -void Core::InstanceContent::updateInstanceObj( Core::Entity::InstanceObjectPtr object ) -{ - if( !object ) - return; - - for( const auto& playerIt : m_playerMap ) - { - // send that packet with le data - ZoneChannelPacket< FFXIVIpcObjectSpawn > eobjStatePacket( playerIt.second->getId() ); - eobjStatePacket.data().objKind = object->getObjKind(); - eobjStatePacket.data().state = object->getState(); - eobjStatePacket.data().objId = object->getId(); - eobjStatePacket.data().hierachyId = object->getHierachyId(); - eobjStatePacket.data().position = object->getPos(); - - // ???? - //eobjStatePacket.data().levelId = 4236873; - //eobjStatePacket.data().unknown2 = 5; - //eobjStatePacket.data().unknown1C = 1065353216; - //eobjStatePacket.data().unknown20 = 2147423605; - //eobjStatePacket.data().actorId = 1074105831; - //eobjStatePacket.data().unknown = 1; - - playerIt.second->queuePacket( eobjStatePacket ); - } } \ No newline at end of file diff --git a/src/servers/sapphire_zone/Zone/InstanceContent.h b/src/servers/sapphire_zone/Zone/InstanceContent.h index 72b7b958..318b82c7 100644 --- a/src/servers/sapphire_zone/Zone/InstanceContent.h +++ b/src/servers/sapphire_zone/Zone/InstanceContent.h @@ -5,7 +5,6 @@ #include "Event/Director.h" #include "Forwards.h" #include -#include "Actor/InstanceObject.h" namespace Core { @@ -36,10 +35,6 @@ public: void setVar( uint8_t index, uint8_t value ); - void registerInstanceObj( Entity::InstanceObjectPtr object ); - Entity::InstanceObjectPtr getInstanceObject( uint32_t objId ); - void updateInstanceObj( Entity::InstanceObjectPtr object ); - Core::Data::ExdDataGenerated::InstanceContentPtr getInstanceContentInfo() const; uint32_t getInstanceContentId() const; @@ -51,8 +46,6 @@ private: InstanceContentState m_state; int64_t m_instanceExpireTime; - - std::unordered_map< uint32_t, Core::Entity::InstanceObjectPtr > m_instanceObjects; }; } diff --git a/src/servers/sapphire_zone/Zone/Zone.cpp b/src/servers/sapphire_zone/Zone/Zone.cpp index 11a5f2ac..7e60d488 100644 --- a/src/servers/sapphire_zone/Zone/Zone.cpp +++ b/src/servers/sapphire_zone/Zone/Zone.cpp @@ -831,3 +831,51 @@ void Zone::onInitDirector( Entity::Player& player ) } } + +void Core::Zone::registerInstanceObj( Core::Entity::InstanceObjectPtr object ) +{ + if( !object ) + return; + + //object->setParentInstance( InstanceContentPtr( this ) ); + + m_instanceObjects[object->getId()] = object; + + g_log.debug( "Registered instance eobj: " + std::to_string( object->getId() ) ); +} + +Core::Entity::InstanceObjectPtr Core::Zone::getInstanceObject( uint32_t objId ) +{ + auto obj = m_instanceObjects.find( objId ); + if( obj == m_instanceObjects.end() ) + return nullptr; + + return obj->second; +} + +void Core::Zone::updateInstanceObj( Core::Entity::InstanceObjectPtr object ) +{ + if( !object ) + return; + + for( const auto& playerIt : m_playerMap ) + { + // send that packet with le data + Network::Packets::ZoneChannelPacket< Network::Packets::Server::FFXIVIpcObjectSpawn > eobjStatePacket( playerIt.second->getId() ); + eobjStatePacket.data().objKind = object->getObjKind(); + eobjStatePacket.data().state = object->getState(); + eobjStatePacket.data().objId = object->getId(); + eobjStatePacket.data().hierachyId = object->getHierachyId(); + eobjStatePacket.data().position = object->getPos(); + + // ???? + //eobjStatePacket.data().levelId = 4236873; + //eobjStatePacket.data().unknown2 = 5; + //eobjStatePacket.data().unknown1C = 1065353216; + //eobjStatePacket.data().unknown20 = 2147423605; + //eobjStatePacket.data().actorId = 1074105831; + //eobjStatePacket.data().unknown = 1; + + playerIt.second->queuePacket( eobjStatePacket ); + } +} diff --git a/src/servers/sapphire_zone/Zone/Zone.h b/src/servers/sapphire_zone/Zone/Zone.h index 68f11ee0..a898a802 100644 --- a/src/servers/sapphire_zone/Zone/Zone.h +++ b/src/servers/sapphire_zone/Zone/Zone.h @@ -6,6 +6,7 @@ #include "Cell.h" #include "CellHandler.h" +#include "Actor/InstanceObject.h" #include "Forwards.h" @@ -52,6 +53,8 @@ protected: std::map< uint8_t, int32_t> m_weatherRateMap; + std::unordered_map< uint32_t, Core::Entity::InstanceObjectPtr > m_instanceObjects; + public: Zone(); @@ -107,6 +110,12 @@ public: bool update( uint32_t currTime ); + void registerInstanceObj( Entity::InstanceObjectPtr object ); + Entity::InstanceObjectPtr getInstanceObject( uint32_t objId ); + void updateInstanceObj( Entity::InstanceObjectPtr object ); + + InstanceContentPtr getAsInstanceContent(); + }; }