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:
parent
ce53890985
commit
50ddcbb180
7 changed files with 67 additions and 79 deletions
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 ];
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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 ) );
|
||||
}
|
||||
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue