[Shared Tasks] Cleanup shared task request and remove (#2341)

Functionally nothing should change in this patch. This refactors a lot
of formatting and code duplication in requests and member removals.

The long SharedTaskMessage namespace and its constants were contributing
to a lot of formatting that was difficult to read. These were shortened
since they're not all shared task specific anyway (though they should
probably just be moved to string_ids.h with other eqstrs now)

Shared task requests were refactored a little to remove an unnecessary
function that filled potential members. The separate functions used for
/taskquit and /taskremove were also combined into a single function to
remove a member while preserving live message differences.
This commit is contained in:
hg
2022-07-30 21:36:04 -04:00
committed by GitHub
parent 8a962e09f6
commit d243cbf8a3
12 changed files with 220 additions and 419 deletions
+11 -18
View File
@@ -696,11 +696,12 @@ void TaskManager::SharedTaskSelector(Client *client, Mob *mob, int count, const
// check if requester already has a shared task (no need to query group/raid members if so)
if (client->GetTaskState()->HasActiveSharedTask()) {
client->MessageString(Chat::Red, SharedTaskMessage::NO_REQUEST_BECAUSE_HAVE_ONE);
client->MessageString(Chat::Red, TaskStr::REQUEST_HAVE);
return;
}
// get group/raid member character data from db (need to query for character ids)
// todo: group/raids need refactored to avoid queries and ignore offline members (through world)
auto request = SharedTask::GetRequestCharacters(database, client->CharacterID());
// check if any group/raid member already has a shared task (already checked solo character)
@@ -713,25 +714,17 @@ void TaskManager::SharedTaskSelector(Client *client, Mob *mob, int count, const
if (!shared_task_members.empty()) {
validation_failed = true;
auto it = std::find_if(
request.characters.begin(), request.characters.end(),
[&](const CharacterDataRepository::CharacterData &char_data) {
return char_data.id == shared_task_members.front().character_id;
}
);
auto it = std::find_if(request.members.begin(), request.members.end(),
[&](const SharedTaskMember& member) {
return member.character_id == shared_task_members.front().character_id;
});
if (it != request.characters.end()) {
if (it != request.members.end()) {
if (request.group_type == SharedTaskRequestGroupType::Group) {
client->MessageString(
Chat::Red,
SharedTaskMessage::NO_REQUEST_BECAUSE_GROUP_HAS_ONE,
it->name.c_str());
client->MessageString(Chat::Red, TaskStr::REQUEST_GROUP_HAS, it->character_name.c_str());
}
else {
client->MessageString(
Chat::Red,
SharedTaskMessage::NO_REQUEST_BECAUSE_RAID_HAS_ONE,
it->name.c_str());
client->MessageString(Chat::Red, TaskStr::REQUEST_RAID_HAS, it->character_name.c_str());
}
}
}
@@ -758,7 +751,7 @@ void TaskManager::SharedTaskSelector(Client *client, Mob *mob, int count, const
SendSharedTaskSelector(client, mob, task_list_index, task_list);
}
else {
client->MessageString(Chat::Red, SharedTaskMessage::YOU_DO_NOT_MEET_REQ_AVAILABLE);
client->MessageString(Chat::Red, TaskStr::NOT_MEET_REQ);
}
}
}
@@ -1748,7 +1741,7 @@ void TaskManager::SyncClientSharedTaskRemoveLocalIfNotExists(Client *c, ClientTa
CharacterTasksRepository::DeleteWhere(database, delete_where);
CharacterActivitiesRepository::DeleteWhere(database, delete_where);
c->MessageString(Chat::Yellow, SharedTaskMessage::YOU_ARE_NO_LONGER_A_MEMBER,
c->MessageString(Chat::Yellow, TaskStr::NO_LONGER_MEMBER_TITLE,
m_task_data[cts->m_active_shared_task.task_id]->title.c_str());
// remove as active task if doesn't exist