From 9aeba7a0b3304ca291aebb170f821caac628a1e8 Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Sun, 15 Jul 2018 23:59:15 +0200 Subject: [PATCH 1/9] init housing setup --- src/common/Network/PacketDef/Ipcs.h | 4 + .../Network/PacketDef/Zone/ServerZoneDef.h | 52 ++++++++++ src/servers/sapphire_zone/Forwards.h | 1 + .../sapphire_zone/Zone/HousingZone.cpp | 94 +++++++++++++++++++ src/servers/sapphire_zone/Zone/HousingZone.h | 30 ++++++ .../sapphire_zone/Zone/TerritoryMgr.cpp | 58 ++++++++++++ src/servers/sapphire_zone/Zone/TerritoryMgr.h | 5 + 7 files changed, 244 insertions(+) create mode 100644 src/servers/sapphire_zone/Zone/HousingZone.cpp create mode 100644 src/servers/sapphire_zone/Zone/HousingZone.h diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index deaea6a2..d8010c37 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -169,6 +169,10 @@ namespace Packets { EquipDisplayFlags = 0x0210, // updated 4.3 + WardInfo = 0x0224, // updated 4.3 + WardHousingPermission = 0x022D, // updated 4.3 + WardYardInfo = 0x022F, // updated 4.3 + DuelChallenge = 0x0277, // 4.2; this is responsible for opening the ui PerformNote = 0x0286, // updated 4.3 diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 7dc55ed3..bc707e46 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1306,6 +1306,58 @@ struct FFXIVIpcPerformNote : FFXIVIpcBasePacket uint8_t data[32]; }; +struct FFXIVIpcWardInfo : FFXIVIpcBasePacket +{ + uint16_t pad0; + uint16_t wardNum; // set 1 for "Mist, Ward 2" + uint16_t zoneId; + uint16_t worldId; + uint8_t pad1; + uint8_t SubInstance; // (default : 1/2) + uint8_t pad3; + uint8_t pad4; + uint8_t pad5; + uint8_t pad6; + uint8_t pad7; + uint8_t pad8; + struct { + uint8_t HouseSize; //1 = small, 2 = middle, 3 = big; 1 + uint8_t HouseState; //1 = for sell, 2 = sold, 3 = hasOwner, 0x0A = House sharing; 2 + uint8_t iconColor; //HouseState has to be 3; 1 = Private, 2 = FC House; 4 + uint8_t iconIconAdd; //Heart Icon = 2; 6 + uint32_t pad9; //can be 0 (default) maybe fcId; 8 + uint32_t fcIcon; //can be 0 (default); 12 + uint32_t fcIconColor; //can be 0 (default); 16 + uint16_t houseRoofId; //18 + uint16_t houseFacadeId;//20 + uint16_t houseWindowId;//22 + uint16_t houseDoorId;//24 + uint8_t gardenData[4];//28 + uint16_t gardenSignId; //For fcIcon; 30 + uint16_t gardenFenceId; //32 + uint8_t color[8]; //40 + } landSet[30]; +}; + +struct FFXIVIpcWardYardInfo : FFXIVIpcBasePacket +{ + /* consistency check? */ + uint32_t pad1; //always 0xFFFFFFFF + uint32_t pad2; //always 0xFFFFFFFF + uint8_t pad3; //always 0xFF + /* --- */ + uint8_t packetNum; + uint16_t packetTotal; + struct + { + uint32_t itemId; + uint16_t itemRotation; + uint16_t pos_1; + uint16_t pos_2; + uint16_t pos_3; + } object[100]; +}; + struct FFXIVIpcMSQTrackerProgress : FFXIVIpcBasePacket { uint32_t id; diff --git a/src/servers/sapphire_zone/Forwards.h b/src/servers/sapphire_zone/Forwards.h index 6335aeb7..b81d6dee 100644 --- a/src/servers/sapphire_zone/Forwards.h +++ b/src/servers/sapphire_zone/Forwards.h @@ -20,6 +20,7 @@ namespace Core { TYPE_FORWARD( Cell ); TYPE_FORWARD( Zone ); + TYPE_FORWARD( HousingZone ); TYPE_FORWARD( InstanceContent ); TYPE_FORWARD( Item ); TYPE_FORWARD( ItemContainer ); diff --git a/src/servers/sapphire_zone/Zone/HousingZone.cpp b/src/servers/sapphire_zone/Zone/HousingZone.cpp new file mode 100644 index 00000000..72dbd57e --- /dev/null +++ b/src/servers/sapphire_zone/Zone/HousingZone.cpp @@ -0,0 +1,94 @@ +#include +#include +#include +#include + +#include +#include + +#include "Actor/Player.h" + +#include "Forwards.h" +#include "HousingZone.h" +#include "Framework.h" + +extern Core::Framework g_fw; + +using namespace Core::Common; +using namespace Core::Network::Packets; +using namespace Core::Network::Packets::Server; + +Core::HousingZone::HousingZone(uint8_t wardNum, + uint16_t territoryId, + uint32_t guId, + const std::string& internalName, + const std::string& contentName) + : Zone(territoryId, guId, internalName, contentName), + m_wardNum( wardNum ) +{ + +} + +bool Core::HousingZone::init() +{ + uint32_t LandSetId; + + for ( LandSetId = 0; LandSetId < 60; LandSetId++ ) + { + //TODO: load house information here + } + + return true; +} + +Core::HousingZone::~HousingZone() +{ + +} + +void Core::HousingZone::onPlayerZoneIn(Entity::Player& player) +{ + auto pLog = g_fw.get< Logger >(); + pLog->debug( "HousingZone::onPlayerZoneIn: Zone#" + std::to_string(getGuId()) + "|" + + + ", Entity#" + std::to_string( player.getId() ) ); + + uint32_t landSetId; + uint32_t yardPacketNum; + + auto wardInfoPackage = makeZonePacket< FFXIVIpcWardInfo >( player.getId() ); + auto wardYardInfoPackage = makeZonePacket< FFXIVIpcWardYardInfo >(player.getId()); + + wardInfoPackage->data().wardNum = m_wardNum; + wardInfoPackage->data().zoneId = player.getZoneId(); + //TODO: get current WorldId + wardInfoPackage->data().worldId = 67; + //TODO: handle Subdivision + wardInfoPackage->data().SubInstance = 1; + + for (landSetId = 0; landSetId < 30 ; landSetId++) + { + wardInfoPackage->data().landSet[landSetId].HouseSize = 1; + wardInfoPackage->data().landSet[landSetId].HouseState = 1; + } + + wardYardInfoPackage->data().pad1 = 0xFFFFFFFF; + wardYardInfoPackage->data().pad2 = 0xFFFFFFFF; + wardYardInfoPackage->data().pad3 = 0xFF; + wardYardInfoPackage->data().packetTotal = 8; + + player.queuePacket( wardInfoPackage ); + + for (yardPacketNum = 0; yardPacketNum < wardYardInfoPackage->data().packetTotal; yardPacketNum++) + { + //Add Objects here + wardYardInfoPackage->data().packetNum = yardPacketNum; + + player.queuePacket( wardYardInfoPackage ); + } + +} + +uint8_t Core::HousingZone::getWardNum() const +{ + return m_wardNum; +} diff --git a/src/servers/sapphire_zone/Zone/HousingZone.h b/src/servers/sapphire_zone/Zone/HousingZone.h new file mode 100644 index 00000000..feae3534 --- /dev/null +++ b/src/servers/sapphire_zone/Zone/HousingZone.h @@ -0,0 +1,30 @@ +#ifndef SAPPHIRE_HOUSINGZONE_H +#define SAPPHIRE_HOUSINGZONE_H + +#include "Zone.h" +#include "Forwards.h" + +namespace Core +{ + class HousingZone : public Zone + { + public: + HousingZone( uint8_t wardNum, + uint16_t territoryId, + uint32_t guId, + const std::string& internalName, + const std::string& contentName ); + virtual ~HousingZone(); + + bool init() override; + void onPlayerZoneIn(Entity::Player& player) override; + + /* returns current ward number for this zone */ + uint8_t getWardNum() const; + private: + uint8_t m_wardNum; + + }; + +} +#endif //SAPPHIRE_HOUSINGZONE_H diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index 6ec35837..4b767fb1 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -7,6 +7,7 @@ #include "Actor/Player.h" #include "Zone.h" +#include "HousingZone.h" #include "ZonePosition.h" #include "InstanceContent.h" #include "TerritoryMgr.h" @@ -45,6 +46,7 @@ bool Core::TerritoryMgr::init() loadTerritoryPositionMap(); createDefaultTerritories(); + createHosuingTerritories(); return true; } @@ -140,6 +142,52 @@ bool Core::TerritoryMgr::createDefaultTerritories() return true; } +bool Core::TerritoryMgr::createHosuingTerritories() +{ + //separate housing zones from default + auto pExdData = g_fw.get< Data::ExdDataGenerated >(); + auto pLog = g_fw.get< Logger >(); + for ( const auto& territory : m_territoryTypeDetailCacheMap ) + { + auto territoryId = territory.first; + auto territoryInfo = territory.second; + uint32_t wardNum; + + if ( territoryInfo->name.empty() ) + continue; + + auto pPlaceName = pExdData->get< Core::Data::PlaceName >( territoryInfo->placeName ); + + if (!pPlaceName || pPlaceName->name.empty() || !isHousingTerritory( territoryId ) ) + continue; + + for ( wardNum = 0; wardNum < 18; wardNum++ ) + { + + uint32_t guid = getNextInstanceId(); + pLog->info(std::to_string( territoryId ) + + "\t" + std::to_string( guid ) + + "\t" + std::to_string( territoryInfo->territoryIntendedUse ) + + "\t" + ( territoryInfo->name.length() <= 4 ? territoryInfo->name + "\t" : territoryInfo->name ) + + "\t" + "HOUSING" + + "\t" + pPlaceName->name + + "#" + std::to_string( wardNum ) ); + + auto pHousingZone = make_HousingZone( wardNum, territoryId, guid, territoryInfo->name, pPlaceName->name ); + pHousingZone->init(); + + InstanceIdToZonePtrMap instanceMap; + instanceMap[guid] = pHousingZone; + m_instanceIdToZonePtrMap[guid] = pHousingZone; + m_territoryIdToInstanceGuidMap[territoryId][guid] = pHousingZone; + m_zoneSet.insert( { pHousingZone } ); + } + + } + + return true; +} + Core::ZonePtr Core::TerritoryMgr::createTerritoryInstance( uint32_t territoryTypeId ) { if( !isValidTerritory( territoryTypeId ) ) @@ -264,6 +312,16 @@ bool Core::TerritoryMgr::isDefaultTerritory( uint32_t territoryTypeId ) const } +bool Core::TerritoryMgr::isHousingTerritory(uint32_t territoryTypeId) const +{ + auto pTeri = getTerritoryDetail( territoryTypeId ); + + if (!pTeri) + return false; + + return pTeri->territoryIntendedUse == TerritoryIntendedUse::HousingArea; +} + Core::ZonePositionPtr Core::TerritoryMgr::getTerritoryPosition( uint32_t territoryPositionId ) const { auto it = m_territoryPositionMap.find( territoryPositionId ); diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.h b/src/servers/sapphire_zone/Zone/TerritoryMgr.h index 32d5532d..228b3517 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.h +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.h @@ -66,6 +66,8 @@ namespace Core bool createDefaultTerritories(); + bool createHosuingTerritories(); + /*! caches TerritoryType details into m_territoryTypeMap */ void loadTerritoryTypeDetailCache(); @@ -88,6 +90,9 @@ namespace Core /*! returns true if the territoryType is a default non-instanced zone */ bool isDefaultTerritory( uint32_t territoryTypeId ) const; + /*! returns true if the territoryType is a housing zone */ + bool isHousingTerritory(uint32_t territoryTypeId) const; + /*! creates a new instance for a given territoryTypeId */ ZonePtr createTerritoryInstance( uint32_t territoryTypeId ); From d31a33732cd39a8777e67a592c3317a37499eb5c Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Mon, 16 Jul 2018 11:58:25 +0200 Subject: [PATCH 2/9] fixed style --- .../Network/PacketDef/Zone/ServerZoneDef.h | 38 +++++++++---------- .../sapphire_zone/Zone/HousingZone.cpp | 38 +++++++++---------- src/servers/sapphire_zone/Zone/HousingZone.h | 17 ++++----- .../sapphire_zone/Zone/TerritoryMgr.cpp | 11 +++--- src/servers/sapphire_zone/Zone/TerritoryMgr.h | 6 +-- 5 files changed, 54 insertions(+), 56 deletions(-) diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index bc707e46..5a8091bf 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1308,24 +1308,24 @@ struct FFXIVIpcPerformNote : FFXIVIpcBasePacket struct FFXIVIpcWardInfo : FFXIVIpcBasePacket { - uint16_t pad0; + uint16_t unknown0; uint16_t wardNum; // set 1 for "Mist, Ward 2" uint16_t zoneId; uint16_t worldId; - uint8_t pad1; - uint8_t SubInstance; // (default : 1/2) - uint8_t pad3; - uint8_t pad4; - uint8_t pad5; - uint8_t pad6; - uint8_t pad7; - uint8_t pad8; + uint8_t unknown1; + uint8_t subInstance; // (default : 1/2) + uint8_t unknown3; + uint8_t unknown4; + uint8_t unknown5; + uint8_t unknown6; + uint8_t unknown7; + uint8_t unknown8; struct { - uint8_t HouseSize; //1 = small, 2 = middle, 3 = big; 1 - uint8_t HouseState; //1 = for sell, 2 = sold, 3 = hasOwner, 0x0A = House sharing; 2 + uint8_t houseSize; //1 = small, 2 = middle, 3 = big; 1 + uint8_t houseState; //1 = for sell, 2 = sold, 3 = hasOwner, 0x0A = House sharing; 2 uint8_t iconColor; //HouseState has to be 3; 1 = Private, 2 = FC House; 4 - uint8_t iconIconAdd; //Heart Icon = 2; 6 - uint32_t pad9; //can be 0 (default) maybe fcId; 8 + uint8_t iconAddIcon; //Heart Icon = 2; 6 + uint32_t unknown9; //can be 0 (default) maybe fcId; 8 uint32_t fcIcon; //can be 0 (default); 12 uint32_t fcIconColor; //can be 0 (default); 16 uint16_t houseRoofId; //18 @@ -1342,9 +1342,9 @@ struct FFXIVIpcWardInfo : FFXIVIpcBasePacket struct FFXIVIpcWardYardInfo : FFXIVIpcBasePacket { /* consistency check? */ - uint32_t pad1; //always 0xFFFFFFFF - uint32_t pad2; //always 0xFFFFFFFF - uint8_t pad3; //always 0xFF + uint32_t unknown1; //always 0xFFFFFFFF + uint32_t unknown2; //always 0xFFFFFFFF + uint8_t unknown3; //always 0xFF /* --- */ uint8_t packetNum; uint16_t packetTotal; @@ -1352,9 +1352,9 @@ struct FFXIVIpcWardYardInfo : FFXIVIpcBasePacket { uint32_t itemId; uint16_t itemRotation; - uint16_t pos_1; - uint16_t pos_2; - uint16_t pos_3; + uint16_t pos_x; + uint16_t pos_y; + uint16_t pos_z; } object[100]; }; diff --git a/src/servers/sapphire_zone/Zone/HousingZone.cpp b/src/servers/sapphire_zone/Zone/HousingZone.cpp index 72dbd57e..840eba66 100644 --- a/src/servers/sapphire_zone/Zone/HousingZone.cpp +++ b/src/servers/sapphire_zone/Zone/HousingZone.cpp @@ -18,22 +18,22 @@ using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -Core::HousingZone::HousingZone(uint8_t wardNum, - uint16_t territoryId, - uint32_t guId, - const std::string& internalName, - const std::string& contentName) - : Zone(territoryId, guId, internalName, contentName), - m_wardNum( wardNum ) +Core::HousingZone::HousingZone( uint8_t wardNum, + uint16_t territoryId, + uint32_t guId, + const std::string& internalName, + const std::string& contentName ) + : Zone( territoryId, guId, internalName, contentName ), + m_wardNum( wardNum ) { } bool Core::HousingZone::init() { - uint32_t LandSetId; + uint32_t landSetId; - for ( LandSetId = 0; LandSetId < 60; LandSetId++ ) + for( landSetId = 0; landSetId < 60; landSetId++ ) { //TODO: load house information here } @@ -46,7 +46,7 @@ Core::HousingZone::~HousingZone() } -void Core::HousingZone::onPlayerZoneIn(Entity::Player& player) +void Core::HousingZone::onPlayerZoneIn( Entity::Player& player ) { auto pLog = g_fw.get< Logger >(); pLog->debug( "HousingZone::onPlayerZoneIn: Zone#" + std::to_string(getGuId()) + "|" + @@ -56,29 +56,29 @@ void Core::HousingZone::onPlayerZoneIn(Entity::Player& player) uint32_t yardPacketNum; auto wardInfoPackage = makeZonePacket< FFXIVIpcWardInfo >( player.getId() ); - auto wardYardInfoPackage = makeZonePacket< FFXIVIpcWardYardInfo >(player.getId()); + auto wardYardInfoPackage = makeZonePacket< FFXIVIpcWardYardInfo >( player.getId() ); wardInfoPackage->data().wardNum = m_wardNum; wardInfoPackage->data().zoneId = player.getZoneId(); //TODO: get current WorldId wardInfoPackage->data().worldId = 67; //TODO: handle Subdivision - wardInfoPackage->data().SubInstance = 1; + wardInfoPackage->data().subInstance = 1; - for (landSetId = 0; landSetId < 30 ; landSetId++) + for( landSetId = 0; landSetId < 30 ; landSetId++ ) { - wardInfoPackage->data().landSet[landSetId].HouseSize = 1; - wardInfoPackage->data().landSet[landSetId].HouseState = 1; + wardInfoPackage->data().landSet[landSetId].houseSize = 1; + wardInfoPackage->data().landSet[landSetId].houseState = 1; } - wardYardInfoPackage->data().pad1 = 0xFFFFFFFF; - wardYardInfoPackage->data().pad2 = 0xFFFFFFFF; - wardYardInfoPackage->data().pad3 = 0xFF; + wardYardInfoPackage->data().unknown1 = 0xFFFFFFFF; + wardYardInfoPackage->data().unknown2 = 0xFFFFFFFF; + wardYardInfoPackage->data().unknown3 = 0xFF; wardYardInfoPackage->data().packetTotal = 8; player.queuePacket( wardInfoPackage ); - for (yardPacketNum = 0; yardPacketNum < wardYardInfoPackage->data().packetTotal; yardPacketNum++) + for( yardPacketNum = 0; yardPacketNum < wardYardInfoPackage->data().packetTotal; yardPacketNum++ ) { //Add Objects here wardYardInfoPackage->data().packetNum = yardPacketNum; diff --git a/src/servers/sapphire_zone/Zone/HousingZone.h b/src/servers/sapphire_zone/Zone/HousingZone.h index feae3534..2158b356 100644 --- a/src/servers/sapphire_zone/Zone/HousingZone.h +++ b/src/servers/sapphire_zone/Zone/HousingZone.h @@ -6,24 +6,23 @@ namespace Core { - class HousingZone : public Zone +class HousingZone : public Zone { public: HousingZone( uint8_t wardNum, - uint16_t territoryId, - uint32_t guId, - const std::string& internalName, - const std::string& contentName ); + uint16_t territoryId, + uint32_t guId, + const std::string& internalName, + const std::string& contentName ); virtual ~HousingZone(); bool init() override; void onPlayerZoneIn(Entity::Player& player) override; - /* returns current ward number for this zone */ - uint8_t getWardNum() const; + /* returns current ward number for this zone */ + uint8_t getWardNum() const; private: - uint8_t m_wardNum; - + uint8_t m_wardNum; }; } diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index 4b767fb1..7db6484d 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -147,25 +147,24 @@ bool Core::TerritoryMgr::createHosuingTerritories() //separate housing zones from default auto pExdData = g_fw.get< Data::ExdDataGenerated >(); auto pLog = g_fw.get< Logger >(); - for ( const auto& territory : m_territoryTypeDetailCacheMap ) + for( const auto& territory : m_territoryTypeDetailCacheMap ) { auto territoryId = territory.first; auto territoryInfo = territory.second; uint32_t wardNum; - if ( territoryInfo->name.empty() ) + if( territoryInfo->name.empty() ) continue; auto pPlaceName = pExdData->get< Core::Data::PlaceName >( territoryInfo->placeName ); - if (!pPlaceName || pPlaceName->name.empty() || !isHousingTerritory( territoryId ) ) + if( !pPlaceName || pPlaceName->name.empty() || !isHousingTerritory( territoryId ) ) continue; - for ( wardNum = 0; wardNum < 18; wardNum++ ) + for( wardNum = 0; wardNum < 18; wardNum++ ) { - uint32_t guid = getNextInstanceId(); - pLog->info(std::to_string( territoryId ) + + pLog->info( std::to_string( territoryId ) + "\t" + std::to_string( guid ) + "\t" + std::to_string( territoryInfo->territoryIntendedUse ) + "\t" + ( territoryInfo->name.length() <= 4 ? territoryInfo->name + "\t" : territoryInfo->name ) + diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.h b/src/servers/sapphire_zone/Zone/TerritoryMgr.h index 228b3517..49961953 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.h +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.h @@ -66,7 +66,7 @@ namespace Core bool createDefaultTerritories(); - bool createHosuingTerritories(); + bool createHosuingTerritories(); /*! caches TerritoryType details into m_territoryTypeMap */ void loadTerritoryTypeDetailCache(); @@ -90,8 +90,8 @@ namespace Core /*! returns true if the territoryType is a default non-instanced zone */ bool isDefaultTerritory( uint32_t territoryTypeId ) const; - /*! returns true if the territoryType is a housing zone */ - bool isHousingTerritory(uint32_t territoryTypeId) const; + /*! returns true if the territoryType is a housing zone */ + bool isHousingTerritory(uint32_t territoryTypeId) const; /*! creates a new instance for a given territoryTypeId */ ZonePtr createTerritoryInstance( uint32_t territoryTypeId ); From 627a816f6e1f14c4a6f2bc48f4198de16e24133e Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Mon, 16 Jul 2018 12:05:51 +0200 Subject: [PATCH 3/9] fixed style #2 --- src/servers/sapphire_zone/Zone/TerritoryMgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index 7db6484d..ab0939ad 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -315,7 +315,7 @@ bool Core::TerritoryMgr::isHousingTerritory(uint32_t territoryTypeId) const { auto pTeri = getTerritoryDetail( territoryTypeId ); - if (!pTeri) + if( !pTeri ) return false; return pTeri->territoryIntendedUse == TerritoryIntendedUse::HousingArea; From d5b7520e227431f29957aba9030b82139abe7087 Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Mon, 16 Jul 2018 12:37:04 +0200 Subject: [PATCH 4/9] fixed style #3 --- .../sapphire_zone/Zone/HousingZone.cpp | 43 ++++++++++--------- src/servers/sapphire_zone/Zone/HousingZone.h | 2 +- src/servers/sapphire_zone/Zone/TerritoryMgr.h | 2 +- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/servers/sapphire_zone/Zone/HousingZone.cpp b/src/servers/sapphire_zone/Zone/HousingZone.cpp index 840eba66..db6dc972 100644 --- a/src/servers/sapphire_zone/Zone/HousingZone.cpp +++ b/src/servers/sapphire_zone/Zone/HousingZone.cpp @@ -22,8 +22,8 @@ Core::HousingZone::HousingZone( uint8_t wardNum, uint16_t territoryId, uint32_t guId, const std::string& internalName, - const std::string& contentName ) - : Zone( territoryId, guId, internalName, contentName ), + const std::string& contentName ) : + Zone( territoryId, guId, internalName, contentName ), m_wardNum( wardNum ) { @@ -49,41 +49,42 @@ Core::HousingZone::~HousingZone() void Core::HousingZone::onPlayerZoneIn( Entity::Player& player ) { auto pLog = g_fw.get< Logger >(); - pLog->debug( "HousingZone::onPlayerZoneIn: Zone#" + std::to_string(getGuId()) + "|" + + pLog->debug( "HousingZone::onPlayerZoneIn: Zone#" + std::to_string( getGuId() ) + "|" + + ", Entity#" + std::to_string( player.getId() ) ); uint32_t landSetId; uint32_t yardPacketNum; + uint32_t yardPacketTotal = 8; - auto wardInfoPackage = makeZonePacket< FFXIVIpcWardInfo >( player.getId() ); - auto wardYardInfoPackage = makeZonePacket< FFXIVIpcWardYardInfo >( player.getId() ); + auto wardInfoPacket = makeZonePacket< FFXIVIpcWardInfo >( player.getId() ); - wardInfoPackage->data().wardNum = m_wardNum; - wardInfoPackage->data().zoneId = player.getZoneId(); + wardInfoPacket->data().wardNum = m_wardNum; + wardInfoPacket->data().zoneId = player.getZoneId(); //TODO: get current WorldId - wardInfoPackage->data().worldId = 67; + wardInfoPacket->data().worldId = 67; //TODO: handle Subdivision - wardInfoPackage->data().subInstance = 1; + wardInfoPacket->data().subInstance = 1; for( landSetId = 0; landSetId < 30 ; landSetId++ ) { - wardInfoPackage->data().landSet[landSetId].houseSize = 1; - wardInfoPackage->data().landSet[landSetId].houseState = 1; + wardInfoPacket->data().landSet[landSetId].houseSize = 1; + wardInfoPacket->data().landSet[landSetId].houseState = 1; } - wardYardInfoPackage->data().unknown1 = 0xFFFFFFFF; - wardYardInfoPackage->data().unknown2 = 0xFFFFFFFF; - wardYardInfoPackage->data().unknown3 = 0xFF; - wardYardInfoPackage->data().packetTotal = 8; + player.queuePacket( wardInfoPacket ); - player.queuePacket( wardInfoPackage ); - - for( yardPacketNum = 0; yardPacketNum < wardYardInfoPackage->data().packetTotal; yardPacketNum++ ) + for( yardPacketNum = 0; yardPacketNum < yardPacketTotal; yardPacketNum++ ) { - //Add Objects here - wardYardInfoPackage->data().packetNum = yardPacketNum; + auto wardYardInfoPacket = makeZonePacket< FFXIVIpcWardYardInfo >( player.getId() ); + wardYardInfoPacket->data().unknown1 = 0xFFFFFFFF; + wardYardInfoPacket->data().unknown2 = 0xFFFFFFFF; + wardYardInfoPacket->data().unknown3 = 0xFF; + wardYardInfoPacket->data().packetNum = yardPacketNum; + wardYardInfoPacket->data().packetTotal = yardPacketTotal; - player.queuePacket( wardYardInfoPackage ); + //TODO: Add Objects here + + player.queuePacket( wardYardInfoPacket ); } } diff --git a/src/servers/sapphire_zone/Zone/HousingZone.h b/src/servers/sapphire_zone/Zone/HousingZone.h index 2158b356..146ad8e2 100644 --- a/src/servers/sapphire_zone/Zone/HousingZone.h +++ b/src/servers/sapphire_zone/Zone/HousingZone.h @@ -17,7 +17,7 @@ class HousingZone : public Zone virtual ~HousingZone(); bool init() override; - void onPlayerZoneIn(Entity::Player& player) override; + void onPlayerZoneIn( Entity::Player& player ) override; /* returns current ward number for this zone */ uint8_t getWardNum() const; diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.h b/src/servers/sapphire_zone/Zone/TerritoryMgr.h index 49961953..dc72bc6b 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.h +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.h @@ -91,7 +91,7 @@ namespace Core bool isDefaultTerritory( uint32_t territoryTypeId ) const; /*! returns true if the territoryType is a housing zone */ - bool isHousingTerritory(uint32_t territoryTypeId) const; + bool isHousingTerritory( uint32_t territoryTypeId ) const; /*! creates a new instance for a given territoryTypeId */ ZonePtr createTerritoryInstance( uint32_t territoryTypeId ); From e4aeaaae8b3000b563085322a33e629b14de9065 Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Mon, 16 Jul 2018 13:54:03 +0200 Subject: [PATCH 5/9] added wardMaxNum --- src/servers/sapphire_zone/Zone/HousingZone.h | 2 ++ src/servers/sapphire_zone/Zone/TerritoryMgr.cpp | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/servers/sapphire_zone/Zone/HousingZone.h b/src/servers/sapphire_zone/Zone/HousingZone.h index 146ad8e2..428c50c9 100644 --- a/src/servers/sapphire_zone/Zone/HousingZone.h +++ b/src/servers/sapphire_zone/Zone/HousingZone.h @@ -21,6 +21,8 @@ class HousingZone : public Zone /* returns current ward number for this zone */ uint8_t getWardNum() const; + + const uint32_t m_wardMaxNum = 18; private: uint8_t m_wardNum; }; diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index ab0939ad..8de3479e 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -152,6 +152,7 @@ bool Core::TerritoryMgr::createHosuingTerritories() auto territoryId = territory.first; auto territoryInfo = territory.second; uint32_t wardNum; + uint32_t wardMaxNum = 1; if( territoryInfo->name.empty() ) continue; @@ -161,7 +162,7 @@ bool Core::TerritoryMgr::createHosuingTerritories() if( !pPlaceName || pPlaceName->name.empty() || !isHousingTerritory( territoryId ) ) continue; - for( wardNum = 0; wardNum < 18; wardNum++ ) + for( wardNum = 0; wardNum < wardMaxNum; wardNum++ ) { uint32_t guid = getNextInstanceId(); pLog->info( std::to_string( territoryId ) + @@ -174,6 +175,7 @@ bool Core::TerritoryMgr::createHosuingTerritories() auto pHousingZone = make_HousingZone( wardNum, territoryId, guid, territoryInfo->name, pPlaceName->name ); pHousingZone->init(); + wardMaxNum = pHousingZone->m_wardMaxNum; InstanceIdToZonePtrMap instanceMap; instanceMap[guid] = pHousingZone; From 500b194762cfc7fa5b0cbb891d4a2fcd167646c8 Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Mon, 16 Jul 2018 16:13:39 +0200 Subject: [PATCH 6/9] fixed style #4 --- CMakeSettings.json | 1 - src/servers/sapphire_zone/Zone/HousingZone.h | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeSettings.json b/CMakeSettings.json index 90e895cd..dbd0d067 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -18,7 +18,6 @@ { "name": "x86-Release", "generator": "Visual Studio 14 2015", - "configurationType": "Release", "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", "cmakeCommandArgs": "", "buildCommandArgs": "-m -v:minimal", diff --git a/src/servers/sapphire_zone/Zone/HousingZone.h b/src/servers/sapphire_zone/Zone/HousingZone.h index 428c50c9..9eef143a 100644 --- a/src/servers/sapphire_zone/Zone/HousingZone.h +++ b/src/servers/sapphire_zone/Zone/HousingZone.h @@ -21,8 +21,8 @@ class HousingZone : public Zone /* returns current ward number for this zone */ uint8_t getWardNum() const; - const uint32_t m_wardMaxNum = 18; + private: uint8_t m_wardNum; }; From 2054a87cf756a4311bc2def2798cd70852ce7037 Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Mon, 16 Jul 2018 16:21:01 +0200 Subject: [PATCH 7/9] Revert "fixed style #4" This reverts commit 500b194762cfc7fa5b0cbb891d4a2fcd167646c8. --- CMakeSettings.json | 1 + src/servers/sapphire_zone/Zone/HousingZone.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeSettings.json b/CMakeSettings.json index dbd0d067..90e895cd 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -18,6 +18,7 @@ { "name": "x86-Release", "generator": "Visual Studio 14 2015", + "configurationType": "Release", "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", "cmakeCommandArgs": "", "buildCommandArgs": "-m -v:minimal", diff --git a/src/servers/sapphire_zone/Zone/HousingZone.h b/src/servers/sapphire_zone/Zone/HousingZone.h index 9eef143a..428c50c9 100644 --- a/src/servers/sapphire_zone/Zone/HousingZone.h +++ b/src/servers/sapphire_zone/Zone/HousingZone.h @@ -21,8 +21,8 @@ class HousingZone : public Zone /* returns current ward number for this zone */ uint8_t getWardNum() const; - const uint32_t m_wardMaxNum = 18; + const uint32_t m_wardMaxNum = 18; private: uint8_t m_wardNum; }; From 28d6c8fe61f1deea5d4b12f44448d0af36f3c7f0 Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Mon, 16 Jul 2018 17:51:17 +0200 Subject: [PATCH 8/9] removed hosuing - created housing --- src/servers/sapphire_zone/Zone/TerritoryMgr.cpp | 2 +- src/servers/sapphire_zone/Zone/TerritoryMgr.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index 8de3479e..1269bcca 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -142,7 +142,7 @@ bool Core::TerritoryMgr::createDefaultTerritories() return true; } -bool Core::TerritoryMgr::createHosuingTerritories() +bool Core::TerritoryMgr::createHousingTerritories() { //separate housing zones from default auto pExdData = g_fw.get< Data::ExdDataGenerated >(); diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.h b/src/servers/sapphire_zone/Zone/TerritoryMgr.h index dc72bc6b..adafa145 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.h +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.h @@ -66,7 +66,7 @@ namespace Core bool createDefaultTerritories(); - bool createHosuingTerritories(); + bool createHousingTerritories(); /*! caches TerritoryType details into m_territoryTypeMap */ void loadTerritoryTypeDetailCache(); From 3158df44a73f186d71ef613606f8588a510676a0 Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Mon, 16 Jul 2018 17:58:42 +0200 Subject: [PATCH 9/9] less hosuing --- src/servers/sapphire_zone/Zone/TerritoryMgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index 1269bcca..a24033fa 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -46,7 +46,7 @@ bool Core::TerritoryMgr::init() loadTerritoryPositionMap(); createDefaultTerritories(); - createHosuingTerritories(); + createHousingTerritories(); return true; }