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 );
}
void Sapphire::World::Manager::HousingMgr::updateHouseModels( Sapphire::HousePtr house )
void Sapphire::World::Manager::HousingMgr::updateHouseModelsFromDb( Sapphire::HousePtr house )
{
assert( house );
@ -680,7 +680,8 @@ void Sapphire::World::Manager::HousingMgr::updateHouseModels( Sapphire::HousePtr
{
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
@ -693,8 +694,8 @@ void Sapphire::World::Manager::HousingMgr::updateHouseModels( Sapphire::HousePtr
{
for( auto& item : intContainer->second->getItemMap() )
{
house->setHouseInteriorModel( static_cast< Common::HousingInteriorSlot >( item.first ),
getItemData( item.second->getId() ) );
house->setInteriorModel( static_cast< Common::HousingInteriorSlot >( item.first ),
getItemData( item.second->getId() ) );
}
}
else

View file

@ -97,7 +97,7 @@ namespace Sapphire::World::Manager
*
* @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.

View file

@ -20,9 +20,7 @@ Sapphire::House::House( uint32_t houseId, uint32_t landSetId, Common::LandIdent
m_landIdent( ident ),
m_estateName( estateName ),
m_estateComment( estateComment )
{
}
{}
Sapphire::House::~House() = default;
@ -60,39 +58,9 @@ uint32_t Sapphire::House::getHouseId() const
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
{
return m_houseModelsCache;
return m_exteriorModelCache;
}
const std::string& Sapphire::House::getHouseName() const
@ -118,3 +86,23 @@ void Sapphire::House::setHouseName( const std::string& name )
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 );
virtual ~House();
using HousePart = std::pair< uint32_t, uint8_t >;
using HousePart = std::pair< uint32_t, uint16_t >;
using HouseModelsArray = std::array< HousePart, 8 >;
//gerneral
@ -31,12 +31,11 @@ namespace Sapphire
void setHouseGreeting( const std::string& greeting );
//functions
void setHouseModel( Common::HousePartSlot slot, uint32_t id );
void setHouseModelColor( Common::HousePartSlot slot, uint32_t id );
void setHouseInteriorModel( Common::HousingInteriorSlot slot, uint32_t id );
uint32_t getHouseModel( Common::HousePartSlot slot ) const;
uint8_t getHouseModelColor( Common::HousePartSlot slot ) const;
uint32_t getHouseInteriorModel( Common::HousingInteriorSlot slot ) const;
void setExteriorModel( Common::HousePartSlot slot, uint32_t modelId, uint16_t stain );
HousePart getExteriorModel( Common::HousePartSlot slot );
void setInteriorModel( Common::HousingInteriorSlot slot, uint32_t modelId );
uint32_t getInteriorModel( Common::HousingInteriorSlot slot );
HouseModelsArray const& getHouseModels() const;
@ -49,8 +48,8 @@ namespace Sapphire
uint64_t m_buildTime;
HouseModelsArray m_houseModelsCache;
uint32_t m_houseInteriorModels[10];
HouseModelsArray m_exteriorModelCache;
uint32_t m_interiorModelCache[10];
std::string m_estateComment;
std::string m_estateName;

View file

@ -68,7 +68,7 @@ void Housing::HousingInteriorTerritory::onPlayerZoneIn( Entity::Player& player )
for( auto i = 0; i < 10; i++ )
{
indoorInitPacket->data().indoorItems[ i ] = pHouse->getHouseInteriorModel(
indoorInitPacket->data().indoorItems[ i ] = pHouse->getInteriorModel(
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 );
housingMgr->updateHouseModels( house );
housingMgr->updateHouseModelsFromDb( house );
land->setHouse( house );
}

View file

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