Merge branch 'master' into Playerbot
# Conflicts: # src/server/game/Entities/Unit/Unit.cpp
This commit is contained in:
@@ -9762,6 +9762,72 @@ uint32 ObjectMgr::GetQuestMoneyReward(uint8 level, uint32 questMoneyDifficulty)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ObjectMgr::LoadInstanceSavedGameobjectStateData()
|
||||
{
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SELECT_INSTANCE_SAVED_DATA);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
|
||||
if (!result)
|
||||
{
|
||||
// There's no gameobject with this GUID saved on the DB
|
||||
LOG_INFO("sql.sql", ">> Loaded 0 Instance saved gameobject state data. DB table `instance_saved_go_state_data` is empty.");
|
||||
return;
|
||||
}
|
||||
|
||||
Field* fields;
|
||||
uint32 count = 0;
|
||||
do
|
||||
{
|
||||
fields = result->Fetch();
|
||||
GameobjectInstanceSavedStateList.push_back({ fields[0].Get<uint32>(), fields[1].Get<uint32>(), fields[2].Get<unsigned short>() });
|
||||
count++;
|
||||
} while (result->NextRow());
|
||||
|
||||
LOG_INFO("server.loading", ">> Loaded {} instance saved gameobject state data in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
|
||||
LOG_INFO("server.loading", " ");
|
||||
}
|
||||
|
||||
uint8 ObjectMgr::GetInstanceSavedGameobjectState(uint32 id, uint32 guid)
|
||||
{
|
||||
for (auto it = GameobjectInstanceSavedStateList.begin(); it != GameobjectInstanceSavedStateList.end(); it++)
|
||||
{
|
||||
if (it->m_guid == guid && it->m_instance == id)
|
||||
{
|
||||
return it->m_state;
|
||||
}
|
||||
}
|
||||
return 3; // Any state higher than 2 to get the default state
|
||||
}
|
||||
|
||||
bool ObjectMgr::FindInstanceSavedGameobjectState(uint32 id, uint32 guid)
|
||||
{
|
||||
for (auto it = GameobjectInstanceSavedStateList.begin(); it != GameobjectInstanceSavedStateList.end(); it++)
|
||||
{
|
||||
if (it->m_guid == guid && it->m_instance == id)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void ObjectMgr::SetInstanceSavedGameobjectState(uint32 id, uint32 guid, uint8 state)
|
||||
{
|
||||
for (auto it = GameobjectInstanceSavedStateList.begin(); it != GameobjectInstanceSavedStateList.end(); it++)
|
||||
{
|
||||
if (it->m_guid == guid && it->m_instance == id)
|
||||
{
|
||||
it->m_state = state;
|
||||
}
|
||||
}
|
||||
}
|
||||
void ObjectMgr::NewInstanceSavedGameobjectState(uint32 id, uint32 guid, uint8 state)
|
||||
{
|
||||
GameobjectInstanceSavedStateList.push_back({ id, guid, state });
|
||||
}
|
||||
|
||||
void ObjectMgr::SendServerMail(Player* player, uint32 id, uint32 reqLevel, uint32 reqPlayTime, uint32 rewardMoneyA, uint32 rewardMoneyH, uint32 rewardItemA, uint32 rewardItemCountA, uint32 rewardItemH, uint32 rewardItemCountH, std::string subject, std::string body, uint8 active) const
|
||||
{
|
||||
if (active)
|
||||
|
||||
@@ -1411,6 +1411,11 @@ public:
|
||||
[[nodiscard]] uint32 GetQuestMoneyReward(uint8 level, uint32 questMoneyDifficulty) const;
|
||||
void SendServerMail(Player* player, uint32 id, uint32 reqLevel, uint32 reqPlayTime, uint32 rewardMoneyA, uint32 rewardMoneyH, uint32 rewardItemA, uint32 rewardItemCountA, uint32 rewardItemH, uint32 rewardItemCountH, std::string subject, std::string body, uint8 active) const;
|
||||
|
||||
void LoadInstanceSavedGameobjectStateData();
|
||||
bool FindInstanceSavedGameobjectState(uint32 id, uint32 guid);
|
||||
uint8 GetInstanceSavedGameobjectState(uint32 id, uint32 guid);
|
||||
void SetInstanceSavedGameobjectState(uint32 id, uint32 guid, uint8 state);
|
||||
void NewInstanceSavedGameobjectState(uint32 id, uint32 guid, uint8 state);
|
||||
private:
|
||||
// first free id for selected id type
|
||||
uint32 _auctionId; // pussywizard: accessed by a single thread
|
||||
@@ -1580,6 +1585,14 @@ private:
|
||||
std::set<uint32> _transportMaps; // Helper container storing map ids that are for transports only, loaded from gameobject_template
|
||||
|
||||
QuestMoneyRewardStore _questMoneyRewards;
|
||||
|
||||
struct GameobjectInstanceSavedState
|
||||
{
|
||||
uint32 m_instance;
|
||||
uint32 m_guid;
|
||||
unsigned short m_state;
|
||||
};
|
||||
std::vector<GameobjectInstanceSavedState> GameobjectInstanceSavedStateList;
|
||||
};
|
||||
|
||||
#define sObjectMgr ObjectMgr::instance()
|
||||
|
||||
Reference in New Issue
Block a user