mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-26 14:37:44 +00:00
EObjects are now given a name and can be retrieved using it
This commit is contained in:
parent
f9722b5e2e
commit
acee4d4b51
5 changed files with 33 additions and 7 deletions
|
@ -18,11 +18,13 @@ extern Core::Logger g_log;
|
|||
|
||||
|
||||
Core::Entity::EventObject::EventObject( uint32_t objectId, uint32_t mapLinkId,
|
||||
uint8_t initialState, Common::FFXIVARR_POSITION3 pos ) :
|
||||
uint8_t initialState, Common::FFXIVARR_POSITION3 pos,
|
||||
const std::string givenName ) :
|
||||
Core::Entity::Actor( ObjKind::EventObj ),
|
||||
m_mapLinkId( mapLinkId ),
|
||||
m_state( initialState ),
|
||||
m_objectId( objectId )
|
||||
m_objectId( objectId ),
|
||||
m_name( givenName )
|
||||
{
|
||||
m_id = objectId;
|
||||
m_pos.x = pos.x;
|
||||
|
@ -69,7 +71,7 @@ Core::InstanceContentPtr Core::Entity::EventObject::getParentInstance() const
|
|||
|
||||
void Core::Entity::EventObject::spawn( Core::Entity::PlayerPtr pTarget )
|
||||
{
|
||||
g_log.debug( "spawn eobj: " + std::to_string( getId() ) );
|
||||
g_log.debug( "Spawning EObj: id:" + std::to_string( getId() ) + " name:" + getName() );
|
||||
ZoneChannelPacket< FFXIVIpcObjectSpawn > eobjStatePacket( getId(), pTarget->getId() );
|
||||
eobjStatePacket.data().count = pTarget->getNextObjCount();
|
||||
eobjStatePacket.data().objKind = getObjKind();
|
||||
|
@ -84,4 +86,9 @@ void Core::Entity::EventObject::spawn( Core::Entity::PlayerPtr pTarget )
|
|||
void Core::Entity::EventObject::despawn( Core::Entity::PlayerPtr pTarget )
|
||||
{
|
||||
g_log.debug( "despawn eobj: " + std::to_string( getId() ) );
|
||||
}
|
||||
}
|
||||
|
||||
const std::string &Core::Entity::EventObject::getName() const
|
||||
{
|
||||
return m_name;
|
||||
}
|
||||
|
|
|
@ -10,7 +10,8 @@ namespace Entity
|
|||
class EventObject : public Actor
|
||||
{
|
||||
public:
|
||||
EventObject( uint32_t objectId, uint32_t mapLinkId, uint8_t initialState, Common::FFXIVARR_POSITION3 pos );
|
||||
EventObject( uint32_t objectId, uint32_t mapLinkId, uint8_t initialState, Common::FFXIVARR_POSITION3 pos,
|
||||
const std::string givenName = "none" );
|
||||
|
||||
uint32_t getMapLinkId() const;
|
||||
void setMapLinkId( uint32_t mapLinkId );
|
||||
|
@ -20,6 +21,8 @@ namespace Entity
|
|||
|
||||
uint32_t getObjectId() const;
|
||||
|
||||
const std::string& getName() const;
|
||||
|
||||
InstanceContentPtr getParentInstance() const;
|
||||
void setParentInstance( InstanceContentPtr instance );
|
||||
|
||||
|
@ -30,6 +33,7 @@ namespace Entity
|
|||
uint32_t m_mapLinkId;
|
||||
uint32_t m_objectId;
|
||||
uint8_t m_state;
|
||||
std::string m_name;
|
||||
InstanceContentPtr m_parentInstance;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,10 +9,10 @@ public:
|
|||
|
||||
void onInit( InstanceContentPtr instance ) override
|
||||
{
|
||||
auto exit = Entity::EventObjectPtr( new Entity::EventObject( EXIT_OBJECT, 0, 4, { 0, 0, -10 } ) );
|
||||
auto exit = Entity::EventObjectPtr( new Entity::EventObject( EXIT_OBJECT, 0, 4, { 0, 0, -10 }, "Entrance" ) );
|
||||
instance->registerEObj( exit );
|
||||
|
||||
auto start = Entity::EventObjectPtr( new Entity::EventObject( START_CIRCLE, 4236868, 5, { 0, 0, 24 } ) );
|
||||
auto start = Entity::EventObjectPtr( new Entity::EventObject( START_CIRCLE, 4236868, 5, { 0, 0, 24 }, "Exit" ) );
|
||||
instance->registerEObj( start );
|
||||
}
|
||||
|
||||
|
|
|
@ -223,6 +223,8 @@ void Core::InstanceContent::setVar( uint8_t index, uint8_t value )
|
|||
|
||||
void Core::InstanceContent::onRegisterEObj( Entity::EventObjectPtr object )
|
||||
{
|
||||
if( object->getName() != "none" )
|
||||
m_eventObjectMap[object->getName()] = object;
|
||||
if( object->getObjectId() == 2000182 ) // start
|
||||
m_pEntranceEObj = object;
|
||||
}
|
||||
|
@ -235,4 +237,13 @@ void Core::InstanceContent::onBeforeEnterTerritory( Core::Entity::Player &player
|
|||
player.setPos( { 0.f, 0.f, 0.f } );
|
||||
}
|
||||
|
||||
Core::Entity::EventObjectPtr Core::InstanceContent::getEObjByName( const std::string &name )
|
||||
{
|
||||
auto it = m_eventObjectMap.find( name );
|
||||
if( it == m_eventObjectMap.end() )
|
||||
return nullptr;
|
||||
|
||||
return it->second;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -43,6 +43,8 @@ public:
|
|||
|
||||
uint32_t getInstanceContentId() const;
|
||||
|
||||
Entity::EventObjectPtr getEObjByName( const std::string& name );
|
||||
|
||||
private:
|
||||
Event::DirectorPtr m_pDirector;
|
||||
Core::Data::ExdDataGenerated::InstanceContentPtr m_instanceContentInfo;
|
||||
|
@ -52,6 +54,8 @@ private:
|
|||
int64_t m_instanceExpireTime;
|
||||
|
||||
Entity::EventObjectPtr m_pEntranceEObj;
|
||||
|
||||
std::map< std::string, Entity::EventObjectPtr > m_eventObjectMap;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue