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 );
|
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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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 ];
|
||||||
}
|
}
|
|
@ -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;
|
||||||
|
|
|
@ -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 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Reference in a new issue