From a7bc521ebc0fb870c5d3a0961fd39501a78c7796 Mon Sep 17 00:00:00 2001 From: mordred Date: Wed, 14 Nov 2018 10:00:16 +0100 Subject: [PATCH] Cleanup of housing definitions --- src/common/Common.h | 14 ---------- .../Network/PacketDef/Zone/ServerZoneDef.h | 18 ++++++++++-- .../Network/Handlers/ClientTriggerHandler.cpp | 5 ++-- .../Network/Handlers/PacketHandlers.cpp | 3 +- src/servers/sapphire_zone/Zone/HousingMgr.cpp | 2 +- .../sapphire_zone/Zone/HousingZone.cpp | 22 +++++++-------- src/servers/sapphire_zone/Zone/Land.cpp | 28 ++----------------- src/servers/sapphire_zone/Zone/Land.h | 26 +++-------------- 8 files changed, 40 insertions(+), 78 deletions(-) diff --git a/src/common/Common.h b/src/common/Common.h index 602ea356..f1d58363 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -758,20 +758,6 @@ namespace Core::Common SubTag2 }; - //Structs - struct LandStruct - { - uint8_t plotSize; //0 - uint8_t houseState; // 2 - uint8_t iconColor; // 4 - uint8_t iconAddIcon; // 6 - uint32_t fcId; //8 - uint32_t fcIcon;// 12 - uint32_t fcIconColor; // 16 - uint16_t housePart[ 8 ]; // 34 - uint8_t color[ 8 ]; // 36 - }; - enum LandPermissionSlot { FreeCompany, diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 7fd1d293..d0a31c16 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1596,13 +1596,27 @@ struct FFXIVIpcLandPermission : FFXIVIpcBasePacket< LandPermission > uint64_t unkown5; }; +//Structs +struct LandStruct +{ + uint8_t plotSize; //0 + uint8_t houseState; // 2 + uint8_t type; // 4 1 == FC, 2 == Private + uint8_t iconAddIcon; // 6 + uint32_t fcId; //8 + uint32_t fcIcon;// 12 + uint32_t fcIconColor; // 16 + uint16_t housePart[ 8 ]; // 34 + uint8_t color[ 8 ]; // 36 +}; + struct FFXIVIpcLandUpdate : FFXIVIpcBasePacket< LandUpdate > { uint16_t landId; uint16_t unknow0; uint16_t unknow1; uint16_t unknow2; - Common::LandStruct land; + LandStruct land; }; struct FFXIVIpcLandPriceUpdate : FFXIVIpcBasePacket< LandPriceUpdate > @@ -1667,7 +1681,7 @@ struct FFXIVIpcLandSetInitialize : FFXIVIpcBasePacket< LandSetInitialize > uint8_t unknown6; uint8_t unknown7; uint8_t unknown8; - Common::LandStruct land[30]; + LandStruct land[ 30 ]; }; struct FFXIVIpcYardObjectSpawn : FFXIVIpcBasePacket diff --git a/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp index 2a68da5e..8fb9c7c4 100644 --- a/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp @@ -345,7 +345,8 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR } case ClientTriggerType::RequestEstateRename: { - auto landRenamePacket = makeZonePacket< Server::FFXIVIpcLandRename >( player.getId() ); + // removed temporarly, there is no such thing as a LandName +/* auto landRenamePacket = makeZonePacket< Server::FFXIVIpcLandRename >( player.getId() ); uint8_t ward = ( param12 & 0xFF00 ) >> 8; uint8_t plot = ( param12 & 0xFF ); @@ -368,7 +369,7 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR landRenamePacket->data().zoneId = land->getZoneId(); memcpy( &landRenamePacket->data().landName, land->getLandName().c_str(), 20 ); - player.queuePacket( landRenamePacket ); + player.queuePacket( landRenamePacket ); */ break; } diff --git a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp index de2f34d5..f2ea6053 100644 --- a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp @@ -664,7 +664,8 @@ void Core::Network::GameConnection::landRenameHandler( const Core::Network::Pack if( !pLand ) return; - pLand->setLandName( packet.data().landName ); + // TODO set estate name + //pLand->setLandName( packet.data().landName ); } void Core::Network::GameConnection::buildPresetHandler( const Core::Network::Packets::FFXIVARR_PACKET_RAW& inPacket, diff --git a/src/servers/sapphire_zone/Zone/HousingMgr.cpp b/src/servers/sapphire_zone/Zone/HousingMgr.cpp index 5fe3a1ad..fe6b2c22 100644 --- a/src/servers/sapphire_zone/Zone/HousingMgr.cpp +++ b/src/servers/sapphire_zone/Zone/HousingMgr.cpp @@ -118,7 +118,7 @@ void Core::HousingMgr::sendLandSignOwned( Entity::Player& player, uint8_t ward, std::string playerName = g_fw.get< Core::ServerZone >()->getPlayerNameFromDb( playerId ); //memcpy( &landInfoSignPacket->data().estateGreeting, "Hello World", 11 ); //memcpy( &landInfoSignPacket->data().estateName, land->getLandName().c_str(), land->getLandName().size() ); - landInfoSignPacket->data().houseSize = land->getPlotSize(); + landInfoSignPacket->data().houseSize = land->getSize(); landInfoSignPacket->data().houseType = static_cast< uint8_t >( land->getLandType() ); landInfoSignPacket->data().landId = land->getLandId(); landInfoSignPacket->data().ownerId = player.getContentId(); // should be real owner contentId, not player.contentId() diff --git a/src/servers/sapphire_zone/Zone/HousingZone.cpp b/src/servers/sapphire_zone/Zone/HousingZone.cpp index 125531d3..d02ce81f 100644 --- a/src/servers/sapphire_zone/Zone/HousingZone.cpp +++ b/src/servers/sapphire_zone/Zone/HousingZone.cpp @@ -129,13 +129,13 @@ void Core::HousingZone::sendLandSet( Entity::Player& player ) for( uint8_t i = startIndex, count = 0; i < ( startIndex + 30 ); ++i, ++count ) { - landsetInitializePacket->data().land[ count ].plotSize = getLand( i )->getPlotSize(); - landsetInitializePacket->data().land[ count ].houseState = getLand( i )->getState(); - landsetInitializePacket->data().land[ count ].iconColor = getLand( i )->getOwnership(); - landsetInitializePacket->data().land[ count ].iconAddIcon = getLand( i )->getPlotSize(); - landsetInitializePacket->data().land[ count ].fcId = getLand( i )->getFcId(); - landsetInitializePacket->data().land[ count ].fcIcon = getLand( i )->getFcIcon(); - landsetInitializePacket->data().land[ count ].fcIconColor = getLand( i )->getFcColor(); + landsetInitializePacket->data().land[ count ].plotSize = getLand( i )->getSize(); + landsetInitializePacket->data().land[ count ].houseState = getLand( i )->getState(); + landsetInitializePacket->data().land[ count ].type = static_cast< uint8_t >( getLand( i )->getLandType() ); + landsetInitializePacket->data().land[ count ].iconAddIcon = getLand( i )->getSharing(); + landsetInitializePacket->data().land[ count ].fcId = getLand( i )->getFcId(); + landsetInitializePacket->data().land[ count ].fcIcon = getLand( i )->getFcIcon(); + landsetInitializePacket->data().land[ count ].fcIconColor = getLand( i )->getFcColor(); } player.queuePacket( landsetInitializePacket ); @@ -150,10 +150,10 @@ void Core::HousingZone::sendLandUpdate( uint8_t landId ) auto landUpdatePacket = makeZonePacket< FFXIVIpcLandUpdate >( pPlayer->getId() ); landUpdatePacket->data().landId = landId; - landUpdatePacket->data().land.plotSize = pLand->getPlotSize(); + landUpdatePacket->data().land.plotSize = pLand->getSize(); landUpdatePacket->data().land.houseState = pLand->getState(); - landUpdatePacket->data().land.iconColor = pLand->getOwnership(); - landUpdatePacket->data().land.iconAddIcon = pLand->getPlotSize(); + landUpdatePacket->data().land.type = static_cast< uint8_t >( pLand->getLandType() ); + landUpdatePacket->data().land.iconAddIcon = pLand->getSharing(); landUpdatePacket->data().land.fcId = pLand->getFcId(); landUpdatePacket->data().land.fcIcon = pLand->getFcIcon(); landUpdatePacket->data().land.fcIconColor = pLand->getFcColor(); @@ -207,7 +207,7 @@ Core::LandPurchaseResult Core::HousingZone::purchseLand( Entity::Player& player, player.setLandPermissions( LandPermissionSlot::Private, 0x00, plot, pHousing->getWardNum(), pHousing->getTerritoryTypeId() ); player.sendLandPermissions(); - pLand->setLandName( "Private Estate" + std::to_string( pHousing->getWardNum() ) + "-" + std::to_string( plot ) ); + //pLand->setLandName( "Private Estate" + std::to_string( pHousing->getWardNum() ) + "-" + std::to_string( plot ) ); pLand->UpdateLandDb(); sendLandUpdate( plot ); return LandPurchaseResult::SUCCESS; diff --git a/src/servers/sapphire_zone/Zone/Land.cpp b/src/servers/sapphire_zone/Zone/Land.cpp index 5b530822..99f19548 100644 --- a/src/servers/sapphire_zone/Zone/Land.cpp +++ b/src/servers/sapphire_zone/Zone/Land.cpp @@ -39,8 +39,6 @@ Core::Land::Land( uint16_t zoneId, uint8_t wardNum, uint8_t landId, uint32_t lan m_type( Common::LandType::Private ) { memset( &m_tag, 0x00, 3 ); - memset( &m_landMsg, 0x00, 193 ); - memset( &m_landName, 0x00, 23 ); load(); } @@ -93,7 +91,7 @@ uint32_t Core::Land::getCurrentPrice() const } //Primary State -void Core::Land::setHouseSize( uint8_t size ) +void Core::Land::setSize( uint8_t size ) { m_size = size; } @@ -103,27 +101,17 @@ void Core::Land::setState( uint8_t state ) m_state = state; } -void Core::Land::setOwnership( uint8_t state ) -{ - m_iconColor = state; -} - void Core::Land::setSharing( uint8_t state ) { m_iconAddIcon = state; } -void Core::Land::setLandName( const std::string& name ) -{ - memcpy( &m_landName, name.c_str(), 20 ); -} - void Core::Land::setLandType( Common::LandType type ) { m_type = type; } -uint8_t Core::Land::getPlotSize() const +uint8_t Core::Land::getSize() const { return m_size; } @@ -133,11 +121,6 @@ uint8_t Core::Land::getState() const return m_state; } -uint8_t Core::Land::getOwnership() const -{ - return m_iconColor; -} - uint8_t Core::Land::getSharing() const { return m_iconAddIcon; @@ -163,11 +146,6 @@ uint16_t Core::Land::getZoneId() const return m_zoneId; } -std::string Core::Land::getLandName() const -{ - return std::string( m_landName ); -} - Core::Common::LandType Core::Land::getLandType() const { return m_type; @@ -230,7 +208,7 @@ uint8_t Core::Land::getLandTag( uint8_t slot ) void Core::Land::init() { - switch( getPlotSize() ) + switch( m_size ) { case HouseSize::small: m_maxItems = 20; diff --git a/src/servers/sapphire_zone/Zone/Land.h b/src/servers/sapphire_zone/Zone/Land.h index 51e4e982..41557cca 100644 --- a/src/servers/sapphire_zone/Zone/Land.h +++ b/src/servers/sapphire_zone/Zone/Land.h @@ -21,23 +21,19 @@ namespace Core void load(); //Primary state - void setHouseSize( uint8_t size ); + void setSize( uint8_t size ); void setState( uint8_t state ); - void setOwnership( uint8_t state ); void setSharing( uint8_t state ); - void setLandName( const std::string& name ); void setLandType( Common::LandType type ); //Gerneral - uint8_t getPlotSize() const; + uint8_t getSize() const; uint8_t getState() const; - uint8_t getOwnership() const; uint8_t getSharing() const; uint32_t getLandSetId() const; uint8_t getWardNum() const; uint8_t getLandId() const; uint16_t getZoneId() const; - std::string getLandName() const; Common::LandType getLandType() const; //Free Comapny @@ -46,14 +42,6 @@ namespace Core uint32_t getFcIcon(); uint32_t getFcColor(); - //House data - void setHousePart( Common::HousePartSlot slot, uint16_t itemId ); - - uint16_t getHousePart( Common::HousePartSlot slot ); - - //Color - void setColor( uint8_t slot, uint8_t color ); - uint8_t getColor( uint8_t slot ); //Player void setPlayerOwner( uint32_t id ); uint32_t getPlayerOwner(); @@ -63,7 +51,6 @@ namespace Core void Update( uint32_t currTime ); uint32_t getMaxItems(); - uint32_t getCurrentPrice() const; uint32_t getDevaluationTime(); @@ -81,17 +68,15 @@ namespace Core uint16_t m_zoneId; uint8_t m_size; uint8_t m_state; - uint8_t m_iconColor; + Common::LandType m_type; uint8_t m_iconAddIcon; - uint32_t m_fcId; + uint32_t m_fcId; // unclear, may be wrong uint32_t m_fcIcon; uint32_t m_fcIconColor; - Common::LandType m_type; uint32_t m_ownerPlayerId; Core::Data::HousingLandSetPtr m_landInfo; - //item storage Core::ItemContainerPtr ItemsOutdoorContainer; uint32_t m_maxItems; @@ -103,9 +88,6 @@ namespace Core uint32_t m_minPrice; //information - char m_landName[23]; - char m_landMsg[193]; - char m_ownerName[31]; char fcTag[7]; uint8_t m_tag[3]; };