1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-27 14:57:44 +00:00

cleanup and simplify model cache logic for houses

This commit is contained in:
NotAdam 2018-12-23 15:23:22 +11:00
parent ce53890985
commit 50ddcbb180
7 changed files with 67 additions and 79 deletions

View file

@ -662,7 +662,7 @@ Sapphire::World::Manager::HousingMgr::ContainerIdToContainerMap&
return getEstateInventory( u64ident ); return getEstateInventory( u64ident );
} }
void Sapphire::World::Manager::HousingMgr::updateHouseModels( Sapphire::HousePtr house ) void Sapphire::World::Manager::HousingMgr::updateHouseModelsFromDb( Sapphire::HousePtr house )
{ {
assert( house ); assert( house );
@ -680,7 +680,8 @@ void Sapphire::World::Manager::HousingMgr::updateHouseModels( Sapphire::HousePtr
{ {
for( auto& item : extContainer->second->getItemMap() ) for( auto& item : extContainer->second->getItemMap() )
{ {
house->setHouseModel( static_cast< Common::HousePartSlot >( item.first ), getItemData( item.second->getId() ) ); house->setExteriorModel( static_cast< Common::HousePartSlot >( item.first ),
getItemData( item.second->getId() ), item.second->getStain() );
} }
} }
else else
@ -693,8 +694,8 @@ void Sapphire::World::Manager::HousingMgr::updateHouseModels( Sapphire::HousePtr
{ {
for( auto& item : intContainer->second->getItemMap() ) for( auto& item : intContainer->second->getItemMap() )
{ {
house->setHouseInteriorModel( static_cast< Common::HousingInteriorSlot >( item.first ), house->setInteriorModel( static_cast< Common::HousingInteriorSlot >( item.first ),
getItemData( item.second->getId() ) ); getItemData( item.second->getId() ) );
} }
} }
else else

View file

@ -97,7 +97,7 @@ namespace Sapphire::World::Manager
* *
* @param house The house to update the models for * @param house The house to update the models for
*/ */
void updateHouseModels( HousePtr house ); void updateHouseModelsFromDb( HousePtr house );
/*! /*!
* @brief Sends the house inventory for the specified type to a player. * @brief Sends the house inventory for the specified type to a player.

View file

@ -20,9 +20,7 @@ Sapphire::House::House( uint32_t houseId, uint32_t landSetId, Common::LandIdent
m_landIdent( ident ), m_landIdent( ident ),
m_estateName( estateName ), m_estateName( estateName ),
m_estateComment( estateComment ) m_estateComment( estateComment )
{ {}
}
Sapphire::House::~House() = default; Sapphire::House::~House() = default;
@ -60,39 +58,9 @@ uint32_t Sapphire::House::getHouseId() const
return m_houseId; return m_houseId;
} }
uint8_t Sapphire::House::getHouseModelColor( Common::HousePartSlot slot ) const
{
return m_houseModelsCache[ slot ].second;
}
uint32_t Sapphire::House::getHouseInteriorModel( Common::HousingInteriorSlot slot ) const
{
return m_houseInteriorModels[ slot ];
}
void Sapphire::House::setHouseModel( Common::HousePartSlot slot, uint32_t id )
{
m_houseModelsCache[ slot ].first = id;
}
void Sapphire::House::setHouseModelColor( Common::HousePartSlot slot, uint32_t id )
{
m_houseModelsCache[ slot ].second = id;
}
void Sapphire::House::setHouseInteriorModel( Common::HousingInteriorSlot slot, uint32_t id )
{
m_houseInteriorModels[ slot ] = id;
}
uint32_t Sapphire::House::getHouseModel( Common::HousePartSlot slot ) const
{
return m_houseModelsCache[ slot ].first;
}
Sapphire::House::HouseModelsArray const& Sapphire::House::getHouseModels() const Sapphire::House::HouseModelsArray const& Sapphire::House::getHouseModels() const
{ {
return m_houseModelsCache; return m_exteriorModelCache;
} }
const std::string& Sapphire::House::getHouseName() const const std::string& Sapphire::House::getHouseName() const
@ -117,4 +85,24 @@ void Sapphire::House::setHouseName( const std::string& name )
m_estateName = name; m_estateName = name;
updateHouseDb(); updateHouseDb();
}
void Sapphire::House::setExteriorModel( Sapphire::Common::HousePartSlot slot, uint32_t modelId, uint16_t stain )
{
m_exteriorModelCache[ slot ] = std::make_pair( modelId, stain );
}
Sapphire::House::HousePart Sapphire::House::getExteriorModel( Sapphire::Common::HousePartSlot slot )
{
return m_exteriorModelCache[ slot ];
}
void Sapphire::House::setInteriorModel( Sapphire::Common::HousingInteriorSlot slot, uint32_t modelId )
{
m_interiorModelCache[ slot ] = modelId;
}
uint32_t Sapphire::House::getInteriorModel( Sapphire::Common::HousingInteriorSlot slot )
{
return m_interiorModelCache[ slot ];
} }

View file

@ -16,7 +16,7 @@ namespace Sapphire
const std::string& estateComment ); const std::string& estateComment );
virtual ~House(); virtual ~House();
using HousePart = std::pair< uint32_t, uint8_t >; using HousePart = std::pair< uint32_t, uint16_t >;
using HouseModelsArray = std::array< HousePart, 8 >; using HouseModelsArray = std::array< HousePart, 8 >;
//gerneral //gerneral
@ -31,12 +31,11 @@ namespace Sapphire
void setHouseGreeting( const std::string& greeting ); void setHouseGreeting( const std::string& greeting );
//functions //functions
void setHouseModel( Common::HousePartSlot slot, uint32_t id ); void setExteriorModel( Common::HousePartSlot slot, uint32_t modelId, uint16_t stain );
void setHouseModelColor( Common::HousePartSlot slot, uint32_t id ); HousePart getExteriorModel( Common::HousePartSlot slot );
void setHouseInteriorModel( Common::HousingInteriorSlot slot, uint32_t id );
uint32_t getHouseModel( Common::HousePartSlot slot ) const; void setInteriorModel( Common::HousingInteriorSlot slot, uint32_t modelId );
uint8_t getHouseModelColor( Common::HousePartSlot slot ) const; uint32_t getInteriorModel( Common::HousingInteriorSlot slot );
uint32_t getHouseInteriorModel( Common::HousingInteriorSlot slot ) const;
HouseModelsArray const& getHouseModels() const; HouseModelsArray const& getHouseModels() const;
@ -49,8 +48,8 @@ namespace Sapphire
uint64_t m_buildTime; uint64_t m_buildTime;
HouseModelsArray m_houseModelsCache; HouseModelsArray m_exteriorModelCache;
uint32_t m_houseInteriorModels[10]; uint32_t m_interiorModelCache[10];
std::string m_estateComment; std::string m_estateComment;
std::string m_estateName; std::string m_estateName;

View file

@ -68,7 +68,7 @@ void Housing::HousingInteriorTerritory::onPlayerZoneIn( Entity::Player& player )
for( auto i = 0; i < 10; i++ ) for( auto i = 0; i < 10; i++ )
{ {
indoorInitPacket->data().indoorItems[ i ] = pHouse->getHouseInteriorModel( indoorInitPacket->data().indoorItems[ i ] = pHouse->getInteriorModel(
static_cast< Common::HousingInteriorSlot >( i ) ); static_cast< Common::HousingInteriorSlot >( i ) );
} }

View file

@ -85,7 +85,7 @@ bool Sapphire::HousingZone::init()
{ {
auto house = make_House( entry.m_houseId, m_landSetId, land->getLandIdent(), entry.m_estateName, entry.m_estateComment ); auto house = make_House( entry.m_houseId, m_landSetId, land->getLandIdent(), entry.m_estateName, entry.m_estateComment );
housingMgr->updateHouseModels( house ); housingMgr->updateHouseModelsFromDb( house );
land->setHouse( house ); land->setHouse( house );
} }

View file

@ -313,35 +313,35 @@ bool Sapphire::Land::setPreset( uint32_t itemId )
} }
getHouse()->setHouseModel( Common::HousePartSlot::ExteriorRoof, // getHouse()->setHouseModel( Common::HousePartSlot::ExteriorRoof,
convertItemIdToHousingItemId( housingPreset->exteriorRoof ) ); // convertItemIdToHousingItemId( housingPreset->exteriorRoof ) );
getHouse()->setHouseModel( Common::HousePartSlot::ExteriorWall, // getHouse()->setHouseModel( Common::HousePartSlot::ExteriorWall,
convertItemIdToHousingItemId( housingPreset->exteriorWall ) ); // convertItemIdToHousingItemId( housingPreset->exteriorWall ) );
getHouse()->setHouseModel( Common::HousePartSlot::ExteriorWindow, // getHouse()->setHouseModel( Common::HousePartSlot::ExteriorWindow,
convertItemIdToHousingItemId( housingPreset->exteriorWindow ) ); // convertItemIdToHousingItemId( housingPreset->exteriorWindow ) );
getHouse()->setHouseModel( Common::HousePartSlot::ExteriorDoor, // getHouse()->setHouseModel( Common::HousePartSlot::ExteriorDoor,
convertItemIdToHousingItemId( housingPreset->exteriorDoor ) ); // convertItemIdToHousingItemId( housingPreset->exteriorDoor ) );
//
getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorWall, // getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorWall,
convertItemIdToHousingItemId( housingPreset->interiorWall ) ); // convertItemIdToHousingItemId( housingPreset->interiorWall ) );
getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorFloor, // getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorFloor,
convertItemIdToHousingItemId( housingPreset->interiorFlooring ) ); // convertItemIdToHousingItemId( housingPreset->interiorFlooring ) );
getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorLight, // getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorLight,
convertItemIdToHousingItemId( housingPreset->interiorLighting ) ); // convertItemIdToHousingItemId( housingPreset->interiorLighting ) );
getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorWall_Attic, // getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorWall_Attic,
convertItemIdToHousingItemId( housingPreset->otherFloorWall ) ); // convertItemIdToHousingItemId( housingPreset->otherFloorWall ) );
getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorFloor_Attic, // getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorFloor_Attic,
convertItemIdToHousingItemId( housingPreset->otherFloorFlooring ) ); // convertItemIdToHousingItemId( housingPreset->otherFloorFlooring ) );
getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorLight_Attic, // getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorLight_Attic,
convertItemIdToHousingItemId( housingPreset->otherFloorLighting ) ); // convertItemIdToHousingItemId( housingPreset->otherFloorLighting ) );
getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorWall_Basement, // getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorWall_Basement,
convertItemIdToHousingItemId( housingPreset->basementWall ) ); // convertItemIdToHousingItemId( housingPreset->basementWall ) );
getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorFloor_Basement, // getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorFloor_Basement,
convertItemIdToHousingItemId( housingPreset->basementFlooring ) ); // convertItemIdToHousingItemId( housingPreset->basementFlooring ) );
getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorLight_Basement, // getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorLight_Basement,
convertItemIdToHousingItemId( housingPreset->basementLighting ) ); // convertItemIdToHousingItemId( housingPreset->basementLighting ) );
getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorLight_Mansion, // getHouse()->setHouseInteriorModel( Common::HousingInteriorSlot::InteriorLight_Mansion,
convertItemIdToHousingItemId( housingPreset->mansionLighting ) ); // convertItemIdToHousingItemId( housingPreset->mansionLighting ) );
return true; return true;