From 11eab9c284225b4968c6f311c70c5b66b784ae9f Mon Sep 17 00:00:00 2001 From: Akkadius Date: Sat, 6 Feb 2021 01:37:30 -0600 Subject: [PATCH] Move TaskManager::LoadTaskSets() loading to repositories --- zone/tasks.cpp | 49 ++++++++++++++++++++++--------------------------- zone/tasks.h | 2 +- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/zone/tasks.cpp b/zone/tasks.cpp index 2a54c0113..ea918e043 100644 --- a/zone/tasks.cpp +++ b/zone/tasks.cpp @@ -41,51 +41,46 @@ Copyright (C) 2001-2008 EQEMu Development Team (http://eqemulator.net) #include "queryserv.h" #include "quest_parser_collection.h" #include "../common/repositories/completed_tasks_repository.h" +#include "../common/repositories/tasksets_repository.h" extern QueryServ *QServ; TaskManager::TaskManager() { - for (auto &Task : p_task_data) - Task = nullptr; + for (auto &task : p_task_data) { + task = nullptr; + } } TaskManager::~TaskManager() { - for (auto &Task : p_task_data) { - if (Task != nullptr) { - safe_delete(Task); + for (auto &task : p_task_data) { + if (task != nullptr) { + safe_delete(task); } } } bool TaskManager::LoadTaskSets() { - // Clear all task sets in memory. Done so we can reload them on the fly if required by just calling // this method again. - for (auto &TaskSet : task_sets) - TaskSet.clear(); - - std::string query = StringFormat( - "SELECT `id`, `taskid` from `tasksets` " - "WHERE `id` > 0 AND `id` < %i " - "AND `taskid` >= 0 AND `taskid` < %i " - "ORDER BY `id`, `taskid` ASC", - MAXTASKSETS, MAXTASKS - ); - auto results = content_db.QueryDatabase(query); - if (!results.Success()) { - LogError("Error in TaskManager::LoadTaskSets: [{}]", results.ErrorMessage().c_str()); - return false; + for (auto &task_set : task_sets) { + task_set.clear(); } - for (auto row = results.begin(); row != results.end(); ++row) { - int taskSet = atoi(row[0]); - int taskID = atoi(row[1]); + auto task_set_results = TasksetsRepository::GetWhere( + content_db, + fmt::format( + "`id` > 0 AND `id` < {} AND `taskid` >= 0 AND `taskid` < {} ORDER BY `id`, `taskid` ASC", + MAXTASKSETS, + MAXTASKS + ) + ); - task_sets[taskSet].push_back(taskID); - Log(Logs::General, Logs::Tasks, "[GLOBALLOAD] Adding task_id %4i to TaskSet %4i", taskID, taskSet); + for (auto &task_set: task_set_results) { + task_sets[task_set.id].push_back(task_set.taskid); + LogTasksDetail("[LoadTaskSets] Adding task_id [{}] to task_set [{}]", task_set.taskid, task_set.id); } return true; @@ -93,9 +88,9 @@ bool TaskManager::LoadTaskSets() void TaskManager::ReloadGoalLists() { - - if (!goal_list_manager.LoadLists()) + if (!goal_list_manager.LoadLists()) { Log(Logs::Detail, Logs::Tasks, "TaskManager::LoadTasks LoadLists failed"); + } } bool TaskManager::LoadTasks(int single_task) diff --git a/zone/tasks.h b/zone/tasks.h index 3a9213717..d9a7c8375 100644 --- a/zone/tasks.h +++ b/zone/tasks.h @@ -365,7 +365,7 @@ public: private: TaskGoalListManager goal_list_manager; TaskProximityManager proximity_manager; - TaskInformation *p_task_data[MAXTASKS]; + TaskInformation *p_task_data[MAXTASKS]{}; std::vector task_sets[MAXTASKSETS]; void SendActiveTaskDescription( Client *client,