From 6347d7ed27571f8cdd049c428a7550475ce1dcb2 Mon Sep 17 00:00:00 2001 From: Mordred Date: Fri, 2 Nov 2018 19:21:12 +0100 Subject: [PATCH] More housing cleanup --- src/common/Common.h | 102 +++++++++++++++--------- src/servers/sapphire_zone/Zone/Land.cpp | 102 +++--------------------- src/servers/sapphire_zone/Zone/Land.h | 43 +--------- 3 files changed, 78 insertions(+), 169 deletions(-) diff --git a/src/common/Common.h b/src/common/Common.h index 64d4861b..4a3c5d4d 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -732,46 +732,72 @@ namespace Core::Common MountSkill = 0xD, }; -//Structs -struct LandStruct -{ - uint8_t houseSize; //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 exteriorRoof; //20 - uint16_t exteriorWall; //22 - uint16_t exteriorWindow; //24 - uint16_t exteriorDoor;// 26 - uint16_t otherFloorWall; // 28 - uint16_t otherFloorFlooring; //30 - uint16_t basementWall; // 32 - uint16_t gardenSign; // 34 - uint8_t color[8]; // 36 - //44 -}; + enum HousePartSlot + { + ExteriorRoof, + ExteriorWall, + ExteriorWindow, + ExteriorDoor, + OtherFloorWall, + OtherFloorFlooring, + BasementWall, + YardSign + }; -struct HousePermissionSet -{ - uint16_t landSetId; //00 - uint16_t wardNum; //02 - uint16_t zoneId; //04 - uint16_t worldId; //06 - uint32_t permissionMask; //08 - uint32_t unkown1; //12 -}; + //Structs + struct LandStruct + { + uint8_t houseSize; //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 + //44 + }; -struct YardObject -{ - uint32_t itemId; - uint16_t itemRotation; - uint16_t pos_x; - uint16_t pos_y; - uint16_t pos_z; -}; + struct HousePermissionSet + { + uint16_t landSetId; //00 + uint16_t wardNum; //02 + uint16_t zoneId; //04 + uint16_t worldId; //06 + uint32_t permissionMask; //08 + uint32_t unkown1; //12 + }; + + struct YardObject + { + uint32_t itemId; + uint16_t itemRotation; + uint16_t pos_x; + uint16_t pos_y; + uint16_t pos_z; + }; + + enum HouseSizeType : uint8_t + { + //noneHouse, + smallHouse, + mediumHouse, + bigHouse + }; + + enum HouseStateType : uint8_t + { + none, + forSale, + sold, + fcHouse, + privateHouse + }; + enum HouseIconAdd : uint8_t + { + heart = 0x06 + }; using PlayerStateFlagList = std::vector< PlayerStateFlag >; diff --git a/src/servers/sapphire_zone/Zone/Land.cpp b/src/servers/sapphire_zone/Zone/Land.cpp index 0813f214..1e80353a 100644 --- a/src/servers/sapphire_zone/Zone/Land.cpp +++ b/src/servers/sapphire_zone/Zone/Land.cpp @@ -78,7 +78,7 @@ void Core::Land::load() "housingoutdooritems", true );*/ } -uint32_t Core::Land::convertItemIdToHousingItemId( uint32_t itemId ) +uint16_t Core::Land::convertItemIdToHousingItemId( uint16_t itemId ) { auto pExdData = g_fw.get< Data::ExdDataGenerated >(); auto info = pExdData->get< Core::Data::Item >( itemId ); @@ -89,12 +89,12 @@ void Core::Land::setPreset( uint32_t id ) { auto pExdData = g_fw.get< Data::ExdDataGenerated >(); auto info = pExdData->get< Core::Data::HousingPreset >( convertItemIdToHousingItemId( id ) ); - setRoof( info->exteriorRoof ); - setWall( info->exteriorWall ); - setWindow( info->exteriorWindow ); - setBasementWall( info->basementWall ); - setFloorFlooring( info->otherFloorFlooring ); - setFloorWall( info->otherFloorWall ); + setHousePart( Common::HousePartSlot::ExteriorRoof, info->exteriorRoof ); + setHousePart( Common::HousePartSlot::ExteriorWall, info->exteriorWall ); + setHousePart( Common::HousePartSlot::ExteriorWindow, info->exteriorWindow ); + setHousePart( Common::HousePartSlot::BasementWall, info->basementWall ); + setHousePart( Common::HousePartSlot::OtherFloorFlooring, info->otherFloorFlooring ); + setHousePart( Common::HousePartSlot::OtherFloorWall, info->otherFloorWall ); } //Primary State @@ -162,94 +162,14 @@ uint32_t Core::Land::getFcColor() } //House Data -void Core::Land::setRoof( uint16_t id ) +void Core::Land::setHousePart( Common::HousePartSlot slot, uint16_t id ) { - m_land.exteriorRoof = convertItemIdToHousingItemId( id ); + m_land.housePart[ slot ] = convertItemIdToHousingItemId( id ); } -void Core::Land::setFacade( uint16_t id ) +uint16_t Core::Land::getHousePart( Common::HousePartSlot slot ) { - m_land.exteriorWall = convertItemIdToHousingItemId( id ); -} - -void Core::Land::setWindow( uint16_t id ) -{ - m_land.exteriorWindow = convertItemIdToHousingItemId( id ); -} - -void Core::Land::setDoor( uint16_t id ) -{ - m_land.exteriorDoor = convertItemIdToHousingItemId( id ); -} - -void Core::Land::setFloorWall( uint16_t id ) -{ - m_land.otherFloorWall = convertItemIdToHousingItemId( id ); -} - -void Core::Land::setFloorFlooring( uint16_t id ) -{ - m_land.otherFloorFlooring = convertItemIdToHousingItemId( id ); -} - -void Core::Land::setWall( uint16_t id ) -{ - m_land.exteriorWall = convertItemIdToHousingItemId( id ); -} - -void Core::Land::setSign( uint16_t id ) -{ - m_land.gardenSign = convertItemIdToHousingItemId( id ); -} - -void Core::Land::setBasementWall( uint16_t id ) -{ - m_land.basementWall = convertItemIdToHousingItemId( id ); -} - -uint16_t Core::Land::getRoof() -{ - return m_land.exteriorRoof; -} - -uint16_t Core::Land::getFacade() -{ - return m_land.exteriorWall; -} - -uint16_t Core::Land::getWindow() -{ - return m_land.exteriorWindow; -} - -uint16_t Core::Land::getDoor() -{ - return m_land.exteriorDoor; -} - -uint16_t Core::Land::getSign() -{ - return m_land.gardenSign; -} - -uint16_t Core::Land::getWall() -{ - return m_land.basementWall; -} - -uint16_t Core::Land::getFloorWall() -{ - return m_land.otherFloorFlooring; -} - -uint16_t Core::Land::getFloorFlooring() -{ - return m_land.otherFloorFlooring; -} - -uint16_t Core::Land::getBasememtWall() -{ - return m_land.basementWall; + return m_land.housePart[ slot ]; } //Color diff --git a/src/servers/sapphire_zone/Zone/Land.h b/src/servers/sapphire_zone/Zone/Land.h index ce37dc02..d0fae011 100644 --- a/src/servers/sapphire_zone/Zone/Land.h +++ b/src/servers/sapphire_zone/Zone/Land.h @@ -8,27 +8,6 @@ namespace Core class Land { public: - enum HouseSizeType : uint8_t - { - //noneHouse, - smallHouse, - mediumHouse, - bigHouse - }; - - enum HouseStateType : uint8_t - { - none, - forSale, - sold, - fcHouse, - privateHouse - }; - - enum HouseIconAdd : uint8_t - { - heart = 0x06 - }; Land( uint16_t zoneId, uint8_t wardNum, uint8_t landId ); virtual ~Land(); @@ -54,25 +33,9 @@ namespace Core uint32_t getFcColor(); //House data - void setRoof( uint16_t itemId ); - void setFacade( uint16_t itemId ); - void setWindow( uint16_t itemId ); - void setDoor( uint16_t itemId ); - void setFloorWall( uint16_t itemId ); - void setFloorFlooring( uint16_t itemId ); - void setWall( uint16_t itemId ); - void setSign( uint16_t itemId ); - void setBasementWall( uint16_t itemId ); + void setHousePart( Common::HousePartSlot slot, uint16_t itemId ); - uint16_t getRoof(); - uint16_t getFacade(); - uint16_t getWindow(); - uint16_t getDoor(); - uint16_t getFloorWall(); - uint16_t getFloorFlooring(); - uint16_t getWall(); - uint16_t getSign(); - uint16_t getBasememtWall(); + uint16_t getHousePart( Common::HousePartSlot slot ); //Color void setColor( uint8_t slot, uint8_t color ); @@ -91,7 +54,7 @@ namespace Core uint32_t getMaxItems(); private: - uint32_t convertItemIdToHousingItemId( uint32_t itemId ); + uint16_t convertItemIdToHousingItemId( uint16_t itemId ); void Init(); uint32_t m_landKey;