mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-24 13:47:46 +00:00
move instance objects to zone from instancecontent
This commit is contained in:
parent
d51c5924c5
commit
530cf8a37a
4 changed files with 57 additions and 57 deletions
|
@ -4,8 +4,6 @@
|
|||
#include <common/Logging/Logger.h>
|
||||
#include <common/Util/Util.h>
|
||||
#include <common/Util/UtilMath.h>
|
||||
#include <common/Network/PacketDef/Ipcs.h>
|
||||
#include <common/Network/PacketDef/Zone/ServerZoneDef.h>
|
||||
|
||||
#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 );
|
||||
}
|
||||
}
|
|
@ -5,7 +5,6 @@
|
|||
#include "Event/Director.h"
|
||||
#include "Forwards.h"
|
||||
#include <common/Exd/ExdDataGenerated.h>
|
||||
#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;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue