From 4abbbf7c1c621ff39d85a7ad85c1743b925d3a31 Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Wed, 28 Nov 2018 08:39:36 +0100 Subject: [PATCH] added door positions --- src/common/Exd/ExdDataGenerated.cpp | 3 +++ src/common/Exd/ExdDataGenerated.h | 3 +++ src/common/Network/PacketDef/Ipcs.h | 2 ++ src/servers/sapphire_zone/Zone/House.cpp | 15 +++++++++++++++ src/servers/sapphire_zone/Zone/House.h | 3 +++ 5 files changed, 26 insertions(+) diff --git a/src/common/Exd/ExdDataGenerated.cpp b/src/common/Exd/ExdDataGenerated.cpp index d6585c1a..4090e655 100644 --- a/src/common/Exd/ExdDataGenerated.cpp +++ b/src/common/Exd/ExdDataGenerated.cpp @@ -2909,6 +2909,9 @@ Core::Data::HousingFurniture::HousingFurniture( uint32_t row_id, Core::Data::Exd Core::Data::HousingMapMarkerInfo::HousingMapMarkerInfo( uint32_t row_id, uint32_t subRow, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_HousingMapMarkerInfoDat.get_row( row_id, subRow ); + x = exdData->getField< float >( row, 0 ); + y = exdData->getField< float >( row, 1 ); + z = exdData->getField< float >( row, 2 ); map = exdData->getField< uint16_t >( row, 4 ); } diff --git a/src/common/Exd/ExdDataGenerated.h b/src/common/Exd/ExdDataGenerated.h index af2974ef..0c2bf2d1 100644 --- a/src/common/Exd/ExdDataGenerated.h +++ b/src/common/Exd/ExdDataGenerated.h @@ -3048,6 +3048,9 @@ struct HousingFurniture struct HousingMapMarkerInfo { uint16_t map; + float x; + float y; + float z; HousingMapMarkerInfo( uint32_t row_id, uint32_t subRow, Core::Data::ExdDataGenerated* exdData ); }; diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index a7c3533f..88822b84 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -216,7 +216,9 @@ namespace Core::Network::Packets // Unknown IPC types that still need to be sent // TODO: figure all these out properly + // Quests related op codes IPCTYPE_UNK_320 = 0x0249, // updated 4.4 + IPCTYPE_UPDATE_320 = 0x024A, // updated 4.4 IPCTYPE_UNK_322 = 0x024B, // updated 4.4 }; diff --git a/src/servers/sapphire_zone/Zone/House.cpp b/src/servers/sapphire_zone/Zone/House.cpp index 333bfec4..31f1bc39 100644 --- a/src/servers/sapphire_zone/Zone/House.cpp +++ b/src/servers/sapphire_zone/Zone/House.cpp @@ -52,6 +52,16 @@ Core::House::House( uint32_t houseId, uint32_t landSetId, uint8_t landId, uint8_ m_houseParts[ i ] = { models[ i ], colours[ i ] }; } } + + auto pExdData = g_fw.get< Data::ExdDataGenerated >(); + auto mapMarker = pExdData->get< Core::Data::HousingMapMarkerInfo >( getTerritoryTypeId(), getLandId() ); + + if( mapMarker ) + { + m_doorPosition.x = mapMarker->x; + m_doorPosition.y = mapMarker->y; + m_doorPosition.z = mapMarker->z; + } } Core::House::~House() @@ -120,6 +130,11 @@ uint32_t Core::House::getHouseId() const return m_houseId; } +Core::Common::FFXIVARR_POSITION3 Core::House::getDoorPosition() const +{ + return m_doorPosition; +} + uint8_t Core::House::getHousePartColor( Common::HousePartSlot slot ) const { return m_houseParts[ slot ].second; diff --git a/src/servers/sapphire_zone/Zone/House.h b/src/servers/sapphire_zone/Zone/House.h index 17abaaba..69c79241 100644 --- a/src/servers/sapphire_zone/Zone/House.h +++ b/src/servers/sapphire_zone/Zone/House.h @@ -24,6 +24,7 @@ namespace Core uint8_t getWardNum() const; uint16_t getTerritoryTypeId() const; uint32_t getHouseId() const; + Common::FFXIVARR_POSITION3 getDoorPosition() const; //functions void setHousePart( Common::HousePartSlot slot, uint32_t id ); @@ -48,6 +49,8 @@ namespace Core std::string m_estateMessage; std::string m_houseName; + + Common::FFXIVARR_POSITION3 m_doorPosition; }; }