[Character] Convert Delete/Load/Save of Character Disciplines to Repositories (#3850)

* [Character] Convert Delete/Load/Save of Character Disciplines to Repositories

- Convert `DeleteCharacterDiscipline` and `SaveCharacterDiscipline` to repositories.
- `LoadCharacterDiscipline` already used repositories, cleaned up the logic.

* Update effects.cpp

* Update client.cpp

* Update effects.cpp

* Update client.cpp

* Update zonedb.cpp

* Update client.cpp
This commit is contained in:
Alex King
2024-01-07 00:41:01 -05:00
committed by GitHub
parent fd787af53a
commit 2dd0e51936
6 changed files with 111 additions and 35 deletions
+12 -12
View File
@@ -10742,22 +10742,22 @@ void Client::SaveSpells()
void Client::SaveDisciplines()
{
std::vector<CharacterDisciplinesRepository::CharacterDisciplines> character_discs = {};
std::vector<CharacterDisciplinesRepository::CharacterDisciplines> v;
for (int index = 0; index < MAX_PP_DISCIPLINES; index++) {
if (IsValidSpell(m_pp.disciplines.values[index])) {
auto discipline = CharacterDisciplinesRepository::NewEntity();
discipline.id = CharacterID();
discipline.slot_id = index;
discipline.disc_id = m_pp.disciplines.values[index];
character_discs.emplace_back(discipline);
for (int slot_id = 0; slot_id < MAX_PP_DISCIPLINES; slot_id++) {
if (IsValidSpell(m_pp.disciplines.values[slot_id])) {
auto e = CharacterDisciplinesRepository::NewEntity();
e.id = CharacterID();
e.slot_id = slot_id;
e.disc_id = m_pp.disciplines.values[slot_id];
v.emplace_back(e);
}
}
CharacterDisciplinesRepository::DeleteWhere(database, fmt::format("id = {}", CharacterID()));
if (!character_discs.empty()) {
CharacterDisciplinesRepository::InsertMany(database, character_discs);
if (!v.empty()) {
CharacterDisciplinesRepository::ReplaceMany(database, v);
}
}