mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-04 17:54:01 +00:00
@@ -13,7 +13,6 @@
|
||||
#include "Mail.h"
|
||||
#include "MissionComponent.h"
|
||||
#include "RacingTaskParam.h"
|
||||
#include "dLocale.h"
|
||||
#include "dLogger.h"
|
||||
#include "dServer.h"
|
||||
#include "dZoneManager.h"
|
||||
@@ -335,13 +334,10 @@ void Mission::Complete(const bool yieldRewards) {
|
||||
for (const auto& email : missionEmails) {
|
||||
const auto missionEmailBase = "MissionEmail_" + std::to_string(email.ID) + "_";
|
||||
|
||||
const auto senderLocale = missionEmailBase + "senderName";
|
||||
const auto announceLocale = missionEmailBase + "announceText";
|
||||
|
||||
if (email.messageType == 1 && Game::locale->HasPhrase(senderLocale)) {
|
||||
const auto subject = dLocale::GetTemplate(missionEmailBase + "subjectText");
|
||||
const auto body = dLocale::GetTemplate(missionEmailBase + "bodyText");
|
||||
const auto sender = dLocale::GetTemplate(senderLocale);
|
||||
if (email.messageType == 1) {
|
||||
const auto subject = "%[" + missionEmailBase + "subjectText]";
|
||||
const auto body = "%[" + missionEmailBase + "bodyText]";
|
||||
const auto sender = "%[" + missionEmailBase + "senderName]";
|
||||
|
||||
Mail::SendMail(LWOOBJID_EMPTY, sender, GetAssociate(), subject, body, email.attachmentLOT, 1);
|
||||
}
|
||||
|
@@ -1,5 +1,4 @@
|
||||
set(DGAME_DUTILITIES_SOURCES "BrickDatabase.cpp"
|
||||
"dLocale.cpp"
|
||||
"GameConfig.cpp"
|
||||
"GUID.cpp"
|
||||
"Loot.cpp"
|
||||
|
@@ -1,82 +0,0 @@
|
||||
#include "dLocale.h"
|
||||
|
||||
#include <clocale>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
|
||||
#include "tinyxml2.h"
|
||||
#include "Game.h"
|
||||
#include "dConfig.h"
|
||||
#include "BinaryPathFinder.h"
|
||||
|
||||
dLocale::dLocale() {
|
||||
if (Game::config->GetValue("locale_enabled") != "1") {
|
||||
return;
|
||||
}
|
||||
|
||||
std::ifstream file(BinaryPathFinder::GetBinaryDir() / m_LocalePath);
|
||||
|
||||
if (!file.good()) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::stringstream data;
|
||||
data << file.rdbuf();
|
||||
|
||||
if (data.str().empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto* doc = new tinyxml2::XMLDocument();
|
||||
|
||||
if (doc == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (doc->Parse(data.str().c_str(), data.str().size()) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::hash<std::string> hash;
|
||||
|
||||
auto* localization = doc->FirstChildElement("localization");
|
||||
auto* phrases = localization->FirstChildElement("phrases");
|
||||
|
||||
auto* phrase = phrases->FirstChildElement("phrase");
|
||||
|
||||
while (phrase != nullptr) {
|
||||
// Add the phrase hash to the vector
|
||||
m_Phrases.push_back(hash(phrase->Attribute("id")));
|
||||
phrase = phrase->NextSiblingElement("phrase");
|
||||
}
|
||||
|
||||
file.close();
|
||||
|
||||
delete doc;
|
||||
}
|
||||
|
||||
dLocale::~dLocale() = default;
|
||||
|
||||
std::string dLocale::GetTemplate(const std::string& phraseID) {
|
||||
return "%[" + phraseID + "]";
|
||||
}
|
||||
|
||||
bool dLocale::HasPhrase(const std::string& phraseID) {
|
||||
if (Game::config->GetValue("locale_enabled") != "1") {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Compute the hash and see if it's in the vector
|
||||
std::hash<std::string> hash;
|
||||
std::size_t hashValue = hash(phraseID);
|
||||
return std::find(m_Phrases.begin(), m_Phrases.end(), hashValue) != m_Phrases.end();
|
||||
}
|
||||
|
||||
/*std::string dLocale::GetPhrase(const std::string& phraseID) {
|
||||
if (m_Phrases.find(phraseID) == m_Phrases.end()) {
|
||||
return "";
|
||||
}
|
||||
return m_Phrases[phraseID];
|
||||
}*/
|
@@ -1,19 +0,0 @@
|
||||
#pragma once
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
class dLocale {
|
||||
public:
|
||||
dLocale();
|
||||
~dLocale();
|
||||
static std::string GetTemplate(const std::string& phraseID);
|
||||
bool HasPhrase(const std::string& phraseID);
|
||||
//std::string GetPhrase(const std::string& phraseID);
|
||||
|
||||
private:
|
||||
std::string m_LocalePath = "./locale/locale.xml";
|
||||
std::string m_Locale = "en_US"; // TODO: add to config
|
||||
std::vector<std::size_t> m_Phrases;
|
||||
};
|
Reference in New Issue
Block a user