mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-04-09 17:26:58 +00:00
- Added ICharacterReputation and IPropertyReputationContribution interfaces for managing character and property reputations. - Implemented MySQL and SQLite database methods for getting and setting character reputations. - Created migration scripts for character and property reputation tables in both MySQL and SQLite. - Updated CharacterComponent to retrieve and set character reputation. - Enhanced PropertyManagementComponent to manage property reputation and contributions. - Added methods for handling reputation contributions and decay. - Introduced CharacterReputationMigration to migrate existing character reputations from XML to the database.
42 lines
1.2 KiB
C++
42 lines
1.2 KiB
C++
#include "CharacterReputationMigration.h"
|
|
|
|
#include "Database.h"
|
|
#include "Logger.h"
|
|
#include "tinyxml2.h"
|
|
|
|
uint32_t CharacterReputationMigration::Run() {
|
|
uint32_t charactersMigrated = 0;
|
|
|
|
const auto allCharIds = Database::Get()->GetAllCharacterIds();
|
|
const bool previousCommitValue = Database::Get()->GetAutoCommit();
|
|
Database::Get()->SetAutoCommit(false);
|
|
|
|
for (const auto charId : allCharIds) {
|
|
const auto xmlStr = Database::Get()->GetCharacterXml(charId);
|
|
if (xmlStr.empty()) continue;
|
|
|
|
tinyxml2::XMLDocument doc;
|
|
if (doc.Parse(xmlStr.c_str(), xmlStr.size()) != tinyxml2::XML_SUCCESS) {
|
|
LOG("Failed to parse XML for character %llu during reputation migration", charId);
|
|
continue;
|
|
}
|
|
|
|
auto* obj = doc.FirstChildElement("obj");
|
|
if (!obj) continue;
|
|
|
|
auto* character = obj->FirstChildElement("char");
|
|
if (!character) continue;
|
|
|
|
int64_t reputation = 0;
|
|
if (character->QueryInt64Attribute("rpt", &reputation) == tinyxml2::XML_SUCCESS && reputation != 0) {
|
|
Database::Get()->SetCharacterReputation(charId, reputation);
|
|
charactersMigrated++;
|
|
}
|
|
}
|
|
|
|
Database::Get()->Commit();
|
|
Database::Get()->SetAutoCommit(previousCommitValue);
|
|
|
|
return charactersMigrated;
|
|
}
|