diff options
Diffstat (limited to 'src/server')
4 files changed, 15 insertions, 30 deletions
diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index 5845a0d6a3a..9027b3f575a 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -735,9 +735,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() // Scenario PrepareStatement(CHAR_SEL_SCENARIO_INSTANCE_CRITERIA_FOR_INSTANCE, "SELECT criteria, counter, date FROM instance_scenario_progress WHERE id = ?", CONNECTION_SYNCH); - PrepareStatement(CHAR_SEL_SCENARIO_INSTANCE_CRITERIA, "SELECT counter, date FROM instance_scenario_progress WHERE id = ? AND criteria = ?", CONNECTION_SYNCH); + PrepareStatement(CHAR_DEL_SCENARIO_INSTANCE_CRITERIA, "DELETE FROM instance_scenario_progress WHERE id = ? AND criteria = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_SCENARIO_INSTANCE_CRITERIA, "INSERT INTO instance_scenario_progress (id, criteria, counter, date) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_SCENARIO_INSTANCE_CRITERIA_FOR_INSTANCE, "DELETE FROM instance_scenario_progress WHERE id = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_UPD_SCENARIO_INSTANCE_CRITERIA, "UPDATE instance_scenario_progress SET counter = ?, date = ? WHERE id = ? AND criteria = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_DEL_INVALID_SCENARIO_INSTANCE_CRITERIA, "DELETE FROM instance_scenario_progress WHERE id = ? AND criteria = ?", CONNECTION_ASYNC); } diff --git a/src/server/database/Database/Implementation/CharacterDatabase.h b/src/server/database/Database/Implementation/CharacterDatabase.h index 02969290007..91f8a51eda3 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.h +++ b/src/server/database/Database/Implementation/CharacterDatabase.h @@ -624,11 +624,9 @@ enum CharacterDatabaseStatements CHAR_INS_BLACKMARKET_AUCTIONS, CHAR_SEL_SCENARIO_INSTANCE_CRITERIA_FOR_INSTANCE, - CHAR_SEL_SCENARIO_INSTANCE_CRITERIA, + CHAR_DEL_SCENARIO_INSTANCE_CRITERIA, CHAR_INS_SCENARIO_INSTANCE_CRITERIA, CHAR_DEL_SCENARIO_INSTANCE_CRITERIA_FOR_INSTANCE, - CHAR_UPD_SCENARIO_INSTANCE_CRITERIA, - CHAR_DEL_INVALID_SCENARIO_INSTANCE_CRITERIA, MAX_CHARACTERDATABASE_STATEMENTS }; diff --git a/src/server/game/Scenarios/InstanceScenario.cpp b/src/server/game/Scenarios/InstanceScenario.cpp index 60f3a364af5..f8c9959d3fd 100644 --- a/src/server/game/Scenarios/InstanceScenario.cpp +++ b/src/server/game/Scenarios/InstanceScenario.cpp @@ -20,7 +20,7 @@ #include "InstanceSaveMgr.h" #include "ObjectMgr.h" -InstanceScenario::InstanceScenario(Map* map, ScenarioData const* scenarioData) : Scenario(scenarioData), _map(map) +InstanceScenario::InstanceScenario(Map const* map, ScenarioData const* scenarioData) : Scenario(scenarioData), _map(map) { ASSERT(_map); LoadInstanceData(_map->GetInstanceId()); @@ -65,28 +65,17 @@ void InstanceScenario::SaveToDB() if (iter->second.Counter) { - PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_SCENARIO_INSTANCE_CRITERIA); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_SCENARIO_INSTANCE_CRITERIA); stmt->setUInt32(0, id); stmt->setUInt32(1, iter->first); - PreparedQueryResult result = CharacterDatabase.Query(stmt); - if (result) - { - stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_SCENARIO_INSTANCE_CRITERIA); - stmt->setUInt64(0, iter->second.Counter); - stmt->setUInt32(1, uint32(iter->second.Date)); - stmt->setUInt32(2, id); - stmt->setUInt32(3, iter->first); - trans->Append(stmt); - } - else - { - stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_SCENARIO_INSTANCE_CRITERIA); - stmt->setUInt32(0, id); - stmt->setUInt32(1, iter->first); - stmt->setUInt64(2, iter->second.Counter); - stmt->setUInt32(3, uint32(iter->second.Date)); - trans->Append(stmt); - } + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_SCENARIO_INSTANCE_CRITERIA); + stmt->setUInt32(0, id); + stmt->setUInt32(1, iter->first); + stmt->setUInt64(2, iter->second.Counter); + stmt->setUInt32(3, uint32(iter->second.Date)); + trans->Append(stmt); } iter->second.Changed = false; @@ -120,7 +109,7 @@ void InstanceScenario::LoadInstanceData(uint32 instanceId) // Removing non-existing criteria data for all instances TC_LOG_ERROR("criteria.instancescenarios", "Removing scenario criteria %u data from the table `instance_scenario_progress`.", id); - stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INVALID_SCENARIO_INSTANCE_CRITERIA); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_SCENARIO_INSTANCE_CRITERIA); stmt->setUInt32(0, instanceId); stmt->setUInt32(1, uint32(id)); trans->Append(stmt); diff --git a/src/server/game/Scenarios/InstanceScenario.h b/src/server/game/Scenarios/InstanceScenario.h index 9582d0cf2ba..4dd7a31f083 100644 --- a/src/server/game/Scenarios/InstanceScenario.h +++ b/src/server/game/Scenarios/InstanceScenario.h @@ -27,7 +27,7 @@ typedef std::unordered_map<uint8, CriteriaProgressMap> StepCriteriaProgressMap; class TC_GAME_API InstanceScenario : public Scenario { public: - InstanceScenario(Map* map, ScenarioData const* scenarioData); + InstanceScenario(Map const* map, ScenarioData const* scenarioData); void SaveToDB(); void LoadInstanceData(uint32 instanceId); @@ -36,7 +36,7 @@ class TC_GAME_API InstanceScenario : public Scenario std::string GetOwnerInfo() const override; void SendPacket(WorldPacket const* data) const override; - Map* _map; + Map const* _map; ScenarioData const* _data; StepCriteriaProgressMap _stepCriteriaProgress; }; |