From 96530d778eef23c7c1e3feb943db948ea12b56b7 Mon Sep 17 00:00:00 2001 From: Jessica James Date: Fri, 3 Dec 2021 00:45:53 -0600 Subject: [PATCH] Remove all Jupiter string usage; update submodule; various minor fixes --- src/Bot/include/Console_Command.h | 1 + src/Bot/include/IRC_Bot.h | 2 +- src/Bot/include/IRC_Command.h | 1 - src/Bot/include/ServerManager.h | 2 +- src/Bot/src/IRC_Bot.cpp | 12 +- src/Bot/src/Main.cpp | 11 +- src/Bot/src/ServerManager.cpp | 6 +- src/Jupiter | 2 +- src/Plugins/ChannelRelay/ChannelRelay.cpp | 6 +- src/Plugins/ChannelRelay/ChannelRelay.h | 1 - src/Plugins/CoreCommands/CoreCommands.cpp | 37 +- src/Plugins/ExtraCommands/ExtraCommands.cpp | 122 +- src/Plugins/FunCommands/FunCommands.cpp | 107 +- src/Plugins/HTTPServer/HTTPServer.cpp | 15 +- src/Plugins/HTTPServer/HTTPServer.h | 2 - src/Plugins/IRC.Core/IRC_Core.cpp | 5 +- src/Plugins/IRC.Core/IRC_Core.h | 1 - src/Plugins/Plugin.Example/Example.cpp | 9 +- src/Plugins/Plugin.Template/Example.h | 1 - src/Plugins/PluginManager/PluginManager.cpp | 45 +- .../RenX.AlwaysRecord/RenX_AlwaysRecord.cpp | 7 +- .../RenX.AlwaysRecord/RenX_AlwaysRecord.h | 1 - .../RenX.Announcements/RenX_Announcements.cpp | 3 +- .../RenX.Announcements/RenX_Announcements.h | 2 - .../RenX/RenX.ChatLogging/RenX_ChatLogging.h | 1 - .../RenX_CommandLogging.cpp | 29 +- .../RenX.CommandLogging/RenX_CommandLogging.h | 1 - .../RenX/RenX.Commands/RenX_Commands.cpp | 1105 ++++++++--------- .../RenX/RenX.Core/RenX_BanDatabase.cpp | 23 +- src/Plugins/RenX/RenX.Core/RenX_BanDatabase.h | 3 +- .../RenX/RenX.Core/RenX_BuildingInfo.h | 1 - src/Plugins/RenX/RenX.Core/RenX_Core.cpp | 10 +- .../RenX/RenX.Core/RenX_ExemptionDatabase.cpp | 7 +- .../RenX/RenX.Core/RenX_ExemptionDatabase.h | 1 - src/Plugins/RenX/RenX.Core/RenX_Functions.cpp | 625 +++++----- src/Plugins/RenX/RenX.Core/RenX_Functions.h | 7 +- .../RenX/RenX.Core/RenX_GameCommand.cpp | 8 +- src/Plugins/RenX/RenX.Core/RenX_GameCommand.h | 1 - .../RenX/RenX.Core/RenX_LadderDatabase.cpp | 14 +- .../RenX/RenX.Core/RenX_LadderDatabase.h | 1 - src/Plugins/RenX/RenX.Core/RenX_Map.h | 2 +- src/Plugins/RenX/RenX.Core/RenX_PlayerInfo.h | 14 +- src/Plugins/RenX/RenX.Core/RenX_Plugin.cpp | 2 +- src/Plugins/RenX/RenX.Core/RenX_Plugin.h | 3 +- src/Plugins/RenX/RenX.Core/RenX_Server.cpp | 501 ++++---- src/Plugins/RenX/RenX.Core/RenX_Server.h | 16 +- src/Plugins/RenX/RenX.Core/RenX_Tags.cpp | 360 +++--- src/Plugins/RenX/RenX.Core/RenX_Tags.h | 1 - src/Plugins/RenX/RenX.Core/RenX_TeamInfo.h | 3 +- .../RenX_ExcessiveHeadshots.cpp | 13 +- .../RenX.ExtraLogging/RenX_ExtraLogging.cpp | 12 +- .../RenX.ExtraLogging/RenX_ExtraLogging.h | 1 - .../RenX/RenX.Greetings/RenX_Greetings.cpp | 1 - .../RenX/RenX.Greetings/RenX_Greetings.h | 2 - .../RenX/RenX.HybridUUID/RenX_HybridUUID.cpp | 4 +- .../RenX/RenX.HybridUUID/RenX_HybridUUID.h | 1 - .../RenX/RenX.IRCJoin/RenX_IRCJoin.cpp | 82 +- src/Plugins/RenX/RenX.IRCJoin/RenX_IRCJoin.h | 13 +- .../RenX/RenX.KickDupes/RenX_KickDupes.cpp | 3 +- .../RenX/RenX.KickDupes/RenX_KickDupes.h | 1 - .../RenX_Ladder_All_Time.cpp | 17 +- .../RenX_Ladder_All_Time.h | 1 - .../RenX.Ladder.Daily/RenX_Ladder_Daily.cpp | 23 +- .../RenX.Ladder.Daily/RenX_Ladder_Daily.h | 1 - .../RenX_Ladder_Monthly.cpp | 20 +- .../RenX.Ladder.Monthly/RenX_Ladder_Monthly.h | 1 - .../RenX/RenX.Ladder.Web/RenX_Ladder_Web.cpp | 104 +- .../RenX/RenX.Ladder.Web/RenX_Ladder_Web.h | 8 +- .../RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp | 26 +- .../RenX.Ladder.Weekly/RenX_Ladder_Weekly.h | 1 - .../RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp | 23 +- .../RenX.Ladder.Yearly/RenX_Ladder_Yearly.h | 1 - src/Plugins/RenX/RenX.Ladder/RenX_Ladder.cpp | 39 +- src/Plugins/RenX/RenX.Ladder/RenX_Ladder.h | 1 - src/Plugins/RenX/RenX.Listen/RenX_Listen.cpp | 14 +- src/Plugins/RenX/RenX.Listen/RenX_Listen.h | 1 - .../RenX/RenX.Logging/RenX_Logging.cpp | 412 +++--- src/Plugins/RenX/RenX.Medals/RenX_Medals.cpp | 117 +- src/Plugins/RenX/RenX.Medals/RenX_Medals.h | 15 +- .../RenX/RenX.MinPlayers/RenX_MinPlayers.cpp | 82 +- .../RenX/RenX.MinPlayers/RenX_MinPlayers.h | 1 - .../RenX/RenX.ModSystem/RenX_ModSystem.cpp | 318 ++--- .../RenX/RenX.ModSystem/RenX_ModSystem.h | 2 - .../RenX.NicknameUUID/RenX_NicknameUUID.cpp | 3 +- .../RenX.NicknameUUID/RenX_NicknameUUID.h | 1 - .../RenX/RenX.Plugin.Template/Example.h | 1 - src/Plugins/RenX/RenX.Relay/RenX_Relay.cpp | 34 +- src/Plugins/RenX/RenX.Relay/RenX_Relay.h | 1 - .../RenX/RenX.ServerList/RenX_ServerList.cpp | 161 ++- .../RenX/RenX.ServerList/RenX_ServerList.h | 5 +- .../RenX/RenX.SetJoin/RenX_SetJoin.cpp | 44 +- src/Plugins/RenX/RenX.Warn/RenX_Warn.cpp | 48 +- src/Plugins/RenX/RenX.Warn/RenX_Warn.h | 1 - src/Plugins/SetJoin/SetJoin.cpp | 60 +- 94 files changed, 2381 insertions(+), 2479 deletions(-) diff --git a/src/Bot/include/Console_Command.h b/src/Bot/include/Console_Command.h index c81de75..34f3ffd 100644 --- a/src/Bot/include/Console_Command.h +++ b/src/Bot/include/Console_Command.h @@ -24,6 +24,7 @@ * @brief Provides an extendable command system specialized for console-based commands. */ +#include #include "Jupiter/GenericCommand.h" #include "Jupiter_Bot.h" diff --git a/src/Bot/include/IRC_Bot.h b/src/Bot/include/IRC_Bot.h index b031577..ad4d6f2 100644 --- a/src/Bot/include/IRC_Bot.h +++ b/src/Bot/include/IRC_Bot.h @@ -24,10 +24,10 @@ * @brief Provides extendable bot-like interfacing with the IRC client. */ +#include #include "Jupiter_Bot.h" #include "Jupiter/IRC_Client.h" #include "Jupiter/Rehash.h" -#include "Jupiter/String.hpp" /** Forward Declaration */ class IRCCommand; diff --git a/src/Bot/include/IRC_Command.h b/src/Bot/include/IRC_Command.h index ee24a5f..6bf0540 100644 --- a/src/Bot/include/IRC_Command.h +++ b/src/Bot/include/IRC_Command.h @@ -26,7 +26,6 @@ #include "Jupiter/GenericCommand.h" #include "Jupiter/IRC_Client.h" -#include "Jupiter/String.hpp" #include "Jupiter_Bot.h" #include "ServerManager.h" #include "IRC_Bot.h" diff --git a/src/Bot/include/ServerManager.h b/src/Bot/include/ServerManager.h index 82c4434..f233be1 100644 --- a/src/Bot/include/ServerManager.h +++ b/src/Bot/include/ServerManager.h @@ -25,9 +25,9 @@ */ #include +#include #include "Jupiter_Bot.h" #include "Jupiter/Thinker.h" -#include "Jupiter/Readable_String.h" /** Forward declarations */ class IRC_Bot; diff --git a/src/Bot/src/IRC_Bot.cpp b/src/Bot/src/IRC_Bot.cpp index 73ee997..4047ada 100644 --- a/src/Bot/src/IRC_Bot.cpp +++ b/src/Bot/src/IRC_Bot.cpp @@ -24,15 +24,15 @@ #include "Jupiter/Config.h" #include "Jupiter/Plugin.h" #include "Jupiter/Functions.h" +#include "Jupiter/Readable_String.h" #include "IRC_Bot.h" #include "IRC_Command.h" -using namespace Jupiter::literals; using namespace std::literals; IRC_Bot::IRC_Bot(Jupiter::Config *in_primary_section, Jupiter::Config *in_secondary_section) : Client(in_primary_section, in_secondary_section) { - m_commandPrefix = this->readConfigValue("Prefix"_jrs); + m_commandPrefix = this->readConfigValue("Prefix"sv); for (const auto& command : IRCMasterCommandList) { m_commands.emplace_back(command->copy()); @@ -105,14 +105,14 @@ void IRC_Bot::setCommandAccessLevels(IRCCommand *in_command) { return; } - Jupiter::Config *section = in_section->getSection("Commands"_jrs); + Jupiter::Config *section = in_section->getSection("Commands"sv); if (section == nullptr) { return; } for (auto& entry : section->getTable()) { size_t tmp_index; - Jupiter::ReferenceString tmp_key, tmp_sub_key; + std::string_view tmp_key, tmp_sub_key; IRCCommand *command; tmp_index = entry.first.find('.'); @@ -174,10 +174,10 @@ void IRC_Bot::OnChat(std::string_view in_channel, std::string_view nick, std::st IRCCommand::active_server = this; int command_access = cmd->getAccessLevel(channel); if (command_access < 0) { - this->sendNotice(nick, "Error: Command disabled."_jrs); + this->sendNotice(nick, "Error: Command disabled."sv); } else if (Jupiter::IRC::Client::getAccessLevel(*channel, nick) < command_access) { - this->sendNotice(nick, "Access Denied."_jrs); + this->sendNotice(nick, "Access Denied."sv); } else { cmd->trigger(this, in_channel, nick, message_split.second); diff --git a/src/Bot/src/Main.cpp b/src/Bot/src/Main.cpp index c8f1e3a..35b82c9 100644 --- a/src/Bot/src/Main.cpp +++ b/src/Bot/src/Main.cpp @@ -39,7 +39,6 @@ #include #endif // _WIN32 -using namespace Jupiter::literals; using namespace std::literals; Jupiter::INIConfig o_config; @@ -91,13 +90,13 @@ void inputLoop() { void initialize_plugins() { std::cout << "Loading plugins..." << std::endl; - std::string_view plugin_list_str = Jupiter::g_config->get("Plugins"_jrs); + std::string_view plugin_list_str = Jupiter::g_config->get("Plugins"sv); if (plugin_list_str.empty()) { std::cout << "No plugins to load!" << std::endl; } else { // initialize plugins - auto plugin_names = jessilib::word_split(plugin_list_str, WHITESPACE_SV); + auto plugin_names = jessilib::word_split_view(plugin_list_str, WHITESPACE_SV); std::cout << "Attempting to load " << plugin_names.size() << " plugins..." << std::endl; for (const auto& plugin_name : plugin_names) { @@ -206,10 +205,10 @@ int main(int argc, char* argv[]) { printf("Config loaded (%fms)." ENDL, time_taken); if (plugins_directory.empty()) - plugins_directory = o_config.get("PluginsDirectory"_jrs); + plugins_directory = o_config.get("PluginsDirectory"sv); if (configs_directory.empty()) - configs_directory = o_config.get("ConfigsDirectory"_jrs); + configs_directory = o_config.get("ConfigsDirectory"sv); if (!plugins_directory.empty()) { Jupiter::Plugin::setDirectory(plugins_directory); @@ -226,7 +225,7 @@ int main(int argc, char* argv[]) { printf("Initialization completed in %f milliseconds." ENDL, static_cast(std::chrono::duration_cast(std::chrono::steady_clock::now() - Jupiter::g_start_time).count()) / 1000.0 ); if (!consoleCommands.empty()) { - printf("%zu Console Commands have been initialized%s" ENDL, consoleCommands.size(), getConsoleCommand("help"_jrs) == nullptr ? "." : "; type \"help\" for more information."); + printf("%zu Console Commands have been initialized%s" ENDL, consoleCommands.size(), getConsoleCommand("help"sv) == nullptr ? "." : "; type \"help\" for more information."); } if (!IRCMasterCommandList.empty()) { printf("%zu IRC Commands have been loaded into the master list." ENDL, IRCMasterCommandList.size()); diff --git a/src/Bot/src/ServerManager.cpp b/src/Bot/src/ServerManager.cpp index 1c954a7..f1f8949 100644 --- a/src/Bot/src/ServerManager.cpp +++ b/src/Bot/src/ServerManager.cpp @@ -22,7 +22,7 @@ #include "IRC_Bot.h" #include "IRC_Command.h" -using namespace Jupiter::literals; +using namespace std::literals; ServerManager g_serverManager; ServerManager *serverManager = &g_serverManager; @@ -72,7 +72,7 @@ size_t ServerManager::removeCommand(std::string_view command) { void ServerManager::OnConfigRehash() { for (const auto& server : m_servers) { server->setPrimaryConfigSection(m_config->getSection(server->getConfigSection())); - server->setSecondaryConfigSection(m_config->getSection("Defualt"_jrs)); + server->setSecondaryConfigSection(m_config->getSection("Defualt"sv)); server->setCommandAccessLevels(); } } @@ -104,7 +104,7 @@ IRC_Bot *ServerManager::getServer(size_t serverIndex) { } bool ServerManager::addServer(std::string_view serverConfig) { - auto server = std::make_unique(m_config->getSection(serverConfig), m_config->getSection("Default"_jrs)); + auto server = std::make_unique(m_config->getSection(serverConfig), m_config->getSection("Default"sv)); if (server->connect()) { m_servers.push_back(std::move(server)); return true; diff --git a/src/Jupiter b/src/Jupiter index 273bb80..7776298 160000 --- a/src/Jupiter +++ b/src/Jupiter @@ -1 +1 @@ -Subproject commit 273bb80abfe378654d6f3f2b7a1eeaab2549faaf +Subproject commit 77762980cce5bda4035b15cc552ec8a4c5b2175e diff --git a/src/Plugins/ChannelRelay/ChannelRelay.cpp b/src/Plugins/ChannelRelay/ChannelRelay.cpp index a3816c3..1107d94 100644 --- a/src/Plugins/ChannelRelay/ChannelRelay.cpp +++ b/src/Plugins/ChannelRelay/ChannelRelay.cpp @@ -18,16 +18,16 @@ #include "jessilib/word_split.hpp" #include "Jupiter/IRC_Client.h" -#include "Jupiter/String.hpp" +#include "Jupiter/Functions.h" +#include "Jupiter/Readable_String.h" #include "ServerManager.h" #include "IRC_Bot.h" #include "ChannelRelay.h" -using namespace Jupiter::literals; using namespace std::literals; bool ChannelRelayPlugin::initialize() { - std::string_view types_string = this->config.get("Types"_jrs); + std::string_view types_string = this->config.get("Types"sv); std::vector split_types = jessilib::word_split_view(types_string, WHITESPACE_SV); if (split_types.empty()) { diff --git a/src/Plugins/ChannelRelay/ChannelRelay.h b/src/Plugins/ChannelRelay/ChannelRelay.h index 512701d..0812239 100644 --- a/src/Plugins/ChannelRelay/ChannelRelay.h +++ b/src/Plugins/ChannelRelay/ChannelRelay.h @@ -20,7 +20,6 @@ #define _CHANNELRELAY_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" class ChannelRelayPlugin : public Jupiter::Plugin { diff --git a/src/Plugins/CoreCommands/CoreCommands.cpp b/src/Plugins/CoreCommands/CoreCommands.cpp index 63dd783..d27035c 100644 --- a/src/Plugins/CoreCommands/CoreCommands.cpp +++ b/src/Plugins/CoreCommands/CoreCommands.cpp @@ -22,13 +22,12 @@ #include "CoreCommands.h" #include "IRC_Bot.h" -using namespace Jupiter::literals; using namespace std::literals; // Help Console Command HelpConsoleCommand::HelpConsoleCommand() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("help")); + this->addTrigger("help"sv); } void HelpConsoleCommand::trigger(std::string_view parameters) { @@ -54,7 +53,7 @@ void HelpConsoleCommand::trigger(std::string_view parameters) { } std::string_view HelpConsoleCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Lists commands, or sends command-specific help. Syntax: help [command]"); + static constexpr std::string_view defaultHelp = "Lists commands, or sends command-specific help. Syntax: help [command]"sv; return defaultHelp; } @@ -63,7 +62,7 @@ CONSOLE_COMMAND_INIT(HelpConsoleCommand) // Help IRC Command. void HelpIRCCommand::create() { - this->addTrigger("help"_jrs); + this->addTrigger("help"sv); } void HelpIRCCommand::trigger(IRC_Bot *source, std::string_view in_channel, std::string_view nick, std::string_view parameters) { @@ -75,14 +74,14 @@ void HelpIRCCommand::trigger(IRC_Bot *source, std::string_view in_channel, std:: for (int i = 0; i <= access; i++) { auto cmds = source->getAccessCommands(channel, i); if (cmds.size() != 0) { - Jupiter::StringL triggers = source->getTriggers(cmds); + std::string triggers = source->getTriggers(cmds); if (triggers.size() >= 0) { source->sendNotice(nick, string_printf("Access level %d commands: %.*s", i, triggers.size(), triggers.data())); } } } - source->sendNotice(nick, "For command-specific help, use: help "_jrs); + source->sendNotice(nick, "For command-specific help, use: help "sv); } else { auto command_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); @@ -91,19 +90,19 @@ void HelpIRCCommand::trigger(IRC_Bot *source, std::string_view in_channel, std:: int command_access = cmd->getAccessLevel(channel); if (command_access < 0) - source->sendNotice(nick, "Error: Command disabled."_jrs); + source->sendNotice(nick, "Error: Command disabled."sv); else if (access < command_access) - source->sendNotice(nick, "Access Denied."_jrs); + source->sendNotice(nick, "Access Denied."sv); else source->sendNotice(nick, cmd->getHelp(command_split.second)); } - else source->sendNotice(nick, "Error: Command not found."_jrs); + else source->sendNotice(nick, "Error: Command not found."sv); } } } std::string_view HelpIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Syntax: help [command]"); + static constexpr std::string_view defaultHelp = "Syntax: help [command]"sv; return defaultHelp; } @@ -112,12 +111,12 @@ IRC_COMMAND_INIT(HelpIRCCommand) // Version Command VersionGenericCommand::VersionGenericCommand() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("version")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("versioninfo")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("copyright")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("copyrightinfo")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("client")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("clientinfo")); + this->addTrigger("version"sv); + this->addTrigger("versioninfo"sv); + this->addTrigger("copyright"sv); + this->addTrigger("copyrightinfo"sv); + this->addTrigger("client"sv); + this->addTrigger("clientinfo"sv); } Jupiter::GenericCommand::ResponseLine *VersionGenericCommand::trigger(std::string_view parameters) { @@ -127,7 +126,7 @@ Jupiter::GenericCommand::ResponseLine *VersionGenericCommand::trigger(std::strin } std::string_view VersionGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays version and copyright information"); + static constexpr std::string_view defaultHelp = "Displays version and copyright information"sv; return defaultHelp; } @@ -137,7 +136,7 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(VersionGenericCommand) // Rehash Command RehashGenericCommand::RehashGenericCommand() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rehash")); + this->addTrigger("rehash"sv); } Jupiter::GenericCommand::ResponseLine *RehashGenericCommand::trigger(std::string_view parameters) { @@ -150,7 +149,7 @@ Jupiter::GenericCommand::ResponseLine *RehashGenericCommand::trigger(std::string } std::string_view RehashGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Rehashes configuration data from a file. Syntax: rehash [file]"); + static constexpr std::string_view defaultHelp = "Rehashes configuration data from a file. Syntax: rehash [file]"sv; return defaultHelp; } diff --git a/src/Plugins/ExtraCommands/ExtraCommands.cpp b/src/Plugins/ExtraCommands/ExtraCommands.cpp index 63adc6e..478135b 100644 --- a/src/Plugins/ExtraCommands/ExtraCommands.cpp +++ b/src/Plugins/ExtraCommands/ExtraCommands.cpp @@ -18,19 +18,19 @@ #include #include "jessilib/word_split.hpp" +#include "jessilib/unicode.hpp" #include "Jupiter/Functions.h" #include "ExtraCommands.h" #include "IRC_Bot.h" -using namespace Jupiter::literals; using namespace std::literals; // Select Command SelectGenericCommand::SelectGenericCommand() { - this->addTrigger("select"_jrs); - this->addTrigger("ircselect"_jrs); + this->addTrigger("select"sv); + this->addTrigger("ircselect"sv); } Jupiter::GenericCommand::ResponseLine *SelectGenericCommand::trigger(std::string_view parameters) @@ -38,7 +38,7 @@ Jupiter::GenericCommand::ResponseLine *SelectGenericCommand::trigger(std::string if (parameters.empty()) { if (IRCCommand::selected_server == nullptr) - return new Jupiter::GenericCommand::ResponseLine("No IRC server is currently selected."_jrs, GenericCommand::DisplayType::PublicSuccess); + return new Jupiter::GenericCommand::ResponseLine("No IRC server is currently selected."sv, GenericCommand::DisplayType::PublicSuccess); return new Jupiter::GenericCommand::ResponseLine(std::string{IRCCommand::selected_server->getConfigSection()} + " is currently selected."s, GenericCommand::DisplayType::PublicSuccess); } if (IRCCommand::active_server == IRCCommand::selected_server) @@ -46,17 +46,15 @@ Jupiter::GenericCommand::ResponseLine *SelectGenericCommand::trigger(std::string IRCCommand::selected_server = serverManager->getServer(parameters); if (IRCCommand::selected_server == nullptr) - return new Jupiter::GenericCommand::ResponseLine("Error: IRC server \""s + parameters + "\" not found. No IRC server is currently selected."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine(jessilib::join("Error: IRC server \""sv, parameters, "\" not found. No IRC server is currently selected."sv), GenericCommand::DisplayType::PublicError); if (IRCCommand::active_server == nullptr) IRCCommand::active_server = IRCCommand::selected_server; return new Jupiter::GenericCommand::ResponseLine(std::string{IRCCommand::selected_server->getConfigSection()} + " is now selected."s, GenericCommand::DisplayType::PublicSuccess); } -std::string_view SelectGenericCommand::getHelp(std::string_view ) -{ - static Jupiter::ReferenceString defaultHelp = "Selects an IRC server if specified, responds with the currently selected server otherwise. Syntax: select [server]"_jrs; - return defaultHelp; +std::string_view SelectGenericCommand::getHelp(std::string_view ) { + return "Selects an IRC server if specified, responds with the currently selected server otherwise. Syntax: select [server]"sv; } GENERIC_COMMAND_INIT(SelectGenericCommand) @@ -66,18 +64,18 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(SelectGenericCommand) DeselectGenericCommand::DeselectGenericCommand() { - this->addTrigger("deselect"_jrs); - this->addTrigger("ircdeselect"_jrs); - this->addTrigger("dselect"_jrs); - this->addTrigger("ircdselect"_jrs); - this->addTrigger("unselect"_jrs); - this->addTrigger("ircunselect"_jrs); + this->addTrigger("deselect"sv); + this->addTrigger("ircdeselect"sv); + this->addTrigger("dselect"sv); + this->addTrigger("ircdselect"sv); + this->addTrigger("unselect"sv); + this->addTrigger("ircunselect"sv); } Jupiter::GenericCommand::ResponseLine *DeselectGenericCommand::trigger(std::string_view parameters) { if (IRCCommand::selected_server == nullptr) - return new Jupiter::GenericCommand::ResponseLine("No IRC server is currently selected."_jrs, GenericCommand::DisplayType::PublicSuccess); + return new Jupiter::GenericCommand::ResponseLine("No IRC server is currently selected."sv, GenericCommand::DisplayType::PublicSuccess); Jupiter::GenericCommand::ResponseLine *ret = new Jupiter::GenericCommand::ResponseLine(std::string{IRCCommand::selected_server->getConfigSection()} + " has been deselected."s, GenericCommand::DisplayType::PublicSuccess); IRCCommand::selected_server = nullptr; @@ -85,10 +83,8 @@ Jupiter::GenericCommand::ResponseLine *DeselectGenericCommand::trigger(std::stri return ret; } -std::string_view DeselectGenericCommand::getHelp(std::string_view ) -{ - static Jupiter::ReferenceString defaultHelp = "Deselects the currently selected IRC server. Syntax: deselect"_jrs; - return defaultHelp; +std::string_view DeselectGenericCommand::getHelp(std::string_view ) { + return "Deselects the currently selected IRC server. Syntax: deselect"sv; } GENERIC_COMMAND_INIT(DeselectGenericCommand) @@ -98,8 +94,8 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(DeselectGenericCommand) RawGenericCommand::RawGenericCommand() { - this->addTrigger("raw"_jrs); - this->addTrigger("sendraw"_jrs); + this->addTrigger("raw"sv); + this->addTrigger("sendraw"sv); } Jupiter::GenericCommand::ResponseLine *RawGenericCommand::trigger(std::string_view parameters) @@ -110,18 +106,18 @@ Jupiter::GenericCommand::ResponseLine *RawGenericCommand::trigger(std::string_vi else if (IRCCommand::active_server != nullptr) server = IRCCommand::active_server; else - return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."sv, GenericCommand::DisplayType::PublicError); if (parameters.empty()) - return new Jupiter::GenericCommand::ResponseLine("Error: Too few parameters. Syntax: raw "_jrs, GenericCommand::DisplayType::PrivateError); + return new Jupiter::GenericCommand::ResponseLine("Error: Too few parameters. Syntax: raw "sv, GenericCommand::DisplayType::PrivateError); server->send(parameters); - return new Jupiter::GenericCommand::ResponseLine("Data has been successfully sent to server."_jrs, GenericCommand::DisplayType::PublicSuccess); + return new Jupiter::GenericCommand::ResponseLine("Data has been successfully sent to server."sv, GenericCommand::DisplayType::PublicSuccess); } std::string_view RawGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends a line of data to the selected IRC server. Syntax: raw "); + static constexpr std::string_view defaultHelp = "Sends a line of data to the selected IRC server. Syntax: raw "sv; return defaultHelp; } @@ -132,9 +128,9 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(RawGenericCommand) IRCMessageGenericCommand::IRCMessageGenericCommand() { - this->addTrigger("ircmsg"_jrs); - this->addTrigger("ircmessage"_jrs); - this->addTrigger("privmsg"_jrs); + this->addTrigger("ircmsg"sv); + this->addTrigger("ircmessage"sv); + this->addTrigger("privmsg"sv); } Jupiter::GenericCommand::ResponseLine *IRCMessageGenericCommand::trigger(std::string_view parameters) @@ -145,19 +141,19 @@ Jupiter::GenericCommand::ResponseLine *IRCMessageGenericCommand::trigger(std::st else if (IRCCommand::active_server != nullptr) server = IRCCommand::active_server; else - return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."sv, GenericCommand::DisplayType::PublicError); auto parameters_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); if (parameters_split.second.empty()) - return new Jupiter::GenericCommand::ResponseLine("Error: Too few parameters. Syntax: ircmsg "_jrs, GenericCommand::DisplayType::PrivateError); + return new Jupiter::GenericCommand::ResponseLine("Error: Too few parameters. Syntax: ircmsg "sv, GenericCommand::DisplayType::PrivateError); server->sendMessage(parameters_split.first, parameters_split.second); - return new Jupiter::GenericCommand::ResponseLine("Message successfully sent."_jrs, GenericCommand::DisplayType::PublicSuccess); + return new Jupiter::GenericCommand::ResponseLine("Message successfully sent."sv, GenericCommand::DisplayType::PublicSuccess); } std::string_view IRCMessageGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends a message to an IRC user or channel on the selected IRC server. Syntax: ircmsg "); + static constexpr std::string_view defaultHelp = "Sends a message to an IRC user or channel on the selected IRC server. Syntax: ircmsg "sv; return defaultHelp; } @@ -168,7 +164,7 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(IRCMessageGenericCommand) JoinGenericCommand::JoinGenericCommand() { - this->addTrigger("Join"_jrs); + this->addTrigger("Join"sv); } Jupiter::GenericCommand::ResponseLine *JoinGenericCommand::trigger(std::string_view parameters) @@ -179,10 +175,10 @@ Jupiter::GenericCommand::ResponseLine *JoinGenericCommand::trigger(std::string_v else if (IRCCommand::active_server != nullptr) server = IRCCommand::active_server; else - return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."sv, GenericCommand::DisplayType::PublicError); if (parameters.empty()) - return new Jupiter::GenericCommand::ResponseLine("Error: Too Few Parameters. Syntax: join [password]"_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: Too Few Parameters. Syntax: join [password]"sv, GenericCommand::DisplayType::PublicError); auto parameters_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); if (parameters_split.second.empty()) { @@ -192,12 +188,12 @@ Jupiter::GenericCommand::ResponseLine *JoinGenericCommand::trigger(std::string_v server->joinChannel(parameters_split.first, parameters_split.second); } - return new Jupiter::GenericCommand::ResponseLine("Request to join channel has been sent."_jrs, GenericCommand::DisplayType::PublicSuccess); + return new Jupiter::GenericCommand::ResponseLine("Request to join channel has been sent."sv, GenericCommand::DisplayType::PublicSuccess); } std::string_view JoinGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Joins a channel. Syntax: join [password]"); + static constexpr std::string_view defaultHelp = "Joins a channel. Syntax: join [password]"sv; return defaultHelp; } @@ -208,7 +204,7 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(JoinGenericCommand) PartGenericCommand::PartGenericCommand() { - this->addTrigger("Part"_jrs); + this->addTrigger("Part"sv); } Jupiter::GenericCommand::ResponseLine *PartGenericCommand::trigger(std::string_view parameters) @@ -219,10 +215,10 @@ Jupiter::GenericCommand::ResponseLine *PartGenericCommand::trigger(std::string_v else if (IRCCommand::active_server != nullptr) server = IRCCommand::active_server; else - return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."sv, GenericCommand::DisplayType::PublicError); if (parameters.empty()) - return new Jupiter::GenericCommand::ResponseLine("Error: Too few parameters. Syntax: part [message]"_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: Too few parameters. Syntax: part [message]"sv, GenericCommand::DisplayType::PublicError); auto parameters_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); if (parameters_split.second.empty()) { @@ -232,12 +228,12 @@ Jupiter::GenericCommand::ResponseLine *PartGenericCommand::trigger(std::string_v server->partChannel(parameters_split.first, parameters_split.second); } - return new Jupiter::GenericCommand::ResponseLine("Part command successfuly sent."_jrs, GenericCommand::DisplayType::PublicSuccess); + return new Jupiter::GenericCommand::ResponseLine("Part command successfuly sent."sv, GenericCommand::DisplayType::PublicSuccess); } std::string_view PartGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Parts from a channel. Syntax: part [message]"); + static constexpr std::string_view defaultHelp = "Parts from a channel. Syntax: part [message]"sv; return defaultHelp; } @@ -248,7 +244,7 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(PartGenericCommand) DebugInfoGenericCommand::DebugInfoGenericCommand() { - this->addTrigger("debuginfo"_jrs); + this->addTrigger("debuginfo"sv); } Jupiter::GenericCommand::ResponseLine *DebugInfoGenericCommand::trigger(std::string_view parameters) @@ -259,7 +255,7 @@ Jupiter::GenericCommand::ResponseLine *DebugInfoGenericCommand::trigger(std::str else if (IRCCommand::active_server != nullptr) server = IRCCommand::active_server; else - return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."sv, GenericCommand::DisplayType::PublicError); Jupiter::GenericCommand::ResponseLine *ret = new Jupiter::GenericCommand::ResponseLine("Prefixes: "s += server->getPrefixes(), GenericCommand::DisplayType::PublicSuccess); Jupiter::GenericCommand::ResponseLine *line = new Jupiter::GenericCommand::ResponseLine("Prefix Modes: "s += server->getPrefixModes(), GenericCommand::DisplayType::PublicSuccess); @@ -292,7 +288,7 @@ Jupiter::GenericCommand::ResponseLine *DebugInfoGenericCommand::trigger(std::str std::string_view DebugInfoGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "DEBUG COMMAND - Spits out some information about channels. Syntax: debuginfo"); + static constexpr std::string_view defaultHelp = "DEBUG COMMAND - Spits out some information about channels. Syntax: debuginfo"sv; return defaultHelp; } @@ -303,7 +299,7 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(DebugInfoGenericCommand) ExitGenericCommand::ExitGenericCommand() { - this->addTrigger("exit"_jrs); + this->addTrigger("exit"sv); } Jupiter::GenericCommand::ResponseLine *ExitGenericCommand::trigger(std::string_view parameters) @@ -313,7 +309,7 @@ Jupiter::GenericCommand::ResponseLine *ExitGenericCommand::trigger(std::string_v std::string_view ExitGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Closes the bot's application process. Syntax: exit"); + static constexpr std::string_view defaultHelp = "Closes the bot's application process. Syntax: exit"sv; return defaultHelp; } @@ -324,8 +320,8 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(ExitGenericCommand) IRCConnectGenericCommand::IRCConnectGenericCommand() { - this->addTrigger("IRCConnect"_jrs); - this->addTrigger("IRCReconnect"_jrs); + this->addTrigger("IRCConnect"sv); + this->addTrigger("IRCReconnect"sv); } Jupiter::GenericCommand::ResponseLine *IRCConnectGenericCommand::trigger(std::string_view parameters) @@ -338,25 +334,25 @@ Jupiter::GenericCommand::ResponseLine *IRCConnectGenericCommand::trigger(std::st else if (IRCCommand::active_server != nullptr) server = IRCCommand::active_server; else - return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."sv, GenericCommand::DisplayType::PublicError); - server->disconnect("Connect command used; reconnecting..."_jrs, false); - return new Jupiter::GenericCommand::ResponseLine("Disconnected from IRC server."_jrs, GenericCommand::DisplayType::PublicSuccess); + server->disconnect("Connect command used; reconnecting..."sv, false); + return new Jupiter::GenericCommand::ResponseLine("Disconnected from IRC server."sv, GenericCommand::DisplayType::PublicSuccess); } IRC_Bot *server = serverManager->getServer(parameters); if (server != nullptr) { - server->disconnect("Connect command used; reconnecting..."_jrs, false); - return new Jupiter::GenericCommand::ResponseLine("Disconnected from IRC server."_jrs, GenericCommand::DisplayType::PublicSuccess); + server->disconnect("Connect command used; reconnecting..."sv, false); + return new Jupiter::GenericCommand::ResponseLine("Disconnected from IRC server."sv, GenericCommand::DisplayType::PublicSuccess); } if (serverManager->addServer(parameters)) - return new Jupiter::GenericCommand::ResponseLine("Connection successfully established; server added to server list."_jrs, GenericCommand::DisplayType::PublicSuccess); - return new Jupiter::GenericCommand::ResponseLine("Error: Unable to find configuration settings for server, or connection refused."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Connection successfully established; server added to server list."sv, GenericCommand::DisplayType::PublicSuccess); + return new Jupiter::GenericCommand::ResponseLine("Error: Unable to find configuration settings for server, or connection refused."sv, GenericCommand::DisplayType::PublicError); } std::string_view IRCConnectGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Connects/reconnects to an IRC server, based on config entry. Syntax: IRCConnect [server=here]"); + static constexpr std::string_view defaultHelp = "Connects/reconnects to an IRC server, based on config entry. Syntax: IRCConnect [server=here]"sv; return defaultHelp; } @@ -367,7 +363,7 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(IRCConnectGenericCommand) IRCDisconnectGenericCommand::IRCDisconnectGenericCommand() { - this->addTrigger("IRCDisconnect"_jrs); + this->addTrigger("IRCDisconnect"sv); } Jupiter::GenericCommand::ResponseLine *IRCDisconnectGenericCommand::trigger(std::string_view parameters) @@ -378,15 +374,15 @@ Jupiter::GenericCommand::ResponseLine *IRCDisconnectGenericCommand::trigger(std: else if (IRCCommand::active_server != nullptr) server = IRCCommand::active_server; else - return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: No IRC server is currently selected."sv, GenericCommand::DisplayType::PublicError); - server->disconnect("Disconnect command used."_jrs, true); - return new Jupiter::GenericCommand::ResponseLine("Disconnected from server."_jrs, GenericCommand::DisplayType::PublicSuccess); + server->disconnect("Disconnect command used."sv, true); + return new Jupiter::GenericCommand::ResponseLine("Disconnected from server."sv, GenericCommand::DisplayType::PublicSuccess); } std::string_view IRCDisconnectGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Disconnects from an IRC server, based on config entry. Syntax: IRCDisconnect"); + static constexpr std::string_view defaultHelp = "Disconnects from an IRC server, based on config entry. Syntax: IRCDisconnect"sv; return defaultHelp; } diff --git a/src/Plugins/FunCommands/FunCommands.cpp b/src/Plugins/FunCommands/FunCommands.cpp index 7ef0efb..c2c2e1d 100644 --- a/src/Plugins/FunCommands/FunCommands.cpp +++ b/src/Plugins/FunCommands/FunCommands.cpp @@ -24,121 +24,122 @@ #include "FunCommands.h" #include "IRC_Bot.h" -using namespace Jupiter::literals; using namespace std::literals; // 8ball void EightBallIRCCommand::create() { - this->addTrigger("8ball"_jrs); - this->addTrigger("8balls"_jrs); - this->addTrigger("eightBall"_jrs); + this->addTrigger("8ball"sv); + this->addTrigger("8balls"sv); + this->addTrigger("eightBall"sv); } void EightBallIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { - Jupiter::StringS msg; + std::string msg; switch (rand() % 31) { case 0: - msg.set("No."_jrs); + msg = "No."sv; break; case 1: - msg.set("Yes."_jrs); + msg = "Yes."sv; break; case 2: - msg.set("Maybe."_jrs); + msg = "Maybe."sv; break; case 3: - msg.set("Seven."_jrs); + msg = "Seven."sv; break; case 4: - msg.set("Consider counseling."_jrs); + msg = "Consider counseling."sv; break; case 5: - msg.set("Look into a realationship. A real one."_jrs); + msg = "Look into a realationship. A real one."sv; break; case 6: - msg.set("Quit asking me these deep questions, before I get deeply into you."_jrs); + msg = "Quit asking me these deep questions, before I get deeply into you."sv; break; case 7: - msg.set("Fuck you."_jrs); + msg = "Fuck you."sv; break; case 8: - msg.set("Fuck me."_jrs); + msg = "Fuck me."sv; break; case 9: - msg.set("Good thing I bend that way!"_jrs); + msg = "Good thing I bend that way!"sv; break; case 10: - msg = "Hai "s + nick + "!"; + msg = jessilib::join("Hai "sv, nick, "!"sv); break; case 11: - msg = "Let's ban "s + nick + "!"; + msg = jessilib::join("Let's ban "sv, nick, "!"sv); break; case 12: - msg.set("Fuck your lineage."_jrs); + msg = "Fuck your lineage."sv; break; case 13: - if (channel == "#Jail"sv) - msg.set("Ask me those kind of questions in #Politics"_jrs); - else - msg.set("Ask me those kind of questions in #Jail"_jrs); + if (channel == "#Jail"sv) { + msg = "Ask me those kind of questions in #Politics"sv; + } + else { + msg = "Ask me those kind of questions in #Jail"sv; + } break; case 14: - msg.set("I don't talk to slut-mongers."_jrs); + msg = "I don't talk to slut-mongers."sv; break; case 15: - msg.set("I only talk to slut-mongers."_jrs); + msg = "I only talk to slut-mongers."sv; break; case 16: - msg.set("Nuclear launch detected."_jrs); + msg = "Nuclear launch detected."sv; break; case 17: - msg.set("404 - Not found."_jrs); + msg = "404 - Not found."sv; break; case 18: - msg.set("I hurr u liek mudkipz?"_jrs); + msg = "I hurr u liek mudkipz?"sv; break; case 19: - msg.set("Fortune might be in your favor."_jrs); + msg = "Fortune might be in your favor."sv; break; case 20: - msg.set("Fortune might not be in your favor."_jrs); + msg = "Fortune might not be in your favor."sv; break; case 21: - msg.set("Based on the tragectory of James Bond (9007) in relationship to the 9th circle of hell located on the 3rd planet of Sol, you're going to hell."_jrs); + msg = "Based on the tragectory of James Bond (9007) in relationship to the 9th circle of hell located on the 3rd planet of Sol, you're going to hell."sv; break; case 22: - msg.set("Based on the tragectory of James Bond (9007) in relationship to the 9th circle of hell located on the 3rd planet of Sol, yes!"_jrs); + msg = "Based on the tragectory of James Bond (9007) in relationship to the 9th circle of hell located on the 3rd planet of Sol, yes!"sv; break; case 23: - msg.set("Based on the tragectory of James Bond (9007) in relationship to the 9th circle of hell located on the 3rd planet of Sol, it's approximately as likely as getting a \"yes\" from me."_jrs); + msg = "Based on the tragectory of James Bond (9007) in relationship to the 9th circle of hell located on the 3rd planet of Sol, it's approximately as likely as getting a \"yes\" from me."sv; break; case 24: - msg.set("Fucking campers."_jrs); + msg = "Fucking campers."sv; break; case 25: - msg.set("The 8ball seems to be stuck. Try again later. (Dang, you can't even get an 8ball to work for you? That's pretty sad yo)"_jrs); + msg = "The 8ball seems to be stuck. Try again later. (Dang, you can't even get an 8ball to work for you? That's pretty sad yo)"sv; break; case 26: - msg.set("The 8ball says... Go away? Wow, it really must not like you. Go away."_jrs); + msg = "The 8ball says... Go away? Wow, it really must not like you. Go away."sv; break; case 27: - msg.set("Swag"_jrs); + msg = "Swag"sv; break; case 28: - msg.set("Based on the orbit and trajectory of the 33rd moon of the planet assinine 6, no."_jrs); + msg = "Based on the orbit and trajectory of the 33rd moon of the planet assinine 6, no."sv; break; case 29: - msg.set("Based on the orbin and trajectory of the moon assinsix 9, yes!"_jrs); + msg = "Based on the orbin and trajectory of the moon assinsix 9, yes!"sv; break; case 30: - msg.set("Come visit me on the 5th planet away from Sol, and I'll give you whatever you want."_jrs); + msg = "Come visit me on the 5th planet away from Sol, and I'll give you whatever you want."sv; break; default: - msg.set("Nothingness. You suck. Go rot."_jrs); + msg = "Nothingness. You suck. Go rot."sv; break; } source->sendMessage(channel, msg); @@ -146,7 +147,7 @@ void EightBallIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std std::string_view EightBallIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Accurately answers your question 60% of the time, EVERY time. Syntax: 8ball [question]"); + static constexpr std::string_view defaultHelp = "Accurately answers your question 60% of the time, EVERY time. Syntax: 8ball [question]"sv; return defaultHelp; } @@ -156,43 +157,43 @@ IRC_COMMAND_INIT(EightBallIRCCommand) ResolveGenericCommand::ResolveGenericCommand() { - this->addTrigger("resolve"_jrs); + this->addTrigger("resolve"sv); } Jupiter::GenericCommand::ResponseLine *ResolveGenericCommand::trigger(std::string_view parameters) { auto command_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); if (command_split.second.empty()) { - return new Jupiter::GenericCommand::ResponseLine("Error: Too few parameters. Syntax: resolve
"_jrs, GenericCommand::DisplayType::PrivateError); + return new Jupiter::GenericCommand::ResponseLine("Error: Too few parameters. Syntax: resolve
"sv, GenericCommand::DisplayType::PrivateError); } std::string_view subcommand = command_split.first; if (jessilib::equalsi(subcommand, "hostname"sv) || jessilib::equalsi(subcommand, "host"sv)) { - Jupiter::ReferenceString resolved = Jupiter::Socket::resolveHostname(static_cast(command_split.second).c_str(), 0); + std::string_view resolved = Jupiter::Socket::resolveHostname(static_cast(command_split.second).c_str(), 0); if (resolved.empty()) - return new Jupiter::GenericCommand::ResponseLine("Error: Unable to resolve."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: Unable to resolve."sv, GenericCommand::DisplayType::PublicError); return new Jupiter::GenericCommand::ResponseLine(resolved, GenericCommand::DisplayType::PublicSuccess); } else if (jessilib::equalsi(subcommand, "ip"sv)) { - Jupiter::ReferenceString resolved = Jupiter::Socket::resolveAddress(static_cast(command_split.second).c_str(), 0); + std::string_view resolved = Jupiter::Socket::resolveAddress(static_cast(command_split.second).c_str(), 0); if (resolved.empty()) - return new Jupiter::GenericCommand::ResponseLine("Error: Unable to resolve."_jrs, GenericCommand::DisplayType::PublicError); + return new Jupiter::GenericCommand::ResponseLine("Error: Unable to resolve."sv, GenericCommand::DisplayType::PublicError); return new Jupiter::GenericCommand::ResponseLine(resolved, GenericCommand::DisplayType::PublicSuccess); } - return new Jupiter::GenericCommand::ResponseLine("Error: Invalid type. You can only resolve hostnames and IP addresses."_jrs, GenericCommand::DisplayType::PrivateError); + return new Jupiter::GenericCommand::ResponseLine("Error: Invalid type. You can only resolve hostnames and IP addresses."sv, GenericCommand::DisplayType::PrivateError); } std::string_view ResolveGenericCommand::getHelp(std::string_view parameters) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Resolves an IP address or hostname. Syntax: resolve
"); - static STRING_LITERAL_AS_NAMED_REFERENCE(hostHelp, "Resolves a hostname to an IP address. Syntax: resolve hostname
"); - static STRING_LITERAL_AS_NAMED_REFERENCE(ipHelp, "Reverse-resolves an IP address to a hostname. Syntax: resolve ip
"); + static constexpr std::string_view defaultHelp = "Resolves an IP address or hostname. Syntax: resolve
"sv; + static constexpr std::string_view hostHelp = "Resolves a hostname to an IP address. Syntax: resolve hostname
"sv; + static constexpr std::string_view ipHelp = "Reverse-resolves an IP address to a hostname. Syntax: resolve ip
"sv; - if (jessilib::equalsi(parameters, "hostname"_jrs) || jessilib::equalsi(parameters, "host"_jrs)) + if (jessilib::equalsi(parameters, "hostname"sv) || jessilib::equalsi(parameters, "host"sv)) return hostHelp; - if (jessilib::equalsi(parameters, "ip"_jrs)) + if (jessilib::equalsi(parameters, "ip"sv)) return ipHelp; return defaultHelp; diff --git a/src/Plugins/HTTPServer/HTTPServer.cpp b/src/Plugins/HTTPServer/HTTPServer.cpp index 8c60cda..45f2610 100644 --- a/src/Plugins/HTTPServer/HTTPServer.cpp +++ b/src/Plugins/HTTPServer/HTTPServer.cpp @@ -18,32 +18,27 @@ #include "HTTPServer.h" -using namespace Jupiter::literals; using namespace std::literals; bool HTTPServerPlugin::initialize() { - return HTTPServerPlugin::server.bind(this->config.get("BindAddress"_jrs, "0.0.0.0"sv), this->config.get("BindPort"_jrs, 80)); + return HTTPServerPlugin::server.bind(this->config.get("BindAddress"sv, "0.0.0.0"sv), this->config.get("BindPort"sv, 80)); } -int HTTPServerPlugin::think() -{ +int HTTPServerPlugin::think() { return HTTPServerPlugin::server.think(); } // Plugin instantiation and entry point. HTTPServerPlugin pluginInstance; -HTTPServerPlugin &getHTTPServerPlugin() -{ +HTTPServerPlugin &getHTTPServerPlugin() { return pluginInstance; } -Jupiter::HTTP::Server &getHTTPServer() -{ +Jupiter::HTTP::Server &getHTTPServer() { return pluginInstance.server; } -extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() -{ +extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() { return &pluginInstance; } diff --git a/src/Plugins/HTTPServer/HTTPServer.h b/src/Plugins/HTTPServer/HTTPServer.h index 8b38778..63fb5aa 100644 --- a/src/Plugins/HTTPServer/HTTPServer.h +++ b/src/Plugins/HTTPServer/HTTPServer.h @@ -25,8 +25,6 @@ */ #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" -#include "Jupiter/String.hpp" #include "Jupiter/HTTP_Server.h" #include "Jupiter_Bot.h" diff --git a/src/Plugins/IRC.Core/IRC_Core.cpp b/src/Plugins/IRC.Core/IRC_Core.cpp index eeac797..9953848 100644 --- a/src/Plugins/IRC.Core/IRC_Core.cpp +++ b/src/Plugins/IRC.Core/IRC_Core.cpp @@ -18,11 +18,12 @@ #include "jessilib/word_split.hpp" #include "Jupiter/GenericCommand.h" +#include "Jupiter/Functions.h" #include "ServerManager.h" #include "IRC_Command.h" #include "IRC_Core.h" -using namespace Jupiter::literals; +using namespace std::literals; IRCCorePlugin::~IRCCorePlugin() { // Destroy all IRC connections on plugin unload @@ -33,7 +34,7 @@ IRCCorePlugin::~IRCCorePlugin() { bool IRCCorePlugin::initialize() { // TODO: initialize() isn't bringing in generic commands from already-loaded plugins - std::string_view serverList = this->config.get("Servers"_jrs); + std::string_view serverList = this->config.get("Servers"sv); if (!serverList.empty()) { serverManager->setConfig(this->config); diff --git a/src/Plugins/IRC.Core/IRC_Core.h b/src/Plugins/IRC.Core/IRC_Core.h index 167d625..bfb62c2 100644 --- a/src/Plugins/IRC.Core/IRC_Core.h +++ b/src/Plugins/IRC.Core/IRC_Core.h @@ -20,7 +20,6 @@ #define _IRC_CORE_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" class IRCCorePlugin : public Jupiter::Plugin { diff --git a/src/Plugins/Plugin.Example/Example.cpp b/src/Plugins/Plugin.Example/Example.cpp index a8d7b88..be3beb0 100644 --- a/src/Plugins/Plugin.Example/Example.cpp +++ b/src/Plugins/Plugin.Example/Example.cpp @@ -9,28 +9,27 @@ #include "Example.h" #include "IRC_Bot.h" -using namespace Jupiter::literals; void ExamplePlugin::OnConnect(Jupiter::IRC::Client *server) { - server->sendNotice("Agent"_jrs, "Honey, I'm home!"_jrs); + server->sendNotice("Agent"sv, "Honey, I'm home!"sv); } // Example IRC Command Implementation void ExampleIRCCommand::create() { - this->addTrigger("example"_jrs); + this->addTrigger("example"sv); } void ExampleIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { - source->sendMessage(channel, "This is an example command!"_jrs); + source->sendMessage(channel, "This is an example command!"sv); } std::string_view ExampleIRCCommand::getHelp(std::string_view ) { - static auto helpmsg = "This is just an example command. It takes no parameters!"_jrs; + static auto helpmsg = "This is just an example command. It takes no parameters!"sv; return helpmsg; } diff --git a/src/Plugins/Plugin.Template/Example.h b/src/Plugins/Plugin.Template/Example.h index 4cdc879..a7bf86d 100644 --- a/src/Plugins/Plugin.Template/Example.h +++ b/src/Plugins/Plugin.Template/Example.h @@ -10,7 +10,6 @@ #define _EXAMPLE_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" class TPlugin : public Jupiter::Plugin { diff --git a/src/Plugins/PluginManager/PluginManager.cpp b/src/Plugins/PluginManager/PluginManager.cpp index 246ff9f..8f0d776 100644 --- a/src/Plugins/PluginManager/PluginManager.cpp +++ b/src/Plugins/PluginManager/PluginManager.cpp @@ -23,15 +23,14 @@ #include "jessilib/unicode.hpp" #include "PluginManager.h" -using namespace Jupiter::literals; using namespace std::literals; // Plugin Generic Command PluginGenericCommand::PluginGenericCommand() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("plugin")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("plugins")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("module")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("modules")); + this->addTrigger("plugin"sv); + this->addTrigger("plugins"sv); + this->addTrigger("module"sv); + this->addTrigger("modules"sv); } Jupiter::GenericCommand::ResponseLine *PluginGenericCommand::trigger(std::string_view parameters) { @@ -61,23 +60,23 @@ Jupiter::GenericCommand::ResponseLine *PluginGenericCommand::trigger(std::string auto split_params = jessilib::word_split_once_view(parameters_view, WHITESPACE_SV); if (jessilib::starts_withi(parameters_view, "load "sv)) { if (Jupiter::Plugin::load(split_params.second) == nullptr) { - return result->set("Error: Failed to load plugin."_jrs, GenericCommand::DisplayType::PublicError); + return result->set("Error: Failed to load plugin."sv, GenericCommand::DisplayType::PublicError); } - return result->set("Plugin successfully loaded."_jrs, GenericCommand::DisplayType::PublicSuccess); + return result->set("Plugin successfully loaded."sv, GenericCommand::DisplayType::PublicSuccess); } if (jessilib::starts_withi(parameters_view, "unload "sv)) { auto plugin = find_plugin(split_params.second); if (plugin == nullptr) { - return result->set("Error: Plugin does not exist."_jrs, GenericCommand::DisplayType::PublicError); + return result->set("Error: Plugin does not exist."sv, GenericCommand::DisplayType::PublicError); } if (!Jupiter::Plugin::free(plugin)) { - return result->set("Error: Failed to unload plugin."_jrs, GenericCommand::DisplayType::PublicError); + return result->set("Error: Failed to unload plugin."sv, GenericCommand::DisplayType::PublicError); } - return result->set("Plugin successfully unloaded."_jrs, GenericCommand::DisplayType::PublicSuccess); + return result->set("Plugin successfully unloaded."sv, GenericCommand::DisplayType::PublicSuccess); } if (jessilib::starts_withi(parameters_view, "reload"sv)) { @@ -88,45 +87,45 @@ Jupiter::GenericCommand::ResponseLine *PluginGenericCommand::trigger(std::string Jupiter::reinitialize_plugins(); }, true); - return result->set("Triggering full plugin reload..."_jrs, GenericCommand::DisplayType::PublicSuccess); + return result->set("Triggering full plugin reload..."sv, GenericCommand::DisplayType::PublicSuccess); } else { // A specific plugin auto plugin = find_plugin(split_params.second); if (plugin == nullptr) { - return result->set("Error: Plugin does not exist."_jrs, GenericCommand::DisplayType::PublicError); + return result->set("Error: Plugin does not exist."sv, GenericCommand::DisplayType::PublicError); } std::string_view plugin_name = plugin->getName(); if (!Jupiter::Plugin::free(plugin)) { - return result->set("Error: Failed to unload plugin."_jrs, GenericCommand::DisplayType::PublicError); + return result->set("Error: Failed to unload plugin."sv, GenericCommand::DisplayType::PublicError); } if (Jupiter::Plugin::load(plugin_name) == nullptr) { - return result->set("Error: Failed to load plugin."_jrs, GenericCommand::DisplayType::PublicError); + return result->set("Error: Failed to load plugin."sv, GenericCommand::DisplayType::PublicError); } - return result->set("Plugin successfully reloaded."_jrs, GenericCommand::DisplayType::PublicSuccess); + return result->set("Plugin successfully reloaded."sv, GenericCommand::DisplayType::PublicSuccess); } } - return result->set("Error: Invalid Syntax. Syntax: plugin {[list], , , [all|plugin]}"_jrs, GenericCommand::DisplayType::PrivateError); + return result->set("Error: Invalid Syntax. Syntax: plugin {[list], , , [all|plugin]}"sv, GenericCommand::DisplayType::PrivateError); } std::string_view PluginGenericCommand::getHelp(std::string_view parameters) { - static STRING_LITERAL_AS_NAMED_REFERENCE(loadHelp, "Loads a plugin by file name. Do not include a file extension. Syntax: plugin load "); - static STRING_LITERAL_AS_NAMED_REFERENCE(unloadHelp, "Unloads a plugin by name. Syntax: plugin unload "); - static STRING_LITERAL_AS_NAMED_REFERENCE(listHelp, "Lists all of the plugins currently loaded. Syntax: plugin [list]"); - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Manages plugins. Syntax: plugin {[list], , , [plugin]}"); + static constexpr std::string_view loadHelp = "Loads a plugin by file name. Do not include a file extension. Syntax: plugin load "sv; + static constexpr std::string_view unloadHelp = "Unloads a plugin by name. Syntax: plugin unload "sv; + static constexpr std::string_view listHelp = "Lists all of the plugins currently loaded. Syntax: plugin [list]"sv; + static constexpr std::string_view defaultHelp = "Manages plugins. Syntax: plugin {[list], , , [plugin]}"sv; - if (jessilib::equalsi(parameters, STRING_LITERAL_AS_REFERENCE("load"))) { + if (jessilib::equalsi(parameters, "load"sv)) { return loadHelp; } - if (jessilib::equalsi(parameters, STRING_LITERAL_AS_REFERENCE("unload"))) { + if (jessilib::equalsi(parameters, "unload"sv)) { return unloadHelp; } - if (jessilib::equalsi(parameters, STRING_LITERAL_AS_REFERENCE("list"))) { + if (jessilib::equalsi(parameters, "list"sv)) { return listHelp; } diff --git a/src/Plugins/RenX/RenX.AlwaysRecord/RenX_AlwaysRecord.cpp b/src/Plugins/RenX/RenX.AlwaysRecord/RenX_AlwaysRecord.cpp index b07e8a5..aebd9c8 100644 --- a/src/Plugins/RenX/RenX.AlwaysRecord/RenX_AlwaysRecord.cpp +++ b/src/Plugins/RenX/RenX.AlwaysRecord/RenX_AlwaysRecord.cpp @@ -19,11 +19,10 @@ #include "RenX_Server.h" #include "RenX_AlwaysRecord.h" -using namespace Jupiter::literals; +using namespace std::literals; -void RenX_AlwaysRecord::RenX_OnMapStart(RenX::Server &server, std::string_view ) -{ - server.send("demorec"_jrs); +void RenX_AlwaysRecord::RenX_OnMapStart(RenX::Server &server, std::string_view ) { + server.send("demorec"sv); } // Plugin instantiation and entry point. diff --git a/src/Plugins/RenX/RenX.AlwaysRecord/RenX_AlwaysRecord.h b/src/Plugins/RenX/RenX.AlwaysRecord/RenX_AlwaysRecord.h index b4a2e91..c5af750 100644 --- a/src/Plugins/RenX/RenX.AlwaysRecord/RenX_AlwaysRecord.h +++ b/src/Plugins/RenX/RenX.AlwaysRecord/RenX_AlwaysRecord.h @@ -20,7 +20,6 @@ #define _RENX_ALWAYSRECORD_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_AlwaysRecord : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.cpp b/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.cpp index 7e6ddfb..ef585a8 100644 --- a/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.cpp +++ b/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.cpp @@ -22,7 +22,6 @@ #include "RenX_Server.h" #include "RenX_Tags.h" -using namespace Jupiter::literals; using namespace std::literals; RenX_AnnouncementsPlugin pluginInstance; @@ -83,7 +82,7 @@ bool RenX_AnnouncementsPlugin::initialize() fputs("[RenX.Announcements] ERROR: No announcements loaded." ENDL, stderr); return false; } - std::chrono::milliseconds delay = std::chrono::seconds(this->config.get("Delay"_jrs, 60)); + std::chrono::milliseconds delay = std::chrono::seconds(this->config.get("Delay"sv, 60)); RenX_AnnouncementsPlugin::timer = new Jupiter::Timer(0, delay, announce_); if (RenX_AnnouncementsPlugin::random == false) RenX_AnnouncementsPlugin::lastLine = RenX_AnnouncementsPlugin::announcementsFile.getLineCount() - 1; diff --git a/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.h b/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.h index 1406af8..658c6e8 100644 --- a/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.h +++ b/src/Plugins/RenX/RenX.Announcements/RenX_Announcements.h @@ -22,8 +22,6 @@ #include "Jupiter/Plugin.h" #include "Jupiter/Timer.h" #include "Jupiter/File.h" -#include "Jupiter/String.hpp" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_AnnouncementsPlugin : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.ChatLogging/RenX_ChatLogging.h b/src/Plugins/RenX/RenX.ChatLogging/RenX_ChatLogging.h index b306255..7a2fefd 100644 --- a/src/Plugins/RenX/RenX.ChatLogging/RenX_ChatLogging.h +++ b/src/Plugins/RenX/RenX.ChatLogging/RenX_ChatLogging.h @@ -10,7 +10,6 @@ #define _RENX_CHATLOG_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_ChatLogPlugin : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.cpp b/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.cpp index b8aa9f3..93e8c03 100644 --- a/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.cpp +++ b/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.cpp @@ -9,16 +9,16 @@ #include #include #include +#include "jessilib/unicode.hpp" #include "RenX_CommandLogging.h" #include "RenX_GameCommand.h" #include "RenX_PlayerInfo.h" #include "RenX_Server.h" #include "RenX_Functions.h" -using namespace Jupiter::literals; +using namespace std::literals; -void RenX_CommandLoggingPlugin::PrepFile() -{ +void RenX_CommandLoggingPlugin::PrepFile() { // Check if date changed (Format: YYYY-MM-DD) std::string current_date = getTimeFormat("%F"); std::string full_date = getTimeFormat("%c"); @@ -44,39 +44,30 @@ void RenX_CommandLoggingPlugin::PrepFile() << std::endl; } -bool RenX_CommandLoggingPlugin::initialize() -{ - RenX_CommandLoggingPlugin::min_access = this->config.get("MinPlayerLevelToLog"_jrs, 1); - RenX_CommandLoggingPlugin::min_cmd_access = this->config.get("MinCommandLevelToLog"_jrs, 1); +bool RenX_CommandLoggingPlugin::initialize() { + RenX_CommandLoggingPlugin::min_access = this->config.get("MinPlayerLevelToLog"sv, 1); + RenX_CommandLoggingPlugin::min_cmd_access = this->config.get("MinCommandLevelToLog"sv, 1); PrepFile(); return fs.is_open(); } -RenX_CommandLoggingPlugin::~RenX_CommandLoggingPlugin() -{ +RenX_CommandLoggingPlugin::~RenX_CommandLoggingPlugin() { if (fs.is_open()) { fs.close(); } } -void RenX_CommandLoggingPlugin::RenX_OnCommandTriggered(RenX::Server& server, std::string_view trigger, RenX::PlayerInfo& player, std::string_view parameters, RenX::GameCommand& command) -{ +void RenX_CommandLoggingPlugin::RenX_OnCommandTriggered(RenX::Server& server, std::string_view trigger, RenX::PlayerInfo& player, std::string_view parameters, RenX::GameCommand& command) { if (player.access < min_access || command.getAccessLevel() < min_cmd_access) { return; } - WriteToLog(server, player, static_cast(trigger) + " " + parameters); + WriteToLog(server, player, jessilib::join(trigger, " "sv, parameters)); } -std::ostream& operator<<(std::ostream& in_stream, std::string_view in_string) { - in_stream.write(in_string.data(), in_string.size()); - return in_stream; -} - -void RenX_CommandLoggingPlugin::WriteToLog(RenX::Server& server, const RenX::PlayerInfo& player, std::string_view message) -{ +void RenX_CommandLoggingPlugin::WriteToLog(RenX::Server& server, const RenX::PlayerInfo& player, std::string_view message) { // Check if new file needs to be opened PrepFile(); diff --git a/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.h b/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.h index 91936b2..d8dcddb 100644 --- a/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.h +++ b/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.h @@ -10,7 +10,6 @@ #define _RENX_CMDLOGGING_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_CommandLoggingPlugin : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp b/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp index 38c00be..71fec12 100644 --- a/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp +++ b/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp @@ -34,7 +34,6 @@ #include "RenX_ExemptionDatabase.h" #include "RenX_Tags.h" -using namespace Jupiter::literals; using namespace jessilib::literals; using namespace std::literals; @@ -46,11 +45,11 @@ bool togglePhasing(RenX::Server *server, bool newState) { } bool togglePhasing(RenX::Server *server) { - return togglePhasing(server, !server->varData[RxCommandsSection].get("phasing"_jrs, false)); + return togglePhasing(server, !server->varData[RxCommandsSection].get("phasing"sv, false)); } void onDie(RenX::Server &server, const RenX::PlayerInfo &player) { - if (player.isBot && server.varData[RxCommandsSection].get("phasing"_jrs, false)) { + if (player.isBot && server.varData[RxCommandsSection].get("phasing"sv, false)) { server.kickPlayer(player, ""sv); } } @@ -75,14 +74,14 @@ void RenX_CommandsPlugin::RenX_OnDie(RenX::Server &server, const RenX::PlayerInf } bool RenX_CommandsPlugin::initialize() { - auto default_tban_time = this->config.get("DefaultTBanTime"_jrs, "1d"_jrs); - auto max_tban_time = this->config.get("MaxTBanTime"_jrs, "1w"_jrs); + auto default_tban_time = this->config.get("DefaultTBanTime"sv, "1d"sv); + auto max_tban_time = this->config.get("MaxTBanTime"sv, "1w"sv); m_defaultTempBanTime = jessilib::duration_from_string(default_tban_time.data(), default_tban_time.data() + default_tban_time.size()).duration; m_maxTempBanTime = std::max(jessilib::duration_from_string(max_tban_time.data(), max_tban_time.data() + max_tban_time.size()).duration, m_defaultTempBanTime); - m_playerInfoFormat = this->config.get("PlayerInfoFormat"_jrs, IRCCOLOR "03[Player Info]" IRCCOLOR "{TCOLOR} " IRCBOLD "{RNAME}" IRCBOLD " - ID: {ID} - Team: " IRCBOLD "{TEAML}" IRCBOLD " - Vehicle Kills: {VEHICLEKILLS} - Building Kills {BUILDINGKILLS} - Kills {KILLS} - Deaths: {DEATHS} - KDR: {KDR} - Access: {ACCESS}"_jrs); - m_adminPlayerInfoFormat = this->config.get("AdminPlayerInfoFormat"_jrs, m_playerInfoFormat + " - IP: " IRCBOLD "{IP}" IRCBOLD " - HWID: " IRCBOLD "{HWID}" IRCBOLD " - RDNS: " IRCBOLD "{RDNS}" IRCBOLD " - Steam ID: " IRCBOLD "{STEAM}"); - m_buildingInfoFormat = this->config.get("BuildingInfoFormat"_jrs, ""s IRCCOLOR + RenX::tags->buildingTeamColorTag + RenX::tags->buildingNameTag + IRCCOLOR " - " IRCCOLOR "07"_jrs + RenX::tags->buildingHealthPercentageTag + "%"_jrs); - m_staffTitle = this->config.get("StaffTitle"_jrs, "Moderator"_jrs); + m_playerInfoFormat = this->config.get("PlayerInfoFormat"sv, IRCCOLOR "03[Player Info]" IRCCOLOR "{TCOLOR} " IRCBOLD "{RNAME}" IRCBOLD " - ID: {ID} - Team: " IRCBOLD "{TEAML}" IRCBOLD " - Vehicle Kills: {VEHICLEKILLS} - Building Kills {BUILDINGKILLS} - Kills {KILLS} - Deaths: {DEATHS} - KDR: {KDR} - Access: {ACCESS}"sv); + m_adminPlayerInfoFormat = this->config.get("AdminPlayerInfoFormat"sv, m_playerInfoFormat + " - IP: " IRCBOLD "{IP}" IRCBOLD " - HWID: " IRCBOLD "{HWID}" IRCBOLD " - RDNS: " IRCBOLD "{RDNS}" IRCBOLD " - Steam ID: " IRCBOLD "{STEAM}"); + m_buildingInfoFormat = this->config.get("BuildingInfoFormat"sv, jessilib::join(""sv IRCCOLOR, RenX::tags->buildingTeamColorTag, RenX::tags->buildingNameTag, ""sv IRCCOLOR, " - "sv, IRCCOLOR "07"sv, RenX::tags->buildingHealthPercentageTag, "%"sv)); + m_staffTitle = this->config.get("StaffTitle"sv, "Moderator"sv); RenX::sanitizeTags(m_playerInfoFormat); RenX::sanitizeTags(m_adminPlayerInfoFormat); @@ -127,8 +126,8 @@ RenX_CommandsPlugin pluginInstance; // RawRCON Console Command RawRCONConsoleCommand::RawRCONConsoleCommand() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rrcon")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rawrcon")); + this->addTrigger("rrcon"sv); + this->addTrigger("rawrcon"sv); } void RawRCONConsoleCommand::trigger(std::string_view parameters) { @@ -143,7 +142,7 @@ void RawRCONConsoleCommand::trigger(std::string_view parameters) { return; } - Jupiter::StringS msg = parameters; + std::string msg{ parameters }; msg += '\n'; for (const auto& server : servers) { server->sendData(msg); @@ -151,7 +150,7 @@ void RawRCONConsoleCommand::trigger(std::string_view parameters) { } std::string_view RawRCONConsoleCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends data over the Renegade X server's rcon connection. Syntax: rrcon "); + static constexpr std::string_view defaultHelp = "Sends data over the Renegade X server's rcon connection. Syntax: rrcon "sv; return defaultHelp; } @@ -160,8 +159,8 @@ CONSOLE_COMMAND_INIT(RawRCONConsoleCommand) // RCON Console Command RCONConsoleCommand::RCONConsoleCommand() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rcon")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("renx")); + this->addTrigger("rcon"sv); + this->addTrigger("renx"sv); } void RCONConsoleCommand::trigger(std::string_view parameters) { @@ -181,7 +180,7 @@ void RCONConsoleCommand::trigger(std::string_view parameters) { } std::string_view RCONConsoleCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Executes a command over the Renegade X server's rcon connection. Syntax: rcon "); + static constexpr std::string_view defaultHelp = "Executes a command over the Renegade X server's rcon connection. Syntax: rcon "sv; return defaultHelp; } @@ -193,8 +192,8 @@ CONSOLE_COMMAND_INIT(RCONConsoleCommand) void MsgIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("msg")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("say")); + this->addTrigger("msg"sv); + this->addTrigger("say"sv); } void MsgIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) @@ -202,7 +201,7 @@ void MsgIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri if (!parameters.empty()) { int type = source->getChannel(channel)->getType(); - Jupiter::StringL msg; + std::string msg; char prefix = source->getChannel(channel)->getUserPrefix(nick); if (prefix != '\0') msg += prefix; @@ -221,14 +220,14 @@ void MsgIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri } } if (prefix == '\0') - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: Msg ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: Msg "sv); } std::string_view MsgIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends a message in - game.Syntax: Msg "); + static constexpr std::string_view defaultHelp = "Sends a message in - game.Syntax: Msg "sv; return defaultHelp; } @@ -238,10 +237,10 @@ IRC_COMMAND_INIT(MsgIRCCommand) void PMsgIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pmsg")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("psay")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("page")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("ppage")); + this->addTrigger("pmsg"sv); + this->addTrigger("psay"sv); + this->addTrigger("page"sv); + this->addTrigger("ppage"sv); this->setAccessLevel(1); } @@ -251,7 +250,7 @@ void PMsgIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str { int type = source->getChannel(channel)->getType(); - Jupiter::ReferenceString name = command_split.first; + std::string_view name = command_split.first; RenX::PlayerInfo *player; std::string msg; char prefix = source->getChannel(channel)->getUserPrefix(nick); @@ -278,12 +277,12 @@ void PMsgIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str } } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: PMsg ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: PMsg "sv); } std::string_view PMsgIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends a message in - game.Syntax: PMsg "); + static constexpr std::string_view defaultHelp = "Sends a message in - game.Syntax: PMsg "sv; return defaultHelp; } @@ -293,9 +292,9 @@ IRC_COMMAND_INIT(PMsgIRCCommand) void HostMsgIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("hmsg")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("hsay")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("hostmessage")); + this->addTrigger("hmsg"sv); + this->addTrigger("hsay"sv); + this->addTrigger("hostmessage"sv); this->setAccessLevel(4); } @@ -313,14 +312,14 @@ void HostMsgIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: success = server->sendMessage(parameters) > 0; } if (!success) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: hmsg ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: hmsg "sv); } std::string_view HostMsgIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends a message in-game. Syntax: hmsg "); + static constexpr std::string_view defaultHelp = "Sends a message in-game. Syntax: hmsg "sv; return defaultHelp; } @@ -330,9 +329,9 @@ IRC_COMMAND_INIT(HostMsgIRCCommand) void AdminMsgIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("amsg")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("asay")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("adminmessage")); + this->addTrigger("amsg"sv); + this->addTrigger("asay"sv); + this->addTrigger("adminmessage"sv); this->setAccessLevel(4); } @@ -350,14 +349,14 @@ void AdminMsgIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: success = server->sendAdminMessage(parameters) > 0; } if (!success) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: amsg ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: amsg "sv); } std::string_view AdminMsgIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends an admin message in-game. Syntax: amsg "); + static constexpr std::string_view defaultHelp = "Sends an admin message in-game. Syntax: amsg "sv; return defaultHelp; } @@ -367,9 +366,9 @@ IRC_COMMAND_INIT(AdminMsgIRCCommand) void PAdminMsgIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pamsg")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pasay")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("apage")); + this->addTrigger("pamsg"sv); + this->addTrigger("pasay"sv); + this->addTrigger("apage"sv); this->setAccessLevel(4); } @@ -377,7 +376,7 @@ void PAdminMsgIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std auto command_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); if (!command_split.second.empty()) { int type = source->getChannel(channel)->getType(); - Jupiter::ReferenceString name = command_split.first; + std::string_view name = command_split.first; RenX::PlayerInfo *player; std::string msg; char prefix = source->getChannel(channel)->getUserPrefix(nick); @@ -401,12 +400,12 @@ void PAdminMsgIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std } } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: pamsg ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: pamsg "sv); } std::string_view PAdminMsgIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends an admin message to a player in-game. Syntax: pamsg "); + static constexpr std::string_view defaultHelp = "Sends an admin message to a player in-game. Syntax: pamsg "sv; return defaultHelp; } @@ -416,9 +415,9 @@ IRC_COMMAND_INIT(PAdminMsgIRCCommand) void PlayersIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("players")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pl")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("playerlist")); + this->addTrigger("players"sv); + this->addTrigger("pl"sv); + this->addTrigger("playerlist"sv); } const size_t STRING_LENGTH = 240; @@ -468,7 +467,7 @@ void PlayersIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: unsigned int oBots = 0; for (auto node = server->players.begin(); node != server->players.end(); ++node) { - Jupiter::String name = RenX::getFormattedPlayerName(*node); + std::string name = RenX::getFormattedPlayerName(*node); if (name.size() > STRING_LENGTH - 32) continue; // Name will be too long to send. switch (node->team) { @@ -564,16 +563,16 @@ void PlayersIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: source->sendMessage(channel, out); } else - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("No players are in-game.")); + source->sendMessage(channel, "No players are in-game."sv); } } if (noServers) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } std::string_view PlayersIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Lists the players currently in-game. Syntax: Players"); + static constexpr std::string_view defaultHelp = "Lists the players currently in-game. Syntax: Players"sv; return defaultHelp; } @@ -582,8 +581,8 @@ IRC_COMMAND_INIT(PlayersIRCCommand) // PlayerTable IRC Command void PlayerTableIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pt")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("playertable")); + this->addTrigger("pt"sv); + this->addTrigger("playertable"sv); } void PlayerTableIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view ) @@ -613,7 +612,6 @@ void PlayerTableIRCCommand::trigger(IRC_Bot *source, std::string_view channel, s std::forward_list nPlayers; std::forward_list oPlayers; - STRING_LITERAL_AS_NAMED_REFERENCE(NICK_COL_HEADER, "Nickname"); size_t maxNickLen = 8; int highID = 999; double highScore = 99999.0; @@ -664,9 +662,9 @@ void PlayerTableIRCCommand::trigger(IRC_Bot *source, std::string_view channel, s ++creditColLen; if (server->isAdminLogChanType(type)) - source->sendMessage(channel, string_printf(IRCUNDERLINE IRCCOLOR "03%*.*s | %*s | %*s | %*s | IP Address", maxNickLen, NICK_COL_HEADER.size(), NICK_COL_HEADER.data(), idColLen, "ID", scoreColLen, "Score", creditColLen, "Credits")); + source->sendMessage(channel, string_printf(IRCUNDERLINE IRCCOLOR "03%*s | %*s | %*s | %*s | IP Address", maxNickLen, "Nickname", idColLen, "ID", scoreColLen, "Score", creditColLen, "Credits")); else - source->sendMessage(channel, string_printf(IRCUNDERLINE IRCCOLOR "03%*.*s | %*s | %*s | %*s", maxNickLen, NICK_COL_HEADER.size(), NICK_COL_HEADER.data(), idColLen, "ID", scoreColLen, "Score", creditColLen, "Credits")); + source->sendMessage(channel, string_printf(IRCUNDERLINE IRCCOLOR "03%*s | %*s | %*s | %*s", maxNickLen, "Nickname", idColLen, "ID", scoreColLen, "Score", creditColLen, "Credits")); auto output_player = [server, type, source, &channel, maxNickLen, idColLen, scoreColLen, creditColLen](RenX::PlayerInfo *player, std::string_view color) { @@ -687,15 +685,15 @@ void PlayerTableIRCCommand::trigger(IRC_Bot *source, std::string_view channel, s for (auto node = oPlayers.begin(); node != oPlayers.end(); ++node) output_player(*node, oTeamColor); } - else source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("No players are in-game.")); + else source->sendMessage(channel, "No players are in-game."sv); } } if (noServers) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } std::string_view PlayerTableIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Generates a table of all the players in-game. Syntax: PT"); + static constexpr std::string_view defaultHelp = "Generates a table of all the players in-game. Syntax: PT"sv; return defaultHelp; } @@ -704,10 +702,10 @@ IRC_COMMAND_INIT(PlayerTableIRCCommand) // PlayerInfo IRC Command void PlayerInfoIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("playerinfo")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pi")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("player")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pinfo")); + this->addTrigger("playerinfo"sv); + this->addTrigger("pi"sv); + this->addTrigger("player"sv); + this->addTrigger("pinfo"sv); } void PlayerInfoIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { @@ -747,13 +745,13 @@ void PlayerInfoIRCCommand::trigger(IRC_Bot *source, std::string_view channel, st } if (msg.empty()) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } } std::string_view PlayerInfoIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Gets information about a player. Syntax: PlayerInfo [Player]"); + static constexpr std::string_view defaultHelp = "Gets information about a player. Syntax: PlayerInfo [Player]"sv; return defaultHelp; } @@ -762,10 +760,10 @@ IRC_COMMAND_INIT(PlayerInfoIRCCommand) // BuildingInfo IRC Command void BuildingInfoIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("binfo")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("bi")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("buildinginfo")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("building")); + this->addTrigger("binfo"sv); + this->addTrigger("bi"sv); + this->addTrigger("buildinginfo"sv); + this->addTrigger("building"sv); } void BuildingInfoIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { @@ -786,7 +784,7 @@ void BuildingInfoIRCCommand::trigger(IRC_Bot *source, std::string_view channel, foundServer = true; seenStrip = false; for (const auto& building : server->buildings){ - if (building->name.find("Rx_Building_Air"_jrs) == 0) { + if (building->name.find("Rx_Building_Air"sv) == 0) { if (seenStrip) { continue; } @@ -826,12 +824,12 @@ void BuildingInfoIRCCommand::trigger(IRC_Bot *source, std::string_view channel, } if (!foundServer) { - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } std::string_view BuildingInfoIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Provides a list of buildings, and the status of each one. Syntax: BuildingInfo"); + static constexpr std::string_view defaultHelp = "Provides a list of buildings, and the status of each one. Syntax: BuildingInfo"sv; return defaultHelp; } @@ -840,8 +838,8 @@ IRC_COMMAND_INIT(BuildingInfoIRCCommand) // Mutators IRC Command void MutatorsIRCCommand::create() { - this->addTrigger("mutators"_jrs); - this->addTrigger("mutator"_jrs); + this->addTrigger("mutators"sv); + this->addTrigger("mutator"sv); } void MutatorsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) @@ -850,20 +848,20 @@ void MutatorsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: if (chan != nullptr) { int type = chan->getType(); - Jupiter::String list; + std::string list; size_t index = 0; for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { RenX::Server *server = RenX::getCore()->getServer(i); if (server->isLogChanType(type)) { - list = STRING_LITERAL_AS_REFERENCE(IRCCOLOR "03[Mutators]" IRCNORMAL); + list = IRCCOLOR "03[Mutators]"s IRCNORMAL; for (const auto& mutator : server->mutators) { list += " "s + mutator; } if (server->mutators.empty()) { - source->sendMessage(channel, "No mutators loaded"_jrs); + source->sendMessage(channel, "No mutators loaded"sv); } else { source->sendMessage(channel, list); @@ -871,13 +869,13 @@ void MutatorsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: } } if (list.empty()) - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } std::string_view MutatorsIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Provides a list of mutators being used. Syntax: Mutators"); + static constexpr std::string_view defaultHelp = "Provides a list of mutators being used. Syntax: Mutators"sv; return defaultHelp; } @@ -887,24 +885,24 @@ IRC_COMMAND_INIT(MutatorsIRCCommand) void RotationIRCCommand::create() { - this->addTrigger("rotation"_jrs); - this->addTrigger("maprotation"_jrs); - this->addTrigger("maps"_jrs); - this->addTrigger("rot"_jrs); + this->addTrigger("rotation"sv); + this->addTrigger("maprotation"sv); + this->addTrigger("maps"sv); + this->addTrigger("rot"sv); } void RotationIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { Jupiter::IRC::Client::Channel *chan = source->getChannel(channel); if (chan != nullptr) { int type = chan->getType(); - Jupiter::String list; + std::string list; for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { RenX::Server *server = RenX::getCore()->getServer(i); if (server->isLogChanType(type)) { - list = STRING_LITERAL_AS_REFERENCE(IRCCOLOR "03[Rotation]" IRCNORMAL); + list = IRCCOLOR "03[Rotation]"s IRCNORMAL; for (const auto& map : server->maps) { if (jessilib::equalsi(server->getMap().name, map.name)) { - list += std::string(" " IRCBOLD "[") + map.name + STRING_LITERAL_AS_REFERENCE("]" IRCBOLD); + list += jessilib::join(" " IRCBOLD "["sv, map.name, "]"sv IRCBOLD); } else { list += " "s + map.name; @@ -912,7 +910,7 @@ void RotationIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: } if (server->maps.empty()) { - source->sendMessage(channel, "No maps in rotation"_jrs); + source->sendMessage(channel, "No maps in rotation"sv); } else { source->sendMessage(channel, list); @@ -920,13 +918,13 @@ void RotationIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: } } if (list.empty()) { - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } } std::string_view RotationIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Provides a list of maps in the server rotation. Syntax: Rotation"); + static constexpr std::string_view defaultHelp = "Provides a list of maps in the server rotation. Syntax: Rotation"sv; return defaultHelp; } @@ -935,7 +933,7 @@ IRC_COMMAND_INIT(RotationIRCCommand) // Map IRC Command void MapIRCCommand::create() { - this->addTrigger("map"_jrs); + this->addTrigger("map"sv); } void MapIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { @@ -947,18 +945,18 @@ void MapIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri if (server->isLogChanType(type)) { match = true; const RenX::Map &map = server->getMap(); - source->sendMessage(channel, "Current Map: "s + map.name + "; GUID: "_jrs + RenX::formatGUID(map)); + source->sendMessage(channel, jessilib::join("Current Map: "sv, map.name, "; GUID: "sv, RenX::formatGUID(map))); } } if (match == false) { - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } } std::string_view MapIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Fetches the current map. Syntax: Map"); + static constexpr std::string_view defaultHelp = "Fetches the current map. Syntax: Map"sv; return defaultHelp; } @@ -968,10 +966,10 @@ IRC_COMMAND_INIT(MapIRCCommand) void GameInfoIRCCommand::create() { - this->addTrigger("gameinfo"_jrs); - this->addTrigger("gi"_jrs); - this->addTrigger("serverinfo"_jrs); - this->addTrigger("si"_jrs); + this->addTrigger("gameinfo"sv); + this->addTrigger("gi"sv); + this->addTrigger("serverinfo"sv); + this->addTrigger("si"sv); } void GameInfoIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) @@ -990,19 +988,19 @@ void GameInfoIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: const RenX::Map &map = server->getMap(); std::chrono::seconds time = std::chrono::duration_cast(server->getGameTime()); source->sendMessage(channel, string_printf(IRCCOLOR "03[GameInfo] " IRCCOLOR "%.*s", server->getGameVersion().size(), server->getGameVersion().data())); - source->sendMessage(channel, IRCCOLOR "03[GameInfo] " IRCCOLOR "10Map" IRCCOLOR ": "s + map.name + "; " IRCCOLOR "10GUID" IRCCOLOR ": "_jrs + RenX::formatGUID(map)); + source->sendMessage(channel, jessilib::join(IRCCOLOR "03[GameInfo] " IRCCOLOR "10Map" IRCCOLOR ": "sv, map.name, "; " IRCCOLOR "10GUID" IRCCOLOR ": "sv, RenX::formatGUID(map))); source->sendMessage(channel, string_printf(IRCCOLOR "03[GameInfo] " IRCCOLOR "10Elapsed time" IRCCOLOR ": %.2lld:%.2lld:%.2lld", time.count() / 3600, (time.count() % 3600) / 60, time.count() % 60)); source->sendMessage(channel, string_printf(IRCCOLOR "03[GameInfo] " IRCCOLOR "There are " IRCCOLOR "10%d" IRCCOLOR " players online.", server->players.size())); } } if (match == false) - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } std::string_view GameInfoIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Returns information about the game in progress. Syntax: GameInfo"); + static constexpr std::string_view defaultHelp = "Returns information about the game in progress. Syntax: GameInfo"sv; return defaultHelp; } @@ -1012,7 +1010,7 @@ IRC_COMMAND_INIT(GameInfoIRCCommand) void SteamIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("steam")); + this->addTrigger("steam"sv); this->setAccessLevel(1); } @@ -1027,7 +1025,7 @@ void SteamIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st if (server->isLogChanType(type)) { for (auto node = server->players.begin(); node != server->players.end(); ++node) { if (jessilib::findi(node->name, parameters) != std::string::npos) { - Jupiter::String playerName = RenX::getFormattedPlayerName(*node); + std::string playerName = RenX::getFormattedPlayerName(*node); msg = string_printf(IRCCOLOR "03[Steam] " IRCCOLOR "%.*s (ID: %d) ", playerName.size(), playerName.data(), node->id); if (node->steamid != 0) { @@ -1044,7 +1042,7 @@ void SteamIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st } } if (msg.empty()) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } else { @@ -1070,7 +1068,7 @@ void SteamIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st if (realPlayers != 0) source->sendMessage(channel, string_printf("%.2f%% (%u/%u) of players are using Steam.", ((double)total * 100) / ((double)realPlayers), total, realPlayers)); else - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("No players are in-game.")); + source->sendMessage(channel, "No players are in-game."sv); } } } @@ -1079,7 +1077,7 @@ void SteamIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st std::string_view SteamIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Fetches steam usage information. Syntax: Steam [Player]"); + static constexpr std::string_view defaultHelp = "Fetches steam usage information. Syntax: Steam [Player]"sv; return defaultHelp; } @@ -1089,10 +1087,10 @@ IRC_COMMAND_INIT(SteamIRCCommand) void KillDeathRatioIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kills")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("deaths")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kdr")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("killdeathraio")); + this->addTrigger("kills"sv); + this->addTrigger("deaths"sv); + this->addTrigger("kdr"sv); + this->addTrigger("killdeathraio"sv); } void KillDeathRatioIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { @@ -1100,13 +1098,13 @@ void KillDeathRatioIRCCommand::trigger(IRC_Bot *source, std::string_view channel Jupiter::IRC::Client::Channel *chan = source->getChannel(channel); if (chan != nullptr) { int type = chan->getType(); - Jupiter::StringL msg; + std::string msg; for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { RenX::Server *server = RenX::getCore()->getServer(i); if (server->isLogChanType(type) && server->players.size() != 0) { for (auto node = server->players.begin(); node != server->players.end(); ++node) { if (jessilib::findi(node->name, parameters) != std::string::npos) { - Jupiter::String playerName = RenX::getFormattedPlayerName(*node); + std::string playerName = RenX::getFormattedPlayerName(*node); msg = string_printf(IRCBOLD "%.*s" IRCBOLD IRCCOLOR ": Kills: %u - Deaths: %u - KDR: %.2f", playerName.size(), playerName.data(), node->kills, node->deaths, static_cast(node->kills) / (node->deaths == 0 ? 1.0f : static_cast(node->deaths))); source->sendMessage(channel, msg); @@ -1115,15 +1113,15 @@ void KillDeathRatioIRCCommand::trigger(IRC_Bot *source, std::string_view channel } } if (msg.empty()) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: Kills ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: Kills "sv); } std::string_view KillDeathRatioIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Gets a player's kills and deaths. Syntax: Kills "); + static constexpr std::string_view defaultHelp = "Gets a player's kills and deaths. Syntax: Kills "sv; return defaultHelp; } @@ -1133,8 +1131,8 @@ IRC_COMMAND_INIT(KillDeathRatioIRCCommand) void ShowModsIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("showstaff")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("showmods")); + this->addTrigger("showstaff"sv); + this->addTrigger("showmods"sv); } extern ModsGameCommand ModsGameCommand_instance; @@ -1151,18 +1149,18 @@ void ShowModsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: RenX::Server *server = RenX::getCore()->getServer(i); if (server->isLogChanType(type)) { - ModsGameCommand_instance.trigger(server, nullptr, ""_jrs); + ModsGameCommand_instance.trigger(server, nullptr, ""sv); sent = true; } } if (sent == false) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } std::string_view ShowModsIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends a message, displaying in-game staff. Syntax: showstaff"); + static constexpr std::string_view defaultHelp = "Sends a message, displaying in-game staff. Syntax: showstaff"sv; return defaultHelp; } @@ -1172,8 +1170,8 @@ IRC_COMMAND_INIT(ShowModsIRCCommand) void ModsIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("staff")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("mods")); + this->addTrigger("staff"sv); + this->addTrigger("mods"sv); } void ModsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { @@ -1184,7 +1182,7 @@ void ModsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str Jupiter::IRC::Client::Channel *chan = source->getChannel(channel); if (chan != nullptr) { int type = chan->getType(); - Jupiter::StringL msg; + std::string msg; std::string_view staff_word = pluginInstance.getStaffTitle(); for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { RenX::Server *server = RenX::getCore()->getServer(i); @@ -1198,7 +1196,7 @@ void ModsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str } else { msg += staff_word; - msg += "s in-game: "_jrs; + msg += "s in-game: "sv; } msg += node->gamePrefix; msg += node->name; @@ -1206,14 +1204,14 @@ void ModsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str } } if (msg.empty()) { - msg = "No "s + staff_word + "s are in-game."_jrs; + msg = jessilib::join("No "sv, staff_word, "s are in-game."sv); } source->sendMessage(channel, msg); } } if (msg.empty()) { source->sendMessage(channel, - STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + "Error: Channel not attached to any connected Renegade X servers."sv); } } } @@ -1221,7 +1219,7 @@ void ModsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str std::string_view ModsIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends a message, displaying in-game staff. Syntax: staff [show]"); + static constexpr std::string_view defaultHelp = "Sends a message, displaying in-game staff. Syntax: staff [show]"sv; return defaultHelp; } @@ -1231,7 +1229,7 @@ IRC_COMMAND_INIT(ModsIRCCommand) void ShowRulesIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("showrules")); + this->addTrigger("showrules"sv); } void ShowRulesIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) @@ -1240,7 +1238,7 @@ void ShowRulesIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std if (chan != nullptr) { int type = chan->getType(); - Jupiter::StringL msg; + std::string msg; for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { RenX::Server *server = RenX::getCore()->getServer(i); @@ -1252,13 +1250,13 @@ void ShowRulesIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std } } if (msg.empty()) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } std::string_view ShowRulesIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends a message, displaying the in-game rules. Syntax: showrules"); + static constexpr std::string_view defaultHelp = "Sends a message, displaying the in-game rules. Syntax: showrules"sv; return defaultHelp; } @@ -1268,7 +1266,7 @@ IRC_COMMAND_INIT(ShowRulesIRCCommand) void RulesIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rules")); + this->addTrigger("rules"sv); } void RulesIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) @@ -1282,7 +1280,7 @@ void RulesIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st if (chan != nullptr) { int type = chan->getType(); - Jupiter::StringL msg; + std::string msg; for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { RenX::Server *server = RenX::getCore()->getServer(i); @@ -1294,14 +1292,14 @@ void RulesIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st } } if (msg.empty()) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } } std::string_view RulesIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays the in-game rules. Syntax: rules [show]"); + static constexpr std::string_view defaultHelp = "Displays the in-game rules. Syntax: rules [show]"sv; return defaultHelp; } @@ -1311,7 +1309,7 @@ IRC_COMMAND_INIT(RulesIRCCommand) void ReconnectIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("reconnect")); + this->addTrigger("reconnect"sv); this->setAccessLevel(3); } @@ -1319,18 +1317,22 @@ void ReconnectIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std Jupiter::IRC::Client::Channel *chan = source->getChannel(channel); if (chan != nullptr) { int type = chan->getType(); - Jupiter::StringS msg; + std::string msg; for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { RenX::Server *server = RenX::getCore()->getServer(i); if (server->isLogChanType(type)) { - if (server->reconnect(RenX::DisconnectReason::Triggered)) msg.set("Connection established"); - else msg = string_printf("[RenX] ERROR: Failed to connect to %.*s on port %u." ENDL, server->getHostname().size(), server->getHostname().c_str(), server->getPort()); + if (server->reconnect(RenX::DisconnectReason::Triggered)) { + msg = "Connection established"s; + } + else { + msg = string_printf("[RenX] ERROR: Failed to connect to %.*s on port %u." ENDL, server->getHostname().size(), server->getHostname().c_str(), server->getPort()); + } source->sendMessage(channel, msg); } } if (msg.empty()) { // We didn't connect anywhere!! - msg.set("ERROR: No servers found to connect to."); + msg = "ERROR: No servers found to connect to."s; source->sendMessage(channel, msg); } } @@ -1338,7 +1340,7 @@ void ReconnectIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std std::string_view ReconnectIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Resets the RCON connection. Syntax: Reconnect"); + static constexpr std::string_view defaultHelp = "Resets the RCON connection. Syntax: Reconnect"sv; return defaultHelp; } @@ -1348,8 +1350,8 @@ IRC_COMMAND_INIT(ReconnectIRCCommand) void GameOverIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("gameover")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("endmap")); + this->addTrigger("gameover"sv); + this->addTrigger("endmap"sv); this->setAccessLevel(3); } @@ -1368,21 +1370,21 @@ void GameOverIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: if (server->isLogChanType(type)) { match = true; - if (jessilib::equalsi(parameters, "empty"_jrs)) + if (jessilib::equalsi(parameters, "empty"sv)) server->gameoverWhenEmpty(); - else if (jessilib::equalsi(parameters, "if empty"_jrs)) + else if (jessilib::equalsi(parameters, "if empty"sv)) { if (server->players.size() == server->getBotCount()) server->gameover(); } - else if (jessilib::equalsi(parameters, "now"_jrs)) + else if (jessilib::equalsi(parameters, "now"sv)) server->gameover(); - else if (jessilib::equalsi(parameters, "stop"_jrs) || jessilib::equalsi(parameters, "cancel"_jrs)) + else if (jessilib::equalsi(parameters, "stop"sv) || jessilib::equalsi(parameters, "cancel"sv)) { if (server->gameoverStop()) - server->sendMessage("Notice: The scheduled gameover has been cancelled."_jrs); + server->sendMessage("Notice: The scheduled gameover has been cancelled."sv); else - source->sendNotice(nick, "Error: There is no gameover scheduled."_jrs); + source->sendNotice(nick, "Error: There is no gameover scheduled."sv); } else { @@ -1397,13 +1399,13 @@ void GameOverIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: } } if (match == false) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } std::string_view GameOverIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Forcefully ends the game in progress. Syntax: Gameover [NOW | STOP | [If] Empty | Seconds = 10]"); + static constexpr std::string_view defaultHelp = "Forcefully ends the game in progress. Syntax: Gameover [NOW | STOP | [If] Empty | Seconds = 10]"sv; return defaultHelp; } @@ -1413,7 +1415,7 @@ IRC_COMMAND_INIT(GameOverIRCCommand) void SetMapIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("setmap")); + this->addTrigger("setmap"sv); this->setAccessLevel(4); } @@ -1433,22 +1435,22 @@ void SetMapIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s { map_name = server->getMapName(parameters); if (map_name.empty()) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Map not in rotation.")); + source->sendMessage(channel, "Error: Map not in rotation."sv); else if (server->setMap(map_name) == false) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Transmission error.")); + source->sendMessage(channel, "Error: Transmission error."sv); } } if (map_name.empty()) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: setmap ")); + source->sendNotice(nick, "Error: Too few parameters. Syntax: setmap "sv); } std::string_view SetMapIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Ends the game immediately. Syntax: setmap "); + static constexpr std::string_view defaultHelp = "Ends the game immediately. Syntax: setmap "sv; return defaultHelp; } @@ -1458,7 +1460,7 @@ IRC_COMMAND_INIT(SetMapIRCCommand) void MuteIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("mute")); + this->addTrigger("mute"sv); this->setAccessLevel(2); } @@ -1482,22 +1484,22 @@ void MuteIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str if (player != nullptr) { server->mute(*player); - source->sendMessage(channel, RenX::getFormattedPlayerName(*player) + STRING_LITERAL_AS_REFERENCE(IRCCOLOR " has been muted.")); + source->sendMessage(channel, jessilib::join(RenX::getFormattedPlayerName(*player), IRCCOLOR " has been muted."sv)); } else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } if (match == false) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendNotice(nick, "Error: Channel not attached to any connected Renegade X servers."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: mute ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: mute "sv); } std::string_view MuteIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Mutes a player. Syntax: mute "); + static constexpr std::string_view defaultHelp = "Mutes a player. Syntax: mute "sv; return defaultHelp; } @@ -1507,7 +1509,7 @@ IRC_COMMAND_INIT(MuteIRCCommand) void UnMuteIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("unmute")); + this->addTrigger("unmute"sv); this->setAccessLevel(2); } @@ -1531,22 +1533,22 @@ void UnMuteIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s if (player != nullptr) { server->unmute(*player); - source->sendMessage(channel, RenX::getFormattedPlayerName(*player) + STRING_LITERAL_AS_REFERENCE(IRCCOLOR " has been unmuted.")); + source->sendMessage(channel, jessilib::join(RenX::getFormattedPlayerName(*player), IRCCOLOR " has been unmuted."sv)); } else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } if (match == false) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendNotice(nick, "Error: Channel not attached to any connected Renegade X servers."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: unmute ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: unmute "sv); } std::string_view UnMuteIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Unmutes a player. Syntax: unmute "); + static constexpr std::string_view defaultHelp = "Unmutes a player. Syntax: unmute "sv; return defaultHelp; } @@ -1556,7 +1558,7 @@ IRC_COMMAND_INIT(UnMuteIRCCommand) void KillIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kill")); + this->addTrigger("kill"sv); this->setAccessLevel(2); } @@ -1580,19 +1582,19 @@ void KillIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str if (player != nullptr) server->kill(*player); else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } if (match == false) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendNotice(nick, "Error: Channel not attached to any connected Renegade X servers."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: kill ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: kill "sv); } std::string_view KillIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Kills a player. Syntax: kill "); + static constexpr std::string_view defaultHelp = "Kills a player. Syntax: kill "sv; return defaultHelp; } @@ -1602,7 +1604,7 @@ IRC_COMMAND_INIT(KillIRCCommand) void DisarmIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("disarm")); + this->addTrigger("disarm"sv); this->setAccessLevel(2); } @@ -1626,24 +1628,24 @@ void DisarmIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s if (player != nullptr) { if (server->disarm(*player)) - source->sendMessage(channel, std::string("All deployables (c4, beacons, etc) belonging to ") + RenX::getFormattedPlayerName(*player) + STRING_LITERAL_AS_REFERENCE(IRCCOLOR " have been disarmed.")); + source->sendMessage(channel, jessilib::join("All deployables (c4, beacons, etc) belonging to "sv, RenX::getFormattedPlayerName(*player), IRCCOLOR " have been disarmed."sv)); else - source->sendMessage(channel, "Error: Server does not support disarms."_jrs); + source->sendMessage(channel, "Error: Server does not support disarms."sv); } else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } if (match == false) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendNotice(nick, "Error: Channel not attached to any connected Renegade X servers."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: disarm ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: disarm "sv); } std::string_view DisarmIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Disarms all of a player's deployed objects. Syntax: disarm "); + static constexpr std::string_view defaultHelp = "Disarms all of a player's deployed objects. Syntax: disarm "sv; return defaultHelp; } @@ -1653,7 +1655,7 @@ IRC_COMMAND_INIT(DisarmIRCCommand) void DisarmC4IRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("disarmc4")); + this->addTrigger("disarmc4"sv); this->setAccessLevel(2); } @@ -1677,24 +1679,24 @@ void DisarmC4IRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: if (player != nullptr) { if (server->disarmC4(*player)) - source->sendMessage(channel, std::string("All C4 belonging to ") + RenX::getFormattedPlayerName(*player) + STRING_LITERAL_AS_REFERENCE(IRCCOLOR " have been disarmed.")); + source->sendMessage(channel, jessilib::join("All C4 belonging to "sv, RenX::getFormattedPlayerName(*player), IRCCOLOR " have been disarmed."sv)); else - source->sendMessage(channel, "Error: Server does not support disarms."_jrs); + source->sendMessage(channel, "Error: Server does not support disarms."sv); } else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } if (match == false) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendNotice(nick, "Error: Channel not attached to any connected Renegade X servers."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: disarmC4 ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: disarmC4 "sv); } std::string_view DisarmC4IRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Disarms all of a player's deployed C4s. Syntax: disarmc4 "); + static constexpr std::string_view defaultHelp = "Disarms all of a player's deployed C4s. Syntax: disarmc4 "sv; return defaultHelp; } @@ -1704,9 +1706,9 @@ IRC_COMMAND_INIT(DisarmC4IRCCommand) void DisarmBeaconIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("disarmb")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("disarmbeacon")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("disarmbeacons")); + this->addTrigger("disarmb"sv); + this->addTrigger("disarmbeacon"sv); + this->addTrigger("disarmbeacons"sv); this->setAccessLevel(2); } @@ -1730,24 +1732,24 @@ void DisarmBeaconIRCCommand::trigger(IRC_Bot *source, std::string_view channel, if (player != nullptr) { if (server->disarmBeacon(*player)) - source->sendMessage(channel, std::string("All beacons belonging to ") + RenX::getFormattedPlayerName(*player) + STRING_LITERAL_AS_REFERENCE(IRCCOLOR " have been disarmed.")); + source->sendMessage(channel, jessilib::join("All beacons belonging to "sv, RenX::getFormattedPlayerName(*player), IRCCOLOR " have been disarmed."sv)); else - source->sendMessage(channel, "Error: Server does not support disarms."_jrs); + source->sendMessage(channel, "Error: Server does not support disarms."sv); } else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } if (match == false) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendNotice(nick, "Error: Channel not attached to any connected Renegade X servers."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: disarmb ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: disarmb "sv); } std::string_view DisarmBeaconIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Disarms all of a player's deployed beacons. Syntax: disarmb "); + static constexpr std::string_view defaultHelp = "Disarms all of a player's deployed beacons. Syntax: disarmb "sv; return defaultHelp; } @@ -1757,7 +1759,7 @@ IRC_COMMAND_INIT(DisarmBeaconIRCCommand) void MineBanIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("mineban")); + this->addTrigger("mineban"sv); this->setAccessLevel(2); } @@ -1781,22 +1783,22 @@ void MineBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: if (player != nullptr) { server->mineBan(*player); - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Player can no longer place mines.")); + source->sendMessage(channel, "Player can no longer place mines."sv); } else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } if (match == false) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendNotice(nick, "Error: Channel not attached to any connected Renegade X servers."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: mineban ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: mineban "sv); } std::string_view MineBanIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Bans a player from mining for 1 game (or until they leave). Syntax: mineban "); + static constexpr std::string_view defaultHelp = "Bans a player from mining for 1 game (or until they leave). Syntax: mineban "sv; return defaultHelp; } @@ -1806,16 +1808,16 @@ IRC_COMMAND_INIT(MineBanIRCCommand) void KickIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kick")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("qkick")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("k")); + this->addTrigger("kick"sv); + this->addTrigger("qkick"sv); + this->addTrigger("k"sv); this->setAccessLevel(2); } void KickIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { if (parameters.empty()) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: Kick [Reason]")); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: Kick [Reason]"sv); return; } @@ -1826,7 +1828,7 @@ void KickIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str auto servers = RenX::getCore()->getServers(chan->getType()); if (servers.empty()) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } @@ -1852,7 +1854,7 @@ void KickIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str } std::string_view KickIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Kicks a player from the game. Syntax: Kick [Reason]"); + static constexpr std::string_view defaultHelp = "Kicks a player from the game. Syntax: Kick [Reason]"sv; return defaultHelp; } @@ -1863,12 +1865,12 @@ IRC_COMMAND_INIT(KickIRCCommand) // BanSearch IRC Command void BanSearchIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("bansearch")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("bsearch")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("banfind")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("bfind")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("banlogs")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("blogs")); + this->addTrigger("bansearch"sv); + this->addTrigger("bsearch"sv); + this->addTrigger("banfind"sv); + this->addTrigger("bfind"sv); + this->addTrigger("banlogs"sv); + this->addTrigger("blogs"sv); this->setAccessLevel(2); } @@ -1876,7 +1878,7 @@ void BanSearchIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std const auto& entries = RenX::banDatabase->getEntries(); if (!parameters.empty()) { if (entries.size() == 0) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("The ban database is empty!")); + source->sendNotice(nick, "The ban database is empty!"sv); } else { auto command_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); @@ -1932,14 +1934,14 @@ void BanSearchIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std params = parameters; } - Jupiter::String out(256); - Jupiter::String types(64); + std::string out; + std::string types; char dateStr[256]; char expireStr[256]; for (size_t i = 0; i != entries.size(); i++) { entry = entries[i].get(); if (isMatch(type)) { - Jupiter::StringS ip_str = Jupiter::Socket::ntop4(entry->ip); + std::string ip_str = Jupiter::Socket::ntop4(entry->ip); time_t added_time = std::chrono::system_clock::to_time_t(entry->timestamp); if (entry->length.count() != 0) { @@ -1952,27 +1954,27 @@ void BanSearchIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std strftime(dateStr, sizeof(dateStr), "%b %d %Y, %H:%M:%S", localtime(&added_time)); if ((entry->flags & 0x7FFF) == 0) - types = " NULL;"_jrs; + types = " NULL;"sv; else { types.clear(); if (entry->is_rdns_ban()) - types += " rdns"_jrs; + types += " rdns"sv; if (entry->is_type_game()) - types += " game"_jrs; + types += " game"sv; if (entry->is_type_chat()) - types += " chat"_jrs; + types += " chat"sv; if (entry->is_type_bot()) - types += " bot"_jrs; + types += " bot"sv; if (entry->is_type_vote()) - types += " vote"_jrs; + types += " vote"sv; if (entry->is_type_mine()) - types += " mine"_jrs; + types += " mine"sv; if (entry->is_type_ladder()) - types += " ladder"_jrs; + types += " ladder"sv; if (entry->is_type_alert()) - types += " alert"_jrs; - types += ";"_jrs; + types += " alert"sv; + types += ";"sv; } out = string_printf("ID: %lu (" IRCCOLOR "%sactive" IRCCOLOR "); Added: %s; Expires: %s; IP: %.*s/%u; HWID: %.*s; Steam: %llu; Types:%.*s Name: %.*s; Banner: %.*s", @@ -1981,19 +1983,19 @@ void BanSearchIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std if (!entry->rdns.empty()) { - out.concat("; RDNS: "_jrs); - out.concat(entry->rdns); + out += "; RDNS: "sv; + out += entry->rdns; } if (!entry->reason.empty()) { - out.concat("; Reason: "_jrs); - out.concat(entry->reason); + out += "; Reason: "sv; + out += entry->reason; } source->sendNotice(nick, out); } } if (out.empty()) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("No matches found.")); + source->sendNotice(nick, "No matches found."sv); } } else @@ -2002,7 +2004,7 @@ void BanSearchIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std std::string_view BanSearchIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Searches the ban database for an entry. Syntax: bsearch [ip/rdns/steam/name/banner/active/any/all = any] "); + static constexpr std::string_view defaultHelp = "Searches the ban database for an entry. Syntax: bsearch [ip/rdns/steam/name/banner/active/any/all = any] "sv; return defaultHelp; } @@ -2045,15 +2047,15 @@ player_search_result findPlayerByPartName(IRC_Bot* source, std::string_view chan } void TempBanIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tb")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tempban")); + this->addTrigger("tban"sv); + this->addTrigger("tb"sv); + this->addTrigger("tempban"sv); this->setAccessLevel(3); } void TempBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { if (parameters.empty()) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: TempBan [Duration] [Reason]")); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: TempBan [Duration] [Reason]"sv); return; } @@ -2080,12 +2082,12 @@ void TempBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: } if (search_result.server == nullptr) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } if (search_result.player == nullptr) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Could not find player.")); + source->sendMessage(channel, "Error: Could not find player."sv); return; } @@ -2093,15 +2095,14 @@ void TempBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: reason = "No reason"sv; } - Jupiter::String banner(nick.size() + 4); - banner += nick; + std::string banner{ nick }; banner += "@IRC"; search_result.server->banPlayer(*search_result.player, banner, reason, duration); - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Player banned.")); + source->sendMessage(channel, "Player banned."sv); } std::string_view TempBanIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Kicks and temporarily bans a player from the game. Syntax: TempBan [Duration] [Reason]"); + static constexpr std::string_view defaultHelp = "Kicks and temporarily bans a player from the game. Syntax: TempBan [Duration] [Reason]"sv; return defaultHelp; } @@ -2110,16 +2111,16 @@ IRC_COMMAND_INIT(TempBanIRCCommand) // TempChatBan IRC Command void TempChatBanIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tchatban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tcban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tempchatban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tcb")); + this->addTrigger("tchatban"sv); + this->addTrigger("tcban"sv); + this->addTrigger("tempchatban"sv); + this->addTrigger("tcb"sv); this->setAccessLevel(3); } void TempChatBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { if (parameters.empty()) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: TempChatBan [Duration] [Reason]")); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: TempChatBan [Duration] [Reason]"sv); return; } @@ -2146,12 +2147,12 @@ void TempChatBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, s } if (search_result.server == nullptr) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } if (search_result.player == nullptr) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Could not find player.")); + source->sendMessage(channel, "Error: Could not find player."sv); return; } @@ -2159,15 +2160,14 @@ void TempChatBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, s reason = "No reaosn"sv; } - Jupiter::String banner(nick.size() + 4); - banner += nick; + std::string banner{ nick }; banner += "@IRC"; RenX::banDatabase->add(search_result.server, *search_result.player, banner, reason, duration, RenX::BanDatabase::Entry::FLAG_TYPE_CHAT); - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Player chat banned.")); + source->sendMessage(channel, "Player chat banned."sv); } std::string_view TempChatBanIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Mutes and temporarily chat bans a player from the game. Syntax: TempChatBan [Duration] [Reason]"); + static constexpr std::string_view defaultHelp = "Mutes and temporarily chat bans a player from the game. Syntax: TempChatBan [Duration] [Reason]"sv; return defaultHelp; } @@ -2176,9 +2176,9 @@ IRC_COMMAND_INIT(TempChatBanIRCCommand) // KickBan IRC Command void KickBanIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kickban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kb")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("ban")); + this->addTrigger("kickban"sv); + this->addTrigger("kb"sv); + this->addTrigger("ban"sv); this->setAccessLevel(4); } @@ -2198,8 +2198,7 @@ void KickBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: reason = "No reason"sv; } - Jupiter::String banner(nick.size() + 4); - banner += nick; + std::string banner{ nick }; banner += "@IRC"; for (const auto& server : servers) { if (server != nullptr) { @@ -2218,15 +2217,15 @@ void KickBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: RenX::getCore()->banCheck(); } } - else source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + else source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: KickBan [Reason]")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: KickBan [Reason]"sv); } std::string_view KickBanIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Kicks and bans a player from the game. Syntax: KickBan [Reason]"); + static constexpr std::string_view defaultHelp = "Kicks and bans a player from the game. Syntax: KickBan [Reason]"sv; return defaultHelp; } @@ -2236,8 +2235,8 @@ IRC_COMMAND_INIT(KickBanIRCCommand) void AddBanIRCCommand::create() { - this->addTrigger("addban"_jrs); - this->addTrigger("banadd"_jrs); + this->addTrigger("addban"sv); + this->addTrigger("banadd"sv); this->setAccessLevel(4); } @@ -2381,7 +2380,7 @@ void AddBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s size_t index = ip_str.find('/'); if (index != std::string::npos) { - Jupiter::ReferenceString prefix_length_str(ip_str.c_str() + index + 1); + std::string_view prefix_length_str(ip_str.c_str() + index + 1); prefix_length = Jupiter::from_string(prefix_length_str); if (prefix_length == 0) prefix_length = 32U; @@ -2402,14 +2401,14 @@ void AddBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s } } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: AddBan [...]")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: AddBan [...]"sv); } std::string_view AddBanIRCCommand::getHelp(std::string_view parameters) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Adds a ban entry to the ban list. Use \"help addban keys\" for a list of input keys. Syntax: AddBan [ ...]"); - static STRING_LITERAL_AS_NAMED_REFERENCE(keyHelp, "Valueless keys (flags): Game, Chat, Bot, Vote, Mine, Ladder, Alert; Value-paired keys: Name, IP, Steam, RDNS, Duration, Reason (MUST BE LAST)"); - if (!parameters.empty() && jessilib::equalsi(parameters, "keys"_jrs)) + static constexpr std::string_view defaultHelp = "Adds a ban entry to the ban list. Use \"help addban keys\" for a list of input keys. Syntax: AddBan [ ...]"sv; + static constexpr std::string_view keyHelp = "Valueless keys (flags): Game, Chat, Bot, Vote, Mine, Ladder, Alert; Value-paired keys: Name, IP, Steam, RDNS, Duration, Reason (MUST BE LAST)"sv; + if (!parameters.empty() && jessilib::equalsi(parameters, "keys"sv)) return keyHelp; return defaultHelp; } @@ -2420,10 +2419,10 @@ IRC_COMMAND_INIT(AddBanIRCCommand) void UnBanIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("unban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("deban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("uban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("dban")); + this->addTrigger("unban"sv); + this->addTrigger("deban"sv); + this->addTrigger("uban"sv); + this->addTrigger("dban"sv); this->setAccessLevel(4); } @@ -2435,19 +2434,19 @@ void UnBanIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st if (index < RenX::banDatabase->getEntries().size()) { if (RenX::banDatabase->deactivate(index)) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Ban deactivated.")); + source->sendNotice(nick, "Ban deactivated."sv); else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Ban not active.")); + source->sendNotice(nick, "Error: Ban not active."sv); } else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Invalid ban ID; please find the ban ID using \"bansearch\".")); + source->sendNotice(nick, "Error: Invalid ban ID; please find the ban ID using \"bansearch\"."sv); } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: unban ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: unban "sv); } std::string_view UnBanIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Deactivates a ban. Syntax: unban "); + static constexpr std::string_view defaultHelp = "Deactivates a ban. Syntax: unban "sv; return defaultHelp; } @@ -2458,12 +2457,12 @@ IRC_COMMAND_INIT(UnBanIRCCommand) // ExemptionSearch IRC Command void ExemptionSearchIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("exemptionsearch")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("esearch")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("exemptionfind")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("efind")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("exemptionlogs")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("elogs")); + this->addTrigger("exemptionsearch"sv); + this->addTrigger("esearch"sv); + this->addTrigger("exemptionfind"sv); + this->addTrigger("efind"sv); + this->addTrigger("exemptionlogs"sv); + this->addTrigger("elogs"sv); this->setAccessLevel(2); } @@ -2515,8 +2514,8 @@ void ExemptionSearchIRCCommand::trigger(IRC_Bot *source, std::string_view channe params = parameters; } - Jupiter::String out(256); - Jupiter::String types(64); + std::string out; + std::string types; char timeStr[256]; for (size_t i = 0; i != entries.size(); i++) { @@ -2524,21 +2523,21 @@ void ExemptionSearchIRCCommand::trigger(IRC_Bot *source, std::string_view channe if (isMatch(type)) { time_t current_time = std::chrono::system_clock::to_time_t(entry->timestamp); - Jupiter::StringS ip_str = Jupiter::Socket::ntop4(entry->ip); + std::string ip_str = Jupiter::Socket::ntop4(entry->ip); strftime(timeStr, sizeof(timeStr), "%b %d %Y, %H:%M:%S", localtime(¤t_time)); if ((entry->flags & 0xFF) == 0) - types = " NULL;"_jrs; + types = " NULL;"sv; else { types.clear(); if (entry->is_type_kick()) - types += " kick"_jrs; + types += " kick"sv; if (entry->is_type_ban()) - types += " ban"_jrs; + types += " ban"sv; if (entry->is_ip_exemption()) - types += " ip"_jrs; - types += ";"_jrs; + types += " ip"sv; + types += ";"sv; } out = string_printf("ID: %lu (%sactive); Date: %s; IP: %.*s/%u; Steam: %llu; Types:%.*s Setter: %.*s", @@ -2549,7 +2548,7 @@ void ExemptionSearchIRCCommand::trigger(IRC_Bot *source, std::string_view channe } } if (out.empty()) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("No matches found.")); + source->sendNotice(nick, "No matches found."sv); } } else @@ -2557,7 +2556,7 @@ void ExemptionSearchIRCCommand::trigger(IRC_Bot *source, std::string_view channe } std::string_view ExemptionSearchIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Searches the exemption database for an entry. Syntax: esearch [ip/steam/setter/active/any/all = any] "); + static constexpr std::string_view defaultHelp = "Searches the exemption database for an entry. Syntax: esearch [ip/steam/setter/active/any/all = any] "sv; return defaultHelp; } @@ -2566,8 +2565,8 @@ IRC_COMMAND_INIT(ExemptionSearchIRCCommand) // BanExempt IRC Command void BanExemptIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("banexempt")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("bexempt")); + this->addTrigger("banexempt"sv); + this->addTrigger("bexempt"sv); this->setAccessLevel(4); } @@ -2575,7 +2574,7 @@ void BanExemptIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std auto command_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); std::string_view target_name = command_split.first; if (target_name.empty()) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: BanExempt [Reason]")); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: BanExempt [Reason]"sv); return; } @@ -2586,14 +2585,13 @@ void BanExemptIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std const auto& servers = RenX::getCore()->getServers(chan->getType()); if (servers.empty()) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } RenX::PlayerInfo *player; unsigned int exemptions = 0; - Jupiter::String setter(nick.size() + 4); - setter += nick; + std::string setter{ nick }; setter += "@IRC"; for (const auto& server : servers) { if (server != nullptr) { @@ -2620,7 +2618,7 @@ void BanExemptIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std std::string_view BanExemptIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Exempts a player from bans using their SteamID, or their IP address if they have none. Syntax: BanExempt [Reason]"); + static constexpr std::string_view defaultHelp = "Exempts a player from bans using their SteamID, or their IP address if they have none. Syntax: BanExempt [Reason]"sv; return defaultHelp; } @@ -2629,8 +2627,8 @@ IRC_COMMAND_INIT(BanExemptIRCCommand) // KickExempt IRC Command void KickExemptIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kickexempt")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kexempt")); + this->addTrigger("kickexempt"sv); + this->addTrigger("kexempt"sv); this->setAccessLevel(4); } @@ -2638,7 +2636,7 @@ void KickExemptIRCCommand::trigger(IRC_Bot *source, std::string_view channel, st auto command_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); std::string_view target_name = command_split.first; if (target_name.empty()) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: KickExempt [Reason]")); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: KickExempt [Reason]"sv); } Jupiter::IRC::Client::Channel *chan = source->getChannel(channel); @@ -2648,14 +2646,13 @@ void KickExemptIRCCommand::trigger(IRC_Bot *source, std::string_view channel, st const auto& servers = RenX::getCore()->getServers(chan->getType()); if (servers.empty()) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } RenX::PlayerInfo *player; unsigned int exemptions = 0; - Jupiter::String setter(nick.size() + 4); - setter += nick; + std::string setter{ nick }; setter += "@IRC"; for (const auto& server : servers) { if (server != nullptr) { @@ -2680,7 +2677,7 @@ void KickExemptIRCCommand::trigger(IRC_Bot *source, std::string_view channel, st } std::string_view KickExemptIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Exempts a player from kicks and bans using their SteamID, or their IP address if they have none. Syntax: KickExempt [Reason]"); + static constexpr std::string_view defaultHelp = "Exempts a player from kicks and bans using their SteamID, or their IP address if they have none. Syntax: KickExempt [Reason]"sv; return defaultHelp; } @@ -2692,9 +2689,9 @@ IRC_COMMAND_INIT(KickExemptIRCCommand) void AddExemptionIRCCommand::create() { - this->addTrigger("addexemption"_jrs); - this->addTrigger("exemptionadd"_jrs); - this->addTrigger("exempt"_jrs); + this->addTrigger("addexemption"sv); + this->addTrigger("exemptionadd"sv); + this->addTrigger("exempt"sv); this->setAccessLevel(4); } @@ -2714,13 +2711,12 @@ void AddExemptionIRCCommand::trigger(IRC_Bot *source, std::string_view channel, uint32_t ip = 0U; uint8_t prefix_length = 32U; uint64_t steamid = 0U; - std::string setter = static_cast(nick) + "@IRC"_jrs; + std::string setter = jessilib::join(nick, "@IRC"sv); std::chrono::seconds duration = std::chrono::seconds::zero(); uint8_t flags = 0; auto missing_value = [&source, &nick](std::string_view token) { - std::string error_message = "ERROR: No value specified for token: "s; - error_message += token; + std::string error_message = jessilib::join("ERROR: No value specified for token: "sv, token); source->sendNotice(nick, error_message); }; @@ -2782,7 +2778,7 @@ void AddExemptionIRCCommand::trigger(IRC_Bot *source, std::string_view channel, size_t index = ip_str.find('/'); if (index != std::string::npos) { - Jupiter::ReferenceString prefix_length_str(ip_str.c_str() + index + 1); + std::string_view prefix_length_str(ip_str.c_str() + index + 1); prefix_length = Jupiter::from_string(prefix_length_str); if (prefix_length == 0) prefix_length = 32U; @@ -2795,7 +2791,7 @@ void AddExemptionIRCCommand::trigger(IRC_Bot *source, std::string_view channel, } if ((flags & RenX::ExemptionDatabase::Entry::FLAG_USE_IP) == 0 && steamid == 0ULL) - source->sendNotice(nick, "Pointless exemption detected -- no IP or SteamID specified"_jrs); + source->sendNotice(nick, "Pointless exemption detected -- no IP or SteamID specified"sv); else { RenX::exemptionDatabase->add(ip, prefix_length, steamid, setter, duration, flags); @@ -2804,14 +2800,14 @@ void AddExemptionIRCCommand::trigger(IRC_Bot *source, std::string_view channel, } } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: AddExemption [...]")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: AddExemption [...]"sv); } std::string_view AddExemptionIRCCommand::getHelp(std::string_view parameters) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Adds an exemption entry to the exemption list. Use \"help addexemption keys\" for a list of input keys. Syntax: AddExemption [ ...]"); - static STRING_LITERAL_AS_NAMED_REFERENCE(keyHelp, "Valueless keys (flags): Ban, Kick; Value-paired keys: IP, Steam, Duration"); - if (!parameters.empty() && jessilib::equalsi(parameters, "keys"_jrs)) + static constexpr std::string_view defaultHelp = "Adds an exemption entry to the exemption list. Use \"help addexemption keys\" for a list of input keys. Syntax: AddExemption [ ...]"sv; + static constexpr std::string_view keyHelp = "Valueless keys (flags): Ban, Kick; Value-paired keys: IP, Steam, Duration"sv; + if (!parameters.empty() && jessilib::equalsi(parameters, "keys"sv)) return keyHelp; return defaultHelp; } @@ -2822,10 +2818,10 @@ IRC_COMMAND_INIT(AddExemptionIRCCommand) void UnExemptIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("unexempt")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("deexempt")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("uexempt")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("dexempt")); + this->addTrigger("unexempt"sv); + this->addTrigger("deexempt"sv); + this->addTrigger("uexempt"sv); + this->addTrigger("dexempt"sv); this->setAccessLevel(4); } @@ -2837,19 +2833,19 @@ void UnExemptIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: if (index < RenX::exemptionDatabase->getEntries().size()) { if (RenX::exemptionDatabase->deactivate(index)) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Exemption deactivated.")); + source->sendNotice(nick, "Exemption deactivated."sv); else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Exemption not active.")); + source->sendNotice(nick, "Error: Exemption not active."sv); } else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Invalid exemption ID; please find the exemption ID using \"esearch\".")); + source->sendNotice(nick, "Error: Invalid exemption ID; please find the exemption ID using \"esearch\"."sv); } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: unexempt ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: unexempt "sv); } std::string_view UnExemptIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Deactivates an exemption. Syntax: unexempt "); + static constexpr std::string_view defaultHelp = "Deactivates an exemption. Syntax: unexempt "sv; return defaultHelp; } @@ -2858,8 +2854,8 @@ IRC_COMMAND_INIT(UnExemptIRCCommand) // AddBots IRC Command void AddBotsIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("addbots")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("addbot")); + this->addTrigger("addbots"sv); + this->addTrigger("addbot"sv); this->setAccessLevel(2); } @@ -2871,7 +2867,7 @@ void AddBotsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: const auto& servers = RenX::getCore()->getServers(source->getChannel(channel)->getType()); if (servers.empty()) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } @@ -2880,7 +2876,7 @@ void AddBotsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: if (!split_parameters.empty()) { amount = Jupiter::asInt(split_parameters.front()); if (amount == 0) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Invalid amount entered. Amount must be a positive integer.")); + source->sendMessage(channel, "Error: Invalid amount entered. Amount must be a positive integer."sv); return; } } @@ -2916,7 +2912,7 @@ void AddBotsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: } std::string_view AddBotsIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Adds bots to the game. Syntax: AddBots [Amount=1] [Team]"); + static constexpr std::string_view defaultHelp = "Adds bots to the game. Syntax: AddBots [Amount=1] [Team]"sv; return defaultHelp; } @@ -2925,8 +2921,8 @@ IRC_COMMAND_INIT(AddBotsIRCCommand) // KillBots IRC Command void KillBotsIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("killbots")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("killbot")); + this->addTrigger("killbots"sv); + this->addTrigger("killbot"sv); this->setAccessLevel(2); } @@ -2938,18 +2934,18 @@ void KillBotsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std: const auto& servers = RenX::getCore()->getServers(chan->getType()); if (servers.empty()) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } for (const auto& server : servers) { - server->send(STRING_LITERAL_AS_REFERENCE("killbots")); - server->sendMessage(STRING_LITERAL_AS_REFERENCE("All bots have been removed from the server.")); + server->send("killbots"sv); + server->sendMessage("All bots have been removed from the server."sv); } } std::string_view KillBotsIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Removes all bots from the game. Syntax: KillBots"); + static constexpr std::string_view defaultHelp = "Removes all bots from the game. Syntax: KillBots"sv; return defaultHelp; } @@ -2958,8 +2954,8 @@ IRC_COMMAND_INIT(KillBotsIRCCommand) // PhaseBots IRC Command void PhaseBotsIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("phasebots")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("phasebot")); + this->addTrigger("phasebots"sv); + this->addTrigger("phasebot"sv); this->setAccessLevel(2); } @@ -2971,33 +2967,33 @@ void PhaseBotsIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std const auto& servers = RenX::getCore()->getServers(chan->getType()); if (servers.empty()) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } for (const auto& server : servers) { if (parameters.empty()) { if (togglePhasing(server)) { - server->sendMessage(STRING_LITERAL_AS_REFERENCE("Bot phasing has been enabled.")); + server->sendMessage("Bot phasing has been enabled."sv); } else { - server->sendMessage(STRING_LITERAL_AS_REFERENCE("Bot phasing has been disabled.")); + server->sendMessage("Bot phasing has been disabled."sv); } } else if (jessilib::equalsi(parameters, "true"sv) || jessilib::equalsi(parameters, "on"sv) || jessilib::equalsi(parameters, "start"sv) || jessilib::equalsi(parameters, "1"sv)) { togglePhasing(server, true); - server->sendMessage(STRING_LITERAL_AS_REFERENCE("Bot phasing has been enabled.")); + server->sendMessage("Bot phasing has been enabled."sv); } else { togglePhasing(server, false); - server->sendMessage(STRING_LITERAL_AS_REFERENCE("Bot phasing has been disabled.")); + server->sendMessage("Bot phasing has been disabled."sv); } } } std::string_view PhaseBotsIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Toggles the phasing of bots from the game by kicking them after death. Syntax: PhaseBots [on/off]"); + static constexpr std::string_view defaultHelp = "Toggles the phasing of bots from the game by kicking them after death. Syntax: PhaseBots [on/off]"sv; return defaultHelp; } @@ -3006,14 +3002,14 @@ IRC_COMMAND_INIT(PhaseBotsIRCCommand) // RCON IRC Command void RCONIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rcon")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("renx")); + this->addTrigger("rcon"sv); + this->addTrigger("renx"sv); this->setAccessLevel(5); } void RCONIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { if (parameters.empty()) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: rcon ")); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: rcon "sv); return; } @@ -3027,12 +3023,12 @@ void RCONIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str source->sendMessage(channel, string_printf("Command sent to %u servers.", server_count)); } else { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } std::string_view RCONIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends data to the Renegade X server's rcon. Syntax: rcon "); + static constexpr std::string_view defaultHelp = "Sends data to the Renegade X server's rcon. Syntax: rcon "sv; return defaultHelp; } @@ -3041,11 +3037,11 @@ IRC_COMMAND_INIT(RCONIRCCommand) // Refund IRC Command void RefundIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("refund")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("givecredits")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("gc")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("money")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("credits")); + this->addTrigger("refund"sv); + this->addTrigger("givecredits"sv); + this->addTrigger("gc"sv); + this->addTrigger("money"sv); + this->addTrigger("credits"sv); this->setAccessLevel(3); } @@ -3058,7 +3054,7 @@ void RefundIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s std::string_view playerName = split_parameters[0]; double credits = Jupiter::asDouble(split_parameters[1]); RenX::PlayerInfo *player; - Jupiter::StringL msg; + std::string msg; for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { RenX::Server *server = RenX::getCore()->getServer(i); if (server->isLogChanType(type) && server->players.size() != 0) { @@ -3070,24 +3066,24 @@ void RefundIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s msg = string_printf("%.*s has been refunded %.0f credits.", player->name.size(), player->name.data(), credits); } else { - msg.set("Error: Server does not support refunds."); + msg = "Error: Server does not support refunds."s; } source->sendMessage(channel, msg); } } } if (msg.empty()) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } } else { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: refund ")); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: refund "sv); } } std::string_view RefundIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Refunds a player's credits. Syntax: refund "); + static constexpr std::string_view defaultHelp = "Refunds a player's credits. Syntax: refund "sv; return defaultHelp; } @@ -3096,11 +3092,11 @@ IRC_COMMAND_INIT(RefundIRCCommand) // Team-Change IRC Command void TeamChangeIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("team")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tc")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("ftc")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("forcetc")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("teamchange")); + this->addTrigger("team"sv); + this->addTrigger("tc"sv); + this->addTrigger("ftc"sv); + this->addTrigger("forcetc"sv); + this->addTrigger("teamchange"sv); this->setAccessLevel(3); } @@ -3125,15 +3121,15 @@ void TeamChangeIRCCommand::trigger(IRC_Bot *source, std::string_view channel, st } } if (playerFound == false) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: team ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: team "sv); } std::string_view TeamChangeIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Changes a player's team. Syntax: team "); + static constexpr std::string_view defaultHelp = "Changes a player's team. Syntax: team "sv; return defaultHelp; } @@ -3143,11 +3139,11 @@ IRC_COMMAND_INIT(TeamChangeIRCCommand) void TeamChange2IRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("team2")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tc2")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("ftc2")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("forcetc2")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("teamchange2")); + this->addTrigger("team2"sv); + this->addTrigger("tc2"sv); + this->addTrigger("ftc2"sv); + this->addTrigger("forcetc2"sv); + this->addTrigger("teamchange2"sv); this->setAccessLevel(3); } @@ -3172,15 +3168,15 @@ void TeamChange2IRCCommand::trigger(IRC_Bot *source, std::string_view channel, s } } if (playerFound == false) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."sv); } } - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: team2 ")); + else source->sendNotice(nick, "Error: Too Few Parameters. Syntax: team2 "sv); } std::string_view TeamChange2IRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Changes a player's team, without resetting their credits. Syntax: team2 "); + static constexpr std::string_view defaultHelp = "Changes a player's team, without resetting their credits. Syntax: team2 "sv; return defaultHelp; } @@ -3190,14 +3186,14 @@ IRC_COMMAND_INIT(TeamChange2IRCCommand) void NModeIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("nmode")); + this->addTrigger("nmode"sv); this->setAccessLevel(2); } void NModeIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { if (parameters.empty()) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: nmode ")); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: nmode "sv); return; } @@ -3208,7 +3204,7 @@ void NModeIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st const auto& servers = RenX::getCore()->getServers(chan->getType()); if (servers.empty()) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } @@ -3228,7 +3224,7 @@ void NModeIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st } std::string_view NModeIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Resets a player's mode from spectator to normal. Syntax: nmode "); + static constexpr std::string_view defaultHelp = "Resets a player's mode from spectator to normal. Syntax: nmode "sv; return defaultHelp; } @@ -3237,13 +3233,13 @@ IRC_COMMAND_INIT(NModeIRCCommand) // SMode IRC Command void SModeIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("smode")); + this->addTrigger("smode"sv); this->setAccessLevel(2); } void SModeIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { if (parameters.empty()) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: smode ")); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: smode "sv); return; } @@ -3254,7 +3250,7 @@ void SModeIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st const auto& servers = RenX::getCore()->getServers(chan->getType()); if (servers.empty()) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } @@ -3273,7 +3269,7 @@ void SModeIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::st } std::string_view SModeIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Resets a player's mode from spectator to normal. Syntax: smode "); + static constexpr std::string_view defaultHelp = "Resets a player's mode from spectator to normal. Syntax: smode "sv; return defaultHelp; } @@ -3282,9 +3278,9 @@ IRC_COMMAND_INIT(SModeIRCCommand) // CancelVote IRC Command void CancelVoteIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("cancelvote")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("cancelvotes")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("cv")); + this->addTrigger("cancelvote"sv); + this->addTrigger("cancelvotes"sv); + this->addTrigger("cv"sv); this->setAccessLevel(2); } @@ -3296,7 +3292,7 @@ void CancelVoteIRCCommand::trigger(IRC_Bot *source, std::string_view channel, st const auto& servers = RenX::getCore()->getServers(chan->getType()); if (servers.empty()) { - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } @@ -3317,7 +3313,7 @@ void CancelVoteIRCCommand::trigger(IRC_Bot *source, std::string_view channel, st } else if (jessilib::equalsi(parameters, "nod"sv) || jessilib::equalsi(parameters, "n"sv)) { target = RenX::TeamType::Nod; } else { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Invalid Team. Allowed values are all/a, public/p, gdi/g, nod/n, blackhand/bh/b.")); + source->sendNotice(nick, "Error: Invalid Team. Allowed values are all/a, public/p, gdi/g, nod/n, blackhand/bh/b."sv); return; } } @@ -3344,7 +3340,7 @@ void CancelVoteIRCCommand::trigger(IRC_Bot *source, std::string_view channel, st } std::string_view CancelVoteIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Cancels active votes. Syntax: cancelvote [all|public|gdi|nod|blackhand]"); + static constexpr std::string_view defaultHelp = "Cancels active votes. Syntax: cancelvote [all|public|gdi|nod|blackhand]"sv; return defaultHelp; } @@ -3355,7 +3351,7 @@ IRC_COMMAND_INIT(CancelVoteIRCCommand) // Help Game Command void HelpGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("help")); + this->addTrigger("help"sv); } void HelpGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { @@ -3403,17 +3399,17 @@ void HelpGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, st source->sendMessage(*player, cmd->getHelp(split_parameters.second)); } else { - source->sendMessage(*player, STRING_LITERAL_AS_REFERENCE("Access Denied.")); + source->sendMessage(*player, "Access Denied."sv); } } else { - source->sendMessage(*player, STRING_LITERAL_AS_REFERENCE("Error: Command not found.")); + source->sendMessage(*player, "Error: Command not found."sv); } } } std::string_view HelpGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Lists commands, or sends command-specific help. Syntax: help [command]"); + static constexpr std::string_view defaultHelp = "Lists commands, or sends command-specific help. Syntax: help [command]"sv; return defaultHelp; } @@ -3422,18 +3418,18 @@ GAME_COMMAND_INIT(HelpGameCommand) // Mods Game Command void ModsGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("staff")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("mods")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("showmods")); + this->addTrigger("staff"sv); + this->addTrigger("mods"sv); + this->addTrigger("showmods"sv); } void ModsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *, std::string_view ) { - Jupiter::StringL msg; + std::string msg; std::string_view staff_word = pluginInstance.getStaffTitle(); for (auto node = source->players.begin(); node != source->players.end(); ++node) { if (node->isBot == false && (!node->adminType.empty() || (node->access != 0 && (!node->gamePrefix.empty() || !node->formatNamePrefix.empty())))) { if (msg.empty()) - msg = static_cast(staff_word) + "s in-game: "_jrs; + msg = jessilib::join(staff_word, "s in-game: "sv); else msg += ", "; @@ -3442,8 +3438,8 @@ void ModsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *, std::str } } if (msg.empty()) { - msg += "No "s + staff_word + "s are in-game"_jrs; - RenX::GameCommand *cmd = source->getCommand(STRING_LITERAL_AS_REFERENCE("modrequest")); + msg += jessilib::join("No "sv, staff_word, "s are in-game"sv); + RenX::GameCommand *cmd = source->getCommand("modrequest"sv); if (cmd != nullptr) msg += string_printf("; please use \"%.*s%.*s\" if you require assistance.", source->getCommandPrefix().size(), source->getCommandPrefix().data(), cmd->getTrigger().size(), cmd->getTrigger().data()); else msg += '.'; @@ -3452,7 +3448,7 @@ void ModsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *, std::str } std::string_view ModsGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays in-game staff. Syntax: staff"); + static constexpr std::string_view defaultHelp = "Displays in-game staff. Syntax: staff"sv; return defaultHelp; } @@ -3461,10 +3457,10 @@ GAME_COMMAND_INIT(ModsGameCommand) // Rules Game Command void RulesGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rules")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rule")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("showrules")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("showrule")); + this->addTrigger("rules"sv); + this->addTrigger("rule"sv); + this->addTrigger("showrules"sv); + this->addTrigger("showrule"sv); } void RulesGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { @@ -3472,7 +3468,7 @@ void RulesGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, s } std::string_view RulesGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays the rules for this server. Syntax: rules"); + static constexpr std::string_view defaultHelp = "Displays the rules for this server. Syntax: rules"sv; return defaultHelp; } @@ -3481,23 +3477,23 @@ GAME_COMMAND_INIT(RulesGameCommand) // Mod Request Game Command void ModRequestGameCommand::create() { - this->addTrigger("modrequest"_jrs); - this->addTrigger("requestmod"_jrs); - this->addTrigger("mod"_jrs); + this->addTrigger("modrequest"sv); + this->addTrigger("requestmod"sv); + this->addTrigger("mod"sv); } void ModRequestGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { if (parameters.empty()) { - source->sendMessage(*player, "Please specify a reason for requesting moderator assistance."_jrs); + source->sendMessage(*player, "Please specify a reason for requesting moderator assistance."sv); return; } std::string_view staff_word = pluginInstance.getStaffTitle(); - Jupiter::String fmtName = RenX::getFormattedPlayerName(*player); - Jupiter::StringL user_message = string_printf(IRCCOLOR "12[%.*s Request] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR "07 has requested assistance in-game for \"%.*s\"; please look in ", staff_word.size(), + std::string fmtName = RenX::getFormattedPlayerName(*player); + std::string user_message = string_printf(IRCCOLOR "12[%.*s Request] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR "07 has requested assistance in-game for \"%.*s\"; please look in ", staff_word.size(), staff_word.data(), fmtName.size(), fmtName.data(), parameters.size(), parameters.data()); - Jupiter::StringS channel_message = string_printf(IRCCOLOR "12[%.*s Request] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR "07 has requested assistance in-game! Reason: %.*s" IRCCOLOR, staff_word.size(), + std::string channel_message = string_printf(IRCCOLOR "12[%.*s Request] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR "07 has requested assistance in-game! Reason: %.*s" IRCCOLOR, staff_word.size(), staff_word.data(), fmtName.size(), fmtName.data(), parameters.size(), parameters.data()); @@ -3508,6 +3504,7 @@ void ModRequestGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *play // Alert relevant users in the channel unsigned int total_user_alerts{}; + size_t base_length = user_message.size(); user_message += channel.getName(); for (auto& user : channel.getUsers()) { @@ -3519,7 +3516,7 @@ void ModRequestGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *play } } - user_message.truncate(channel.getName().size()); + user_message.erase(base_length); return total_user_alerts; }; @@ -3544,7 +3541,7 @@ void ModRequestGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *play } std::string_view ModRequestGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Notifies staff on IRC that assistance is required. Syntax: modRequest "); + static constexpr std::string_view defaultHelp = "Notifies staff on IRC that assistance is required. Syntax: modRequest "sv; return defaultHelp; } @@ -3553,25 +3550,25 @@ GAME_COMMAND_INIT(ModRequestGameCommand) // AdminMessage Game Command void AdminMessageGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("amsg")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("adminmsg")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("amessage")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("adminmessage")); + this->addTrigger("amsg"sv); + this->addTrigger("adminmsg"sv); + this->addTrigger("amessage"sv); + this->addTrigger("adminmessage"sv); this->setAccessLevel(1); } void AdminMessageGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { if (!parameters.empty()) { - Jupiter::StringS msg = player->gamePrefix + player->name + ": "_jrs + parameters; + std::string msg = jessilib::join(player->gamePrefix, player->name, ": "sv, parameters); source->sendAdminMessage(msg); } else { - source->sendMessage(*player, "Error: Too few parameters. Syntax: amsg "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: amsg "sv); } } std::string_view AdminMessageGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends an admin message in-game. Syntax: amsg "); + static constexpr std::string_view defaultHelp = "Sends an admin message in-game. Syntax: amsg "sv; return defaultHelp; } @@ -3580,10 +3577,10 @@ GAME_COMMAND_INIT(AdminMessageGameCommand) // PAdminMessage Game Command void PAdminMessageGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pamsg")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("padminmsg")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pamessage")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("padminmessage")); + this->addTrigger("pamsg"sv); + this->addTrigger("padminmsg"sv); + this->addTrigger("pamessage"sv); + this->addTrigger("padminmessage"sv); this->setAccessLevel(1); } @@ -3592,7 +3589,7 @@ void PAdminMessageGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *p if (!split_parameters.second.empty()) { RenX::PlayerInfo *target = source->getPlayerByPartName(split_parameters.first); if (target == nullptr) { - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); } else { std::string message; @@ -3606,12 +3603,12 @@ void PAdminMessageGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *p } } else { - source->sendMessage(*player, "Error: Too few parameters. Syntax: pamsg "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: pamsg "sv); } } std::string_view PAdminMessageGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sends an admin message to a player in-game. Syntax: pamsg "); + static constexpr std::string_view defaultHelp = "Sends an admin message to a player in-game. Syntax: pamsg "sv; return defaultHelp; } @@ -3620,7 +3617,7 @@ GAME_COMMAND_INIT(PAdminMessageGameCommand) // Kill Game Command void KillGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kill")); + this->addTrigger("kill"sv); this->setAccessLevel(1); } @@ -3628,22 +3625,22 @@ void KillGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, st if (!parameters.empty()) { RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) { - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); } else if (target->access >= player->access) { - source->sendMessage(*player, "Error: You can not kill higher level "s + pluginInstance.getStaffTitle() + "s."_jrs); + source->sendMessage(*player, jessilib::join("Error: You can not kill higher level "sv, pluginInstance.getStaffTitle(), "s."sv)); } else { source->kill(*target); - source->sendMessage(*player, "Player has been killed."_jrs); + source->sendMessage(*player, "Player has been killed."sv); } } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: kill "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: kill "sv); } std::string_view KillGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Kills a player in the game. Syntax: kill "); + static constexpr std::string_view defaultHelp = "Kills a player in the game. Syntax: kill "sv; return defaultHelp; } @@ -3652,7 +3649,7 @@ GAME_COMMAND_INIT(KillGameCommand) // Disarm Game Command void DisarmGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("disarm")); + this->addTrigger("disarm"sv); this->setAccessLevel(1); } @@ -3660,20 +3657,20 @@ void DisarmGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, if (!parameters.empty()) { RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); else if (target->access >= player->access) - source->sendMessage(*player, "Error: You can not disarm higher level "s + pluginInstance.getStaffTitle() + "s."_jrs); + source->sendMessage(*player, jessilib::join("Error: You can not disarm higher level "sv, pluginInstance.getStaffTitle(), "s."sv)); else if (source->disarm(*target) == false) - source->sendMessage(*player, "Error: Server does not support disarms."_jrs); + source->sendMessage(*player, "Error: Server does not support disarms."sv); else - source->sendMessage(*player, "Player has been disarmed."_jrs); + source->sendMessage(*player, "Player has been disarmed."sv); } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: disarm "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: disarm "sv); } std::string_view DisarmGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Disarms all of a player's deployed objects in the game. Syntax: disarm "); + static constexpr std::string_view defaultHelp = "Disarms all of a player's deployed objects in the game. Syntax: disarm "sv; return defaultHelp; } @@ -3682,7 +3679,7 @@ GAME_COMMAND_INIT(DisarmGameCommand) // DisarmC4 Game Command void DisarmC4GameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("disarmc4")); + this->addTrigger("disarmc4"sv); this->setAccessLevel(1); } @@ -3690,20 +3687,20 @@ void DisarmC4GameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player if (!parameters.empty()) { RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); else if (target->access >= player->access) - source->sendMessage(*player, "Error: You can not disarm higher level "s + pluginInstance.getStaffTitle() + "s."_jrs); + source->sendMessage(*player, jessilib::join("Error: You can not disarm higher level "sv, pluginInstance.getStaffTitle(), "s."sv)); else if (source->disarmC4(*target) == false) - source->sendMessage(*player, "Error: Server does not support disarms."_jrs); + source->sendMessage(*player, "Error: Server does not support disarms."sv); else - source->sendMessage(*player, "Player has been disarmed."_jrs); + source->sendMessage(*player, "Player has been disarmed."sv); } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: disarmc4 "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: disarmc4 "sv); } std::string_view DisarmC4GameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Disarms all of a player's deployed mines in the game. Syntax: disarmc4 "); + static constexpr std::string_view defaultHelp = "Disarms all of a player's deployed mines in the game. Syntax: disarmc4 "sv; return defaultHelp; } @@ -3712,9 +3709,9 @@ GAME_COMMAND_INIT(DisarmC4GameCommand) // DisarmBeacon Game Command void DisarmBeaconGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("disarmb")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("disarmbeacon")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("disarmbeacons")); + this->addTrigger("disarmb"sv); + this->addTrigger("disarmbeacon"sv); + this->addTrigger("disarmbeacons"sv); this->setAccessLevel(1); } @@ -3722,20 +3719,20 @@ void DisarmBeaconGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *pl if (!parameters.empty()) { RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); else if (target->access >= player->access) - source->sendMessage(*player, "Error: You can not disarm higher level "s + pluginInstance.getStaffTitle() + "s."_jrs); + source->sendMessage(*player, jessilib::join("Error: You can not disarm higher level "sv, pluginInstance.getStaffTitle(), "s."sv)); else if (source->disarmBeacon(*target) == false) - source->sendMessage(*player, "Error: Server does not support disarms."_jrs); + source->sendMessage(*player, "Error: Server does not support disarms."sv); else - source->sendMessage(*player, "Player has been disarmed."_jrs); + source->sendMessage(*player, "Player has been disarmed."sv); } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: disarmb "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: disarmb "sv); } std::string_view DisarmBeaconGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Disarms all of a player's deployed beacons in the game. Syntax: disarmb "); + static constexpr std::string_view defaultHelp = "Disarms all of a player's deployed beacons in the game. Syntax: disarmb "sv; return defaultHelp; } @@ -3744,7 +3741,7 @@ GAME_COMMAND_INIT(DisarmBeaconGameCommand) // MineBan Game Command void MineBanGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("mineban")); + this->addTrigger("mineban"sv); this->setAccessLevel(1); } @@ -3753,21 +3750,21 @@ void MineBanGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, { RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); else if (target->access >= player->access) - source->sendMessage(*player, "Error: You can not mine-ban higher level "s + pluginInstance.getStaffTitle() + "s."_jrs); + source->sendMessage(*player, jessilib::join("Error: You can not mine-ban higher level "sv, pluginInstance.getStaffTitle(), "s."sv)); else { source->mineBan(*target); - source->sendMessage(*player, "Player can no longer place mines."_jrs); + source->sendMessage(*player, "Player can no longer place mines."sv); } } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: mineban "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: mineban "sv); } std::string_view MineBanGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Bans a player from mining for 1 game (or until they leave). Syntax: mineban "); + static constexpr std::string_view defaultHelp = "Bans a player from mining for 1 game (or until they leave). Syntax: mineban "sv; return defaultHelp; } @@ -3776,9 +3773,9 @@ GAME_COMMAND_INIT(MineBanGameCommand) // Kick Game Command void KickGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kick")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("qkick")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("k")); + this->addTrigger("kick"sv); + this->addTrigger("qkick"sv); + this->addTrigger("k"sv); this->setAccessLevel(1); } @@ -3792,26 +3789,26 @@ void KickGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, st RenX::PlayerInfo *target = source->getPlayerByPartName(split_parameters.first); if (target == nullptr) { - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); } else if (player == target) { - source->sendMessage(*player, "Error: You cannot kick yourself."_jrs); + source->sendMessage(*player, "Error: You cannot kick yourself."sv); } else if (target->access >= player->access) { - source->sendMessage(*player, "Error: You can not kick higher level "s + pluginInstance.getStaffTitle() + "s."_jrs); + source->sendMessage(*player, jessilib::join("Error: You can not kick higher level "sv, pluginInstance.getStaffTitle(), "s."sv)); } else { source->kickPlayer(*target, reason); - source->sendMessage(*player, "Player has been kicked from the game."_jrs); + source->sendMessage(*player, "Player has been kicked from the game."sv); } } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: kick [Reason]"_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: kick [Reason]"sv); } std::string_view KickGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Kicks a player from the game. Syntax: kick [Reason]"); + static constexpr std::string_view defaultHelp = "Kicks a player from the game. Syntax: kick [Reason]"sv; return defaultHelp; } @@ -3820,7 +3817,7 @@ GAME_COMMAND_INIT(KickGameCommand) // Mute Game Command void MuteGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("mute")); + this->addTrigger("mute"sv); this->setAccessLevel(1); } @@ -3833,24 +3830,24 @@ void MuteGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, st } RenX::PlayerInfo *target = source->getPlayerByPartName(split_parameters.first); if (target == nullptr) - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); else if (player == target) - source->sendMessage(*player, "Error: You cannot mute yourself."_jrs); + source->sendMessage(*player, "Error: You cannot mute yourself."sv); else if (target->access >= player->access) - source->sendMessage(*player, "Error: You can not mute higher level "s + pluginInstance.getStaffTitle() + "s."_jrs); + source->sendMessage(*player, jessilib::join("Error: You can not mute higher level "sv, pluginInstance.getStaffTitle(), "s."sv)); else { source->mute(*target); source->sendMessage(*target, "You have been muted for: "s + std::string{reason}); - source->sendMessage(*player, "Player has been muted from chat."_jrs); + source->sendMessage(*player, "Player has been muted from chat."sv); } } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: mute [Reason]"_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: mute [Reason]"sv); } std::string_view MuteGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Mutes a player from chat. Syntax: mute [Reason]"); + static constexpr std::string_view defaultHelp = "Mutes a player from chat. Syntax: mute [Reason]"sv; return defaultHelp; } @@ -3859,9 +3856,9 @@ GAME_COMMAND_INIT(MuteGameCommand) // TempBan Game Command void TempBanGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tempban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tb")); + this->addTrigger("tban"sv); + this->addTrigger("tempban"sv); + this->addTrigger("tb"sv); this->setAccessLevel(1); } @@ -3891,23 +3888,23 @@ void TempBanGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, } if (target == nullptr) - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); else if (player == target) - source->sendMessage(*player, "Error: You can't ban yourself."_jrs); + source->sendMessage(*player, "Error: You can't ban yourself."sv); else if (target->access >= player->access) - source->sendMessage(*player, "Error: You can't ban higher level "s + pluginInstance.getStaffTitle() + "s."_jrs); + source->sendMessage(*player, jessilib::join("Error: You can't ban higher level "sv, pluginInstance.getStaffTitle(), "s."sv)); else { source->banPlayer(*target, player->name, reason, duration); - source->sendMessage(*player, "Player has been temporarily banned and kicked from the game."_jrs); + source->sendMessage(*player, "Player has been temporarily banned and kicked from the game."sv); } } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: tban [Duration] [Reason]"_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: tban [Duration] [Reason]"sv); } std::string_view TempBanGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Kicks and temporarily bans a player from the game. Syntax: tban [Duration] [Reason]"); + static constexpr std::string_view defaultHelp = "Kicks and temporarily bans a player from the game. Syntax: tban [Duration] [Reason]"sv; return defaultHelp; } @@ -3916,10 +3913,10 @@ GAME_COMMAND_INIT(TempBanGameCommand) // TempChatBan Game Command void TempChatBanGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tchatban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tcban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tempchatban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("tcb")); + this->addTrigger("tchatban"sv); + this->addTrigger("tcban"sv); + this->addTrigger("tempchatban"sv); + this->addTrigger("tcb"sv); this->setAccessLevel(1); } @@ -3949,23 +3946,23 @@ void TempChatBanGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *pla } if (target == nullptr) - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); else if (player == target) - source->sendMessage(*player, "Error: You can not ban yourself."_jrs); + source->sendMessage(*player, "Error: You can not ban yourself."sv); else if (target->access >= player->access) - source->sendMessage(*player, "Error: You can not ban higher level "s + pluginInstance.getStaffTitle() + "s."_jrs); + source->sendMessage(*player, jessilib::join("Error: You can not ban higher level "sv, pluginInstance.getStaffTitle(), "s."sv)); else { source->mute(*target); RenX::banDatabase->add(source, *target, player->name, reason, duration, RenX::BanDatabase::Entry::FLAG_TYPE_CHAT); - source->sendMessage(*player, "Player has been temporarily muted and chat banned from the game."_jrs); + source->sendMessage(*player, "Player has been temporarily muted and chat banned from the game."sv); } } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: tchatban [Duration] [Reason]"_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: tchatban [Duration] [Reason]"sv); } std::string_view TempChatBanGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Mutes and temporarily chat bans a player from the game. Syntax: tchatban [Duration] [Reason]"); + static constexpr std::string_view defaultHelp = "Mutes and temporarily chat bans a player from the game. Syntax: tchatban [Duration] [Reason]"sv; return defaultHelp; } @@ -3974,10 +3971,10 @@ GAME_COMMAND_INIT(TempChatBanGameCommand) // KickBan Game Command void KickBanGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("ban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kickban")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kb")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("b")); + this->addTrigger("ban"sv); + this->addTrigger("kickban"sv); + this->addTrigger("kb"sv); + this->addTrigger("b"sv); this->setAccessLevel(2); } @@ -3990,27 +3987,27 @@ void KickBanGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, } RenX::PlayerInfo *target = source->getPlayerByPartName(split_parameters.first); if (target == nullptr) { - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); } else if (player == target) { - source->sendMessage(*player, "Error: You can not ban yourself."_jrs); + source->sendMessage(*player, "Error: You can not ban yourself."sv); } else if (target->access >= player->access) { - source->sendMessage(*player, "Error: You can not ban higher level "s + pluginInstance.getStaffTitle() + "s."_jrs); + source->sendMessage(*player, jessilib::join("Error: You can not ban higher level "sv, pluginInstance.getStaffTitle(), "s."sv)); } else { source->banPlayer(*target, player->name, reason); - source->sendMessage(*player, "Player has been banned and kicked from the game."_jrs); + source->sendMessage(*player, "Player has been banned and kicked from the game."sv); RenX::getCore()->banCheck(); } } else { - source->sendMessage(*player, "Error: Too few parameters. Syntax: ban [reason]"_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: ban [reason]"sv); } } std::string_view KickBanGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Kicks and bans a player from the game. Syntax: ban [reason]"); + static constexpr std::string_view defaultHelp = "Kicks and bans a player from the game. Syntax: ban [reason]"sv; return defaultHelp; } @@ -4019,10 +4016,10 @@ GAME_COMMAND_INIT(KickBanGameCommand) // AddBots Game Command void AddBotsGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("addbots")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("abots")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("addbot")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("abot")); + this->addTrigger("addbots"sv); + this->addTrigger("abots"sv); + this->addTrigger("addbot"sv); + this->addTrigger("abot"sv); this->setAccessLevel(1); } @@ -4033,7 +4030,7 @@ void AddBotsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, team = RenX::getTeam(split_parameters[1]); } - Jupiter::StringS cmd; + std::string cmd; switch (team) { case RenX::TeamType::GDI: @@ -4064,7 +4061,7 @@ void AddBotsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, } std::string_view AddBotsGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Adds bots to the game. Syntax: addbots [amount=1] [team]"); + static constexpr std::string_view defaultHelp = "Adds bots to the game. Syntax: addbots [amount=1] [team]"sv; return defaultHelp; } @@ -4073,20 +4070,20 @@ GAME_COMMAND_INIT(AddBotsGameCommand) // KillBots Game Command void KillBotsGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("killbots")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("kbots")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rembots")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rbots")); + this->addTrigger("killbots"sv); + this->addTrigger("kbots"sv); + this->addTrigger("rembots"sv); + this->addTrigger("rbots"sv); this->setAccessLevel(2); } void KillBotsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { - source->send(STRING_LITERAL_AS_REFERENCE("killbots")); - source->sendMessage(*player, STRING_LITERAL_AS_REFERENCE("All bots have been removed from the server.")); + source->send("killbots"sv); + source->sendMessage(*player, "All bots have been removed from the server."sv); } std::string_view KillBotsGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Removes all bots from the game. Syntax: killbots"); + static constexpr std::string_view defaultHelp = "Removes all bots from the game. Syntax: killbots"sv; return defaultHelp; } @@ -4095,8 +4092,8 @@ GAME_COMMAND_INIT(KillBotsGameCommand) // PhaseBots Game Command void PhaseBotsGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("phasebots")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pbots")); + this->addTrigger("phasebots"sv); + this->addTrigger("pbots"sv); this->setAccessLevel(1); } @@ -4104,23 +4101,23 @@ void PhaseBotsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *playe if (parameters.empty()) { if (togglePhasing(source)) - source->sendMessage(*player, STRING_LITERAL_AS_REFERENCE("Bot phasing has been enabled.")); - else source->sendMessage(*player, STRING_LITERAL_AS_REFERENCE("Bot phasing has been disabled.")); + source->sendMessage(*player, "Bot phasing has been enabled."sv); + else source->sendMessage(*player, "Bot phasing has been disabled."sv); } else if (jessilib::equalsi(parameters, "true"sv) || jessilib::equalsi(parameters, "on"sv) || jessilib::equalsi(parameters, "start"sv) || jessilib::equalsi(parameters, "1"sv)) { togglePhasing(source, true); - source->sendMessage(*player, STRING_LITERAL_AS_REFERENCE("Bot phasing has been enabled.")); + source->sendMessage(*player, "Bot phasing has been enabled."sv); } else { togglePhasing(source, false); - source->sendMessage(*player, STRING_LITERAL_AS_REFERENCE("Bot phasing has been disabled.")); + source->sendMessage(*player, "Bot phasing has been disabled."sv); } } std::string_view PhaseBotsGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Removes all bots from the game. Syntax: phasebots"); + static constexpr std::string_view defaultHelp = "Removes all bots from the game. Syntax: phasebots"sv; return defaultHelp; } @@ -4129,32 +4126,32 @@ GAME_COMMAND_INIT(PhaseBotsGameCommand) // NMode Game Command void NModeGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("nmode")); + this->addTrigger("nmode"sv); this->setAccessLevel(1); } void NModeGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { if (parameters.empty()) { - source->sendMessage(*player, "Error: Too few parameters. Syntax: nmode "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: nmode "sv); return; } RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) { - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); return; } if (!source->nmodePlayer(*target)) { - source->sendMessage(*player, "Error: Could not set player's mode."_jrs); + source->sendMessage(*player, "Error: Could not set player's mode."sv); return; } - source->sendMessage(*player, "Player's mode has been reset."_jrs); + source->sendMessage(*player, "Player's mode has been reset."sv); } std::string_view NModeGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Resets a player's mode from spectator to normal. Syntax: nmode "); + static constexpr std::string_view defaultHelp = "Resets a player's mode from spectator to normal. Syntax: nmode "sv; return defaultHelp; } @@ -4163,32 +4160,32 @@ GAME_COMMAND_INIT(NModeGameCommand) // SMode Game Command void SModeGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("smode")); + this->addTrigger("smode"sv); this->setAccessLevel(1); } void SModeGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { if (parameters.empty()) { - source->sendMessage(*player, "Error: Too few parameters. Syntax: smode "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: smode "sv); return; } RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) { - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); return; } if (!source->smodePlayer(*target)) { - source->sendMessage(*player, "Error: Could not set player's mode."_jrs); + source->sendMessage(*player, "Error: Could not set player's mode."sv); return; } - source->sendMessage(*player, "Player's mode has been reset."_jrs); + source->sendMessage(*player, "Player's mode has been reset."sv); } std::string_view SModeGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Resets a player's mode from spectator to normal. Syntax: smode "); + static constexpr std::string_view defaultHelp = "Resets a player's mode from spectator to normal. Syntax: smode "sv; return defaultHelp; } @@ -4197,9 +4194,9 @@ GAME_COMMAND_INIT(SModeGameCommand) // CancelVote Game Command void CancelVoteGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("cancelvote")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("cancelvotes")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("cv")); + this->addTrigger("cancelvote"sv); + this->addTrigger("cancelvotes"sv); + this->addTrigger("cv"sv); this->setAccessLevel(1); } @@ -4222,7 +4219,7 @@ void CancelVoteGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *play } else if (jessilib::equalsi(parameters, "nod"sv) || jessilib::equalsi(parameters, "n"sv)) { target = RenX::TeamType::Nod; } else { - source->sendMessage(*player, STRING_LITERAL_AS_REFERENCE("Error: Invalid Team. Allowed values are all/a, public/p, gdi/g, nod/n, blackhand/bh/b.")); + source->sendMessage(*player, "Error: Invalid Team. Allowed values are all/a, public/p, gdi/g, nod/n, blackhand/bh/b."sv); return; } } @@ -4238,7 +4235,7 @@ void CancelVoteGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *play } std::string_view CancelVoteGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Cancels active votes. Syntax: cancelvote [all|public|gdi|nod|blackhand]"); + static constexpr std::string_view defaultHelp = "Cancels active votes. Syntax: cancelvote [all|public|gdi|nod|blackhand]"sv; return defaultHelp; } diff --git a/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.cpp b/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.cpp index 458a6d5..997e8a9 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.cpp @@ -19,12 +19,13 @@ #include #include #include "Jupiter/IRC_Client.h" +#include "Jupiter/DataBuffer.h" #include "RenX_PlayerInfo.h" #include "RenX_BanDatabase.h" #include "RenX_Core.h" #include "RenX_Plugin.h" -using namespace Jupiter::literals; +using namespace std::literals; RenX::BanDatabase _banDatabase; RenX::BanDatabase *RenX::banDatabase = &_banDatabase; @@ -54,15 +55,15 @@ void RenX::BanDatabase::process_data(Jupiter::DataBuffer &buffer, FILE *file, fp entry->ip = buffer.pop(); entry->prefix_length = buffer.pop(); if (m_read_version >= 5U) - entry->hwid = buffer.pop(); - entry->rdns = buffer.pop(); - entry->name = buffer.pop(); - entry->banner = buffer.pop(); - entry->reason = buffer.pop(); + entry->hwid = buffer.pop(); + entry->rdns = buffer.pop(); + entry->name = buffer.pop(); + entry->banner = buffer.pop(); + entry->reason = buffer.pop(); // Read varData from buffer to entry for (size_t varData_entries = buffer.pop(); varData_entries != 0; --varData_entries) { - entry->varData[buffer.pop()] = buffer.pop(); + entry->varData[buffer.pop()] = buffer.pop(); } m_entries.push_back(std::move(entry)); @@ -177,10 +178,12 @@ void RenX::BanDatabase::add(RenX::Server *server, const RenX::PlayerInfo &player entry->reason = reason; // add plugin data - Jupiter::String pluginData; + std::string pluginData; for (Plugin* plugin : RenX::getCore()->getPlugins()) { if (plugin->RenX_OnBan(*server, player, pluginData)) { - entry->varData[plugin->getName()] = pluginData; + if (!pluginData.empty()) { + entry->varData[plugin->getName()] = pluginData; + } } } @@ -240,7 +243,7 @@ const std::vector>& RenX::BanDatabase: } bool RenX::BanDatabase::initialize() { - m_filename = static_cast(RenX::getCore()->getConfig().get("BanDB"_jrs, "Bans.db"_jrs)); + m_filename = RenX::getCore()->getConfig().get("BanDB"sv, "Bans.db"s); return this->process_file(m_filename); } diff --git a/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.h b/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.h index 2fd3a15..b87d6fa 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.h +++ b/src/Plugins/RenX/RenX.Core/RenX_BanDatabase.h @@ -22,7 +22,6 @@ #include #include #include "Jupiter/Database.h" -#include "Jupiter/String.hpp" #include "RenX.h" /** DLL Linkage Nagging */ @@ -78,7 +77,7 @@ namespace RenX */ struct RENX_API Entry { - using VarDataTableType = std::unordered_map; + using VarDataTableType = std::unordered_map>; fpos_t pos; /** Position of the entry in the database */ uint16_t flags /** Flags affecting this ban entry (See below for flags) */ = 0x00; diff --git a/src/Plugins/RenX/RenX.Core/RenX_BuildingInfo.h b/src/Plugins/RenX/RenX.Core/RenX_BuildingInfo.h index a8ff07c..f77ab1a 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_BuildingInfo.h +++ b/src/Plugins/RenX/RenX.Core/RenX_BuildingInfo.h @@ -24,7 +24,6 @@ * @brief Defines the BuildingInfo structure. */ -#include "Jupiter/String.hpp" #include "Jupiter/Config.h" #include "RenX.h" diff --git a/src/Plugins/RenX/RenX.Core/RenX_Core.cpp b/src/Plugins/RenX/RenX.Core/RenX_Core.cpp index dbcba11..1f5e274 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Core.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_Core.cpp @@ -30,7 +30,7 @@ #include "RenX_ExemptionDatabase.h" #include "RenX_Tags.h" -using namespace Jupiter::literals; +using namespace std::literals; RenX::Core pluginInstance; RenX::Core *RenXInstance = &pluginInstance; @@ -45,8 +45,8 @@ bool RenX::Core::initialize() { RenX::tags->initialize(); RenX::initTranslations(this->config); - std::string_view serverList = this->config.get("Servers"_jrs); - m_commandsFile.read(this->config.get("CommandsFile"_jrs, "RenXGameCommands.ini"_jrs)); + std::string_view serverList = this->config.get("Servers"sv); + m_commandsFile.read(this->config.get("CommandsFile"sv, "RenXGameCommands.ini"sv)); auto server_entries = jessilib::word_split_view(serverList, WHITESPACE_SV); for (const auto& entry : server_entries) { @@ -89,7 +89,7 @@ size_t RenX::Core::getServerIndex(RenX::Server *server) { } } - return Jupiter::INVALID_INDEX; + return SIZE_MAX; } RenX::Server* RenX::Core::getServer(size_t index) { @@ -137,7 +137,7 @@ size_t RenX::Core::removeServer(RenX::Server *server) { } } - return Jupiter::INVALID_INDEX; + return SIZE_MAX; } bool RenX::Core::hasServer(RenX::Server* in_server) { diff --git a/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.cpp b/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.cpp index 943f736..207574d 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.cpp @@ -18,12 +18,13 @@ #include #include "Jupiter/IRC_Client.h" +#include "Jupiter/DataBuffer.h" #include "RenX_PlayerInfo.h" #include "RenX_ExemptionDatabase.h" #include "RenX_Core.h" #include "RenX_Plugin.h" -using namespace Jupiter::literals; +using namespace std::literals; RenX::ExemptionDatabase g_exemptionDatabase; RenX::ExemptionDatabase *RenX::exemptionDatabase = &g_exemptionDatabase; @@ -40,7 +41,7 @@ void RenX::ExemptionDatabase::process_data(Jupiter::DataBuffer &buffer, FILE *fi entry->steamid = buffer.pop(); entry->ip = buffer.pop(); entry->prefix_length = buffer.pop(); - entry->setter = buffer.pop(); + entry->setter = buffer.pop(); m_entries.push_back(std::move(entry)); } @@ -167,7 +168,7 @@ const std::vector>& RenX::Exempt } bool RenX::ExemptionDatabase::initialize() { - m_filename = static_cast(RenX::getCore()->getConfig().get("ExemptionDB"_jrs, "Exemptions.db"_jrs)); + m_filename = RenX::getCore()->getConfig().get("ExemptionDB"sv, "Exemptions.db"s); return this->process_file(m_filename); } diff --git a/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.h b/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.h index 7a3964e..d63ab64 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.h +++ b/src/Plugins/RenX/RenX.Core/RenX_ExemptionDatabase.h @@ -22,7 +22,6 @@ #include #include #include "Jupiter/Database.h" -#include "Jupiter/String.hpp" #include "RenX.h" /** DLL Linkage Nagging */ diff --git a/src/Plugins/RenX/RenX.Core/RenX_Functions.cpp b/src/Plugins/RenX/RenX.Core/RenX_Functions.cpp index 2176984..d266cae 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Functions.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_Functions.cpp @@ -26,23 +26,22 @@ #include "RenX_Server.h" #include "RenX_PlayerInfo.h" -using namespace Jupiter::literals; using namespace std::literals; /** Team color translations */ -Jupiter::ReferenceString NodColor = "04"; -Jupiter::ReferenceString GDIColor = "08"; -Jupiter::ReferenceString OtherColor = "14"; +static std::string_view NodColor = "04"; +static std::string_view GDIColor = "08"; +static std::string_view OtherColor = "14"; /** Short team name translations */ -Jupiter::ReferenceString NodShortName = "Nod"; -Jupiter::ReferenceString GDIShortName = "GDI"; -Jupiter::ReferenceString OtherShortName = "N/A"; +static std::string_view NodShortName = "Nod"; +static std::string_view GDIShortName = "GDI"; +static std::string_view OtherShortName = "N/A"; /** Long team name translations */ -Jupiter::ReferenceString NodLongName = "Brotherhood of Nod"; -Jupiter::ReferenceString GDILongName = "Global Defense Initiative"; -Jupiter::ReferenceString OtherLongName = "Unknown"; +static std::string_view NodLongName = "Brotherhood of Nod"; +static std::string_view GDILongName = "Global Defense Initiative"; +static std::string_view OtherLongName = "Unknown"; /** RenegadeX RCON protocol message deliminator */ const char RenX::DelimC = '\x02'; @@ -51,304 +50,304 @@ const std::string_view RenX::DevBotName = "DevBot"sv; /** WinType translations */ -Jupiter::ReferenceString scoreWinTypeTranslation = "Domination (High Score)"; -Jupiter::ReferenceString baseWinTypeTranslation = "Conquest (Base Destruction)"; -Jupiter::ReferenceString beaconWinTypeTranslation = "Espionage (Beacon)"; -Jupiter::ReferenceString tieWinTypeTranslation = "Draw (Tie)"; -Jupiter::ReferenceString shutdownWinTypeTranslation = "Ceasefire (Shutdown)"; -Jupiter::ReferenceString surrenderWinTypeTranslation = "Forfeit (Surrender)"; -Jupiter::ReferenceString unknownWinTypeTranslation = "Aliens (Unknown)"; +static std::string_view scoreWinTypeTranslation = "Domination (High Score)"; +static std::string_view baseWinTypeTranslation = "Conquest (Base Destruction)"; +static std::string_view beaconWinTypeTranslation = "Espionage (Beacon)"; +static std::string_view tieWinTypeTranslation = "Draw (Tie)"; +static std::string_view shutdownWinTypeTranslation = "Ceasefire (Shutdown)"; +static std::string_view surrenderWinTypeTranslation = "Forfeit (Surrender)"; +static std::string_view unknownWinTypeTranslation = "Aliens (Unknown)"; /** WinType plain translations */ -Jupiter::ReferenceString scoreWinTypePlainTranslation = "High Score"; -Jupiter::ReferenceString baseWinTypePlainTranslation = "Base Destruction"; -Jupiter::ReferenceString beaconWinTypePlainTranslation = "Beacon"; -Jupiter::ReferenceString tieWinTypePlainTranslation = "Tie"; -Jupiter::ReferenceString shutdownWinTypePlainTranslation = "Shutdown"; -Jupiter::ReferenceString surrenderWinTypePlainTranslation = "Surrender"; -Jupiter::ReferenceString unknownWinTypePlainTranslation = "Unknown"; +static std::string_view scoreWinTypePlainTranslation = "High Score"; +static std::string_view baseWinTypePlainTranslation = "Base Destruction"; +static std::string_view beaconWinTypePlainTranslation = "Beacon"; +static std::string_view tieWinTypePlainTranslation = "Tie"; +static std::string_view shutdownWinTypePlainTranslation = "Shutdown"; +static std::string_view surrenderWinTypePlainTranslation = "Surrender"; +static std::string_view unknownWinTypePlainTranslation = "Unknown"; /** Vote translations */ -Jupiter::ReferenceString translated_VoteMenuChoice_AddBots = STRING_LITERAL_AS_REFERENCE("Add Bots"); -Jupiter::ReferenceString translated_VoteMenuChoice_ChangeMap = STRING_LITERAL_AS_REFERENCE("Change Map"); -Jupiter::ReferenceString translated_VoteMenuChoice_Donate = STRING_LITERAL_AS_REFERENCE("Donate"); -Jupiter::ReferenceString translated_VoteMenuChoice_Kick = STRING_LITERAL_AS_REFERENCE("Kick"); -Jupiter::ReferenceString translated_VoteMenuChoice_RemoveBots = STRING_LITERAL_AS_REFERENCE("Remove Bots"); -Jupiter::ReferenceString translated_VoteMenuChoice_RestartMatch = STRING_LITERAL_AS_REFERENCE("Restart Match"); -Jupiter::ReferenceString translated_VoteMenuChoice_StartMatch = STRING_LITERAL_AS_REFERENCE("Start Match"); -Jupiter::ReferenceString translated_VoteMenuChoice_Survey = STRING_LITERAL_AS_REFERENCE("Survey"); +static constexpr std::string_view translated_VoteMenuChoice_AddBots = "Add Bots"sv; +static constexpr std::string_view translated_VoteMenuChoice_ChangeMap = "Change Map"sv; +static constexpr std::string_view translated_VoteMenuChoice_Donate = "Donate"sv; +static constexpr std::string_view translated_VoteMenuChoice_Kick = "Kick"sv; +static constexpr std::string_view translated_VoteMenuChoice_RemoveBots = "Remove Bots"sv; +static constexpr std::string_view translated_VoteMenuChoice_RestartMatch = "Restart Match"sv; +static constexpr std::string_view translated_VoteMenuChoice_StartMatch = "Start Match"sv; +static constexpr std::string_view translated_VoteMenuChoice_Survey = "Survey"sv; /** Object / damage type translations */ /** Nod Vehicles */ -Jupiter::ReferenceString translated_Vehicle_Harvester_Nod = STRING_LITERAL_AS_REFERENCE("Nod Harvester"); -Jupiter::ReferenceString translated_Vehicle_Buggy = STRING_LITERAL_AS_REFERENCE("Buggy"); -Jupiter::ReferenceString translated_Vehicle_Artillery = STRING_LITERAL_AS_REFERENCE("Mobile Artillery"); -Jupiter::ReferenceString translated_Vehicle_APC_Nod = STRING_LITERAL_AS_REFERENCE("Nod APC"); -Jupiter::ReferenceString translated_Vehicle_LightTank = STRING_LITERAL_AS_REFERENCE("Light Tank"); -Jupiter::ReferenceString translated_Vehicle_FlameTank = STRING_LITERAL_AS_REFERENCE("Flame Tank"); -Jupiter::ReferenceString translated_Vehicle_StealthTank = STRING_LITERAL_AS_REFERENCE("Stealth Tank"); -Jupiter::ReferenceString translated_Vehicle_Chinook_Nod = STRING_LITERAL_AS_REFERENCE("Nod Chinook"); -Jupiter::ReferenceString translated_Vehicle_Apache = STRING_LITERAL_AS_REFERENCE("Apache"); - -Jupiter::ReferenceString translated_Vehicle_ReconBike = STRING_LITERAL_AS_REFERENCE("Recon Bike"); -Jupiter::ReferenceString translated_Vehicle_TickTank = STRING_LITERAL_AS_REFERENCE("Tick Tank"); +static constexpr std::string_view translated_Vehicle_Harvester_Nod = "Nod Harvester"sv; +static constexpr std::string_view translated_Vehicle_Buggy = "Buggy"sv; +static constexpr std::string_view translated_Vehicle_Artillery = "Mobile Artillery"sv; +static constexpr std::string_view translated_Vehicle_APC_Nod = "Nod APC"sv; +static constexpr std::string_view translated_Vehicle_LightTank = "Light Tank"sv; +static constexpr std::string_view translated_Vehicle_FlameTank = "Flame Tank"sv; +static constexpr std::string_view translated_Vehicle_StealthTank = "Stealth Tank"sv; +static constexpr std::string_view translated_Vehicle_Chinook_Nod = "Nod Chinook"sv; +static constexpr std::string_view translated_Vehicle_Apache = "Apache"sv; + +static constexpr std::string_view translated_Vehicle_ReconBike = "Recon Bike"sv; +static constexpr std::string_view translated_Vehicle_TickTank = "Tick Tank"sv; /** GDI Vehicles */ -Jupiter::ReferenceString translated_Vehicle_Harvester_GDI = STRING_LITERAL_AS_REFERENCE("GDI Harvester"); -Jupiter::ReferenceString translated_Vehicle_Humvee = STRING_LITERAL_AS_REFERENCE("Humvee"); -Jupiter::ReferenceString translated_Vehicle_MRLS = STRING_LITERAL_AS_REFERENCE("Mobile Rocket Launcher System"); -Jupiter::ReferenceString translated_Vehicle_APC_GDI = STRING_LITERAL_AS_REFERENCE("GDI APC"); -Jupiter::ReferenceString translated_Vehicle_MediumTank = STRING_LITERAL_AS_REFERENCE("Medium Tank"); -Jupiter::ReferenceString translated_Vehicle_MammothTank = STRING_LITERAL_AS_REFERENCE("Mammoth Tank"); -Jupiter::ReferenceString translated_Vehicle_Chinook_GDI = STRING_LITERAL_AS_REFERENCE("GDI Chinook"); -Jupiter::ReferenceString translated_Vehicle_Orca = STRING_LITERAL_AS_REFERENCE("Orca"); - -Jupiter::ReferenceString translated_Vehicle_HoverMRLS = STRING_LITERAL_AS_REFERENCE("Hover MRLS"); -Jupiter::ReferenceString translated_Vehicle_Titan = STRING_LITERAL_AS_REFERENCE("Titan"); -Jupiter::ReferenceString translated_Vehicle_Wolverine = STRING_LITERAL_AS_REFERENCE("Wolverine"); +static constexpr std::string_view translated_Vehicle_Harvester_GDI = "GDI Harvester"sv; +static constexpr std::string_view translated_Vehicle_Humvee = "Humvee"sv; +static constexpr std::string_view translated_Vehicle_MRLS = "Mobile Rocket Launcher System"sv; +static constexpr std::string_view translated_Vehicle_APC_GDI = "GDI APC"sv; +static constexpr std::string_view translated_Vehicle_MediumTank = "Medium Tank"sv; +static constexpr std::string_view translated_Vehicle_MammothTank = "Mammoth Tank"sv; +static constexpr std::string_view translated_Vehicle_Chinook_GDI = "GDI Chinook"sv; +static constexpr std::string_view translated_Vehicle_Orca = "Orca"sv; + +static constexpr std::string_view translated_Vehicle_HoverMRLS = "Hover MRLS"sv; +static constexpr std::string_view translated_Vehicle_Titan = "Titan"sv; +static constexpr std::string_view translated_Vehicle_Wolverine = "Wolverine"sv; /** Other Vehicles */ -Jupiter::ReferenceString translated_Vehicle_A10_DmgType_GattlingGun = STRING_LITERAL_AS_REFERENCE("A10 Thunderbolt Gattling Gun"); -Jupiter::ReferenceString translated_Vehicle_A10_DmgType_Bomb = STRING_LITERAL_AS_REFERENCE("A10 Thunderbolt Bomb"); -Jupiter::ReferenceString translated_Vehicle_AC130_DmgType_HeavyCannon = STRING_LITERAL_AS_REFERENCE("AC130 Heavy Cannon"); -Jupiter::ReferenceString translated_Vehicle_AC130_DmgType_AutoCannon = STRING_LITERAL_AS_REFERENCE("AC130 Auto Cannon"); +static constexpr std::string_view translated_Vehicle_A10_DmgType_GattlingGun = "A10 Thunderbolt Gattling Gun"sv; +static constexpr std::string_view translated_Vehicle_A10_DmgType_Bomb = "A10 Thunderbolt Bomb"sv; +static constexpr std::string_view translated_Vehicle_AC130_DmgType_HeavyCannon = "AC130 Heavy Cannon"sv; +static constexpr std::string_view translated_Vehicle_AC130_DmgType_AutoCannon = "AC130 Auto Cannon"sv; /** Weapons */ -Jupiter::ReferenceString translated_Weapon_HeavyPistol = STRING_LITERAL_AS_REFERENCE("Heavy Pistol"); -Jupiter::ReferenceString translated_Weapon_Carbine = STRING_LITERAL_AS_REFERENCE("Carbine"); -Jupiter::ReferenceString translated_Weapon_Airstrike_GDI = STRING_LITERAL_AS_REFERENCE("GDI Airstrike"); -Jupiter::ReferenceString translated_Weapon_Airstrike_Nod = STRING_LITERAL_AS_REFERENCE("Nod Airstrike"); -Jupiter::ReferenceString translated_Weapon_TiberiumFlechetteRifle = STRING_LITERAL_AS_REFERENCE("Tiberium Flechette Gun"); -Jupiter::ReferenceString translated_Weapon_TiberiumAutoRifle = STRING_LITERAL_AS_REFERENCE("Tiberium Automatic Rifle"); -Jupiter::ReferenceString translated_Weapon_TiberiumAutoRifle_Blue = STRING_LITERAL_AS_REFERENCE("Blue Tiberium Automatic Rifle Burst"); -Jupiter::ReferenceString translated_Weapon_EMPGrenade = STRING_LITERAL_AS_REFERENCE("EMP Grenade"); -Jupiter::ReferenceString translated_Weapon_SmokeGrenade = STRING_LITERAL_AS_REFERENCE("Smoke Grenade"); -Jupiter::ReferenceString translated_Weapon_TimedC4 = STRING_LITERAL_AS_REFERENCE("Timed C4"); -Jupiter::ReferenceString translated_Weapon_RemoteC4 = STRING_LITERAL_AS_REFERENCE("Remote C4"); -Jupiter::ReferenceString translated_Weapon_ProxyC4 = STRING_LITERAL_AS_REFERENCE("Proximity C4"); -Jupiter::ReferenceString translated_Weapon_ATMine = STRING_LITERAL_AS_REFERENCE("Anti-Tank Mine"); -Jupiter::ReferenceString translated_Weapon_IonCannonBeacon = STRING_LITERAL_AS_REFERENCE("Ion Cannon Beacon"); -Jupiter::ReferenceString translated_Weapon_NukeBeacon = STRING_LITERAL_AS_REFERENCE("Nuclear Missile Beacon"); -Jupiter::ReferenceString translated_Weapon_DeployedC4 = STRING_LITERAL_AS_REFERENCE("Timed C4"); -Jupiter::ReferenceString translated_Weapon_DeployedTimedC4 = STRING_LITERAL_AS_REFERENCE("Timed C4"); -Jupiter::ReferenceString translated_Weapon_DeployedRemoteC4 = STRING_LITERAL_AS_REFERENCE("Remote C4"); -Jupiter::ReferenceString translated_Weapon_DeployedProxyC4 = STRING_LITERAL_AS_REFERENCE("Proximity C4"); -Jupiter::ReferenceString translated_Weapon_DeployedATMine = STRING_LITERAL_AS_REFERENCE("Anti-Tank Mine"); -Jupiter::ReferenceString translated_Weapon_DeployedIonCannonBeacon = STRING_LITERAL_AS_REFERENCE("Ion Cannon Beacon"); -Jupiter::ReferenceString translated_Weapon_DeployedNukeBeacon = STRING_LITERAL_AS_REFERENCE("Nuclear Missile Beacon"); -Jupiter::ReferenceString translated_Weapon_CrateNuke = STRING_LITERAL_AS_REFERENCE("Nuclear Crate Explosion"); -Jupiter::ReferenceString translated_Weapon_DevNuke = STRING_LITERAL_AS_REFERENCE("Nuclear Dev Explosion"); +static constexpr std::string_view translated_Weapon_HeavyPistol = "Heavy Pistol"sv; +static constexpr std::string_view translated_Weapon_Carbine = "Carbine"sv; +static constexpr std::string_view translated_Weapon_Airstrike_GDI = "GDI Airstrike"sv; +static constexpr std::string_view translated_Weapon_Airstrike_Nod = "Nod Airstrike"sv; +static constexpr std::string_view translated_Weapon_TiberiumFlechetteRifle = "Tiberium Flechette Gun"sv; +static constexpr std::string_view translated_Weapon_TiberiumAutoRifle = "Tiberium Automatic Rifle"sv; +static constexpr std::string_view translated_Weapon_TiberiumAutoRifle_Blue = "Blue Tiberium Automatic Rifle Burst"sv; +static constexpr std::string_view translated_Weapon_EMPGrenade = "EMP Grenade"sv; +static constexpr std::string_view translated_Weapon_SmokeGrenade = "Smoke Grenade"sv; +static constexpr std::string_view translated_Weapon_TimedC4 = "Timed C4"sv; +static constexpr std::string_view translated_Weapon_RemoteC4 = "Remote C4"sv; +static constexpr std::string_view translated_Weapon_ProxyC4 = "Proximity C4"sv; +static constexpr std::string_view translated_Weapon_ATMine = "Anti-Tank Mine"sv; +static constexpr std::string_view translated_Weapon_IonCannonBeacon = "Ion Cannon Beacon"sv; +static constexpr std::string_view translated_Weapon_NukeBeacon = "Nuclear Missile Beacon"sv; +static constexpr std::string_view translated_Weapon_DeployedC4 = "Timed C4"sv; +static constexpr std::string_view translated_Weapon_DeployedTimedC4 = "Timed C4"sv; +static constexpr std::string_view translated_Weapon_DeployedRemoteC4 = "Remote C4"sv; +static constexpr std::string_view translated_Weapon_DeployedProxyC4 = "Proximity C4"sv; +static constexpr std::string_view translated_Weapon_DeployedATMine = "Anti-Tank Mine"sv; +static constexpr std::string_view translated_Weapon_DeployedIonCannonBeacon = "Ion Cannon Beacon"sv; +static constexpr std::string_view translated_Weapon_DeployedNukeBeacon = "Nuclear Missile Beacon"sv; +static constexpr std::string_view translated_Weapon_CrateNuke = "Nuclear Crate Explosion"sv; +static constexpr std::string_view translated_Weapon_DevNuke = "Nuclear Dev Explosion"sv; /** Projectiles */ -Jupiter::ReferenceString translated_Projectile_EMPGrenade = STRING_LITERAL_AS_REFERENCE("EMP Grenade"); -Jupiter::ReferenceString translated_Projectile_SmokeGrenade = STRING_LITERAL_AS_REFERENCE("Smoke Grenade"); +static constexpr std::string_view translated_Projectile_EMPGrenade = "EMP Grenade"sv; +static constexpr std::string_view translated_Projectile_SmokeGrenade = "Smoke Grenade"sv; /** GDI Characters */ -Jupiter::ReferenceString translated_GDI_Deadeye = STRING_LITERAL_AS_REFERENCE("Deadeye"); -Jupiter::ReferenceString translated_GDI_Engineer = STRING_LITERAL_AS_REFERENCE("GDI Engineer"); -Jupiter::ReferenceString translated_GDI_Grenadier = STRING_LITERAL_AS_REFERENCE("Grenadier"); -Jupiter::ReferenceString translated_GDI_Gunner = STRING_LITERAL_AS_REFERENCE("Gunner"); -Jupiter::ReferenceString translated_GDI_Havoc = STRING_LITERAL_AS_REFERENCE("Havoc"); -Jupiter::ReferenceString translated_GDI_Hotwire = STRING_LITERAL_AS_REFERENCE("Hotwire"); -Jupiter::ReferenceString translated_GDI_Marksman = STRING_LITERAL_AS_REFERENCE("GDI Marksman"); -Jupiter::ReferenceString translated_GDI_McFarland = STRING_LITERAL_AS_REFERENCE("McFarland"); -Jupiter::ReferenceString translated_GDI_Mobius = STRING_LITERAL_AS_REFERENCE("Mobius"); -Jupiter::ReferenceString translated_GDI_Officer = STRING_LITERAL_AS_REFERENCE("GDI Officer"); -Jupiter::ReferenceString translated_GDI_Patch = STRING_LITERAL_AS_REFERENCE("Patch"); -Jupiter::ReferenceString translated_GDI_RocketSoldier = STRING_LITERAL_AS_REFERENCE("GDI Rocket Soldier"); -Jupiter::ReferenceString translated_GDI_Shotgunner = STRING_LITERAL_AS_REFERENCE("GDI Shotgunner"); -Jupiter::ReferenceString translated_GDI_Soldier = STRING_LITERAL_AS_REFERENCE("GDI Soldier"); -Jupiter::ReferenceString translated_GDI_Sydney = STRING_LITERAL_AS_REFERENCE("Sydney"); +static constexpr std::string_view translated_GDI_Deadeye = "Deadeye"sv; +static constexpr std::string_view translated_GDI_Engineer = "GDI Engineer"sv; +static constexpr std::string_view translated_GDI_Grenadier = "Grenadier"sv; +static constexpr std::string_view translated_GDI_Gunner = "Gunner"sv; +static constexpr std::string_view translated_GDI_Havoc = "Havoc"sv; +static constexpr std::string_view translated_GDI_Hotwire = "Hotwire"sv; +static constexpr std::string_view translated_GDI_Marksman = "GDI Marksman"sv; +static constexpr std::string_view translated_GDI_McFarland = "McFarland"sv; +static constexpr std::string_view translated_GDI_Mobius = "Mobius"sv; +static constexpr std::string_view translated_GDI_Officer = "GDI Officer"sv; +static constexpr std::string_view translated_GDI_Patch = "Patch"sv; +static constexpr std::string_view translated_GDI_RocketSoldier = "GDI Rocket Soldier"sv; +static constexpr std::string_view translated_GDI_Shotgunner = "GDI Shotgunner"sv; +static constexpr std::string_view translated_GDI_Soldier = "GDI Soldier"sv; +static constexpr std::string_view translated_GDI_Sydney = "Sydney"sv; /** Nod Characters */ -Jupiter::ReferenceString translated_Nod_BlackHandSniper = STRING_LITERAL_AS_REFERENCE("Black Hand Sniper"); -Jupiter::ReferenceString translated_Nod_ChemicalTrooper = STRING_LITERAL_AS_REFERENCE("Chemical Trooper"); -Jupiter::ReferenceString translated_Nod_Engineer = STRING_LITERAL_AS_REFERENCE("Nod Engineer"); -Jupiter::ReferenceString translated_Nod_FlameTrooper = STRING_LITERAL_AS_REFERENCE("Flame Trooper"); -Jupiter::ReferenceString translated_Nod_LaserChainGunner = STRING_LITERAL_AS_REFERENCE("Laser Chain Gunner"); -Jupiter::ReferenceString translated_Nod_Marksman = STRING_LITERAL_AS_REFERENCE("Nod Marksman"); -Jupiter::ReferenceString translated_Nod_Mendoza = STRING_LITERAL_AS_REFERENCE("Mendoza"); -Jupiter::ReferenceString translated_Nod_Officer = STRING_LITERAL_AS_REFERENCE("Nod Officer"); -Jupiter::ReferenceString translated_Nod_Raveshaw = STRING_LITERAL_AS_REFERENCE("Raveshaw"); -Jupiter::ReferenceString translated_Nod_RocketSoldier = STRING_LITERAL_AS_REFERENCE("Nod Rocket Soldier"); -Jupiter::ReferenceString translated_Nod_Sakura = STRING_LITERAL_AS_REFERENCE("Sakura"); -Jupiter::ReferenceString translated_Nod_Shotgunner = STRING_LITERAL_AS_REFERENCE("Nod Shotgunner"); -Jupiter::ReferenceString translated_Nod_Soldier = STRING_LITERAL_AS_REFERENCE("Nod Soldier"); -Jupiter::ReferenceString translated_Nod_StealthBlackHand = STRING_LITERAL_AS_REFERENCE("Stealth Black Hand"); -Jupiter::ReferenceString translated_Nod_Technician = STRING_LITERAL_AS_REFERENCE("Technician"); +static constexpr std::string_view translated_Nod_BlackHandSniper = "Black Hand Sniper"sv; +static constexpr std::string_view translated_Nod_ChemicalTrooper = "Chemical Trooper"sv; +static constexpr std::string_view translated_Nod_Engineer = "Nod Engineer"sv; +static constexpr std::string_view translated_Nod_FlameTrooper = "Flame Trooper"sv; +static constexpr std::string_view translated_Nod_LaserChainGunner = "Laser Chain Gunner"sv; +static constexpr std::string_view translated_Nod_Marksman = "Nod Marksman"sv; +static constexpr std::string_view translated_Nod_Mendoza = "Mendoza"sv; +static constexpr std::string_view translated_Nod_Officer = "Nod Officer"sv; +static constexpr std::string_view translated_Nod_Raveshaw = "Raveshaw"sv; +static constexpr std::string_view translated_Nod_RocketSoldier = "Nod Rocket Soldier"sv; +static constexpr std::string_view translated_Nod_Sakura = "Sakura"sv; +static constexpr std::string_view translated_Nod_Shotgunner = "Nod Shotgunner"sv; +static constexpr std::string_view translated_Nod_Soldier = "Nod Soldier"sv; +static constexpr std::string_view translated_Nod_StealthBlackHand = "Stealth Black Hand"sv; +static constexpr std::string_view translated_Nod_Technician = "Technician"sv; /** Non-weapon damage types */ -Jupiter::ReferenceString translated_DmgType_Suicided = STRING_LITERAL_AS_REFERENCE("Suicide"); -Jupiter::ReferenceString translated_DmgType_Fell = STRING_LITERAL_AS_REFERENCE("Fall"); -Jupiter::ReferenceString translated_DmgType_Tiberium = STRING_LITERAL_AS_REFERENCE("Tiberium"); -Jupiter::ReferenceString translated_DmgType_TiberiumBleed = STRING_LITERAL_AS_REFERENCE("Tiberium Decay"); -Jupiter::ReferenceString translated_DmgType_TiberiumBleed_Blue = STRING_LITERAL_AS_REFERENCE("Blue Tiberium Decay"); -Jupiter::ReferenceString translated_DmgType_RanOver = STRING_LITERAL_AS_REFERENCE("Crushed"); +static constexpr std::string_view translated_DmgType_Suicided = "Suicide"sv; +static constexpr std::string_view translated_DmgType_Fell = "Fall"sv; +static constexpr std::string_view translated_DmgType_Tiberium = "Tiberium"sv; +static constexpr std::string_view translated_DmgType_TiberiumBleed = "Tiberium Decay"sv; +static constexpr std::string_view translated_DmgType_TiberiumBleed_Blue = "Blue Tiberium Decay"sv; +static constexpr std::string_view translated_DmgType_RanOver = "Crushed"sv; /** Infantry weapons */ -Jupiter::ReferenceString translated_DmgType_Pistol = STRING_LITERAL_AS_REFERENCE("Pistol"); -Jupiter::ReferenceString translated_DmgType_SMG = STRING_LITERAL_AS_REFERENCE("Machine Pistol"); -Jupiter::ReferenceString translated_DmgType_HeavyPistol = STRING_LITERAL_AS_REFERENCE("Heavy Pistol"); -Jupiter::ReferenceString translated_DmgType_Carbine = STRING_LITERAL_AS_REFERENCE("Carbine"); -Jupiter::ReferenceString translated_DmgType_TiberiumFlechetteRifle = STRING_LITERAL_AS_REFERENCE("Tiberium Flechette Gun"); // Not a rifle. -Jupiter::ReferenceString translated_DmgType_TiberiumAutoRifle = STRING_LITERAL_AS_REFERENCE("Tiberium Automatic Rifle"); -Jupiter::ReferenceString translated_DmgType_TiberiumAutoRifle_Blue = STRING_LITERAL_AS_REFERENCE("Blue Tiberium Automatic Rifle Burst"); -Jupiter::ReferenceString translated_DmgType_TiberiumAutoRifle_Flechette_Blue = STRING_LITERAL_AS_REFERENCE("Blue Tiberium Automatic Rifle"); - -Jupiter::ReferenceString translated_DmgType_Grenade = STRING_LITERAL_AS_REFERENCE("Grenade"); -Jupiter::ReferenceString translated_DmgType_TimedC4 = STRING_LITERAL_AS_REFERENCE("Timed C4"); -Jupiter::ReferenceString translated_DmgType_RemoteC4 = STRING_LITERAL_AS_REFERENCE("Remote C4"); -Jupiter::ReferenceString translated_DmgType_ProxyC4 = STRING_LITERAL_AS_REFERENCE("Proximity C4"); -Jupiter::ReferenceString translated_DmgType_ATMine = STRING_LITERAL_AS_REFERENCE("Anti-Tank Mine"); -Jupiter::ReferenceString translated_DmgType_EMPGrenade = STRING_LITERAL_AS_REFERENCE("EMP Grenade"); -Jupiter::ReferenceString translated_DmgType_BurnC4 = STRING_LITERAL_AS_REFERENCE("C4 Burn"); -Jupiter::ReferenceString translated_DmgType_FireBleed = STRING_LITERAL_AS_REFERENCE("Fire Burn"); // Caused by C4 or flame weapons - -Jupiter::ReferenceString translated_DmgType_AutoRifle = STRING_LITERAL_AS_REFERENCE("Automatic Rifle"); -Jupiter::ReferenceString translated_DmgType_Shotgun = STRING_LITERAL_AS_REFERENCE("Shotgun"); -Jupiter::ReferenceString translated_DmgType_FlameThrower = STRING_LITERAL_AS_REFERENCE("Flamethrower"); -Jupiter::ReferenceString translated_DmgType_GrenadeLauncher = STRING_LITERAL_AS_REFERENCE("Grenade Launcher"); -Jupiter::ReferenceString translated_DmgType_MarksmanRifle = STRING_LITERAL_AS_REFERENCE("Marksman's Rifle"); - -Jupiter::ReferenceString translated_DmgType_ChainGun = STRING_LITERAL_AS_REFERENCE("Chain Gun"); -Jupiter::ReferenceString translated_DmgType_MissileLauncher = STRING_LITERAL_AS_REFERENCE("Missile Launcher"); -Jupiter::ReferenceString translated_DmgType_MissileLauncher_Alt = STRING_LITERAL_AS_REFERENCE("Missile Launcher"); -Jupiter::ReferenceString translated_DmgType_ChemicalThrower = STRING_LITERAL_AS_REFERENCE("Chemical Spray Gun"); -Jupiter::ReferenceString translated_DmgType_LaserRifle = STRING_LITERAL_AS_REFERENCE("Laser Rifle"); -Jupiter::ReferenceString translated_DmgType_TacticalRifle = STRING_LITERAL_AS_REFERENCE("Tactical Rifle"); -Jupiter::ReferenceString translated_DmgType_RocketLauncher = STRING_LITERAL_AS_REFERENCE("Rocket Launcher"); -Jupiter::ReferenceString translated_DmgType_LaserChainGun = STRING_LITERAL_AS_REFERENCE("Laser Chain Gun"); -Jupiter::ReferenceString translated_DmgType_FlakCannon = STRING_LITERAL_AS_REFERENCE("Flak"); -Jupiter::ReferenceString translated_DmgType_FlakCannon_Alt = STRING_LITERAL_AS_REFERENCE("Concentrated Flak"); -Jupiter::ReferenceString translated_DmgType_SniperRifle = STRING_LITERAL_AS_REFERENCE("Sniper Rifle"); -Jupiter::ReferenceString translated_DmgType_RamjetRifle = STRING_LITERAL_AS_REFERENCE("Ramjet"); -Jupiter::ReferenceString translated_DmgType_Railgun = STRING_LITERAL_AS_REFERENCE("Railgun"); -Jupiter::ReferenceString translated_DmgType_PersonalIonCannon = STRING_LITERAL_AS_REFERENCE("Personal Ion Cannon"); -Jupiter::ReferenceString translated_DmgType_VoltRifle = STRING_LITERAL_AS_REFERENCE("Volt Rifle"); -Jupiter::ReferenceString translated_DmgType_VoltRifle_Alt = STRING_LITERAL_AS_REFERENCE("Volt Rifle Burst"); -Jupiter::ReferenceString translated_DmgType_VoltAutoRifle = STRING_LITERAL_AS_REFERENCE("Volt Automatic Rifle"); -Jupiter::ReferenceString translated_DmgType_VoltAutoRifle_Alt = STRING_LITERAL_AS_REFERENCE("Volt Automatic Rifle Burst"); +static constexpr std::string_view translated_DmgType_Pistol = "Pistol"sv; +static constexpr std::string_view translated_DmgType_SMG = "Machine Pistol"sv; +static constexpr std::string_view translated_DmgType_HeavyPistol = "Heavy Pistol"sv; +static constexpr std::string_view translated_DmgType_Carbine = "Carbine"sv; +static constexpr std::string_view translated_DmgType_TiberiumFlechetteRifle = "Tiberium Flechette Gun"sv; // Not a rifle. +static constexpr std::string_view translated_DmgType_TiberiumAutoRifle = "Tiberium Automatic Rifle"sv; +static constexpr std::string_view translated_DmgType_TiberiumAutoRifle_Blue = "Blue Tiberium Automatic Rifle Burst"sv; +static constexpr std::string_view translated_DmgType_TiberiumAutoRifle_Flechette_Blue = "Blue Tiberium Automatic Rifle"sv; + +static constexpr std::string_view translated_DmgType_Grenade = "Grenade"sv; +static constexpr std::string_view translated_DmgType_TimedC4 = "Timed C4"sv; +static constexpr std::string_view translated_DmgType_RemoteC4 = "Remote C4"sv; +static constexpr std::string_view translated_DmgType_ProxyC4 = "Proximity C4"sv; +static constexpr std::string_view translated_DmgType_ATMine = "Anti-Tank Mine"sv; +static constexpr std::string_view translated_DmgType_EMPGrenade = "EMP Grenade"sv; +static constexpr std::string_view translated_DmgType_BurnC4 = "C4 Burn"sv; +static constexpr std::string_view translated_DmgType_FireBleed = "Fire Burn"sv; // Caused by C4 or flame weapons + +static constexpr std::string_view translated_DmgType_AutoRifle = "Automatic Rifle"sv; +static constexpr std::string_view translated_DmgType_Shotgun = "Shotgun"sv; +static constexpr std::string_view translated_DmgType_FlameThrower = "Flamethrower"sv; +static constexpr std::string_view translated_DmgType_GrenadeLauncher = "Grenade Launcher"sv; +static constexpr std::string_view translated_DmgType_MarksmanRifle = "Marksman's Rifle"sv; + +static constexpr std::string_view translated_DmgType_ChainGun = "Chain Gun"sv; +static constexpr std::string_view translated_DmgType_MissileLauncher = "Missile Launcher"sv; +static constexpr std::string_view translated_DmgType_MissileLauncher_Alt = "Missile Launcher"sv; +static constexpr std::string_view translated_DmgType_ChemicalThrower = "Chemical Spray Gun"sv; +static constexpr std::string_view translated_DmgType_LaserRifle = "Laser Rifle"sv; +static constexpr std::string_view translated_DmgType_TacticalRifle = "Tactical Rifle"sv; +static constexpr std::string_view translated_DmgType_RocketLauncher = "Rocket Launcher"sv; +static constexpr std::string_view translated_DmgType_LaserChainGun = "Laser Chain Gun"sv; +static constexpr std::string_view translated_DmgType_FlakCannon = "Flak"sv; +static constexpr std::string_view translated_DmgType_FlakCannon_Alt = "Concentrated Flak"sv; +static constexpr std::string_view translated_DmgType_SniperRifle = "Sniper Rifle"sv; +static constexpr std::string_view translated_DmgType_RamjetRifle = "Ramjet"sv; +static constexpr std::string_view translated_DmgType_Railgun = "Railgun"sv; +static constexpr std::string_view translated_DmgType_PersonalIonCannon = "Personal Ion Cannon"sv; +static constexpr std::string_view translated_DmgType_VoltRifle = "Volt Rifle"sv; +static constexpr std::string_view translated_DmgType_VoltRifle_Alt = "Volt Rifle Burst"sv; +static constexpr std::string_view translated_DmgType_VoltAutoRifle = "Volt Automatic Rifle"sv; +static constexpr std::string_view translated_DmgType_VoltAutoRifle_Alt = "Volt Automatic Rifle Burst"sv; /** Vehicle weapons */ -Jupiter::ReferenceString translated_DmgType_MammothTank_Missile = STRING_LITERAL_AS_REFERENCE("Mammoth Tank Missile"); -Jupiter::ReferenceString translated_DmgType_MammothTank_Cannon = STRING_LITERAL_AS_REFERENCE("Mammoth Tank Cannon"); -Jupiter::ReferenceString translated_DmgType_Orca_Missile = STRING_LITERAL_AS_REFERENCE("Orca Missile"); -Jupiter::ReferenceString translated_DmgType_Orca_Gun = STRING_LITERAL_AS_REFERENCE("Orca Gun"); -Jupiter::ReferenceString translated_DmgType_Orca_Passenger = STRING_LITERAL_AS_REFERENCE("Orca Passenger Missile"); -Jupiter::ReferenceString translated_DmgType_Apache_Rocket = STRING_LITERAL_AS_REFERENCE("Apache Rocket"); -Jupiter::ReferenceString translated_DmgType_Apache_Gun = STRING_LITERAL_AS_REFERENCE("Apache Gun"); -Jupiter::ReferenceString translated_DmgType_Apache_Passenger = STRING_LITERAL_AS_REFERENCE("Apache Passenger Missile"); +static constexpr std::string_view translated_DmgType_MammothTank_Missile = "Mammoth Tank Missile"sv; +static constexpr std::string_view translated_DmgType_MammothTank_Cannon = "Mammoth Tank Cannon"sv; +static constexpr std::string_view translated_DmgType_Orca_Missile = "Orca Missile"sv; +static constexpr std::string_view translated_DmgType_Orca_Gun = "Orca Gun"sv; +static constexpr std::string_view translated_DmgType_Orca_Passenger = "Orca Passenger Missile"sv; +static constexpr std::string_view translated_DmgType_Apache_Rocket = "Apache Rocket"sv; +static constexpr std::string_view translated_DmgType_Apache_Gun = "Apache Gun"sv; +static constexpr std::string_view translated_DmgType_Apache_Passenger = "Apache Passenger Missile"sv; /** Other weapons */ -Jupiter::ReferenceString translated_DmgType_AGT_MG = STRING_LITERAL_AS_REFERENCE("Machine Gun"); -Jupiter::ReferenceString translated_DmgType_AGT_Rocket = STRING_LITERAL_AS_REFERENCE("Rocket"); -Jupiter::ReferenceString translated_DmgType_Obelisk = STRING_LITERAL_AS_REFERENCE("Obelisk Laser"); -Jupiter::ReferenceString translated_DmgType_GuardTower = STRING_LITERAL_AS_REFERENCE("Guard Tower"); -Jupiter::ReferenceString translated_DmgType_Turret = STRING_LITERAL_AS_REFERENCE("Turret"); -Jupiter::ReferenceString translated_DmgType_SAMSite = STRING_LITERAL_AS_REFERENCE("SAM Site"); -Jupiter::ReferenceString translated_DmgType_AATower = STRING_LITERAL_AS_REFERENCE("Anti-Air Guard Tower"); -Jupiter::ReferenceString translated_DmgType_GunEmpl = STRING_LITERAL_AS_REFERENCE("Gun Emplacement Gattling Gun"); -Jupiter::ReferenceString translated_DmgType_GunEmpl_Alt = STRING_LITERAL_AS_REFERENCE("Gun Emplacement Automatic Cannon"); -Jupiter::ReferenceString translated_DmgType_RocketEmpl_Swarm = STRING_LITERAL_AS_REFERENCE("Rocket Emplacement Swarm Missile"); -Jupiter::ReferenceString translated_DmgType_RocketEmpl_Missile = STRING_LITERAL_AS_REFERENCE("Rocket Emplacement Hellfire Missile"); -Jupiter::ReferenceString translated_DmgType_Nuke = STRING_LITERAL_AS_REFERENCE("Nuclear Missile Strike"); -Jupiter::ReferenceString translated_DmgType_IonCannon = STRING_LITERAL_AS_REFERENCE("Ion Cannon Strike"); +static constexpr std::string_view translated_DmgType_AGT_MG = "Machine Gun"sv; +static constexpr std::string_view translated_DmgType_AGT_Rocket = "Rocket"sv; +static constexpr std::string_view translated_DmgType_Obelisk = "Obelisk Laser"sv; +static constexpr std::string_view translated_DmgType_GuardTower = "Guard Tower"sv; +static constexpr std::string_view translated_DmgType_Turret = "Turret"sv; +static constexpr std::string_view translated_DmgType_SAMSite = "SAM Site"sv; +static constexpr std::string_view translated_DmgType_AATower = "Anti-Air Guard Tower"sv; +static constexpr std::string_view translated_DmgType_GunEmpl = "Gun Emplacement Gattling Gun"sv; +static constexpr std::string_view translated_DmgType_GunEmpl_Alt = "Gun Emplacement Automatic Cannon"sv; +static constexpr std::string_view translated_DmgType_RocketEmpl_Swarm = "Rocket Emplacement Swarm Missile"sv; +static constexpr std::string_view translated_DmgType_RocketEmpl_Missile = "Rocket Emplacement Hellfire Missile"sv; +static constexpr std::string_view translated_DmgType_Nuke = "Nuclear Missile Strike"sv; +static constexpr std::string_view translated_DmgType_IonCannon = "Ion Cannon Strike"sv; /** Nod Vehicles */ -Jupiter::ReferenceString translated_DmgType_Harvester_Nod = STRING_LITERAL_AS_REFERENCE("Nod Harvester"); -Jupiter::ReferenceString translated_DmgType_Buggy = STRING_LITERAL_AS_REFERENCE("Buggy"); -Jupiter::ReferenceString translated_DmgType_Artillery = STRING_LITERAL_AS_REFERENCE("Mobile Artillery"); -Jupiter::ReferenceString translated_DmgType_APC_Nod = STRING_LITERAL_AS_REFERENCE("Nod APC"); -Jupiter::ReferenceString translated_DmgType_LightTank = STRING_LITERAL_AS_REFERENCE("Light Tank"); -Jupiter::ReferenceString translated_DmgType_FlameTank = STRING_LITERAL_AS_REFERENCE("Flame Tank"); -Jupiter::ReferenceString translated_DmgType_StealthTank = STRING_LITERAL_AS_REFERENCE("Stealth Tank"); -Jupiter::ReferenceString translated_DmgType_Chinook_Nod = STRING_LITERAL_AS_REFERENCE("Nod Chinook"); -Jupiter::ReferenceString translated_DmgType_Apache = STRING_LITERAL_AS_REFERENCE("Apache"); - -Jupiter::ReferenceString translated_Vehicle_ReconBike_DmgType = STRING_LITERAL_AS_REFERENCE("Recon Bike"); -Jupiter::ReferenceString translated_Vehicle_TickTank_DmgType = STRING_LITERAL_AS_REFERENCE("Tick Tank"); +static constexpr std::string_view translated_DmgType_Harvester_Nod = "Nod Harvester"sv; +static constexpr std::string_view translated_DmgType_Buggy = "Buggy"sv; +static constexpr std::string_view translated_DmgType_Artillery = "Mobile Artillery"sv; +static constexpr std::string_view translated_DmgType_APC_Nod = "Nod APC"sv; +static constexpr std::string_view translated_DmgType_LightTank = "Light Tank"sv; +static constexpr std::string_view translated_DmgType_FlameTank = "Flame Tank"sv; +static constexpr std::string_view translated_DmgType_StealthTank = "Stealth Tank"sv; +static constexpr std::string_view translated_DmgType_Chinook_Nod = "Nod Chinook"sv; +static constexpr std::string_view translated_DmgType_Apache = "Apache"sv; + +static constexpr std::string_view translated_Vehicle_ReconBike_DmgType = "Recon Bike"sv; +static constexpr std::string_view translated_Vehicle_TickTank_DmgType = "Tick Tank"sv; /** GDI Vehicles */ -Jupiter::ReferenceString translated_DmgType_Harvester_GDI = STRING_LITERAL_AS_REFERENCE("GDI Harvester"); -Jupiter::ReferenceString translated_DmgType_Humvee = STRING_LITERAL_AS_REFERENCE("Humvee"); -Jupiter::ReferenceString translated_DmgType_MRLS = STRING_LITERAL_AS_REFERENCE("Mobile Rocket Launcher System"); -Jupiter::ReferenceString translated_DmgType_APC_GDI = STRING_LITERAL_AS_REFERENCE("GDI APC"); -Jupiter::ReferenceString translated_DmgType_MediumTank = STRING_LITERAL_AS_REFERENCE("Medium Tank"); -Jupiter::ReferenceString translated_DmgType_MammothTank = STRING_LITERAL_AS_REFERENCE("Mammoth Tank"); -Jupiter::ReferenceString translated_DmgType_Chinook_GDI = STRING_LITERAL_AS_REFERENCE("GDI Chinook"); -Jupiter::ReferenceString translated_DmgType_Orca = STRING_LITERAL_AS_REFERENCE("Orca"); - -Jupiter::ReferenceString translated_Vehicle_HoverMRLS_DmgType = STRING_LITERAL_AS_REFERENCE("Hover MRLS"); -Jupiter::ReferenceString translated_Vehicle_Titan_DmgType = STRING_LITERAL_AS_REFERENCE("Titan"); -Jupiter::ReferenceString translated_Vehicle_Wolverine_DmgType = STRING_LITERAL_AS_REFERENCE("Wolverine"); +static constexpr std::string_view translated_DmgType_Harvester_GDI = "GDI Harvester"sv; +static constexpr std::string_view translated_DmgType_Humvee = "Humvee"sv; +static constexpr std::string_view translated_DmgType_MRLS = "Mobile Rocket Launcher System"sv; +static constexpr std::string_view translated_DmgType_APC_GDI = "GDI APC"sv; +static constexpr std::string_view translated_DmgType_MediumTank = "Medium Tank"sv; +static constexpr std::string_view translated_DmgType_MammothTank = "Mammoth Tank"sv; +static constexpr std::string_view translated_DmgType_Chinook_GDI = "GDI Chinook"sv; +static constexpr std::string_view translated_DmgType_Orca = "Orca"sv; + +static constexpr std::string_view translated_Vehicle_HoverMRLS_DmgType = "Hover MRLS"sv; +static constexpr std::string_view translated_Vehicle_Titan_DmgType = "Titan"sv; +static constexpr std::string_view translated_Vehicle_Wolverine_DmgType = "Wolverine"sv; /** Other Vehicles */ -Jupiter::ReferenceString translated_DmgType_A10_Missile = STRING_LITERAL_AS_REFERENCE("A10 Missile"); +static constexpr std::string_view translated_DmgType_A10_Missile = "A10 Missile"sv; /** Nod structures */ -Jupiter::ReferenceString translated_Building_HandOfNod = STRING_LITERAL_AS_REFERENCE("Hand of Nod"); -Jupiter::ReferenceString translated_Building_AirTower = STRING_LITERAL_AS_REFERENCE("Airstrip"); -Jupiter::ReferenceString translated_Building_Airstrip = STRING_LITERAL_AS_REFERENCE("Airstrip"); -Jupiter::ReferenceString translated_Building_Refinery_Nod = STRING_LITERAL_AS_REFERENCE("Nod Refinery"); -Jupiter::ReferenceString translated_Building_PowerPlant_Nod = STRING_LITERAL_AS_REFERENCE("Nod Power Plant"); -Jupiter::ReferenceString translated_Building_HandOfNod_Internals = STRING_LITERAL_AS_REFERENCE("Hand of Nod"); -Jupiter::ReferenceString translated_Building_AirTower_Internals = STRING_LITERAL_AS_REFERENCE("Airstrip"); -Jupiter::ReferenceString translated_Building_Airstrip_Internals = STRING_LITERAL_AS_REFERENCE("Airstrip"); -Jupiter::ReferenceString translated_Building_Refinery_Nod_Internals = STRING_LITERAL_AS_REFERENCE("Nod Refinery"); -Jupiter::ReferenceString translated_Building_PowerPlant_Nod_Internals = STRING_LITERAL_AS_REFERENCE("Nod Power Plant"); +static constexpr std::string_view translated_Building_HandOfNod = "Hand of Nod"sv; +static constexpr std::string_view translated_Building_AirTower = "Airstrip"sv; +static constexpr std::string_view translated_Building_Airstrip = "Airstrip"sv; +static constexpr std::string_view translated_Building_Refinery_Nod = "Nod Refinery"sv; +static constexpr std::string_view translated_Building_PowerPlant_Nod = "Nod Power Plant"sv; +static constexpr std::string_view translated_Building_HandOfNod_Internals = "Hand of Nod"sv; +static constexpr std::string_view translated_Building_AirTower_Internals = "Airstrip"sv; +static constexpr std::string_view translated_Building_Airstrip_Internals = "Airstrip"sv; +static constexpr std::string_view translated_Building_Refinery_Nod_Internals = "Nod Refinery"sv; +static constexpr std::string_view translated_Building_PowerPlant_Nod_Internals = "Nod Power Plant"sv; /** GDI structures */ -Jupiter::ReferenceString translated_Building_Barracks = STRING_LITERAL_AS_REFERENCE("Barracks"); -Jupiter::ReferenceString translated_Building_WeaponsFactory = STRING_LITERAL_AS_REFERENCE("Weapons Factory"); -Jupiter::ReferenceString translated_Building_Refinery_GDI = STRING_LITERAL_AS_REFERENCE("GDI Refinery"); -Jupiter::ReferenceString translated_Building_PowerPlant_GDI = STRING_LITERAL_AS_REFERENCE("GDI Power Plant"); -Jupiter::ReferenceString translated_Building_Barracks_Internals = STRING_LITERAL_AS_REFERENCE("Barracks"); -Jupiter::ReferenceString translated_Building_WeaponsFactory_Internals = STRING_LITERAL_AS_REFERENCE("Weapons Factory"); -Jupiter::ReferenceString translated_Building_Refinery_GDI_Internals = STRING_LITERAL_AS_REFERENCE("GDI Refinery"); -Jupiter::ReferenceString translated_Building_PowerPlant_GDI_Internals = STRING_LITERAL_AS_REFERENCE("GDI Power Plant"); +static constexpr std::string_view translated_Building_Barracks = "Barracks"sv; +static constexpr std::string_view translated_Building_WeaponsFactory = "Weapons Factory"sv; +static constexpr std::string_view translated_Building_Refinery_GDI = "GDI Refinery"sv; +static constexpr std::string_view translated_Building_PowerPlant_GDI = "GDI Power Plant"sv; +static constexpr std::string_view translated_Building_Barracks_Internals = "Barracks"sv; +static constexpr std::string_view translated_Building_WeaponsFactory_Internals = "Weapons Factory"sv; +static constexpr std::string_view translated_Building_Refinery_GDI_Internals = "GDI Refinery"sv; +static constexpr std::string_view translated_Building_PowerPlant_GDI_Internals = "GDI Power Plant"sv; /** Defense structures */ -Jupiter::ReferenceString translated_Building_AdvancedGuardTower = STRING_LITERAL_AS_REFERENCE("Advanced Guard Tower"); -Jupiter::ReferenceString translated_Building_Obelisk = STRING_LITERAL_AS_REFERENCE("Obelisk of Light"); -Jupiter::ReferenceString translated_Building_AdvancedGuardTower_Internals = STRING_LITERAL_AS_REFERENCE("Advanced Guard Tower"); -Jupiter::ReferenceString translated_Building_Obelisk_Internals = STRING_LITERAL_AS_REFERENCE("Obelisk of Light"); +static constexpr std::string_view translated_Building_AdvancedGuardTower = "Advanced Guard Tower"sv; +static constexpr std::string_view translated_Building_Obelisk = "Obelisk of Light"sv; +static constexpr std::string_view translated_Building_AdvancedGuardTower_Internals = "Advanced Guard Tower"sv; +static constexpr std::string_view translated_Building_Obelisk_Internals = "Obelisk of Light"sv; /** Other structures */ -Jupiter::ReferenceString translated_Building_Silo = STRING_LITERAL_AS_REFERENCE("Tiberium Silo"); -Jupiter::ReferenceString translated_Building_CommCentre = STRING_LITERAL_AS_REFERENCE("Communications Center"); -Jupiter::ReferenceString translated_Building_Silo_Internals = STRING_LITERAL_AS_REFERENCE("Tiberium Silo"); -Jupiter::ReferenceString translated_Building_CommCentre_Internals = STRING_LITERAL_AS_REFERENCE("Communications Center"); +static constexpr std::string_view translated_Building_Silo = "Tiberium Silo"sv; +static constexpr std::string_view translated_Building_CommCentre = "Communications Center"sv; +static constexpr std::string_view translated_Building_Silo_Internals = "Tiberium Silo"sv; +static constexpr std::string_view translated_Building_CommCentre_Internals = "Communications Center"sv; /** Fort structures */ -Jupiter::ReferenceString translated_CapturableMCT_Fort = STRING_LITERAL_AS_REFERENCE("Fort"); -Jupiter::ReferenceString translated_CapturableMCT_MC = STRING_LITERAL_AS_REFERENCE("Medical Center"); -Jupiter::ReferenceString translated_CapturableMCT_Fort_Internals = STRING_LITERAL_AS_REFERENCE("Fort"); -Jupiter::ReferenceString translated_CapturableMCT_MC_Internals = STRING_LITERAL_AS_REFERENCE("Medical Center"); +static constexpr std::string_view translated_CapturableMCT_Fort = "Fort"sv; +static constexpr std::string_view translated_CapturableMCT_MC = "Medical Center"sv; +static constexpr std::string_view translated_CapturableMCT_Fort_Internals = "Fort"sv; +static constexpr std::string_view translated_CapturableMCT_MC_Internals = "Medical Center"sv; /** Defences */ -Jupiter::ReferenceString translated_Defence_GuardTower = STRING_LITERAL_AS_REFERENCE("Guard Tower"); -Jupiter::ReferenceString translated_Defence_Turret = STRING_LITERAL_AS_REFERENCE("Turret"); -Jupiter::ReferenceString translated_Defence_SAMSite = STRING_LITERAL_AS_REFERENCE("SAM Site"); -Jupiter::ReferenceString translated_Defence_AATower = STRING_LITERAL_AS_REFERENCE("Anti-Air Guard Tower"); -Jupiter::ReferenceString translated_Defence_GunEmplacement = STRING_LITERAL_AS_REFERENCE("Gun Emplacement"); -Jupiter::ReferenceString translated_Defence_RocketEmplacement = STRING_LITERAL_AS_REFERENCE("Rocket Emplacement"); +static constexpr std::string_view translated_Defence_GuardTower = "Guard Tower"sv; +static constexpr std::string_view translated_Defence_Turret = "Turret"sv; +static constexpr std::string_view translated_Defence_SAMSite = "SAM Site"sv; +static constexpr std::string_view translated_Defence_AATower = "Anti-Air Guard Tower"sv; +static constexpr std::string_view translated_Defence_GunEmplacement = "Gun Emplacement"sv; +static constexpr std::string_view translated_Defence_RocketEmplacement = "Rocket Emplacement"sv; /** Defences - Sentinels */ -Jupiter::ReferenceString translated_Sentinel_AGT_MG_Base = STRING_LITERAL_AS_REFERENCE("Advanced Guard Tower"); -Jupiter::ReferenceString translated_Sentinel_AGT_Rockets_Base = STRING_LITERAL_AS_REFERENCE("Advanced Guard Tower"); -Jupiter::ReferenceString translated_Sentinel_Obelisk_Laser_Base = STRING_LITERAL_AS_REFERENCE("Obelisk of Light"); +static constexpr std::string_view translated_Sentinel_AGT_MG_Base = "Advanced Guard Tower"sv; +static constexpr std::string_view translated_Sentinel_AGT_Rockets_Base = "Advanced Guard Tower"sv; +static constexpr std::string_view translated_Sentinel_Obelisk_Laser_Base = "Obelisk of Light"sv; /** UT damage types */ -Jupiter::ReferenceString translated_UTDmgType_VehicleExplosion = STRING_LITERAL_AS_REFERENCE("Vehicle Explosion"); -Jupiter::ReferenceString translated_UTDmgType_Drowned = STRING_LITERAL_AS_REFERENCE("Drowned"); +static constexpr std::string_view translated_UTDmgType_VehicleExplosion = "Vehicle Explosion"sv; +static constexpr std::string_view translated_UTDmgType_Drowned = "Drowned"sv; /** Beacons */ -Jupiter::ReferenceString translated_IonCannonBeacon = STRING_LITERAL_AS_REFERENCE("Ion Cannon Beacon"); -Jupiter::ReferenceString translated_NukeBeacon = STRING_LITERAL_AS_REFERENCE("Nuclear Strike Beacon"); -Jupiter::ReferenceString translated_KillZDamageType = STRING_LITERAL_AS_REFERENCE("Kill Zone"); +static constexpr std::string_view translated_IonCannonBeacon = "Ion Cannon Beacon"sv; +static constexpr std::string_view translated_NukeBeacon = "Nuclear Strike Beacon"sv; +static constexpr std::string_view translated_KillZDamageType = "Kill Zone"sv; RenX::TeamType RenX::getTeam(int teamNum) { @@ -433,16 +432,12 @@ RenX::TeamType RenX::getEnemy(TeamType team) } } -std::string_view RenX::getCharacter(std::string_view chr) -{ - static Jupiter::ReferenceString object; - - object = chr; - if (object.find(STRING_LITERAL_AS_REFERENCE("Rx_")) == 0) +std::string_view RenX::getCharacter(std::string_view object) { + if (object.find("Rx_"sv) == 0) object.remove_prefix(3); - if (object.find(STRING_LITERAL_AS_REFERENCE("InventoryManager_")) == 0) + if (object.find("InventoryManager_"sv) == 0) object.remove_prefix(17); - else if (object.find(STRING_LITERAL_AS_REFERENCE("FamilyInfo_")) == 0) + else if (object.find("FamilyInfo_"sv) == 0) object.remove_prefix(11); return object; @@ -450,7 +445,7 @@ std::string_view RenX::getCharacter(std::string_view chr) std::string_view translateCharacter(std::string_view object) { - if (object.find(STRING_LITERAL_AS_REFERENCE("GDI_")) == 0) + if (object.find("GDI_"sv) == 0) { object.remove_prefix(4); if (object == "Deadeye"sv) return translated_GDI_Deadeye; @@ -469,7 +464,7 @@ std::string_view translateCharacter(std::string_view object) if (object == "Soldier"sv) return translated_GDI_Soldier; if (object == "Sydney"sv) return translated_GDI_Sydney; } - else if (object.find(STRING_LITERAL_AS_REFERENCE("Nod_")) == 0) + else if (object.find("Nod_"sv) == 0) { object.remove_prefix(4); if (object == "BlackHandSniper"sv) return translated_Nod_BlackHandSniper; @@ -492,26 +487,26 @@ std::string_view translateCharacter(std::string_view object) return object; } -std::string_view RenX::translateName(std::string_view obj) -{ +// TODO: Use a map... +std::string_view RenX::translateName(std::string_view obj) { if (obj.empty()) - return ""_jrs; + return ""sv; - Jupiter::ReferenceString iniTranslation = RenX::getCore()->getConfig()["Name"_jrs].get(obj); + std::string_view iniTranslation = RenX::getCore()->getConfig()["Name"sv].get(obj); if (!iniTranslation.empty()) return iniTranslation; - Jupiter::ReferenceString object = obj; + std::string_view object = obj; - if (object.find(STRING_LITERAL_AS_REFERENCE("nBab_")) == 0) + if (object.find("nBab_"sv) == 0) object.remove_prefix(5); - if (object.find(STRING_LITERAL_AS_REFERENCE("Rx_")) == 0) + if (object.find("Rx_"sv) == 0) object.remove_prefix(3); - else if (object.find(STRING_LITERAL_AS_REFERENCE("TS_")) == 0) + else if (object.find("TS_"sv) == 0) object.remove_prefix(3); - if (object.find(STRING_LITERAL_AS_REFERENCE("Vehicle_")) == 0) + if (object.find("Vehicle_"sv) == 0) { object.remove_prefix(8); @@ -549,7 +544,7 @@ std::string_view RenX::translateName(std::string_view obj) if (object == "AC130_DmgType_HeavyCannon"sv) return translated_Vehicle_AC130_DmgType_HeavyCannon; if (object == "AC130_DmgType_AutoCannon"sv) return translated_Vehicle_AC130_DmgType_AutoCannon; } - else if (object.find(STRING_LITERAL_AS_REFERENCE("Weapon_")) == 0) + else if (object.find("Weapon_"sv) == 0) { object.remove_prefix(7); if (object == "HeavyPistol"sv) return translated_Weapon_HeavyPistol; @@ -576,23 +571,23 @@ std::string_view RenX::translateName(std::string_view obj) if (object == "DeployedNukeBeacon"sv) return translated_Weapon_DeployedNukeBeacon; if (object == "CrateNuke"sv) return translated_Weapon_CrateNuke; } - else if (object.find(STRING_LITERAL_AS_REFERENCE("Projectile_")) == 0) + else if (object.find("Projectile_"sv) == 0) { object.remove_prefix(11); if (object == "EMPGrenade"sv) return translated_Projectile_EMPGrenade; if (object == "SmokeGrenade"sv) return translated_Projectile_SmokeGrenade; } - else if (object.find(STRING_LITERAL_AS_REFERENCE("InventoryManager_")) == 0) + else if (object.find("InventoryManager_"sv) == 0) { object.remove_prefix(17); return translateCharacter(object); } - else if (object.find(STRING_LITERAL_AS_REFERENCE("FamilyInfo_")) == 0) + else if (object.find("FamilyInfo_"sv) == 0) { object.remove_prefix(11); return translateCharacter(object); } - else if (object.find(STRING_LITERAL_AS_REFERENCE("DmgType_")) == 0) + else if (object.find("DmgType_"sv) == 0) { object.remove_prefix(8); @@ -704,7 +699,7 @@ std::string_view RenX::translateName(std::string_view obj) /** Other Vehicles */ if (object == "A10_Missile"sv) return translated_DmgType_A10_Missile; } - else if (object.find(STRING_LITERAL_AS_REFERENCE("Building_")) == 0) + else if (object.find("Building_"sv) == 0) { object.remove_prefix(9); /** Nod structures */ @@ -741,7 +736,7 @@ std::string_view RenX::translateName(std::string_view obj) if (object == "Silo_Internals"sv) return translated_Building_Silo_Internals; if (object == "CommCentre_Internals"sv) return translated_Building_CommCentre_Internals; } - else if (object.find(STRING_LITERAL_AS_REFERENCE("CapturableMCT_")) == 0) + else if (object.find("CapturableMCT_"sv) == 0) { object.remove_prefix(14); if (object == "Fort"sv) return translated_CapturableMCT_Fort; @@ -749,7 +744,7 @@ std::string_view RenX::translateName(std::string_view obj) if (object == "Fort_Internals"sv) return translated_CapturableMCT_Fort_Internals; if (object == "MC_Internals"sv) return translated_CapturableMCT_MC_Internals; } - else if (object.find(STRING_LITERAL_AS_REFERENCE("Defence_")) == 0) + else if (object.find("Defence_"sv) == 0) { object.remove_prefix(8); if (object == "GuardTower"sv) return translated_Defence_GuardTower; @@ -759,20 +754,20 @@ std::string_view RenX::translateName(std::string_view obj) if (object == "GunEmplacement"sv) return translated_Defence_GunEmplacement; if (object == "RocketEmplacement"sv) return translated_Defence_RocketEmplacement; } - else if (object.find(STRING_LITERAL_AS_REFERENCE("Sentinel_")) == 0) + else if (object.find("Sentinel_"sv) == 0) { object.remove_prefix(9); if (object == "AGT_MG_Base"sv) return translated_Sentinel_AGT_MG_Base; if (object == "AGT_Rockets_Base"sv) return translated_Sentinel_AGT_Rockets_Base; if (object == "Obelisk_Laser_Base"sv) return translated_Sentinel_Obelisk_Laser_Base; } - else if (object.find(STRING_LITERAL_AS_REFERENCE("UTDmgType_")) == 0) + else if (object.find("UTDmgType_"sv) == 0) { object.remove_prefix(10); if (object == "VehicleExplosion"sv) return translated_UTDmgType_VehicleExplosion; if (object == "Drowned"sv) return translated_UTDmgType_Drowned; } - else if (object.find(STRING_LITERAL_AS_REFERENCE("VoteMenuChoice_")) == 0) + else if (object.find("VoteMenuChoice_"sv) == 0) { object.remove_prefix(15); if (object == "AddBots"sv) return translated_VoteMenuChoice_AddBots; @@ -836,44 +831,44 @@ std::string_view RenX::translateWinTypePlain(RenX::WinType winType) void RenX::initTranslations(Jupiter::Config &translationsFile) { - NodColor = translationsFile["TeamColor"_jrs].get("Nod"_jrs, "04"_jrs); - GDIColor = translationsFile["TeamColor"_jrs].get("GDI"_jrs, "08"_jrs); - OtherColor = translationsFile["TeamColor"_jrs].get("Other"_jrs, "14"_jrs); - - NodShortName = translationsFile["ShortTeamName"_jrs].get("Nod"_jrs, "Nod"_jrs); - GDIShortName = translationsFile["ShortTeamName"_jrs].get("GDI"_jrs, "GDI"_jrs); - OtherShortName = translationsFile["ShortTeamName"_jrs].get("Other"_jrs, "N/A"_jrs); - NodLongName = translationsFile["LongTeamName"_jrs].get("Nod"_jrs, "Brotherhood of Nod"_jrs); - GDILongName = translationsFile["LongTeamName"_jrs].get("GDI"_jrs, "Global Defense Initiative"_jrs); - OtherLongName = translationsFile["LongTeamName"_jrs].get("Other"_jrs, "Unknown"_jrs); - - scoreWinTypeTranslation = translationsFile["WinType"_jrs].get("Score"_jrs, "Domination (High Score)"_jrs); - baseWinTypeTranslation = translationsFile["WinType"_jrs].get("Base"_jrs, "Conquest (Base Destruction)"_jrs); - beaconWinTypeTranslation = translationsFile["WinType"_jrs].get("Beacon"_jrs, "Espionage (Beacon)"_jrs); - tieWinTypeTranslation = translationsFile["WinType"_jrs].get("Tie"_jrs, "Draw (Tie)"_jrs); - shutdownWinTypeTranslation = translationsFile["WinType"_jrs].get("Shutdown"_jrs, "Ceasefire (Shutdown)"_jrs); - surrenderWinTypeTranslation = translationsFile["WinType"_jrs].get("Surrender"_jrs, "Forfeit (Surrender)"_jrs); - unknownWinTypeTranslation = translationsFile["WinType"_jrs].get("Unknown"_jrs, "Aliens (Unknown)"_jrs); - - scoreWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Score"_jrs, "High Score"_jrs); - baseWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Base"_jrs, "Base Destruction"_jrs); - beaconWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Beacon"_jrs, "Beacon"_jrs); - tieWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Tie"_jrs, "Tie"_jrs); - shutdownWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Shutdown"_jrs, "Shutdown"_jrs); - surrenderWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Surrender"_jrs, "Surrender"_jrs); - unknownWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Unknown"_jrs, "Unknown"_jrs); + NodColor = translationsFile["TeamColor"sv].get("Nod"sv, "04"sv); + GDIColor = translationsFile["TeamColor"sv].get("GDI"sv, "08"sv); + OtherColor = translationsFile["TeamColor"sv].get("Other"sv, "14"sv); + + NodShortName = translationsFile["ShortTeamName"sv].get("Nod"sv, "Nod"sv); + GDIShortName = translationsFile["ShortTeamName"sv].get("GDI"sv, "GDI"sv); + OtherShortName = translationsFile["ShortTeamName"sv].get("Other"sv, "N/A"sv); + NodLongName = translationsFile["LongTeamName"sv].get("Nod"sv, "Brotherhood of Nod"sv); + GDILongName = translationsFile["LongTeamName"sv].get("GDI"sv, "Global Defense Initiative"sv); + OtherLongName = translationsFile["LongTeamName"sv].get("Other"sv, "Unknown"sv); + + scoreWinTypeTranslation = translationsFile["WinType"sv].get("Score"sv, "Domination (High Score)"sv); + baseWinTypeTranslation = translationsFile["WinType"sv].get("Base"sv, "Conquest (Base Destruction)"sv); + beaconWinTypeTranslation = translationsFile["WinType"sv].get("Beacon"sv, "Espionage (Beacon)"sv); + tieWinTypeTranslation = translationsFile["WinType"sv].get("Tie"sv, "Draw (Tie)"sv); + shutdownWinTypeTranslation = translationsFile["WinType"sv].get("Shutdown"sv, "Ceasefire (Shutdown)"sv); + surrenderWinTypeTranslation = translationsFile["WinType"sv].get("Surrender"sv, "Forfeit (Surrender)"sv); + unknownWinTypeTranslation = translationsFile["WinType"sv].get("Unknown"sv, "Aliens (Unknown)"sv); + + scoreWinTypePlainTranslation = translationsFile["WinTypePlain"sv].get("Score"sv, "High Score"sv); + baseWinTypePlainTranslation = translationsFile["WinTypePlain"sv].get("Base"sv, "Base Destruction"sv); + beaconWinTypePlainTranslation = translationsFile["WinTypePlain"sv].get("Beacon"sv, "Beacon"sv); + tieWinTypePlainTranslation = translationsFile["WinTypePlain"sv].get("Tie"sv, "Tie"sv); + shutdownWinTypePlainTranslation = translationsFile["WinTypePlain"sv].get("Shutdown"sv, "Shutdown"sv); + surrenderWinTypePlainTranslation = translationsFile["WinTypePlain"sv].get("Surrender"sv, "Surrender"sv); + unknownWinTypePlainTranslation = translationsFile["WinTypePlain"sv].get("Unknown"sv, "Unknown"sv); } -Jupiter::String RenX::getFormattedPlayerName(const RenX::PlayerInfo &player) +std::string RenX::getFormattedPlayerName(const RenX::PlayerInfo &player) { - Jupiter::String r = player.formatNamePrefix; + std::string r = player.formatNamePrefix; r += IRCCOLOR; r += RenX::getTeamColor(player.team); r += player.name; return r; } -Jupiter::StringS RenX::formatGUID(const RenX::Map &map) +std::string RenX::formatGUID(const RenX::Map &map) { return string_printf("%.16llX%.16llX", map.guid[0], map.guid[1]); } @@ -883,12 +878,12 @@ std::chrono::milliseconds RenX::getServerTime(const RenX::PlayerInfo &player) return std::chrono::duration_cast(std::chrono::steady_clock::now() - player.joinTime); } -Jupiter::StringS RenX::default_uuid_func(RenX::PlayerInfo &player) +std::string RenX::default_uuid_func(RenX::PlayerInfo &player) { if (player.steamid != 0U) return string_printf("0x%.16llX", player.steamid); - return Jupiter::StringS(); + return std::string(); } double RenX::getKillDeathRatio(const RenX::PlayerInfo &player, bool includeSuicides) diff --git a/src/Plugins/RenX/RenX.Core/RenX_Functions.h b/src/Plugins/RenX/RenX.Core/RenX_Functions.h index 94af090..0a2d663 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Functions.h +++ b/src/Plugins/RenX/RenX.Core/RenX_Functions.h @@ -26,7 +26,6 @@ #include #include "Jupiter/Config.h" -#include "Jupiter/String.hpp" #include "RenX.h" #include "RenX_Map.h" @@ -135,7 +134,7 @@ namespace RenX * @param player Data of the player * @return IRC-ready version of the player's name. */ - RENX_API Jupiter::String getFormattedPlayerName(const RenX::PlayerInfo &player); + RENX_API std::string getFormattedPlayerName(const RenX::PlayerInfo &player); /** * @brief Creates a string containing a human-readable version of a map's GUID @@ -143,7 +142,7 @@ namespace RenX * @param map Map containing the GUID to interpret * @return Human-readable map GUID */ - RENX_API Jupiter::StringS formatGUID(const RenX::Map &map); + RENX_API std::string formatGUID(const RenX::Map &map); /** * @brief Calculates for how many seconds a player has been in the server. @@ -160,7 +159,7 @@ namespace RenX * @param player Player to calculate UUID of * @return UUID of the player based on their steam ID. */ - RENX_API Jupiter::StringS default_uuid_func(RenX::PlayerInfo &player); + RENX_API std::string default_uuid_func(RenX::PlayerInfo &player); /** * @brief Calculates a player's Kill-Death ratio, based on their data. diff --git a/src/Plugins/RenX/RenX.Core/RenX_GameCommand.cpp b/src/Plugins/RenX/RenX.Core/RenX_GameCommand.cpp index 1059901..bf11df2 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_GameCommand.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_GameCommand.cpp @@ -19,6 +19,8 @@ #include "RenX_GameCommand.h" #include "RenX_Server.h" +using namespace std::literals; + std::vector g_GameMasterCommandList; std::vector &RenX::GameMasterCommandList = g_GameMasterCommandList; @@ -82,14 +84,12 @@ void RenX::BasicGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *pla } std::string_view RenX::BasicGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Returns a basic text string."); + static constexpr std::string_view defaultHelp = "Returns a basic text string."sv; if (m_help_message.empty()) { return defaultHelp; } - static Jupiter::ReferenceString please_delete_this_later_jessica; - please_delete_this_later_jessica = m_help_message; - return please_delete_this_later_jessica; + return m_help_message; } RenX::BasicGameCommand *RenX::BasicGameCommand::copy() { diff --git a/src/Plugins/RenX/RenX.Core/RenX_GameCommand.h b/src/Plugins/RenX/RenX.Core/RenX_GameCommand.h index 05f482a..41a2fd5 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_GameCommand.h +++ b/src/Plugins/RenX/RenX.Core/RenX_GameCommand.h @@ -25,7 +25,6 @@ */ #include "Jupiter/Command.h" -#include "Jupiter/String.hpp" #include "RenX.h" #include "RenX_Core.h" // getCore(). diff --git a/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.cpp b/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.cpp index 1f6e4f1..86c8499 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.cpp @@ -16,7 +16,9 @@ * Written by Jessica James */ +#include #include "jessilib/unicode.hpp" +#include "Jupiter/DataBuffer.h" #include "RenX_LadderDatabase.h" #include "RenX_Server.h" #include "RenX_PlayerInfo.h" @@ -144,7 +146,7 @@ void RenX::LadderDatabase::process_data(Jupiter::DataBuffer &buffer, FILE *file, entry->most_recent_ip = buffer.pop(); entry->last_game = buffer.pop(); - entry->most_recent_name = buffer.pop(); + entry->most_recent_name = buffer.pop(); // push data to list if (m_head == nullptr) { @@ -206,7 +208,7 @@ std::pair RenX::LadderDatabase::getPlayer return std::pair(itr, index); } } - return std::pair(nullptr, Jupiter::INVALID_INDEX); + return std::pair(nullptr, SIZE_MAX); } RenX::LadderDatabase::Entry *RenX::LadderDatabase::getPlayerEntryByName(std::string_view name) const { @@ -227,7 +229,7 @@ std::pair RenX::LadderDatabase::getPlayer } } - return std::pair(nullptr, Jupiter::INVALID_INDEX); + return std::pair(nullptr, SIZE_MAX); } RenX::LadderDatabase::Entry *RenX::LadderDatabase::getPlayerEntryByPartName(std::string_view name) const { @@ -248,7 +250,7 @@ std::pair RenX::LadderDatabase::getPlayer } } - return std::pair(nullptr, Jupiter::INVALID_INDEX); + return std::pair(nullptr, SIZE_MAX); } std::forward_list RenX::LadderDatabase::getPlayerEntriesByPartName(std::string_view name, size_t max) const { @@ -593,11 +595,11 @@ void RenX::LadderDatabase::updateLadder(RenX::Server &server, const RenX::TeamTy if (m_output_times) { - Jupiter::StringS str = string_printf("Ladder: %zu entries sorted in %f seconds; Database written in %f seconds." ENDL, + std::string str = string_printf("Ladder: %zu entries sorted in %f seconds; Database written in %f seconds." ENDL, getEntries(), static_cast(sort_duration.count()) * (static_cast(std::chrono::steady_clock::duration::period::num) / static_cast(std::chrono::steady_clock::duration::period::den) * static_cast(std::chrono::seconds::duration::period::den / std::chrono::seconds::duration::period::num)), static_cast(write_duration.count()) * (static_cast(std::chrono::steady_clock::duration::period::num) / static_cast(std::chrono::steady_clock::duration::period::den) * static_cast(std::chrono::seconds::duration::period::den / std::chrono::seconds::duration::period::num))); - std::cout << std::string_view{str} << std::endl; + std::cout << str << std::endl; server.sendLogChan(str); } } diff --git a/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.h b/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.h index aa3ee57..4a75d2b 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.h +++ b/src/Plugins/RenX/RenX.Core/RenX_LadderDatabase.h @@ -22,7 +22,6 @@ #include #include #include "Jupiter/Database.h" -#include "Jupiter/String.hpp" #include "RenX.h" /** DLL Linkage Nagging */ diff --git a/src/Plugins/RenX/RenX.Core/RenX_Map.h b/src/Plugins/RenX/RenX.Core/RenX_Map.h index 7020233..dbd26f8 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Map.h +++ b/src/Plugins/RenX/RenX.Core/RenX_Map.h @@ -24,7 +24,7 @@ * @brief Defines the RenX Map class */ -#include "Jupiter/String.hpp" +#include #include "RenX.h" /** DLL Linkage Nagging */ diff --git a/src/Plugins/RenX/RenX.Core/RenX_PlayerInfo.h b/src/Plugins/RenX/RenX.Core/RenX_PlayerInfo.h index 8c71186..164cac2 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_PlayerInfo.h +++ b/src/Plugins/RenX/RenX.Core/RenX_PlayerInfo.h @@ -27,8 +27,6 @@ #include #include #include -#include "Jupiter/Reference_String.h" -#include "Jupiter/String.hpp" #include "Jupiter/Config.h" #include "RenX.h" @@ -51,10 +49,10 @@ namespace RenX // TODO: Add backpack std::string name; std::string ip; - Jupiter::StringS adminType; + std::string adminType; std::string uuid; - Jupiter::StringS character; - Jupiter::StringS vehicle; + std::string character; + std::string vehicle; std::string hwid; uint64_t steamid = 0; uint32_t ip32 = 0; @@ -103,8 +101,8 @@ namespace RenX void start_resolve_rdns(); bool rdns_pending = false; - mutable Jupiter::StringS gamePrefix; - mutable Jupiter::StringS formatNamePrefix; + mutable std::string gamePrefix; + mutable std::string formatNamePrefix; mutable int access = 0; mutable Jupiter::Config varData; // TODO: use jessilib::object instead @@ -112,7 +110,7 @@ namespace RenX std::shared_ptr m_rdns_ptr; // Needs synchronization across threads }; - static std::string_view rdns_pending{ "RDNS_PENDING" }; + static constexpr std::string_view rdns_pending{ "RDNS_PENDING" }; } /** Re-enable warnings */ diff --git a/src/Plugins/RenX/RenX.Core/RenX_Plugin.cpp b/src/Plugins/RenX/RenX.Core/RenX_Plugin.cpp index cba48ac..237fc97 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Plugin.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_Plugin.cpp @@ -73,7 +73,7 @@ void RenX::Plugin::RenX_OnServerDisconnect(Server &, RenX::DisconnectReason) { return; } -bool RenX::Plugin::RenX_OnBan(Server &, const PlayerInfo &, Jupiter::StringType &) { +bool RenX::Plugin::RenX_OnBan(Server &, const PlayerInfo &, std::string &) { return false; } diff --git a/src/Plugins/RenX/RenX.Core/RenX_Plugin.h b/src/Plugins/RenX/RenX.Core/RenX_Plugin.h index 501f3b3..fefa8dc 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Plugin.h +++ b/src/Plugins/RenX/RenX.Core/RenX_Plugin.h @@ -25,7 +25,6 @@ */ #include "Jupiter/Plugin.h" -#include "Jupiter/String_Type.h" #include "RenX.h" namespace RenX @@ -54,7 +53,7 @@ namespace RenX virtual void RenX_OnServerCreate(Server &server); virtual void RenX_OnServerFullyConnected(Server &server); virtual void RenX_OnServerDisconnect(Server &server, RenX::DisconnectReason reason); - virtual bool RenX_OnBan(Server &server, const PlayerInfo &player, Jupiter::StringType &data); + virtual bool RenX_OnBan(Server &server, const PlayerInfo &player, std::string &data); virtual void RenX_OnCommandTriggered(Server& server, std::string_view trigger, RenX::PlayerInfo& player, std::string_view parameters, GameCommand& command); /** Player type logs */ diff --git a/src/Plugins/RenX/RenX.Core/RenX_Server.cpp b/src/Plugins/RenX/RenX.Core/RenX_Server.cpp index cc804a8..47226e5 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Server.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_Server.cpp @@ -21,7 +21,6 @@ #include "jessilib/word_split.hpp" #include "jessilib/unicode.hpp" #include "jessilib/unicode_sequence.hpp" -#include "Jupiter/String.hpp" #include "ServerManager.h" #include "IRC_Bot.h" #include "RenX_Server.h" @@ -34,7 +33,6 @@ #include "RenX_ExemptionDatabase.h" #include "RenX_Tags.h" -using namespace Jupiter::literals; using namespace std::literals; // This could probably be templated but I really just want this done quickly right this moment so I can purge ArrayList @@ -60,7 +58,7 @@ int RenX::Server::think() { } else if (m_awaitingPong && std::chrono::steady_clock::now() - m_lastActivity >= m_pingTimeoutThreshold) { // ping timeout // Ping timeout; disconnect immediately - sendLogChan(STRING_LITERAL_AS_REFERENCE(IRCCOLOR "04[Error]" IRCCOLOR " Disconnected from Renegade-X server (ping timeout).")); + sendLogChan(IRCCOLOR "04[Error]" IRCCOLOR " Disconnected from Renegade-X server (ping timeout)."sv); disconnect(RenX::DisconnectReason::PingTimeout); } else { @@ -269,7 +267,7 @@ int RenX::Server::sendSocket(std::string_view text) { } int RenX::Server::sendMessage(std::string_view message) { - Jupiter::String msg = RenX::escapifyRCON(message); + std::string msg = RenX::escapifyRCON(message); if (m_neverSay) { int result = 0; if (this->players.size() != 0) { @@ -442,13 +440,14 @@ RenX::PlayerInfo *RenX::Server::getPlayerByPartNameFast(std::string_view partNam return nullptr; } -Jupiter::StringS RenX::Server::formatSteamID(const RenX::PlayerInfo &player) const { +std::string RenX::Server::formatSteamID(const RenX::PlayerInfo &player) const { return formatSteamID(player.steamid); } -Jupiter::StringS RenX::Server::formatSteamID(uint64_t id) const { - if (id == 0) - return ""_jrs; +std::string RenX::Server::formatSteamID(uint64_t id) const { + if (id == 0) { + return ""s; + } switch (m_steamFormat) { @@ -649,7 +648,7 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) { } if (last_to_expire[6] != nullptr) { // Alert IRC_Bot *server; - Jupiter::String fmtName = RenX::getFormattedPlayerName(player); + std::string fmtName = RenX::getFormattedPlayerName(player); std::string user_message = string_printf(IRCCOLOR "04[Alert] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is marked for monitoring by %.*s for: \"%.*s\". Please keep an eye on them in ", fmtName.size(), fmtName.data(), last_to_expire[6]->banner.size(), last_to_expire[6]->banner.data(), last_to_expire[6]->reason.size(), last_to_expire[6]->reason.data()); std::string channel_message = string_printf(IRCCOLOR "04[Alert] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is marked for monitoring by %.*s for: \"%.*s\"." IRCCOLOR, fmtName.size(), @@ -677,7 +676,7 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) { void RenX::Server::banPlayer(int id, std::string_view banner, std::string_view reason) { if (m_rconBan) { - Jupiter::String out_reason = RenX::escapifyRCON(reason); + std::string out_reason = RenX::escapifyRCON(reason); sendSocket(string_printf("ckickban pid%d %.*s\n", id, out_reason.size(), out_reason.data())); } else { @@ -696,7 +695,7 @@ void RenX::Server::banPlayer(const RenX::PlayerInfo &player, std::string_view ba if (length == std::chrono::seconds::zero()) { if (m_rconBan) { - Jupiter::String out_reason = RenX::escapifyRCON(reason); + std::string out_reason = RenX::escapifyRCON(reason); sendSocket(string_printf("ckickban pid%d %.*s\n", player.id, out_reason.size(), out_reason.data())); } @@ -756,12 +755,12 @@ bool RenX::Server::fetchClientList() { m_lastClientListUpdate = std::chrono::steady_clock::now(); // TODO: remove all support for rconVersion < 4 if (m_rconVersion >= 4) { - return sendSocket("cclientvarlist KILLS DEATHS SCORE CREDITS CHARACTER VEHICLE PING ADMIN STEAM IP HWID PLAYERLOG\n"_jrs) > 0 - && sendSocket("cbotvarlist KILLS DEATHS SCORE CREDITS CHARACTER VEHICLE PLAYERLOG\n"_jrs) > 0; + return sendSocket("cclientvarlist KILLS DEATHS SCORE CREDITS CHARACTER VEHICLE PING ADMIN STEAM IP HWID PLAYERLOG\n"sv) > 0 + && sendSocket("cbotvarlist KILLS DEATHS SCORE CREDITS CHARACTER VEHICLE PLAYERLOG\n"sv) > 0; } - return sendSocket("cclientvarlist KILLS\xA0""DEATHS\xA0""SCORE\xA0""CREDITS\xA0""CHARACTER\xA0""VEHICLE\xA0""PING\xA0""ADMIN\xA0""STEAM\xA0""IP\xA0""PLAYERLOG\n"_jrs) > 0 - && sendSocket("cbotvarlist KILLS\xA0""DEATHS\xA0""SCORE\xA0""CREDITS\xA0""CHARACTER\xA0""VEHICLE\xA0""PLAYERLOG\n"_jrs) > 0; + return sendSocket("cclientvarlist KILLS\xA0""DEATHS\xA0""SCORE\xA0""CREDITS\xA0""CHARACTER\xA0""VEHICLE\xA0""PING\xA0""ADMIN\xA0""STEAM\xA0""IP\xA0""PLAYERLOG\n"sv) > 0 + && sendSocket("cbotvarlist KILLS\xA0""DEATHS\xA0""SCORE\xA0""CREDITS\xA0""CHARACTER\xA0""VEHICLE\xA0""PLAYERLOG\n"sv) > 0; } bool RenX::Server::updateClientList() { @@ -770,16 +769,16 @@ bool RenX::Server::updateClientList() { int result = 0; if (this->players.size() != getBotCount()) { if (m_rconVersion >= 4) - result = sendSocket("cclientvarlist ID SCORE CREDITS PING\n"_jrs) > 0; + result = sendSocket("cclientvarlist ID SCORE CREDITS PING\n"sv) > 0; else - result = sendSocket("cclientvarlist ID\xA0""SCORE\xA0""CREDITS\xA0""PING\n"_jrs) > 0; + result = sendSocket("cclientvarlist ID\xA0""SCORE\xA0""CREDITS\xA0""PING\n"sv) > 0; } if (getBotCount() != 0) { if (m_rconVersion >= 4) - result |= sendSocket("cbotvarlist ID SCORE CREDITS\n"_jrs) > 0; + result |= sendSocket("cbotvarlist ID SCORE CREDITS\n"sv) > 0; else - result |= sendSocket("cbotvarlist ID\xA0""SCORE\xA0""CREDITS\n"_jrs) > 0; + result |= sendSocket("cbotvarlist ID\xA0""SCORE\xA0""CREDITS\n"sv) > 0; } return result != 0; @@ -787,12 +786,12 @@ bool RenX::Server::updateClientList() { bool RenX::Server::updateBuildingList() { m_lastBuildingListUpdate = std::chrono::steady_clock::now(); - return sendSocket("cbinfo\n"_jrs) > 0; + return sendSocket("cbinfo\n"sv) > 0; } bool RenX::Server::gameover() { m_gameover_when_empty = false; - return send("endmap"_jrs) > 0; + return send("endmap"sv) > 0; } void RenX::Server::gameover(std::chrono::seconds delay) { @@ -838,20 +837,20 @@ bool RenX::Server::unloadMutator(std::string_view mutator) { bool RenX::Server::cancelVote(const RenX::TeamType team) { switch (team) { default: - return send("cancelvote -1"_jrs) > 0; + return send("cancelvote -1"sv) > 0; case TeamType::GDI: - return send("cancelvote 0"_jrs) > 0; + return send("cancelvote 0"sv) > 0; case TeamType::Nod: - return send("cancelvote 1"_jrs) > 0; + return send("cancelvote 1"sv) > 0; } } bool RenX::Server::swapTeams() { - return send("swapteams"_jrs) > 0; + return send("swapteams"sv) > 0; } bool RenX::Server::recordDemo() { - return send("recorddemo"_jrs) > 0; + return send("recorddemo"sv) > 0; } bool RenX::Server::mute(const RenX::PlayerInfo &player) { @@ -1080,7 +1079,7 @@ RenX::GameCommand *RenX::Server::triggerCommand(std::string_view trigger, RenX:: command->trigger(this, &player, parameters); } else { - sendMessage(player, "Access Denied."_jrs); + sendMessage(player, "Access Denied."sv); } // TODO: avoiding modifying behavior for now, but this probably doesn't need to be called on access denied @@ -1197,12 +1196,13 @@ void RenX::Server::sendPubChan(const char *fmt, ...) const { void RenX::Server::sendPubChan(std::string_view msg) const { std::string_view prefix = getPrefix(); if (!prefix.empty()) { - Jupiter::String m(msg.size() + prefix.size() + 1); - m.set(prefix); - m += ' '; - m += msg; + std::string message; + message.reserve(msg.size() + prefix.size() + 1); + message = prefix; + message += ' '; + message += msg; for (size_t i = 0; i != serverManager->size(); i++) { - serverManager->getServer(i)->messageChannels(m_logChanType, m); + serverManager->getServer(i)->messageChannels(m_logChanType, message); } return; @@ -1231,12 +1231,13 @@ void RenX::Server::sendAdmChan(const char *fmt, ...) const { void RenX::Server::sendAdmChan(std::string_view msg) const { std::string_view prefix = getPrefix(); if (!prefix.empty()) { - Jupiter::String m(msg.size() + prefix.size() + 1); - m.set(prefix); - m += ' '; - m += msg; + std::string message; + message.reserve(msg.size() + prefix.size() + 1); + message = prefix; + message += ' '; + message += msg; for (size_t i = 0; i != serverManager->size(); i++) { - serverManager->getServer(i)->messageChannels(m_adminLogChanType, m); + serverManager->getServer(i)->messageChannels(m_adminLogChanType, message); } return; @@ -1269,15 +1270,16 @@ void RenX::Server::sendLogChan(std::string_view msg) const { IRC_Bot *server; std::string_view prefix = getPrefix(); if (!prefix.empty()) { - Jupiter::String m(msg.size() + prefix.size() + 1); - m.set(prefix); - m += ' '; - m += msg; + std::string message; + message.reserve(msg.size() + prefix.size() + 1); + message = prefix; + message += ' '; + message += msg; for (size_t i = 0; i != serverManager->size(); i++) { server = serverManager->getServer(i); - server->messageChannels(m_logChanType, m); - server->messageChannels(m_adminLogChanType, m); + server->messageChannels(m_logChanType, message); + server->messageChannels(m_adminLogChanType, message); } return; @@ -1303,7 +1305,7 @@ void RenX::PlayerInfo::start_resolve_rdns() { } struct parsed_player_token { - Jupiter::ReferenceString name; + std::string_view name; RenX::TeamType team{}; int id{}; bool isBot{}; @@ -1322,7 +1324,7 @@ void RenX::Server::processLine(std::string_view line) { auto& xPlugins = RenX::getCore()->getPlugins(); auto tokens_view = jessilib::split_view(in_line, m_rconVersion == 3 ? RenX::DelimC3 : RenX::DelimC); - std::vector tokens; + std::vector tokens; for (auto& token : tokens_view) { std::string parsed_token = std::string(token); @@ -1331,7 +1333,7 @@ void RenX::Server::processLine(std::string_view line) { } // Safety checker for getting a token at an index - auto getToken = [&tokens](size_t index) -> Jupiter::ReferenceString { + auto getToken = [&tokens](size_t index) -> std::string_view { if (index < tokens.size()) { return tokens[index]; } @@ -1346,7 +1348,7 @@ void RenX::Server::processLine(std::string_view line) { }; auto tokens_as_command_table = [&tokens, this]() { - std::unordered_map table; + std::unordered_map table; size_t total_tokens = std::min(tokens.size(), m_commandListFormat.size()); for (size_t index = 0; index != total_tokens; ++index) { table[m_commandListFormat[index]] = tokens[index]; @@ -1405,8 +1407,8 @@ void RenX::Server::processLine(std::string_view line) { std::string_view prefix = getCommandPrefix(); if ((player.ban_flags & RenX::BanDatabase::Entry::FLAG_TYPE_BOT) == 0 && message.find(prefix) == 0 && message.size() != prefix.size()) { - Jupiter::ReferenceString command; - Jupiter::ReferenceString parameters; + std::string_view command; + std::string_view parameters; if (containsSymbol(WHITESPACE, message[prefix.size()])) { auto split = jessilib::word_split_n_view(message, WHITESPACE_SV, 2); @@ -1442,7 +1444,7 @@ void RenX::Server::processLine(std::string_view line) { return result; } - Jupiter::ReferenceString idToken = player_tokens[1]; + std::string_view idToken = player_tokens[1]; result.name = player_tokens[2]; result.team = RenX::getTeam(player_tokens[0]); if (!idToken.empty() && idToken[0] == 'b') { @@ -1583,7 +1585,7 @@ void RenX::Server::processLine(std::string_view line) { if (parsed_token.id == 0 && parsed_token.name.empty()) { sendAdmChan(IRCCOLOR "04[Error]" IRCCOLOR" Failed to parse player token: %.*s", token.size(), token.data()); } - return getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, parsed_token.isBot, 0U, ""_jrs, ""_jrs); + return getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, parsed_token.isBot, 0U, ""sv, ""sv); }; auto gotoToken = [&in_line, &tokens, this](size_t index) { @@ -1627,9 +1629,9 @@ void RenX::Server::processLine(std::string_view line) { int id; uint64_t steamid = 0; RenX::TeamType team = TeamType::Other; - Jupiter::ReferenceString steamToken = getToken(2); - Jupiter::ReferenceString adminToken = getToken(3); - Jupiter::ReferenceString teamToken = getToken(4); + std::string_view steamToken = getToken(2); + std::string_view adminToken = getToken(3); + std::string_view teamToken = getToken(4); if (main_header[0] == 'b') { isBot = true; @@ -1642,10 +1644,10 @@ void RenX::Server::processLine(std::string_view line) { steamid = Jupiter::from_string(steamToken); team = RenX::getTeam(teamToken); - if (jessilib::equalsi(adminToken, "None"_jrs)) - getPlayerOrAdd(getToken(5), id, team, isBot, steamid, getToken(1), ""_jrs); + if (jessilib::equalsi(adminToken, "None"sv)) + getPlayerOrAdd(getToken(5), id, team, isBot, steamid, getToken(1), ""sv); else - getPlayerOrAdd(getToken(5), id, team, isBot, steamid, getToken(1), ""_jrs)->adminType = adminToken; + getPlayerOrAdd(getToken(5), id, team, isBot, steamid, getToken(1), ""sv)->adminType = adminToken; } } else if (jessilib::equalsi(m_lastCommand, "clientvarlist"sv)) @@ -1680,39 +1682,38 @@ void RenX::Server::processLine(std::string_view line) { return in_default_value; }; - auto parse = [&table_get](RenX::PlayerInfo *player) - { - Jupiter::ReadableString *value; + auto parse = [&table_get](RenX::PlayerInfo *player) { + std::string_view *value; - value = table_get("KILLS"_jrs); + value = table_get("KILLS"sv); if (value != nullptr) player->kills = Jupiter::from_string(*value); - value = table_get("DEATHS"_jrs); + value = table_get("DEATHS"sv); if (value != nullptr) player->deaths = Jupiter::from_string(*value); - value = table_get("SCORE"_jrs); + value = table_get("SCORE"sv); if (value != nullptr) player->score = Jupiter::from_string(*value); - value = table_get("CREDITS"_jrs); + value = table_get("CREDITS"sv); if (value != nullptr) player->credits = Jupiter::from_string(*value); - value = table_get("CHARACTER"_jrs); + value = table_get("CHARACTER"sv); if (value != nullptr) player->character = *value; - value = table_get("VEHICLE"_jrs); + value = table_get("VEHICLE"sv); if (value != nullptr) player->vehicle = *value; - value = table_get("PING"_jrs); + value = table_get("PING"sv); if (value != nullptr) player->ping = Jupiter::from_string(*value); - value = table_get("ADMIN"_jrs); + value = table_get("ADMIN"sv); if (value != nullptr) { if (*value == "None"sv) @@ -1721,18 +1722,18 @@ void RenX::Server::processLine(std::string_view line) { player->adminType = *value; } }; - Jupiter::ReadableString *value = table_get("PLAYERLOG"_jrs); + std::string_view *value = table_get("PLAYERLOG"sv); if (value != nullptr) { auto parsed_token = parsePlayerData(*value); parse(getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, false, - Jupiter::from_string(table_get_ref("STEAM"_jrs, ""_jrs)), - table_get_ref("IP"_jrs, ""_jrs), - table_get_ref("HWID"_jrs, ""_jrs))); + Jupiter::from_string(table_get_ref("STEAM"sv, ""sv)), + table_get_ref("IP"sv, ""sv), + table_get_ref("HWID"sv, ""sv))); } else { - Jupiter::ReadableString *name = table_get("NAME"_jrs); - value = table_get("ID"_jrs); + std::string_view *name = table_get("NAME"sv); + value = table_get("ID"sv); if (value != nullptr) { @@ -1741,16 +1742,16 @@ void RenX::Server::processLine(std::string_view line) { { if (player->name.empty()) { - player->name = table_get_ref("NAME"_jrs, ""_jrs); + player->name = table_get_ref("NAME"sv, ""sv); process_escape_sequences(player->name); } if (player->ip.empty()) - player->ip = table_get_ref("IP"_jrs, ""_jrs); + player->ip = table_get_ref("IP"sv, ""sv); if (player->hwid.empty()) - player->hwid = table_get_ref("HWID"_jrs, ""_jrs); + player->hwid = table_get_ref("HWID"sv, ""sv); if (player->steamid == 0) { - uint64_t steamid = Jupiter::from_string(table_get_ref("STEAM"_jrs, ""_jrs)); + uint64_t steamid = Jupiter::from_string(table_get_ref("STEAM"sv, ""sv)); if (steamid != 0) { player->steamid = steamid; @@ -1758,12 +1759,12 @@ void RenX::Server::processLine(std::string_view line) { } } - value = table_get("TEAMNUM"_jrs); + value = table_get("TEAMNUM"sv); if (value != nullptr) player->team = RenX::getTeam(Jupiter::from_string(*value)); else { - value = table_get("TEAM"_jrs); + value = table_get("TEAM"sv); if (value != nullptr) player->team = RenX::getTeam(*value); } @@ -1779,12 +1780,12 @@ void RenX::Server::processLine(std::string_view line) { if (player != nullptr) { if (player->ip.empty()) - player->ip = table_get_ref("IP"_jrs, ""_jrs); + player->ip = table_get_ref("IP"sv, ""sv); if (player->hwid.empty()) - player->hwid = table_get_ref("HWID"_jrs, ""_jrs); + player->hwid = table_get_ref("HWID"sv, ""sv); if (player->steamid == 0) { - uint64_t steamid = Jupiter::from_string(table_get_ref("STEAM"_jrs, ""_jrs)); + uint64_t steamid = Jupiter::from_string(table_get_ref("STEAM"sv, ""sv)); if (steamid != 0) { player->steamid = steamid; @@ -1792,12 +1793,12 @@ void RenX::Server::processLine(std::string_view line) { } } - value = table_get("TEAMNUM"_jrs); + value = table_get("TEAMNUM"sv); if (value != nullptr) player->team = RenX::getTeam(Jupiter::from_string(*value)); else { - value = table_get("TEAM"_jrs); + value = table_get("TEAM"sv); if (value != nullptr) player->team = RenX::getTeam(*value); } @@ -1851,42 +1852,42 @@ void RenX::Server::processLine(std::string_view line) { auto parse = [&table_get](RenX::PlayerInfo *player) { - Jupiter::ReadableString *value; + std::string_view *value; - value = table_get("KILLS"_jrs); + value = table_get("KILLS"sv); if (value != nullptr) player->kills = Jupiter::from_string(*value); - value = table_get("DEATHS"_jrs); + value = table_get("DEATHS"sv); if (value != nullptr) player->deaths = Jupiter::from_string(*value); - value = table_get("SCORE"_jrs); + value = table_get("SCORE"sv); if (value != nullptr) player->score = Jupiter::from_string(*value); - value = table_get("CREDITS"_jrs); + value = table_get("CREDITS"sv); if (value != nullptr) player->credits = Jupiter::from_string(*value); - value = table_get("CHARACTER"_jrs); + value = table_get("CHARACTER"sv); if (value != nullptr) player->character = *value; - value = table_get("VEHICLE"_jrs); + value = table_get("VEHICLE"sv); if (value != nullptr) player->vehicle = *value; }; - Jupiter::ReadableString *value = table_get("PLAYERLOG"_jrs); + std::string_view *value = table_get("PLAYERLOG"sv); if (value != nullptr) { auto parsed_token = parsePlayerData(*value); parse(getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, true, 0ULL, - ""_jrs, ""_jrs)); + ""sv, ""sv)); } else { - Jupiter::ReadableString *name = table_get("NAME"_jrs); - value = table_get("ID"_jrs); + std::string_view *name = table_get("NAME"sv); + value = table_get("ID"sv); if (value != nullptr) { @@ -1895,16 +1896,16 @@ void RenX::Server::processLine(std::string_view line) { { if (player->name.empty()) { - player->name = table_get_ref("NAME"_jrs, ""_jrs); + player->name = table_get_ref("NAME"sv, ""sv); process_escape_sequences(player->name); } - value = table_get("TEAMNUM"_jrs); + value = table_get("TEAMNUM"sv); if (value != nullptr) player->team = RenX::getTeam(Jupiter::from_string(*value)); else { - value = table_get("TEAM"_jrs); + value = table_get("TEAM"sv); if (value != nullptr) player->team = RenX::getTeam(*value); } @@ -1917,12 +1918,12 @@ void RenX::Server::processLine(std::string_view line) { RenX::PlayerInfo *player = getPlayerByName(*name); if (player != nullptr) { - value = table_get("TEAMNUM"_jrs); + value = table_get("TEAMNUM"sv); if (value != nullptr) player->team = RenX::getTeam(Jupiter::from_string(*value)); else { - value = table_get("TEAM"_jrs); + value = table_get("TEAM"sv); if (value != nullptr) player->team = RenX::getTeam(*value); } @@ -1958,10 +1959,10 @@ void RenX::Server::processLine(std::string_view line) { return nullptr; }; - Jupiter::ReadableString *value; + std::string_view *value; RenX::BuildingInfo *building; - value = table_get("Building"_jrs); + value = table_get("Building"sv); if (value != nullptr) { building = getBuildingByName(*value); @@ -1972,31 +1973,31 @@ void RenX::Server::processLine(std::string_view line) { building->name = *value; } - value = table_get("Health"_jrs); + value = table_get("Health"sv); if (value != nullptr) building->health = Jupiter::from_string(*value); - value = table_get("MaxHealth"_jrs); + value = table_get("MaxHealth"sv); if (value != nullptr) building->max_health = Jupiter::from_string(*value); - value = table_get("Team"_jrs); + value = table_get("Team"sv); if (value != nullptr) building->team = RenX::getTeam(*value); - value = table_get("Capturable"_jrs); + value = table_get("Capturable"sv); if (value != nullptr) building->capturable = Jupiter::from_string(*value); - value = table_get("Destroyed"_jrs); + value = table_get("Destroyed"sv); if (value != nullptr) building->destroyed = Jupiter::from_string(*value); - value = table_get("Armor"_jrs); + value = table_get("Armor"sv); if (value != nullptr) building->armor = Jupiter::from_string(*value); - value = table_get("MaxArmor"_jrs); + value = table_get("MaxArmor"sv); if (value != nullptr) building->max_armor = Jupiter::from_string(*value); } @@ -2059,13 +2060,13 @@ void RenX::Server::processLine(std::string_view line) { m_competitive = Jupiter::from_string(getToken(23)); std::string_view match_state_token = getToken(25); - if (jessilib::equalsi(match_state_token, "PendingMatch"_jrs)) + if (jessilib::equalsi(match_state_token, "PendingMatch"sv)) m_match_state = 0; - else if (jessilib::equalsi(match_state_token, "MatchInProgress"_jrs)) + else if (jessilib::equalsi(match_state_token, "MatchInProgress"sv)) m_match_state = 1; - else if (jessilib::equalsi(match_state_token, "RoundOver"_jrs) || jessilib::equalsi(match_state_token, "MatchOver"_jrs)) + else if (jessilib::equalsi(match_state_token, "RoundOver"sv) || jessilib::equalsi(match_state_token, "MatchOver"sv)) m_match_state = 2; - else if (jessilib::equalsi(match_state_token, "TravelTheWorld"_jrs)) + else if (jessilib::equalsi(match_state_token, "TravelTheWorld"sv)) m_match_state = 3; else // Unknown state -- assume it's in progress m_match_state = 1; @@ -2105,7 +2106,7 @@ void RenX::Server::processLine(std::string_view line) { } else if (jessilib::equalsi(m_lastCommand, "changename"sv)) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(main_header); - Jupiter::StringS newName = getToken(2); + std::string_view newName = getToken(2); for (const auto& plugin : xPlugins) { plugin->RenX_OnNameChange(*this, *player, newName); } @@ -2114,13 +2115,13 @@ void RenX::Server::processLine(std::string_view line) { break; case 'l': if (m_rconVersion >= 3) { - Jupiter::ReferenceString subHeader = getToken(1); + std::string_view subHeader = getToken(1); if (main_header == "GAME"sv) { if (subHeader == "Deployed;"sv) { // Object (Beacon/Mine) | Player // Object (Beacon/Mine) | Player | "on" | Surface RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(4)); - Jupiter::ReferenceString objectType = getToken(2); + std::string_view objectType = getToken(2); if (objectType.ends_with("Beacon")) ++player->beaconPlacements; else if (objectType == "Rx_Weapon_DeployedProxyC4"sv) @@ -2134,7 +2135,7 @@ void RenX::Server::processLine(std::string_view line) { // Object (Beacon/Mine) | "by" | Player // Object (Beacon/Mine) | "by" | Player | "owned by" | Owner RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(4)); - Jupiter::ReferenceString objectType = getToken(2); + std::string_view objectType = getToken(2); if (objectType.ends_with("Beacon")) ++player->beaconDisarms; else if (objectType == "Rx_Weapon_DeployedProxyC4"sv) @@ -2160,7 +2161,7 @@ void RenX::Server::processLine(std::string_view line) { // 5.15+: // Explosive | "near" | Spot Location | "at" | Location | "by" | Owner // Explosive | "near" | Spot Location | "at" | Location - Jupiter::ReferenceString explosive = getToken(2); + std::string_view explosive = getToken(2); if (getToken(5) == "at"sv) { // 5.15+ if (getToken(7) == "by"sv) { // Player information specified RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(8)); @@ -2190,7 +2191,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "ProjectileExploded;"sv) { // Explosive | "at" | Location // Explosive | "at" | Location | "by" | Owner - Jupiter::ReferenceString explosive = getToken(2); + std::string_view explosive = getToken(2); if (getToken(5) == "by"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(6)); for (const auto& plugin : xPlugins) { @@ -2207,7 +2208,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Captured;"sv) { // Team ',' Building | "id" | Building ID | "by" | Player auto teamBuildingToken = jessilib::split_once_view(getToken(2), ','); - Jupiter::ReferenceString building = teamBuildingToken.second; + std::string_view building = teamBuildingToken.second; TeamType oldTeam = RenX::getTeam(teamBuildingToken.first); RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(6)); player->captures++; @@ -2219,7 +2220,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Neutralized;"sv) { // Team ',' Building | "id" | Building ID | "by" | Player auto teamBuildingToken = jessilib::split_once_view(getToken(2), ','); - Jupiter::ReferenceString building = teamBuildingToken.second; + std::string_view building = teamBuildingToken.second; TeamType oldTeam = RenX::getTeam(teamBuildingToken.first); RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(6)); for (const auto& plugin : xPlugins) { @@ -2233,8 +2234,8 @@ void RenX::Server::processLine(std::string_view line) { // "weapon" | Weapon | "by" | Player // "refill" | Player // "vehicle" | Vehicle | "by" | Player - Jupiter::ReferenceString type = getToken(2); - Jupiter::ReferenceString obj = getToken(3); + std::string_view type = getToken(2); + std::string_view obj = getToken(3); if (type == "character"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(5)); for (const auto& plugin : xPlugins) { @@ -2274,14 +2275,14 @@ void RenX::Server::processLine(std::string_view line) { if (getToken(2) == "vehicle"sv) { auto vehicle = jessilib::split_once_view(getToken(3), ','); TeamType team = RenX::getTeam(vehicle.first); - Jupiter::ReferenceString vehicle_name = vehicle.second; + std::string_view vehicle_name = vehicle.second; for (const auto& plugin : xPlugins) { plugin->RenX_OnVehicleSpawn(*this, team, vehicle_name); } } else if (getToken(2) == "player"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(3)); - Jupiter::ReferenceString character = getToken(5); + std::string_view character = getToken(5); player->character = character; for (const auto& plugin : xPlugins) { plugin->RenX_OnSpawn(*this, *player, character); @@ -2308,10 +2309,10 @@ void RenX::Server::processLine(std::string_view line) { // "nuke" | "by" | Player // "abduction" | "by" | Player // "by" | Player - Jupiter::ReferenceString type = getToken(2); + std::string_view type = getToken(2); if (type == "vehicle"sv) { - Jupiter::ReferenceString vehicle = getToken(3); + std::string_view vehicle = getToken(3); RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(5)); for (const auto& plugin : xPlugins) { plugin->RenX_OnVehicleCrate(*this, *player, vehicle); @@ -2319,7 +2320,7 @@ void RenX::Server::processLine(std::string_view line) { } else if (type == "tsvehicle"sv) { - Jupiter::ReferenceString vehicle = getToken(3); + std::string_view vehicle = getToken(3); RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(5)); for (const auto& plugin : xPlugins) { plugin->RenX_OnVehicleCrate(*this, *player, vehicle); @@ -2327,7 +2328,7 @@ void RenX::Server::processLine(std::string_view line) { } else if (type == "ravehicle"sv) { - Jupiter::ReferenceString vehicle = getToken(3); + std::string_view vehicle = getToken(3); RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(5)); for (const auto& plugin : xPlugins) { plugin->RenX_OnVehicleCrate(*this, *player, vehicle); @@ -2350,7 +2351,7 @@ void RenX::Server::processLine(std::string_view line) { } else if (type == "character"sv) { - Jupiter::ReferenceString character = getToken(3); + std::string_view character = getToken(3); RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(5)); for (const auto& plugin : xPlugins) { plugin->RenX_OnCharacterCrate(*this, *player, character); @@ -2359,7 +2360,7 @@ void RenX::Server::processLine(std::string_view line) { } else if (type == "spy"sv) { - Jupiter::ReferenceString character = getToken(3); + std::string_view character = getToken(3); RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(5)); for (const auto& plugin : xPlugins) { plugin->RenX_OnSpyCrate(*this, *player, character); @@ -2427,16 +2428,16 @@ void RenX::Server::processLine(std::string_view line) { // "player" | Player | "died by" | Damage Type // "player" | Player | "suicide by" | Damage Type // NOTE: Filter these out when Player.empty(). - Jupiter::ReferenceString playerToken = getToken(3); + std::string_view playerToken = getToken(3); if (!playerToken.empty()) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerToken); - Jupiter::ReferenceString type = getToken(4); - Jupiter::ReferenceString damageType; + std::string_view type = getToken(4); + std::string_view damageType; if (type == "by"sv) { damageType = getToken(7); - Jupiter::ReferenceString killerData = getToken(5); + std::string_view killerData = getToken(5); auto parsed_token = parsePlayerData(killerData); if (!parsed_token.isPlayer || parsed_token.id == 0) { @@ -2448,7 +2449,7 @@ void RenX::Server::processLine(std::string_view line) { else { player->deaths++; - RenX::PlayerInfo *killer = getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, parsed_token.isBot, 0, ""_jrs, ""_jrs); + RenX::PlayerInfo *killer = getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, parsed_token.isBot, 0, ""sv, ""sv); killer->kills++; if (damageType == "Rx_DmgType_Headshot"sv) { killer->headshots++; @@ -2475,7 +2476,7 @@ void RenX::Server::processLine(std::string_view line) { plugin->RenX_OnSuicide(*this, *player, damageType); } } - player->character = ""_jrs; + player->character = ""sv; } onAction(); } @@ -2483,8 +2484,8 @@ void RenX::Server::processLine(std::string_view line) { { // Vehicle | "by" | Player // Vehicle | "bound to" | Bound Player | "by" | Player - Jupiter::ReferenceString vehicle = getToken(2); - Jupiter::ReferenceString byLine = getToken(3); + std::string_view vehicle = getToken(2); + std::string_view byLine = getToken(3); if (byLine == "by"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(4)); @@ -2511,7 +2512,7 @@ void RenX::Server::processLine(std::string_view line) { // "defence" | Defence | "by" | Killer | "with" | Damage Type // "emplacement" | Emplacement | "by" | Killer Player | "with" | Damage Type // "building" | Building | "by" | Killer | "with" | Damage Type - Jupiter::ReferenceString typeToken = getToken(2); + std::string_view typeToken = getToken(2); RenX::ObjectType type = ObjectType::None; if (typeToken == "vehicle"sv) type = ObjectType::Vehicle; @@ -2525,9 +2526,9 @@ void RenX::Server::processLine(std::string_view line) { std::string_view objectName = getToken(3); if (getToken(4) == "by"sv) { - Jupiter::ReferenceString killerToken = getToken(5); + std::string_view killerToken = getToken(5); auto parsed_token = parsePlayerData(killerToken); - Jupiter::ReferenceString damageType = getToken(7); + std::string_view damageType = getToken(7); if (!parsed_token.isPlayer || parsed_token.id == 0) { for (const auto& plugin : xPlugins) { @@ -2535,7 +2536,7 @@ void RenX::Server::processLine(std::string_view line) { } } else { - RenX::PlayerInfo *player = getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, parsed_token.isBot, 0, ""_jrs, ""_jrs); + RenX::PlayerInfo *player = getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, parsed_token.isBot, 0, ""sv, ""sv); switch (type) { case RenX::ObjectType::Vehicle: @@ -2591,7 +2592,7 @@ void RenX::Server::processLine(std::string_view line) { { // Player | "near" | Location RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString location = getToken(4); + std::string_view location = getToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnOverMine(*this, *player, location); @@ -2600,11 +2601,11 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "MatchEnd;"sv) { // "winner" | Winner | Reason("TimeLimit" etc) | "GDI=" GDI Score | "Nod=" Nod Score // "tie" | Reason | "GDI=" GDI Score | "Nod=" Nod Score - Jupiter::ReferenceString winTieToken = getToken(2); + std::string_view winTieToken = getToken(2); m_match_state = 2; if (winTieToken == "winner"sv) { - Jupiter::ReferenceString sWinType = getToken(4); + std::string_view sWinType = getToken(4); WinType winType = WinType::Unknown; if (sWinType == "TimeLimit"sv) winType = WinType::Score; @@ -2635,7 +2636,7 @@ void RenX::Server::processLine(std::string_view line) { } else { - Jupiter::ReferenceString raw = gotoToken(1); + std::string_view raw = gotoToken(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnGame(*this, raw); } @@ -2646,7 +2647,7 @@ void RenX::Server::processLine(std::string_view line) { if (subHeader == "Say;"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString message = getToken(4); + std::string_view message = getToken(4); onChat(*player, message); for (const auto& plugin : xPlugins) { plugin->RenX_OnChat(*this, *player, message); @@ -2656,7 +2657,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "TeamSay;"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString message = getToken(4); + std::string_view message = getToken(4); onChat(*player, message); for (const auto& plugin : xPlugins) { plugin->RenX_OnTeamChat(*this, *player, message); @@ -2666,7 +2667,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Radio;"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString message = getToken(4); + std::string_view message = getToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnRadioChat(*this, *player, message); } @@ -2675,7 +2676,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "AdminMsg;"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString message = getToken(4); + std::string_view message = getToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnAdminMessage(*this, *player, message); } @@ -2684,7 +2685,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "AdminWarn;"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString message = getToken(4); + std::string_view message = getToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnWarnMessage(*this, *player, message); } @@ -2694,7 +2695,7 @@ void RenX::Server::processLine(std::string_view line) { { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); RenX::PlayerInfo *target = parseGetPlayerOrAdd(getToken(4)); - Jupiter::ReferenceString message = getToken(6); + std::string_view message = getToken(6); for (const auto& plugin : xPlugins) { plugin->RenX_OnAdminPMessage(*this, *player, *target, message); } @@ -2704,7 +2705,7 @@ void RenX::Server::processLine(std::string_view line) { { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); RenX::PlayerInfo *target = parseGetPlayerOrAdd(getToken(4)); - Jupiter::ReferenceString message = getToken(6); + std::string_view message = getToken(6); for (const auto& plugin : xPlugins) { plugin->RenX_OnWarnPMessage(*this, *player, *target, message); } @@ -2712,42 +2713,42 @@ void RenX::Server::processLine(std::string_view line) { } else if (subHeader == "HostSay;"sv) { - Jupiter::ReferenceString message = getToken(3); + std::string_view message = getToken(3); for (const auto& plugin : xPlugins) { plugin->RenX_OnHostChat(*this, message); } } else if (subHeader == "HostPMsg;"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString message = getToken(4); + std::string_view message = getToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnHostPage(*this, *player, message); } } else if (subHeader == "HostAdminMsg;"sv) { - Jupiter::ReferenceString message = getToken(3); + std::string_view message = getToken(3); for (const auto& plugin : xPlugins) { plugin->RenX_OnHostAdminMessage(*this, message); } } else if (subHeader == "HostAdminWarn;"sv) { - Jupiter::ReferenceString message = getToken(3); + std::string_view message = getToken(3); for (const auto& plugin : xPlugins) { plugin->RenX_OnHostWarnMessage(*this, message); } } else if (subHeader == "HostPAdminMsg;"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString message = getToken(4); + std::string_view message = getToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnHostAdminPMessage(*this, *player, message); } } else if (subHeader == "HostPAdminWarn;"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString message = getToken(4); + std::string_view message = getToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnHostWarnPMessage(*this, *player, message); } @@ -2764,7 +2765,7 @@ void RenX::Server::processLine(std::string_view line) { }*/ else { - Jupiter::ReferenceString raw = gotoToken(1); + std::string_view raw = gotoToken(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnOtherChat(*this, raw); } @@ -2792,7 +2793,7 @@ void RenX::Server::processLine(std::string_view line) { if (getToken(5) == "steamid"sv) steamid = Jupiter::from_string(getToken(6)); - player = getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, parsed_token.isBot, steamid, getToken(4), ""_jrs); + player = getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, parsed_token.isBot, steamid, getToken(4), ""sv); } if (steamid != 0ULL && default_ladder_database != nullptr && (player->ban_flags & RenX::BanDatabase::Entry::FLAG_TYPE_LADDER) == 0) @@ -2824,7 +2825,7 @@ void RenX::Server::processLine(std::string_view line) { // Player | "joined" | Team | "score" | Score | "last round score" | Score | "time" | Timestamp // Player | "joined" | Team | "left" | Old Team | "score" | Score | "last round score" | Score | "time" | Timestamp RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - player->character = ""_jrs; + player->character = ""sv; if (getToken(5) == "left"sv) { RenX::TeamType oldTeam = RenX::getTeam(getToken(6)); @@ -2860,7 +2861,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Exit;"sv) { // Player - Jupiter::ReferenceString playerToken = getToken(2); + std::string_view playerToken = getToken(2); auto parsed_token = parsePlayerData(playerToken); RenX::PlayerInfo *player = getPlayer(parsed_token.id); @@ -2888,7 +2889,7 @@ void RenX::Server::processLine(std::string_view line) { { // Player | "to:" | New Name RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::StringS newName = getToken(4); + std::string_view newName = getToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnNameChange(*this, *player, newName); } @@ -2955,7 +2956,7 @@ void RenX::Server::processLine(std::string_view line) { { // Player | Command RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString message = gotoToken(3); + std::string_view message = gotoToken(3); auto command_split = jessilib::word_split_once_view(std::string_view{message}, WHITESPACE_SV); RenX::GameCommand *command = triggerCommand(command_split.first, *player, command_split.second); @@ -2966,7 +2967,7 @@ void RenX::Server::processLine(std::string_view line) { } else { - Jupiter::ReferenceString raw = gotoToken(1); + std::string_view raw = gotoToken(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnPlayer(*this, raw); } @@ -2980,7 +2981,7 @@ void RenX::Server::processLine(std::string_view line) { std::string_view user = getToken(2); if (getToken(3) == "executed:"sv) { - Jupiter::ReferenceString command_line = gotoToken(4); + std::string_view command_line = gotoToken(4); auto split_command_line = jessilib::word_split_once_view(command_line, ' '); for (const auto& plugin : xPlugins) { @@ -2997,7 +2998,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Subscribed;"sv) { // User - Jupiter::ReferenceString user = getToken(2); + std::string_view user = getToken(2); if (user == m_rconUser) m_subscribed = true; @@ -3009,7 +3010,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Unsubscribed;"sv) { // User - Jupiter::ReferenceString user = getToken(2); + std::string_view user = getToken(2); if (user == m_rconUser) m_subscribed = false; @@ -3021,8 +3022,8 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Blocked;"sv) { // User | Reason="(Denied by IP Policy)" / "(Not on Whitelist)" - Jupiter::ReferenceString user = getToken(2); - Jupiter::ReferenceString message = getToken(3); + std::string_view user = getToken(2); + std::string_view message = getToken(3); for (const auto& plugin : xPlugins) { plugin->RenX_OnBlock(*this, user, message); } @@ -3030,7 +3031,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Connected;"sv) { // User - Jupiter::ReferenceString user = getToken(2); + std::string_view user = getToken(2); for (const auto& plugin : xPlugins) { plugin->RenX_OnConnect(*this, user); } @@ -3038,7 +3039,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Authenticated;"sv) { // User - Jupiter::ReferenceString user = getToken(2); + std::string_view user = getToken(2); for (const auto& plugin : xPlugins) { plugin->RenX_OnAuthenticate(*this, user); } @@ -3046,8 +3047,8 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Banned;"sv) { // User | "reason" | Reason="(Too many password attempts)" - Jupiter::ReferenceString user = getToken(2); - Jupiter::ReferenceString message = getToken(4); + std::string_view user = getToken(2); + std::string_view message = getToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnBan(*this, user, message); } @@ -3055,7 +3056,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "InvalidPassword;"sv) { // User - Jupiter::ReferenceString user = getToken(2); + std::string_view user = getToken(2); for (const auto& plugin : xPlugins) { plugin->RenX_OnInvalidPassword(*this, user); } @@ -3063,8 +3064,8 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Dropped;"sv) { // User | "reason" | Reason="(Auth Timeout)" - Jupiter::ReferenceString user = getToken(2); - Jupiter::ReferenceString message = getToken(4); + std::string_view user = getToken(2); + std::string_view message = getToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnDrop(*this, user, message); } @@ -3072,7 +3073,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Disconnected;"sv) { // User - Jupiter::ReferenceString user = getToken(2); + std::string_view user = getToken(2); for (const auto& plugin : xPlugins) { plugin->RenX_OnDisconnect(*this, user); } @@ -3080,7 +3081,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "StoppedListen;"sv) { // Reason="(Reached Connection Limit)" - Jupiter::ReferenceString message = getToken(2); + std::string_view message = getToken(2); for (const auto& plugin : xPlugins) { plugin->RenX_OnStopListen(*this, message); } @@ -3088,7 +3089,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "ResumedListen;"sv) { // Reason="(No longer at Connection Limit)" - Jupiter::ReferenceString message = getToken(2); + std::string_view message = getToken(2); for (const auto& plugin : xPlugins) { plugin->RenX_OnResumeListen(*this, message); } @@ -3096,14 +3097,14 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Warning;"sv) { // Warning="(Hit Max Attempt Records - You should investigate Rcon attempts and/or decrease prune time)" - Jupiter::ReferenceString message = getToken(2); + std::string_view message = getToken(2); for (const auto& plugin : xPlugins) { plugin->RenX_OnWarning(*this, message); } } else { - Jupiter::ReferenceString raw = gotoToken(1); + std::string_view raw = gotoToken(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnRCON(*this, raw); } @@ -3117,7 +3118,7 @@ void RenX::Server::processLine(std::string_view line) { if (getToken(3) == "executed:"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(2)); - Jupiter::ReferenceString cmd = gotoToken(4); + std::string_view cmd = gotoToken(4); for (const auto& plugin : xPlugins) { plugin->RenX_OnExecute(*this, *player, cmd); } @@ -3154,7 +3155,7 @@ void RenX::Server::processLine(std::string_view line) { } else { - Jupiter::ReferenceString raw = gotoToken(1); + std::string_view raw = gotoToken(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnAdmin(*this, raw); } @@ -3178,8 +3179,8 @@ void RenX::Server::processLine(std::string_view line) { // TeamType="Global" / "GDI" / "Nod" / "" | "Rx_VoteMenuChoice_Surrender" | "by" | Player // TeamType="Global" / "GDI" / "Nod" / "" | "Rx_VoteMenuChoice_Survey" | "by" | Player | "text" | Survey Text - Jupiter::ReferenceString voteType = getToken(3); - Jupiter::ReferenceString teamToken = getToken(2); + std::string_view voteType = getToken(3); + std::string_view teamToken = getToken(2); RenX::TeamType team; if (teamToken == "Global"sv) team = TeamType::None; @@ -3210,13 +3211,13 @@ void RenX::Server::processLine(std::string_view line) { // PARSE PARAMETERS HERE - if (voteType.find("Rx_VoteMenuChoice_"_jrs) == 0) + if (voteType.find("Rx_VoteMenuChoice_"sv) == 0) { voteType.remove_prefix(18); if (voteType == "AddBots"sv) { - Jupiter::ReferenceString victimToken = getToken(7); + std::string_view victimToken = getToken(7); RenX::TeamType victim; if (teamToken == "Global"sv) victim = TeamType::None; @@ -3256,7 +3257,7 @@ void RenX::Server::processLine(std::string_view line) { } else if (voteType == "RemoveBots"sv) { - Jupiter::ReferenceString victimToken = getToken(7); + std::string_view victimToken = getToken(7); RenX::TeamType victim; if (teamToken == "Global"sv) victim = TeamType::None; @@ -3311,8 +3312,8 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Results;"sv) { // TeamType="Global" / "GDI" / "Nod" / "" | VoteType="Rx_VoteMenuChoice_"... | Success="pass" / "fail" | "Yes=" Yes votes | "No=" No votes - Jupiter::ReferenceString voteType = getToken(3); - Jupiter::ReferenceString teamToken = getToken(2); + std::string_view voteType = getToken(3); + std::string_view teamToken = getToken(2); RenX::TeamType team; if (teamToken == "Global"sv) team = TeamType::None; @@ -3328,7 +3329,7 @@ void RenX::Server::processLine(std::string_view line) { success = false; int yesVotes = 0; - Jupiter::ReferenceString votes_token = getToken(5); + std::string_view votes_token = getToken(5); if (votes_token.size() > 4) { votes_token.remove_prefix(4); @@ -3350,8 +3351,8 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Cancelled;"sv) { // TeamType="Global" / "GDI" / "Nod" | VoteType="Rx_VoteMenuChoice_"... - Jupiter::ReferenceString voteType = getToken(3); - Jupiter::ReferenceString teamToken = getToken(2); + std::string_view voteType = getToken(3); + std::string_view teamToken = getToken(2); RenX::TeamType team; if (teamToken == "Global"sv) team = TeamType::None; @@ -3368,7 +3369,7 @@ void RenX::Server::processLine(std::string_view line) { } else { - Jupiter::ReferenceString raw = gotoToken(1); + std::string_view raw = gotoToken(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnVote(*this, raw); } @@ -3379,7 +3380,7 @@ void RenX::Server::processLine(std::string_view line) { if (subHeader == "Changing;"sv) { // Map | Mode="seamless" / "nonseamless" - Jupiter::ReferenceString map = getToken(2); + std::string_view map = getToken(2); m_match_state = 3; if (getToken(3) == "seamless"sv) @@ -3397,7 +3398,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Loaded;"sv) { // Map - Jupiter::ReferenceString map = getToken(2); + std::string_view map = getToken(2); m_match_state = 0; m_map = map; @@ -3409,7 +3410,7 @@ void RenX::Server::processLine(std::string_view line) { else if (subHeader == "Start;"sv) { // Map - Jupiter::ReferenceString map = getToken(2); + std::string_view map = getToken(2); m_match_state = 1; m_reliable = true; @@ -3422,7 +3423,7 @@ void RenX::Server::processLine(std::string_view line) { } else { - Jupiter::ReferenceString raw = gotoToken(1); + std::string_view raw = gotoToken(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnMap(*this, raw); } @@ -3435,7 +3436,7 @@ void RenX::Server::processLine(std::string_view line) { // "client request by" | Player // "admin command by" | Player // "rcon command" - Jupiter::ReferenceString type = getToken(2); + std::string_view type = getToken(2); if (type == "client request by"sv || type == "admin command by"sv) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(3)); @@ -3445,7 +3446,7 @@ void RenX::Server::processLine(std::string_view line) { } else { - Jupiter::ReferenceString user = getToken(3); // not actually used, but here for possible future usage + std::string_view user = getToken(3); // not actually used, but here for possible future usage for (const auto& plugin : xPlugins) { plugin->RenX_OnDemoRecord(*this, user); } @@ -3460,7 +3461,7 @@ void RenX::Server::processLine(std::string_view line) { } else { - Jupiter::ReferenceString raw = gotoToken(1); + std::string_view raw = gotoToken(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnDemo(*this, raw); } @@ -3473,7 +3474,7 @@ void RenX::Server::processLine(std::string_view line) { }*/ else { - Jupiter::ReferenceString raw = in_line.substr(1); + std::string_view raw = in_line.substr(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnLog(*this, raw); } @@ -3489,19 +3490,19 @@ void RenX::Server::processLine(std::string_view line) { case 'c': { - Jupiter::ReferenceString raw = in_line.substr(1); + std::string_view raw = in_line.substr(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnCommand(*this, raw); } m_commandListFormat.clear(); - m_lastCommand = ""_jrs; - m_lastCommandParams = ""_jrs; + m_lastCommand = ""sv; + m_lastCommandParams = ""sv; } break; case 'e': { - Jupiter::ReferenceString raw = in_line.substr(1); + std::string_view raw = in_line.substr(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnError(*this, raw); } @@ -3510,7 +3511,7 @@ void RenX::Server::processLine(std::string_view line) { case 'v': { - Jupiter::ReferenceString raw = in_line.substr(1); + std::string_view raw = in_line.substr(1); m_rconVersion = Jupiter::asInt(raw, 10); if (m_rconVersion >= 3) @@ -3526,21 +3527,21 @@ void RenX::Server::processLine(std::string_view line) { if (m_gameVersion.empty()) { - sendLogChan(STRING_LITERAL_AS_REFERENCE(IRCCOLOR "04[Error]" IRCCOLOR " Disconnected from Renegade-X server (Protocol Error).")); + sendLogChan(IRCCOLOR "04[Error]" IRCCOLOR " Disconnected from Renegade-X server (Protocol Error)."sv); disconnect(RenX::DisconnectReason::ProtocolError); break; } } - sendSocket("s\n"_jrs); - send("serverinfo"_jrs); - send("gameinfo"_jrs); - send("gameinfo bIsCompetitive"_jrs); - send("mutatorlist"_jrs); - send("rotation"_jrs); + sendSocket("s\n"sv); + send("serverinfo"sv); + send("gameinfo"sv); + send("gameinfo bIsCompetitive"sv); + send("mutatorlist"sv); + send("rotation"sv); fetchClientList(); updateBuildingList(); - send("ping srv_init_done"_jrs); + send("ping srv_init_done"sv); m_gameStart = std::chrono::steady_clock::now(); m_seamless = true; @@ -3551,7 +3552,7 @@ void RenX::Server::processLine(std::string_view line) { } else { - sendLogChan(STRING_LITERAL_AS_REFERENCE(IRCCOLOR "04[Error]" IRCCOLOR " Disconnected from Renegade-X server (incompatible RCON version).")); + sendLogChan(IRCCOLOR "04[Error]" IRCCOLOR " Disconnected from Renegade-X server (incompatible RCON version)."sv); disconnect(RenX::DisconnectReason::IncompatibleVersion); } } @@ -3571,7 +3572,7 @@ void RenX::Server::processLine(std::string_view line) { default: { - Jupiter::ReferenceString raw = in_line.substr(1); + std::string_view raw = in_line.substr(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnOther(*this, header, raw); } @@ -3648,7 +3649,7 @@ void RenX::Server::wipePlayers() { void RenX::Server::startPing() { m_lastActivity = std::chrono::steady_clock::now(); - sendSocket("cping\n"_jrs); + sendSocket("cping\n"sv); m_awaitingPong = true; } @@ -3685,35 +3686,35 @@ RenX::Server::Server(std::string_view configurationSection) { } void RenX::Server::init(const Jupiter::Config &config) { - m_hostname = static_cast(config.get("Hostname"_jrs, "localhost"_jrs)); - m_port = config.get("Port"_jrs, 7777); - m_clientHostname = static_cast(config.get("ClientAddress"_jrs)); - m_pass = config.get("Password"_jrs, "renx"_jrs); - - m_logChanType = config.get("ChanType"_jrs); - m_adminLogChanType = config.get("AdminChanType"_jrs); - - setCommandPrefix(config.get("CommandPrefix"_jrs)); - setPrefix(config.get("IRCPrefix"_jrs)); - - m_ban_from_str = config.get("BanFromStr"_jrs, "the server"_jrs); - m_rules = config.get("Rules"_jrs, "Anarchy!"_jrs); - m_delay = std::chrono::milliseconds(config.get("ReconnectDelay"_jrs, 10000)); - m_maxAttempts = config.get("MaxReconnectAttempts"_jrs, -1); - m_rconBan = config.get("RCONBan"_jrs, false); - m_localSteamBan = config.get("LocalSteamBan"_jrs, true); - m_localIPBan = config.get("LocalIPBan"_jrs, true); - m_localHWIDBan = config.get("LocalHWIDBan"_jrs, true); - m_localRDNSBan = config.get("LocalRDNSBan"_jrs, false); - m_localNameBan = config.get("LocalNameBan"_jrs, false); + m_hostname = static_cast(config.get("Hostname"sv, "localhost"sv)); + m_port = config.get("Port"sv, 7777); + m_clientHostname = static_cast(config.get("ClientAddress"sv)); + m_pass = config.get("Password"sv, "renx"sv); + + m_logChanType = config.get("ChanType"sv); + m_adminLogChanType = config.get("AdminChanType"sv); + + setCommandPrefix(config.get("CommandPrefix"sv)); + setPrefix(config.get("IRCPrefix"sv)); + + m_ban_from_str = config.get("BanFromStr"sv, "the server"sv); + m_rules = config.get("Rules"sv, "Anarchy!"sv); + m_delay = std::chrono::milliseconds(config.get("ReconnectDelay"sv, 10000)); + m_maxAttempts = config.get("MaxReconnectAttempts"sv, -1); + m_rconBan = config.get("RCONBan"sv, false); + m_localSteamBan = config.get("LocalSteamBan"sv, true); + m_localIPBan = config.get("LocalIPBan"sv, true); + m_localHWIDBan = config.get("LocalHWIDBan"sv, true); + m_localRDNSBan = config.get("LocalRDNSBan"sv, false); + m_localNameBan = config.get("LocalNameBan"sv, false); m_localBan = m_localIPBan || m_localRDNSBan || m_localSteamBan || m_localNameBan; - m_steamFormat = config.get("SteamFormat"_jrs, 16); - m_neverSay = config.get("NeverSay"_jrs, false); - m_resolve_player_rdns = config.get("ResolvePlayerRDNS"_jrs, true); - m_clientUpdateRate = std::chrono::milliseconds(config.get("ClientUpdateRate"_jrs, 2500)); - m_buildingUpdateRate = std::chrono::milliseconds(config.get("BuildingUpdateRate"_jrs, 7500)); - m_pingRate = std::chrono::milliseconds(config.get("PingUpdateRate"_jrs, 60000)); - m_pingTimeoutThreshold = std::chrono::milliseconds(config.get("PingTimeoutThreshold"_jrs, 10000)); + m_steamFormat = config.get("SteamFormat"sv, 16); + m_neverSay = config.get("NeverSay"sv, false); + m_resolve_player_rdns = config.get("ResolvePlayerRDNS"sv, true); + m_clientUpdateRate = std::chrono::milliseconds(config.get("ClientUpdateRate"sv, 2500)); + m_buildingUpdateRate = std::chrono::milliseconds(config.get("BuildingUpdateRate"sv, 7500)); + m_pingRate = std::chrono::milliseconds(config.get("PingUpdateRate"sv, 60000)); + m_pingTimeoutThreshold = std::chrono::milliseconds(config.get("PingTimeoutThreshold"sv, 10000)); Jupiter::Config &commandsFile = RenX::getCore()->getCommandsFile(); m_commandAccessLevels = commandsFile.getSection(m_configSection); diff --git a/src/Plugins/RenX/RenX.Core/RenX_Server.h b/src/Plugins/RenX/RenX.Core/RenX_Server.h index a939b25..06c3092 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Server.h +++ b/src/Plugins/RenX/RenX.Core/RenX_Server.h @@ -26,8 +26,8 @@ #include #include +#include #include "Jupiter/TCPSocket.h" -#include "Jupiter/String.hpp" #include "Jupiter/Config.h" #include "Jupiter/Thinker.h" #include "Jupiter/Rehash.h" @@ -83,7 +83,7 @@ namespace RenX public: // RenX::Server std::list players; /** A list of players in the server */ std::vector> buildings; /** A list of buildings in the server */ - std::vector mutators; /** A list of buildings the server is running */ + std::vector mutators; /** A list of buildings the server is running */ std::vector maps; /** A list of maps in the server's rotation */ Jupiter::Config varData; /** Variable data. */ @@ -394,7 +394,7 @@ namespace RenX * @param player Player to fetch Steam ID from * @return A player's formatted Steam ID on success, an empty string otherwise. */ - Jupiter::StringS formatSteamID(const RenX::PlayerInfo &player) const; + std::string formatSteamID(const RenX::PlayerInfo &player) const; /** * @brief Formats a Steam ID into a readable string. @@ -402,7 +402,7 @@ namespace RenX * @param id Steam ID to format * @return A player's formatted Steam ID on success, an empty string otherwise. */ - Jupiter::StringS formatSteamID(uint64_t id) const; + std::string formatSteamID(uint64_t id) const; /** * @brief Kicks a player from the server. @@ -912,7 +912,7 @@ namespace RenX * @param player Player to calculate UUID of * @return UUID calculated from player. */ - typedef Jupiter::StringS(*uuid_func)(RenX::PlayerInfo &player); + typedef std::string(*uuid_func)(RenX::PlayerInfo &player); /** * @brief Sets the player UUID calculation function. @@ -1113,7 +1113,7 @@ namespace RenX std::string m_lastLine; std::string m_rconUser; std::string m_gameVersion; - Jupiter::StringS m_serverName; + std::string m_serverName; std::string m_lastCommand; std::string m_lastCommandParams; RenX::Map m_map; @@ -1145,8 +1145,8 @@ namespace RenX std::string m_hostname; std::string m_pass; std::string m_configSection; - Jupiter::StringS m_rules; - Jupiter::StringS m_ban_from_str; + std::string m_rules; + std::string m_ban_from_str; std::string m_IRCPrefix; std::string m_CommandPrefix; Jupiter::Config* m_commandAccessLevels; diff --git a/src/Plugins/RenX/RenX.Core/RenX_Tags.cpp b/src/Plugins/RenX/RenX.Core/RenX_Tags.cpp index 39f7b86..215c4bc 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Tags.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_Tags.cpp @@ -16,7 +16,6 @@ * Written by Jessica James */ -#include "Jupiter/Reference_String.h" #include "Jupiter/IRC_Client.h" #include "RenX_Core.h" #include "RenX_Functions.h" @@ -26,7 +25,7 @@ #include "RenX_Plugin.h" #include "RenX_Tags.h" -using namespace Jupiter::literals; +using namespace std::literals; struct TagsImp : RenX::Tags { @@ -36,7 +35,7 @@ struct TagsImp : RenX::Tags void sanitizeTags(std::string& fmt); std::string_view getUniqueInternalTag(); private: - Jupiter::StringS uniqueTag; + std::string uniqueTag; uint32_t tagItr; size_t bar_width; } _tags; @@ -50,16 +49,16 @@ bool RenX::Tags::initialize() bool TagsImp::initialize() { this->tagItr = 0; - this->uniqueTag = "\0\0\0\0\0\0"_jrs; + this->uniqueTag = "\0\0\0\0\0\0"sv; Jupiter::Config &config = RenX::getCore()->getConfig(); - std::string_view configSection = config.get("TagDefinitions"_jrs, "Tags"_jrs); + std::string_view configSection = config.get("TagDefinitions"sv, "Tags"sv); - TagsImp::bar_width = config[configSection].get("BarWidth"_jrs, 19); + TagsImp::bar_width = config[configSection].get("BarWidth"sv, 19); /** Global formats */ - this->dateFmt = static_cast(config[configSection].get("DateFormat"_jrs, "%A, %B %d, %Y"_jrs)); - this->timeFmt = static_cast(config[configSection].get("TimeFormat"_jrs, "%H:%M:%S"_jrs)); + this->dateFmt = static_cast(config[configSection].get("DateFormat"sv, "%A, %B %d, %Y"sv)); + this->timeFmt = static_cast(config[configSection].get("TimeFormat"sv, "%H:%M:%S"sv)); /** Internal message tags */ @@ -250,188 +249,188 @@ bool TagsImp::initialize() /** External (config) tags */ /** Global tags */ - this->dateTag = config[configSection].get("DateTag"_jrs, "{DATE}"_jrs); - this->timeTag = config[configSection].get("TimeTag"_jrs, "{TIME}"_jrs); + this->dateTag = config[configSection].get("DateTag"sv, "{DATE}"sv); + this->timeTag = config[configSection].get("TimeTag"sv, "{TIME}"sv); /** Server tags */ - this->rconVersionTag = config[configSection].get("RCONVersionTag"_jrs, "{RVER}"_jrs); - this->gameVersionTag = config[configSection].get("GameVersionTag"_jrs, "{GVER}"_jrs); - this->rulesTag = config[configSection].get("RulesTag"_jrs, "{RULES}"_jrs); - this->userTag = config[configSection].get("UserTag"_jrs, "{USER}"_jrs); - this->serverNameTag = config[configSection].get("ServerNameTag"_jrs, "{SERVERNAME}"_jrs); - this->mapTag = config[configSection].get("MapTag"_jrs, "{MAP}"_jrs); - this->mapGUIDTag = config[configSection].get("MapGUIDTag"_jrs, "{MGUID}"_jrs); - this->serverHostnameTag = config[configSection].get("ServerHostnameTag"_jrs, "{SERVERHOST}"_jrs); - this->serverPortTag = config[configSection].get("ServerPortTag"_jrs, "{SERVERPORT}"_jrs); - this->socketHostnameTag = config[configSection].get("SocketHostnameTag"_jrs, "{SOCKHOST}"_jrs); - this->socketPortTag = config[configSection].get("SocketPortTag"_jrs, "{SOCKPORT}"_jrs); - this->serverPrefixTag = config[configSection].get("ServerPrefixTag"_jrs, "{SERVERPREFIX}"_jrs); + this->rconVersionTag = config[configSection].get("RCONVersionTag"sv, "{RVER}"sv); + this->gameVersionTag = config[configSection].get("GameVersionTag"sv, "{GVER}"sv); + this->rulesTag = config[configSection].get("RulesTag"sv, "{RULES}"sv); + this->userTag = config[configSection].get("UserTag"sv, "{USER}"sv); + this->serverNameTag = config[configSection].get("ServerNameTag"sv, "{SERVERNAME}"sv); + this->mapTag = config[configSection].get("MapTag"sv, "{MAP}"sv); + this->mapGUIDTag = config[configSection].get("MapGUIDTag"sv, "{MGUID}"sv); + this->serverHostnameTag = config[configSection].get("ServerHostnameTag"sv, "{SERVERHOST}"sv); + this->serverPortTag = config[configSection].get("ServerPortTag"sv, "{SERVERPORT}"sv); + this->socketHostnameTag = config[configSection].get("SocketHostnameTag"sv, "{SOCKHOST}"sv); + this->socketPortTag = config[configSection].get("SocketPortTag"sv, "{SOCKPORT}"sv); + this->serverPrefixTag = config[configSection].get("ServerPrefixTag"sv, "{SERVERPREFIX}"sv); /** Player tags */ - this->nameTag = config[configSection].get("NameTag"_jrs, "{NAME}"_jrs); - this->rawNameTag = config[configSection].get("RawNameTag"_jrs, "{RNAME}"_jrs); - this->ipTag = config[configSection].get("IPTag"_jrs, "{IP}"_jrs); - this->hwidTag = config[configSection].get("HWIDTag"_jrs, "{HWID}"_jrs); - this->rdnsTag = config[configSection].get("RDNSTag"_jrs, "{RDNS}"_jrs); - this->steamTag = config[configSection].get("SteamTag"_jrs, "{STEAM}"_jrs); - this->uuidTag = config[configSection].get("UUIDTag"_jrs, "{UUID}"_jrs); - this->idTag = config[configSection].get("IDTag"_jrs, "{ID}"_jrs); - this->characterTag = config[configSection].get("CharacterTag"_jrs, "{CHAR}"_jrs); - this->vehicleTag = config[configSection].get("VehicleTag"_jrs, "{VEH}"_jrs); - this->adminTag = config[configSection].get("AdminTag"_jrs, "{ADMIN}"_jrs); - this->prefixTag = config[configSection].get("PrefixTag"_jrs, "{PREFIX}"_jrs); - this->gamePrefixTag = config[configSection].get("GamePrefixTag"_jrs, "{GPREFIX}"_jrs); - this->teamColorTag = config[configSection].get("TeamColorTag"_jrs, "{TCOLOR}"_jrs); - this->teamShortTag = config[configSection].get("ShortTeamTag"_jrs, "{TEAMS}"_jrs); - this->teamLongTag = config[configSection].get("LongTeamTag"_jrs, "{TEAML}"_jrs); - this->pingTag = config[configSection].get("PingTag"_jrs, "{PING}"_jrs); - this->scoreTag = config[configSection].get("ScoreTag"_jrs, "{SCORE}"_jrs); - this->scorePerMinuteTag = config[configSection].get("ScorePerMinuteTag"_jrs, "{SPM}"_jrs); - this->creditsTag = config[configSection].get("CreditsTag"_jrs, "{CREDITS}"_jrs); - this->killsTag = config[configSection].get("KillsTag"_jrs, "{KILLS}"_jrs); - this->deathsTag = config[configSection].get("DeathsTag"_jrs, "{DEATHS}"_jrs); - this->kdrTag = config[configSection].get("KDRTag"_jrs, "{KDR}"_jrs); - this->suicidesTag = config[configSection].get("SuicidesTag"_jrs, "{SUICIDES}"_jrs); - this->headshotsTag = config[configSection].get("HeadshotsTag"_jrs, "{HEADSHOTS}"_jrs); - this->headshotKillRatioTag = config[configSection].get("HeadshotKillRatioTag"_jrs, "{HSKR}"_jrs); - this->vehicleKillsTag = config[configSection].get("VehicleKillsTag"_jrs, "{VEHICLEKILLS}"_jrs); - this->buildingKillsTag = config[configSection].get("BuildingKillsTag"_jrs, "{BUILDINGKILLS}"_jrs); - this->defenceKillsTag = config[configSection].get("DefenceKillsTag"_jrs, "{DEFENCEKILLS}"_jrs); - this->gameTimeTag = config[configSection].get("GameTimeTag"_jrs, "{GAMETIME}"_jrs); - this->gamesTag = config[configSection].get("GamesTag"_jrs, "{GAMES}"_jrs); - this->GDIGamesTag = config[configSection].get("GDIGamesTag"_jrs, "{GDIGAMES}"_jrs); - this->NodGamesTag = config[configSection].get("NodGamesTag"_jrs, "{NODGAMES}"_jrs); - this->winsTag = config[configSection].get("WinsTag"_jrs, "{WINS}"_jrs); - this->GDIWinsTag = config[configSection].get("GDIWinsTag"_jrs, "{GDIWINS}"_jrs); - this->NodWinsTag = config[configSection].get("NodWinsTag"_jrs, "{NODWINS}"_jrs); - this->tiesTag = config[configSection].get("TiesTag"_jrs, "{TIES}"_jrs); - this->lossesTag = config[configSection].get("LossesTag"_jrs, "{LOSSES}"_jrs); - this->GDILossesTag = config[configSection].get("GDILossesTag"_jrs, "{GDILOSSES}"_jrs); - this->NodLossesTag = config[configSection].get("NodLossesTag"_jrs, "{NODLOSSES}"_jrs); - this->winLossRatioTag = config[configSection].get("WinLossRatioTag"_jrs, "{WLR}"_jrs); - this->GDIWinLossRatioTag = config[configSection].get("GDIWinLossRatioTag"_jrs, "{GDIWLR}"_jrs); - this->NodWinLossRatioTag = config[configSection].get("NodWinLossRatioTag"_jrs, "{NODWLR}"_jrs); - this->beaconPlacementsTag = config[configSection].get("BeaconPlacementsTag"_jrs, "{BEACONPLACEMENTS}"_jrs); - this->beaconDisarmsTag = config[configSection].get("BeaconDisarmsTag"_jrs, "{BEACONDISARMS}"_jrs); - this->proxyPlacementsTag = config[configSection].get("ProxyPlacementsTag"_jrs, "{PROXYPLACEMENTS}"_jrs); - this->proxyDisarmsTag = config[configSection].get("ProxyDisarmsTag"_jrs, "{PROXYDISARMS}"_jrs); - this->capturesTag = config[configSection].get("CapturesTag"_jrs, "{CAPTURES}"_jrs); - this->stealsTag = config[configSection].get("StealsTag"_jrs, "{STEALS}"_jrs); - this->stolenTag = config[configSection].get("StolenTag"_jrs, "{STOLEN}"_jrs); - this->accessTag = config[configSection].get("AccessTag"_jrs, "{ACCESS}"_jrs); + this->nameTag = config[configSection].get("NameTag"sv, "{NAME}"sv); + this->rawNameTag = config[configSection].get("RawNameTag"sv, "{RNAME}"sv); + this->ipTag = config[configSection].get("IPTag"sv, "{IP}"sv); + this->hwidTag = config[configSection].get("HWIDTag"sv, "{HWID}"sv); + this->rdnsTag = config[configSection].get("RDNSTag"sv, "{RDNS}"sv); + this->steamTag = config[configSection].get("SteamTag"sv, "{STEAM}"sv); + this->uuidTag = config[configSection].get("UUIDTag"sv, "{UUID}"sv); + this->idTag = config[configSection].get("IDTag"sv, "{ID}"sv); + this->characterTag = config[configSection].get("CharacterTag"sv, "{CHAR}"sv); + this->vehicleTag = config[configSection].get("VehicleTag"sv, "{VEH}"sv); + this->adminTag = config[configSection].get("AdminTag"sv, "{ADMIN}"sv); + this->prefixTag = config[configSection].get("PrefixTag"sv, "{PREFIX}"sv); + this->gamePrefixTag = config[configSection].get("GamePrefixTag"sv, "{GPREFIX}"sv); + this->teamColorTag = config[configSection].get("TeamColorTag"sv, "{TCOLOR}"sv); + this->teamShortTag = config[configSection].get("ShortTeamTag"sv, "{TEAMS}"sv); + this->teamLongTag = config[configSection].get("LongTeamTag"sv, "{TEAML}"sv); + this->pingTag = config[configSection].get("PingTag"sv, "{PING}"sv); + this->scoreTag = config[configSection].get("ScoreTag"sv, "{SCORE}"sv); + this->scorePerMinuteTag = config[configSection].get("ScorePerMinuteTag"sv, "{SPM}"sv); + this->creditsTag = config[configSection].get("CreditsTag"sv, "{CREDITS}"sv); + this->killsTag = config[configSection].get("KillsTag"sv, "{KILLS}"sv); + this->deathsTag = config[configSection].get("DeathsTag"sv, "{DEATHS}"sv); + this->kdrTag = config[configSection].get("KDRTag"sv, "{KDR}"sv); + this->suicidesTag = config[configSection].get("SuicidesTag"sv, "{SUICIDES}"sv); + this->headshotsTag = config[configSection].get("HeadshotsTag"sv, "{HEADSHOTS}"sv); + this->headshotKillRatioTag = config[configSection].get("HeadshotKillRatioTag"sv, "{HSKR}"sv); + this->vehicleKillsTag = config[configSection].get("VehicleKillsTag"sv, "{VEHICLEKILLS}"sv); + this->buildingKillsTag = config[configSection].get("BuildingKillsTag"sv, "{BUILDINGKILLS}"sv); + this->defenceKillsTag = config[configSection].get("DefenceKillsTag"sv, "{DEFENCEKILLS}"sv); + this->gameTimeTag = config[configSection].get("GameTimeTag"sv, "{GAMETIME}"sv); + this->gamesTag = config[configSection].get("GamesTag"sv, "{GAMES}"sv); + this->GDIGamesTag = config[configSection].get("GDIGamesTag"sv, "{GDIGAMES}"sv); + this->NodGamesTag = config[configSection].get("NodGamesTag"sv, "{NODGAMES}"sv); + this->winsTag = config[configSection].get("WinsTag"sv, "{WINS}"sv); + this->GDIWinsTag = config[configSection].get("GDIWinsTag"sv, "{GDIWINS}"sv); + this->NodWinsTag = config[configSection].get("NodWinsTag"sv, "{NODWINS}"sv); + this->tiesTag = config[configSection].get("TiesTag"sv, "{TIES}"sv); + this->lossesTag = config[configSection].get("LossesTag"sv, "{LOSSES}"sv); + this->GDILossesTag = config[configSection].get("GDILossesTag"sv, "{GDILOSSES}"sv); + this->NodLossesTag = config[configSection].get("NodLossesTag"sv, "{NODLOSSES}"sv); + this->winLossRatioTag = config[configSection].get("WinLossRatioTag"sv, "{WLR}"sv); + this->GDIWinLossRatioTag = config[configSection].get("GDIWinLossRatioTag"sv, "{GDIWLR}"sv); + this->NodWinLossRatioTag = config[configSection].get("NodWinLossRatioTag"sv, "{NODWLR}"sv); + this->beaconPlacementsTag = config[configSection].get("BeaconPlacementsTag"sv, "{BEACONPLACEMENTS}"sv); + this->beaconDisarmsTag = config[configSection].get("BeaconDisarmsTag"sv, "{BEACONDISARMS}"sv); + this->proxyPlacementsTag = config[configSection].get("ProxyPlacementsTag"sv, "{PROXYPLACEMENTS}"sv); + this->proxyDisarmsTag = config[configSection].get("ProxyDisarmsTag"sv, "{PROXYDISARMS}"sv); + this->capturesTag = config[configSection].get("CapturesTag"sv, "{CAPTURES}"sv); + this->stealsTag = config[configSection].get("StealsTag"sv, "{STEALS}"sv); + this->stolenTag = config[configSection].get("StolenTag"sv, "{STOLEN}"sv); + this->accessTag = config[configSection].get("AccessTag"sv, "{ACCESS}"sv); /** Victim player tags */ - this->victimNameTag = config[configSection].get("VictimNameTag"_jrs, "{VNAME}"_jrs); - this->victimRawNameTag = config[configSection].get("VictimRawNameTag"_jrs, "{VRNAME}"_jrs); - this->victimIPTag = config[configSection].get("VictimIPTag"_jrs, "{VIP}"_jrs); - this->victimHWIDTag = config[configSection].get("VictimHWIDTag"_jrs, "{VHWID}"_jrs); - this->victimRDNSTag = config[configSection].get("VictimRDNSTag"_jrs, "{VRDNS}"_jrs); - this->victimSteamTag = config[configSection].get("VictimSteamTag"_jrs, "{VSTEAM}"_jrs); - this->victimUUIDTag = config[configSection].get("VictimUUIDTag"_jrs, "{VUUID}"_jrs); - this->victimIDTag = config[configSection].get("VictimIDTag"_jrs, "{VID}"_jrs); - this->victimCharacterTag = config[configSection].get("VictimCharacterTag"_jrs, "{VCHAR}"_jrs); - this->victimVehicleTag = config[configSection].get("VictimVehicleTag"_jrs, "{VVEH}"_jrs); - this->victimAdminTag = config[configSection].get("VictimAdminTag"_jrs, "{VADMIN}"_jrs); - this->victimPrefixTag = config[configSection].get("VictimPrefixTag"_jrs, "{VPREFIX}"_jrs); - this->victimGamePrefixTag = config[configSection].get("VictimGamePrefixTag"_jrs, "{VGPREFIX}"_jrs); - this->victimTeamColorTag = config[configSection].get("VictimTeamColorTag"_jrs, "{VTCOLOR}"_jrs); - this->victimTeamShortTag = config[configSection].get("VictimShortTeamTag"_jrs, "{VTEAMS}"_jrs); - this->victimTeamLongTag = config[configSection].get("VictimLongTeamTag"_jrs, "{VTEAML}"_jrs); - this->victimPingTag = config[configSection].get("VictimPingTag"_jrs, "{VPING}"_jrs); - this->victimScoreTag = config[configSection].get("VictimScoreTag"_jrs, "{VSCORE}"_jrs); - this->victimScorePerMinuteTag = config[configSection].get("VictimScorePerMinuteTag"_jrs, "{VSPM}"_jrs); - this->victimCreditsTag = config[configSection].get("VictimCreditsTag"_jrs, "{VCREDITS}"_jrs); - this->victimKillsTag = config[configSection].get("VictimKillsTag"_jrs, "{VKILLS}"_jrs); - this->victimDeathsTag = config[configSection].get("VictimDeathsTag"_jrs, "{VDEATHS}"_jrs); - this->victimKDRTag = config[configSection].get("VictimKDRTag"_jrs, "{VKDR}"_jrs); - this->victimSuicidesTag = config[configSection].get("VictimSuicidesTag"_jrs, "{VSUICIDES}"_jrs); - this->victimHeadshotsTag = config[configSection].get("VictimHeadshotsTag"_jrs, "{VHEADSHOTS}"_jrs); - this->victimHeadshotKillRatioTag = config[configSection].get("VictimHeadshotKillRatioTag"_jrs, "{VHSKR}"_jrs); - this->victimVehicleKillsTag = config[configSection].get("VictimVehicleKillsTag"_jrs, "{VVEHICLEKILLS}"_jrs); - this->victimBuildingKillsTag = config[configSection].get("VictimBuildingKillsTag"_jrs, "{VBUILDINGKILLS}"_jrs); - this->victimDefenceKillsTag = config[configSection].get("VictimDefenceKillsTag"_jrs, "{VDEFENCEKILLS}"_jrs); - this->victimGameTimeTag = config[configSection].get("VictimGameTimeTag"_jrs, "{VGAMETIME}"_jrs); - this->victimGamesTag = config[configSection].get("VictimGamesTag"_jrs, "{VGAMES}"_jrs); - this->victimGDIGamesTag = config[configSection].get("VictimGDIGamesTag"_jrs, "{VGDIGAMES}"_jrs); - this->victimNodGamesTag = config[configSection].get("VictimNodGamesTag"_jrs, "{VNODGAMES}"_jrs); - this->victimWinsTag = config[configSection].get("VictimWinsTag"_jrs, "{VWINS}"_jrs); - this->victimGDIWinsTag = config[configSection].get("VictimGDIWinsTag"_jrs, "{VGDIWINS}"_jrs); - this->victimNodWinsTag = config[configSection].get("VictimNodWinsTag"_jrs, "{VNODWINS}"_jrs); - this->victimTiesTag = config[configSection].get("VictimTiesTag"_jrs, "{VTIES}"_jrs); - this->victimLossesTag = config[configSection].get("VictimLossesTag"_jrs, "{VLOSSES}"_jrs); - this->victimGDILossesTag = config[configSection].get("VictimGDILossesTag"_jrs, "{VGDILOSSES}"_jrs); - this->victimNodLossesTag = config[configSection].get("VictimNodLossesTag"_jrs, "{VNODLOSSES}"_jrs); - this->victimWinLossRatioTag = config[configSection].get("VictimWinLossRatioTag"_jrs, "{VWLR}"_jrs); - this->victimGDIWinLossRatioTag = config[configSection].get("VictimGDIWinLossRatioTag"_jrs, "{VGDIWLR}"_jrs); - this->victimNodWinLossRatioTag = config[configSection].get("VictimNodWinLossRatioTag"_jrs, "{VNODWLR}"_jrs); - this->victimBeaconPlacementsTag = config[configSection].get("VictimBeaconPlacementsTag"_jrs, "{VBEACONPLACEMENTS}"_jrs); - this->victimBeaconDisarmsTag = config[configSection].get("VictimBeaconDisarmsTag"_jrs, "{VBEACONDISARMS}"_jrs); - this->victimProxyPlacementsTag = config[configSection].get("VictimProxyPlacementsTag"_jrs, "{VPROXYPLACEMENTS}"_jrs); - this->victimProxyDisarmsTag = config[configSection].get("VictimProxyDisarmsTag"_jrs, "{VPROXYDISARMS}"_jrs); - this->victimCapturesTag = config[configSection].get("VictimCapturesTag"_jrs, "{VCAPTURES}"_jrs); - this->victimStealsTag = config[configSection].get("VictimStealsTag"_jrs, "{VSTEALS}"_jrs); - this->victimStolenTag = config[configSection].get("VictimStolenTag"_jrs, "{VSTOLEN}"_jrs); - this->victimAccessTag = config[configSection].get("VictimAccessTag"_jrs, "{VACCESS}"_jrs); + this->victimNameTag = config[configSection].get("VictimNameTag"sv, "{VNAME}"sv); + this->victimRawNameTag = config[configSection].get("VictimRawNameTag"sv, "{VRNAME}"sv); + this->victimIPTag = config[configSection].get("VictimIPTag"sv, "{VIP}"sv); + this->victimHWIDTag = config[configSection].get("VictimHWIDTag"sv, "{VHWID}"sv); + this->victimRDNSTag = config[configSection].get("VictimRDNSTag"sv, "{VRDNS}"sv); + this->victimSteamTag = config[configSection].get("VictimSteamTag"sv, "{VSTEAM}"sv); + this->victimUUIDTag = config[configSection].get("VictimUUIDTag"sv, "{VUUID}"sv); + this->victimIDTag = config[configSection].get("VictimIDTag"sv, "{VID}"sv); + this->victimCharacterTag = config[configSection].get("VictimCharacterTag"sv, "{VCHAR}"sv); + this->victimVehicleTag = config[configSection].get("VictimVehicleTag"sv, "{VVEH}"sv); + this->victimAdminTag = config[configSection].get("VictimAdminTag"sv, "{VADMIN}"sv); + this->victimPrefixTag = config[configSection].get("VictimPrefixTag"sv, "{VPREFIX}"sv); + this->victimGamePrefixTag = config[configSection].get("VictimGamePrefixTag"sv, "{VGPREFIX}"sv); + this->victimTeamColorTag = config[configSection].get("VictimTeamColorTag"sv, "{VTCOLOR}"sv); + this->victimTeamShortTag = config[configSection].get("VictimShortTeamTag"sv, "{VTEAMS}"sv); + this->victimTeamLongTag = config[configSection].get("VictimLongTeamTag"sv, "{VTEAML}"sv); + this->victimPingTag = config[configSection].get("VictimPingTag"sv, "{VPING}"sv); + this->victimScoreTag = config[configSection].get("VictimScoreTag"sv, "{VSCORE}"sv); + this->victimScorePerMinuteTag = config[configSection].get("VictimScorePerMinuteTag"sv, "{VSPM}"sv); + this->victimCreditsTag = config[configSection].get("VictimCreditsTag"sv, "{VCREDITS}"sv); + this->victimKillsTag = config[configSection].get("VictimKillsTag"sv, "{VKILLS}"sv); + this->victimDeathsTag = config[configSection].get("VictimDeathsTag"sv, "{VDEATHS}"sv); + this->victimKDRTag = config[configSection].get("VictimKDRTag"sv, "{VKDR}"sv); + this->victimSuicidesTag = config[configSection].get("VictimSuicidesTag"sv, "{VSUICIDES}"sv); + this->victimHeadshotsTag = config[configSection].get("VictimHeadshotsTag"sv, "{VHEADSHOTS}"sv); + this->victimHeadshotKillRatioTag = config[configSection].get("VictimHeadshotKillRatioTag"sv, "{VHSKR}"sv); + this->victimVehicleKillsTag = config[configSection].get("VictimVehicleKillsTag"sv, "{VVEHICLEKILLS}"sv); + this->victimBuildingKillsTag = config[configSection].get("VictimBuildingKillsTag"sv, "{VBUILDINGKILLS}"sv); + this->victimDefenceKillsTag = config[configSection].get("VictimDefenceKillsTag"sv, "{VDEFENCEKILLS}"sv); + this->victimGameTimeTag = config[configSection].get("VictimGameTimeTag"sv, "{VGAMETIME}"sv); + this->victimGamesTag = config[configSection].get("VictimGamesTag"sv, "{VGAMES}"sv); + this->victimGDIGamesTag = config[configSection].get("VictimGDIGamesTag"sv, "{VGDIGAMES}"sv); + this->victimNodGamesTag = config[configSection].get("VictimNodGamesTag"sv, "{VNODGAMES}"sv); + this->victimWinsTag = config[configSection].get("VictimWinsTag"sv, "{VWINS}"sv); + this->victimGDIWinsTag = config[configSection].get("VictimGDIWinsTag"sv, "{VGDIWINS}"sv); + this->victimNodWinsTag = config[configSection].get("VictimNodWinsTag"sv, "{VNODWINS}"sv); + this->victimTiesTag = config[configSection].get("VictimTiesTag"sv, "{VTIES}"sv); + this->victimLossesTag = config[configSection].get("VictimLossesTag"sv, "{VLOSSES}"sv); + this->victimGDILossesTag = config[configSection].get("VictimGDILossesTag"sv, "{VGDILOSSES}"sv); + this->victimNodLossesTag = config[configSection].get("VictimNodLossesTag"sv, "{VNODLOSSES}"sv); + this->victimWinLossRatioTag = config[configSection].get("VictimWinLossRatioTag"sv, "{VWLR}"sv); + this->victimGDIWinLossRatioTag = config[configSection].get("VictimGDIWinLossRatioTag"sv, "{VGDIWLR}"sv); + this->victimNodWinLossRatioTag = config[configSection].get("VictimNodWinLossRatioTag"sv, "{VNODWLR}"sv); + this->victimBeaconPlacementsTag = config[configSection].get("VictimBeaconPlacementsTag"sv, "{VBEACONPLACEMENTS}"sv); + this->victimBeaconDisarmsTag = config[configSection].get("VictimBeaconDisarmsTag"sv, "{VBEACONDISARMS}"sv); + this->victimProxyPlacementsTag = config[configSection].get("VictimProxyPlacementsTag"sv, "{VPROXYPLACEMENTS}"sv); + this->victimProxyDisarmsTag = config[configSection].get("VictimProxyDisarmsTag"sv, "{VPROXYDISARMS}"sv); + this->victimCapturesTag = config[configSection].get("VictimCapturesTag"sv, "{VCAPTURES}"sv); + this->victimStealsTag = config[configSection].get("VictimStealsTag"sv, "{VSTEALS}"sv); + this->victimStolenTag = config[configSection].get("VictimStolenTag"sv, "{VSTOLEN}"sv); + this->victimAccessTag = config[configSection].get("VictimAccessTag"sv, "{VACCESS}"sv); /** Building tags */ - this->buildingNameTag = config[configSection].get("BuildingNameTag"_jrs, "{BNAME}"_jrs); - this->buildingRawNameTag = config[configSection].get("BuildingRawNameTag"_jrs, "{BRNAME}"_jrs); - this->buildingHealthTag = config[configSection].get("BuildingHealthTag"_jrs, "{BHEALTH}"_jrs); - this->buildingMaxHealthTag = config[configSection].get("BuildingMaxHealthTag"_jrs, "{BMHEALTH}"_jrs); - this->buildingHealthPercentageTag = config[configSection].get("BuildingHealthPercentageTag"_jrs, "{BHP}"_jrs); - this->buildingArmorTag = config[configSection].get("BuildingArmorTag"_jrs, "{BARMOR}"_jrs); - this->buildingMaxArmorTag = config[configSection].get("BuildingMaxArmorTag"_jrs, "{BMARMOR}"_jrs); - this->buildingArmorPercentageTag = config[configSection].get("BuildingArmorPercentageTag"_jrs, "{BAP}"_jrs); - this->buildingDurabilityTag = config[configSection].get("BuildingDurabilityTag"_jrs, "{BDURABILITY}"_jrs); - this->buildingMaxDurabilityTag = config[configSection].get("BuildingMaxDurabilityTag"_jrs, "{BMDURABILITY}"_jrs); - this->buildingDurabilityPercentageTag = config[configSection].get("BuildingDurabilityPercentageTag"_jrs, "{BDP}"_jrs); - this->buildingTeamColorTag = config[configSection].get("BuildingTeamColorTag"_jrs, "{BCOLOR}"_jrs); - this->buildingTeamShortTag = config[configSection].get("BuildingShortTeamTag"_jrs, "{BTEAMS}"_jrs); - this->buildingTeamLongTag = config[configSection].get("BuildingLongTeamTag"_jrs, "{BTEAML}"_jrs); + this->buildingNameTag = config[configSection].get("BuildingNameTag"sv, "{BNAME}"sv); + this->buildingRawNameTag = config[configSection].get("BuildingRawNameTag"sv, "{BRNAME}"sv); + this->buildingHealthTag = config[configSection].get("BuildingHealthTag"sv, "{BHEALTH}"sv); + this->buildingMaxHealthTag = config[configSection].get("BuildingMaxHealthTag"sv, "{BMHEALTH}"sv); + this->buildingHealthPercentageTag = config[configSection].get("BuildingHealthPercentageTag"sv, "{BHP}"sv); + this->buildingArmorTag = config[configSection].get("BuildingArmorTag"sv, "{BARMOR}"sv); + this->buildingMaxArmorTag = config[configSection].get("BuildingMaxArmorTag"sv, "{BMARMOR}"sv); + this->buildingArmorPercentageTag = config[configSection].get("BuildingArmorPercentageTag"sv, "{BAP}"sv); + this->buildingDurabilityTag = config[configSection].get("BuildingDurabilityTag"sv, "{BDURABILITY}"sv); + this->buildingMaxDurabilityTag = config[configSection].get("BuildingMaxDurabilityTag"sv, "{BMDURABILITY}"sv); + this->buildingDurabilityPercentageTag = config[configSection].get("BuildingDurabilityPercentageTag"sv, "{BDP}"sv); + this->buildingTeamColorTag = config[configSection].get("BuildingTeamColorTag"sv, "{BCOLOR}"sv); + this->buildingTeamShortTag = config[configSection].get("BuildingShortTeamTag"sv, "{BTEAMS}"sv); + this->buildingTeamLongTag = config[configSection].get("BuildingLongTeamTag"sv, "{BTEAML}"sv); /** Ladder tags */ - this->rankTag = config[configSection].get("RankTag"_jrs, "{RANK}"_jrs); - this->lastGameTag = config[configSection].get("LastGameTag"_jrs, "{LASTGAME}"_jrs); - this->GDIScoreTag = config[configSection].get("GDIScoreTag"_jrs, "{GDISCORE}"_jrs); - this->GDISPMTag = config[configSection].get("GDISPMTag"_jrs, "{GDISPM}"_jrs); - this->GDIGameTimeTag = config[configSection].get("GDIGameTimeTag"_jrs, "{GDIGAMETIME}"_jrs); - this->GDITiesTag = config[configSection].get("GDITiesTag"_jrs, "{GDITIES}"_jrs); - this->GDIBeaconPlacementsTag = config[configSection].get("GDIBeaconPlacementsTag"_jrs, "{GDIBEACONPLACEMENTS}"_jrs); - this->GDIBeaconDisarmsTag = config[configSection].get("GDIBeaconDisarmsTag"_jrs, "{GDIBEACONDISARMS}"_jrs); - this->GDIProxyPlacementsTag = config[configSection].get("GDIProxyPlacementsTag"_jrs, "{GDIPROXYPLACEMENTS}"_jrs); - this->GDIProxyDisarmsTag = config[configSection].get("GDIProxyDisarmsTag"_jrs, "{GDIPROXYDISARMS}"_jrs); - this->GDIKillsTag = config[configSection].get("GDIKillsTag"_jrs, "{GDIKILLS}"_jrs); - this->GDIDeathsTag = config[configSection].get("GDIDeathsTag"_jrs, "{GDIDEATHS}"_jrs); - this->GDIVehicleKillsTag = config[configSection].get("GDIVehicleKillsTag"_jrs, "{GDIVEHICLEKILLS}"_jrs); - this->GDIDefenceKillsTag = config[configSection].get("GDIDefenceKillsTag"_jrs, "{GDIDEFENCEKILLS}"_jrs); - this->GDIBuildingKillsTag = config[configSection].get("GDIBuildingKillsTag"_jrs, "{GDIBUILDINGKILLS}"_jrs); - this->GDIKDRTag = config[configSection].get("GDIKDRTag"_jrs, "{GDIKDR}"_jrs); - this->GDIHeadshotsTag = config[configSection].get("GDIHeadshotsTag"_jrs, "{GDIHEADSHOTS}"_jrs); - this->GDIHeadshotKillRatioTag = config[configSection].get("GDIHeadshotKillRatioTag"_jrs, "{GDIHSKR}"_jrs); - this->NodScoreTag = config[configSection].get("NodScoreTag"_jrs, "{NODSCORE}"_jrs); - this->NodSPMTag = config[configSection].get("NodSPMTag"_jrs, "{NODSPM}"_jrs); - this->NodGameTimeTag = config[configSection].get("NodGameTimeTag"_jrs, "{NODGAMETIME}"_jrs); - this->NodTiesTag = config[configSection].get("NodTiesTag"_jrs, "{NODTIES}"_jrs); - this->NodBeaconPlacementsTag = config[configSection].get("NodBeaconPlacementsTag"_jrs, "{NODBEACONPLACEMENTS}"_jrs); - this->NodBeaconDisarmsTag = config[configSection].get("NodBeaconDisarmsTag"_jrs, "{NODBEACONDISARMS}"_jrs); - this->NodProxyPlacementsTag = config[configSection].get("NodProxyPlacementsTag"_jrs, "{NODPROXYPLACEMENTS}"_jrs); - this->NodProxyDisarmsTag = config[configSection].get("NodProxyDisarmsTag"_jrs, "{NODPROXYDISARMS}"_jrs); - this->NodKillsTag = config[configSection].get("NodKillsTag"_jrs, "{NODKILLS}"_jrs); - this->NodDeathsTag = config[configSection].get("NodDeathsTag"_jrs, "{NODDEATHS}"_jrs); - this->NodVehicleKillsTag = config[configSection].get("NodVehicleKillsTag"_jrs, "{NODVEHICLEKILLS}"_jrs); - this->NodDefenceKillsTag = config[configSection].get("NodDefenceKillsTag"_jrs, "{NODDEFENCEKILLS}"_jrs); - this->NodBuildingKillsTag = config[configSection].get("NodBuildingKillsTag"_jrs, "{NODBUILDINGKILLS}"_jrs); - this->NodKDRTag = config[configSection].get("NodKDRTag"_jrs, "{NODKDR}"_jrs); - this->NodHeadshotsTag = config[configSection].get("NodHeadshotsTag"_jrs, "{NODHEADSHOTS}"_jrs); - this->NodHeadshotKillRatioTag = config[configSection].get("NodHeadshotKillRatioTag"_jrs, "{NODHSKR}"_jrs); + this->rankTag = config[configSection].get("RankTag"sv, "{RANK}"sv); + this->lastGameTag = config[configSection].get("LastGameTag"sv, "{LASTGAME}"sv); + this->GDIScoreTag = config[configSection].get("GDIScoreTag"sv, "{GDISCORE}"sv); + this->GDISPMTag = config[configSection].get("GDISPMTag"sv, "{GDISPM}"sv); + this->GDIGameTimeTag = config[configSection].get("GDIGameTimeTag"sv, "{GDIGAMETIME}"sv); + this->GDITiesTag = config[configSection].get("GDITiesTag"sv, "{GDITIES}"sv); + this->GDIBeaconPlacementsTag = config[configSection].get("GDIBeaconPlacementsTag"sv, "{GDIBEACONPLACEMENTS}"sv); + this->GDIBeaconDisarmsTag = config[configSection].get("GDIBeaconDisarmsTag"sv, "{GDIBEACONDISARMS}"sv); + this->GDIProxyPlacementsTag = config[configSection].get("GDIProxyPlacementsTag"sv, "{GDIPROXYPLACEMENTS}"sv); + this->GDIProxyDisarmsTag = config[configSection].get("GDIProxyDisarmsTag"sv, "{GDIPROXYDISARMS}"sv); + this->GDIKillsTag = config[configSection].get("GDIKillsTag"sv, "{GDIKILLS}"sv); + this->GDIDeathsTag = config[configSection].get("GDIDeathsTag"sv, "{GDIDEATHS}"sv); + this->GDIVehicleKillsTag = config[configSection].get("GDIVehicleKillsTag"sv, "{GDIVEHICLEKILLS}"sv); + this->GDIDefenceKillsTag = config[configSection].get("GDIDefenceKillsTag"sv, "{GDIDEFENCEKILLS}"sv); + this->GDIBuildingKillsTag = config[configSection].get("GDIBuildingKillsTag"sv, "{GDIBUILDINGKILLS}"sv); + this->GDIKDRTag = config[configSection].get("GDIKDRTag"sv, "{GDIKDR}"sv); + this->GDIHeadshotsTag = config[configSection].get("GDIHeadshotsTag"sv, "{GDIHEADSHOTS}"sv); + this->GDIHeadshotKillRatioTag = config[configSection].get("GDIHeadshotKillRatioTag"sv, "{GDIHSKR}"sv); + this->NodScoreTag = config[configSection].get("NodScoreTag"sv, "{NODSCORE}"sv); + this->NodSPMTag = config[configSection].get("NodSPMTag"sv, "{NODSPM}"sv); + this->NodGameTimeTag = config[configSection].get("NodGameTimeTag"sv, "{NODGAMETIME}"sv); + this->NodTiesTag = config[configSection].get("NodTiesTag"sv, "{NODTIES}"sv); + this->NodBeaconPlacementsTag = config[configSection].get("NodBeaconPlacementsTag"sv, "{NODBEACONPLACEMENTS}"sv); + this->NodBeaconDisarmsTag = config[configSection].get("NodBeaconDisarmsTag"sv, "{NODBEACONDISARMS}"sv); + this->NodProxyPlacementsTag = config[configSection].get("NodProxyPlacementsTag"sv, "{NODPROXYPLACEMENTS}"sv); + this->NodProxyDisarmsTag = config[configSection].get("NodProxyDisarmsTag"sv, "{NODPROXYDISARMS}"sv); + this->NodKillsTag = config[configSection].get("NodKillsTag"sv, "{NODKILLS}"sv); + this->NodDeathsTag = config[configSection].get("NodDeathsTag"sv, "{NODDEATHS}"sv); + this->NodVehicleKillsTag = config[configSection].get("NodVehicleKillsTag"sv, "{NODVEHICLEKILLS}"sv); + this->NodDefenceKillsTag = config[configSection].get("NodDefenceKillsTag"sv, "{NODDEFENCEKILLS}"sv); + this->NodBuildingKillsTag = config[configSection].get("NodBuildingKillsTag"sv, "{NODBUILDINGKILLS}"sv); + this->NodKDRTag = config[configSection].get("NodKDRTag"sv, "{NODKDR}"sv); + this->NodHeadshotsTag = config[configSection].get("NodHeadshotsTag"sv, "{NODHEADSHOTS}"sv); + this->NodHeadshotKillRatioTag = config[configSection].get("NodHeadshotKillRatioTag"sv, "{NODHSKR}"sv); /** Other tags */ - this->weaponTag = config[configSection].get("WeaponTag"_jrs, "{WEAPON}"_jrs); - this->objectTag = config[configSection].get("ObjectTag"_jrs, "{OBJECT}"_jrs); - this->messageTag = config[configSection].get("MessageTag"_jrs, "{MESSAGE}"_jrs); - this->newNameTag = config[configSection].get("NewNameTag"_jrs, "{NNAME}"_jrs); - this->winScoreTag = config[configSection].get("WinScoreTag"_jrs, "{WINSCORE}"_jrs); - this->loseScoreTag = config[configSection].get("LoseScoreTag"_jrs, "{LOSESCORE}"_jrs); + this->weaponTag = config[configSection].get("WeaponTag"sv, "{WEAPON}"sv); + this->objectTag = config[configSection].get("ObjectTag"sv, "{OBJECT}"sv); + this->messageTag = config[configSection].get("MessageTag"sv, "{MESSAGE}"sv); + this->newNameTag = config[configSection].get("NewNameTag"sv, "{NNAME}"sv); + this->winScoreTag = config[configSection].get("WinScoreTag"sv, "{WINSCORE}"sv); + this->loseScoreTag = config[configSection].get("LoseScoreTag"sv, "{LOSESCORE}"sv); return true; } @@ -868,9 +867,8 @@ void TagsImp::sanitizeTags(std::string& fmt) } } -std::string_view TagsImp::getUniqueInternalTag() -{ - this->uniqueTag.set(1, reinterpret_cast(&this->tagItr), sizeof(TagsImp::tagItr)); +std::string_view TagsImp::getUniqueInternalTag() { + std::memcpy(this->uniqueTag.data() + 1, reinterpret_cast(&this->tagItr), sizeof(TagsImp::tagItr)); ++TagsImp::tagItr; return this->uniqueTag; } diff --git a/src/Plugins/RenX/RenX.Core/RenX_Tags.h b/src/Plugins/RenX/RenX.Core/RenX_Tags.h index 943a80d..9f905f6 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Tags.h +++ b/src/Plugins/RenX/RenX.Core/RenX_Tags.h @@ -24,7 +24,6 @@ * @brief Provides tag processing functions */ -#include "Jupiter/String.hpp" #include "RenX.h" #include "RenX_LadderDatabase.h" diff --git a/src/Plugins/RenX/RenX.Core/RenX_TeamInfo.h b/src/Plugins/RenX/RenX.Core/RenX_TeamInfo.h index d40dd30..fad3e7a 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_TeamInfo.h +++ b/src/Plugins/RenX/RenX.Core/RenX_TeamInfo.h @@ -24,7 +24,6 @@ * @brief Defines the BuildingInfo structure. */ -#include "Jupiter/String.hpp" #include "RenX.h" /** DLL Linkage Nagging */ @@ -49,7 +48,7 @@ namespace RenX int32_t mine_limit; int32_t vehicle_count; int32_t vehicle_limit; - Jupiter::StringS name; + std::string name; }; } diff --git a/src/Plugins/RenX/RenX.ExcessiveHeadshots/RenX_ExcessiveHeadshots.cpp b/src/Plugins/RenX/RenX.ExcessiveHeadshots/RenX_ExcessiveHeadshots.cpp index 2642c9a..25eca31 100644 --- a/src/Plugins/RenX/RenX.ExcessiveHeadshots/RenX_ExcessiveHeadshots.cpp +++ b/src/Plugins/RenX/RenX.ExcessiveHeadshots/RenX_ExcessiveHeadshots.cpp @@ -23,15 +23,14 @@ #include "RenX_PlayerInfo.h" #include "RenX_Functions.h" -using namespace Jupiter::literals; using namespace std::literals; bool RenX_ExcessiveHeadshotsPlugin::initialize() { - RenX_ExcessiveHeadshotsPlugin::ratio = this->config.get("HeadshotKillRatio"_jrs, 0.5); - RenX_ExcessiveHeadshotsPlugin::minKills = this->config.get("Kills"_jrs, 10); - RenX_ExcessiveHeadshotsPlugin::minKD = this->config.get("KillDeathRatio"_jrs, 5.0); - RenX_ExcessiveHeadshotsPlugin::minKPS = this->config.get("KillsPerSecond"_jrs, 0.5); - RenX_ExcessiveHeadshotsPlugin::minFlags = this->config.get("Flags"_jrs, 4); + RenX_ExcessiveHeadshotsPlugin::ratio = this->config.get("HeadshotKillRatio"sv, 0.5); + RenX_ExcessiveHeadshotsPlugin::minKills = this->config.get("Kills"sv, 10); + RenX_ExcessiveHeadshotsPlugin::minKD = this->config.get("KillDeathRatio"sv, 5.0); + RenX_ExcessiveHeadshotsPlugin::minKPS = this->config.get("KillsPerSecond"sv, 0.5); + RenX_ExcessiveHeadshotsPlugin::minFlags = this->config.get("Flags"sv, 4); return true; } @@ -57,7 +56,7 @@ void RenX_ExcessiveHeadshotsPlugin::RenX_OnKill(RenX::Server &server, const RenX if (flags >= RenX_ExcessiveHeadshotsPlugin::minFlags) { - server.banPlayer(player, "Jupiter Bot"_jrs, "Aimbot detected"_jrs); + server.banPlayer(player, "Jupiter Bot"sv, "Aimbot detected"sv); server.sendPubChan(IRCCOLOR "13[Aimbot]" IRCCOLOR " %.*s was banned from the server! Kills: %u - Deaths: %u - Headshots: %u", player.name.size(), player.name.data(), player.kills, player.deaths, player.headshots); std::string_view steamid = server.formatSteamID(player); server.sendAdmChan(IRCCOLOR "13[Aimbot]" IRCCOLOR " %.*s was banned from the server! Kills: %u - Deaths: %u - Headshots: %u - IP: " IRCBOLD "%.*s" IRCBOLD " - Steam ID: " IRCBOLD "%.*s" IRCBOLD, player.name.size(), player.name.data(), player.kills, player.deaths, player.headshots, player.ip.size(), player.ip.data(), steamid.size(), diff --git a/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp b/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp index ee7b972..c983373 100644 --- a/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp +++ b/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp @@ -21,7 +21,7 @@ #include "RenX_Server.h" #include "RenX_Tags.h" -using namespace Jupiter::literals; +using namespace std::literals; RenX_ExtraLoggingPlugin::RenX_ExtraLoggingPlugin() { @@ -46,15 +46,15 @@ int RenX_ExtraLoggingPlugin::OnRehash() } bool RenX_ExtraLoggingPlugin::initialize() { - RenX_ExtraLoggingPlugin::filePrefix = this->config.get("FilePrefix"_jrs, string_printf("[%.*s] %.*s", RenX::tags->timeTag.size(), + RenX_ExtraLoggingPlugin::filePrefix = this->config.get("FilePrefix"sv, string_printf("[%.*s] %.*s", RenX::tags->timeTag.size(), RenX::tags->timeTag.data(), RenX::tags->serverPrefixTag.size(), RenX::tags->serverPrefixTag.data())); - RenX_ExtraLoggingPlugin::consolePrefix = this->config.get("ConsolePrefix"_jrs, RenX_ExtraLoggingPlugin::filePrefix); - RenX_ExtraLoggingPlugin::newDayFmt = this->config.get("NewDayFormat"_jrs, string_printf("Time: %.*s %.*s", RenX::tags->timeTag.size(), + RenX_ExtraLoggingPlugin::consolePrefix = this->config.get("ConsolePrefix"sv, RenX_ExtraLoggingPlugin::filePrefix); + RenX_ExtraLoggingPlugin::newDayFmt = this->config.get("NewDayFormat"sv, string_printf("Time: %.*s %.*s", RenX::tags->timeTag.size(), RenX::tags->timeTag.data(), RenX::tags->dateTag.size(), RenX::tags->dateTag.data())); - RenX_ExtraLoggingPlugin::printToConsole = this->config.get("PrintToConsole"_jrs, true); - const std::string logFile = static_cast(this->config.get("LogFile"_jrs)); + RenX_ExtraLoggingPlugin::printToConsole = this->config.get("PrintToConsole"sv, true); + const std::string logFile = static_cast(this->config.get("LogFile"sv)); RenX::sanitizeTags(RenX_ExtraLoggingPlugin::filePrefix); RenX::sanitizeTags(RenX_ExtraLoggingPlugin::consolePrefix); diff --git a/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.h b/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.h index 82533fe..7aecad9 100644 --- a/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.h +++ b/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.h @@ -20,7 +20,6 @@ #define _RENX_EXTRALOGGING_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/String.hpp" #include "RenX_Plugin.h" class RenX_ExtraLoggingPlugin : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.Greetings/RenX_Greetings.cpp b/src/Plugins/RenX/RenX.Greetings/RenX_Greetings.cpp index 24d6491..29fc126 100644 --- a/src/Plugins/RenX/RenX.Greetings/RenX_Greetings.cpp +++ b/src/Plugins/RenX/RenX.Greetings/RenX_Greetings.cpp @@ -22,7 +22,6 @@ #include "RenX_Server.h" #include "RenX_Tags.h" -using namespace Jupiter::literals; using namespace std::literals; void RenX_GreetingsPlugin::RenX_OnJoin(RenX::Server &server, const RenX::PlayerInfo &player) { diff --git a/src/Plugins/RenX/RenX.Greetings/RenX_Greetings.h b/src/Plugins/RenX/RenX.Greetings/RenX_Greetings.h index 5000c59..42bdcba 100644 --- a/src/Plugins/RenX/RenX.Greetings/RenX_Greetings.h +++ b/src/Plugins/RenX/RenX.Greetings/RenX_Greetings.h @@ -20,9 +20,7 @@ #define _RENX_GREETING_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "Jupiter/File.h" -#include "Jupiter/String.hpp" #include "RenX_Plugin.h" class RenX_GreetingsPlugin : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.HybridUUID/RenX_HybridUUID.cpp b/src/Plugins/RenX/RenX.HybridUUID/RenX_HybridUUID.cpp index 6e13360..29ace44 100644 --- a/src/Plugins/RenX/RenX.HybridUUID/RenX_HybridUUID.cpp +++ b/src/Plugins/RenX/RenX.HybridUUID/RenX_HybridUUID.cpp @@ -16,17 +16,15 @@ * Written by Jessica James */ -#include "Jupiter/String.hpp" #include "RenX_Core.h" #include "RenX_Server.h" #include "RenX_PlayerInfo.h" #include "RenX_Functions.h" #include "RenX_HybridUUID.h" -using namespace Jupiter::literals; using namespace std::literals; -Jupiter::StringS calc_uuid(RenX::PlayerInfo &player) +std::string calc_uuid(RenX::PlayerInfo &player) { if (player.steamid != 0U) return string_printf("S%.16llX", player.steamid); diff --git a/src/Plugins/RenX/RenX.HybridUUID/RenX_HybridUUID.h b/src/Plugins/RenX/RenX.HybridUUID/RenX_HybridUUID.h index de87808..c19bff4 100644 --- a/src/Plugins/RenX/RenX.HybridUUID/RenX_HybridUUID.h +++ b/src/Plugins/RenX/RenX.HybridUUID/RenX_HybridUUID.h @@ -20,7 +20,6 @@ #define _RENX_HYBRIDUUID_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_HybridUUIDPlugin : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.IRCJoin/RenX_IRCJoin.cpp b/src/Plugins/RenX/RenX.IRCJoin/RenX_IRCJoin.cpp index c82db53..e4d4574 100644 --- a/src/Plugins/RenX/RenX.IRCJoin/RenX_IRCJoin.cpp +++ b/src/Plugins/RenX/RenX.IRCJoin/RenX_IRCJoin.cpp @@ -17,88 +17,82 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/String.hpp" #include "RenX_Core.h" #include "RenX_Server.h" #include "RenX_IRCJoin.h" +#include "RenX_Tags.h" -using namespace Jupiter::literals; +using namespace std::literals; -bool RenX_IRCJoinPlugin::initialize() -{ - RenX_IRCJoinPlugin::publicOnly = this->config.get("PublicOnly"_jrs, true); - RenX_IRCJoinPlugin::joinMsgAlways = this->config.get("Join.MsgAlways"_jrs, false); - RenX_IRCJoinPlugin::partMsgAlways = this->config.get("Part.MsgAlways"_jrs, false); - RenX_IRCJoinPlugin::minAccessPartMessage = this->config.get("Part.MinAccess"_jrs, 0); - RenX_IRCJoinPlugin::maxAccessPartMessage = this->config.get("Part.MaxAccess"_jrs, -1); - RenX_IRCJoinPlugin::nameTag = this->config.get("NameTag"_jrs, "{NAME}"_jrs); - RenX_IRCJoinPlugin::chanTag = this->config.get("ChannelTag"_jrs, "{CHAN}"_jrs); - RenX_IRCJoinPlugin::partReasonTag = this->config.get("PartReasonTag"_jrs, "{REASON}"_jrs); - RenX_IRCJoinPlugin::joinFmt = this->config.get("Join.Format"_jrs, "{NAME} has joined {CHAN}!"_jrs); - RenX_IRCJoinPlugin::partFmt = this->config.get("Part.Format"_jrs, "{NAME} has left {CHAN} ({REASON})!"_jrs); - RenX_IRCJoinPlugin::partFmtNoReason = this->config.get("Part.FormatNoReason"_jrs, "{NAME} has left {CHAN}!"_jrs); +bool RenX_IRCJoinPlugin::initialize() { + RenX_IRCJoinPlugin::publicOnly = this->config.get("PublicOnly"sv, true); + RenX_IRCJoinPlugin::joinMsgAlways = this->config.get("Join.MsgAlways"sv, false); + RenX_IRCJoinPlugin::partMsgAlways = this->config.get("Part.MsgAlways"sv, false); + RenX_IRCJoinPlugin::minAccessPartMessage = this->config.get("Part.MinAccess"sv, 0); + RenX_IRCJoinPlugin::maxAccessPartMessage = this->config.get("Part.MaxAccess"sv, -1); + RenX_IRCJoinPlugin::nameTag = this->config.get("NameTag"sv, "{NAME}"sv); + RenX_IRCJoinPlugin::chanTag = this->config.get("ChannelTag"sv, "{CHAN}"sv); + RenX_IRCJoinPlugin::partReasonTag = this->config.get("PartReasonTag"sv, "{REASON}"sv); + RenX_IRCJoinPlugin::joinFmt = this->config.get("Join.Format"sv, "{NAME} has joined {CHAN}!"sv); + RenX_IRCJoinPlugin::partFmt = this->config.get("Part.Format"sv, "{NAME} has left {CHAN} ({REASON})!"sv); + RenX_IRCJoinPlugin::partFmtNoReason = this->config.get("Part.FormatNoReason"sv, "{NAME} has left {CHAN}!"sv); return true; } -void RenX_IRCJoinPlugin::OnJoin(Jupiter::IRC::Client *source, std::string_view channel, std::string_view nick) -{ - if (!RenX_IRCJoinPlugin::joinFmt.empty()) - { +void RenX_IRCJoinPlugin::OnJoin(Jupiter::IRC::Client *source, std::string_view channel, std::string_view nick) { + if (!RenX_IRCJoinPlugin::joinFmt.empty()) { RenX::Server *server; int type = source->getChannel(channel)->getType(); - Jupiter::String msg = RenX_IRCJoinPlugin::joinFmt; - msg.replace(RenX_IRCJoinPlugin::nameTag, nick); - msg.replace(RenX_IRCJoinPlugin::chanTag, channel); + std::string msg = RenX_IRCJoinPlugin::joinFmt; + RenX::replace_tag(msg, RenX_IRCJoinPlugin::nameTag, nick); + RenX::replace_tag(msg, RenX_IRCJoinPlugin::chanTag, channel); - auto checkType = [&] - { + auto checkType = [&] { if (this->publicOnly) return server->isPublicLogChanType(type); else return server->isLogChanType(type); }; - for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) - { + for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { server = RenX::getCore()->getServer(i); - if (checkType() && (RenX_IRCJoinPlugin::joinMsgAlways || server->players.size() != server->getBotCount())) + if (checkType() && (RenX_IRCJoinPlugin::joinMsgAlways || server->players.size() != server->getBotCount())) { server->sendMessage(msg); + } } } } -void RenX_IRCJoinPlugin::OnPart(Jupiter::IRC::Client *source, std::string_view channel, std::string_view nick, std::string_view reason) -{ - if (!RenX_IRCJoinPlugin::partFmt.empty()) - { +void RenX_IRCJoinPlugin::OnPart(Jupiter::IRC::Client *source, std::string_view channel, std::string_view nick, std::string_view reason) { + if (!RenX_IRCJoinPlugin::partFmt.empty()) { int access = source->getAccessLevel(channel, nick); - if (access >= RenX_IRCJoinPlugin::minAccessPartMessage && (RenX_IRCJoinPlugin::maxAccessPartMessage == -1 || access <= RenX_IRCJoinPlugin::maxAccessPartMessage)) - { + if (access >= RenX_IRCJoinPlugin::minAccessPartMessage && (RenX_IRCJoinPlugin::maxAccessPartMessage == -1 || access <= RenX_IRCJoinPlugin::maxAccessPartMessage)) { RenX::Server *server; int type = source->getChannel(channel)->getType(); - Jupiter::String msg; + std::string msg; if (reason.empty()) msg = RenX_IRCJoinPlugin::partFmtNoReason; else msg = RenX_IRCJoinPlugin::partFmt; - msg.replace(RenX_IRCJoinPlugin::nameTag, nick); - msg.replace(RenX_IRCJoinPlugin::chanTag, channel); - msg.replace(RenX_IRCJoinPlugin::partReasonTag, reason); + RenX::replace_tag(msg, RenX_IRCJoinPlugin::nameTag, nick); + RenX::replace_tag(msg, RenX_IRCJoinPlugin::chanTag, channel); + RenX::replace_tag(msg, RenX_IRCJoinPlugin::partReasonTag, reason); - auto checkType = [&]() - { - if (this->publicOnly) + auto checkType = [&]() { + if (this->publicOnly) { return server->isPublicLogChanType(type); - else + } + else { return server->isLogChanType(type); + } }; - for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) - { + for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { server = RenX::getCore()->getServer(i); - if (checkType() && (RenX_IRCJoinPlugin::partMsgAlways || server->players.size() != server->getBotCount())) + if (checkType() && (RenX_IRCJoinPlugin::partMsgAlways || server->players.size() != server->getBotCount())) { server->sendMessage(msg); + } } } } diff --git a/src/Plugins/RenX/RenX.IRCJoin/RenX_IRCJoin.h b/src/Plugins/RenX/RenX.IRCJoin/RenX_IRCJoin.h index cdc0a0f..b1a9abb 100644 --- a/src/Plugins/RenX/RenX.IRCJoin/RenX_IRCJoin.h +++ b/src/Plugins/RenX/RenX.IRCJoin/RenX_IRCJoin.h @@ -20,7 +20,6 @@ #define _RENX_IRCJOIN_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_IRCJoinPlugin : public RenX::Plugin @@ -38,12 +37,12 @@ private: bool partMsgAlways; int minAccessPartMessage; int maxAccessPartMessage; - Jupiter::StringS nameTag; - Jupiter::StringS chanTag; - Jupiter::StringS partReasonTag; - Jupiter::StringS joinFmt; - Jupiter::StringS partFmt; - Jupiter::StringS partFmtNoReason; + std::string nameTag; + std::string chanTag; + std::string partReasonTag; + std::string joinFmt; + std::string partFmt; + std::string partFmtNoReason; }; #endif // _RENX_IRCJOIN_H_HEADER \ No newline at end of file diff --git a/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.cpp b/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.cpp index 24fc04d..c59b3d6 100644 --- a/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.cpp +++ b/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.cpp @@ -23,7 +23,6 @@ #include "RenX_PlayerInfo.h" #include "RenX_KickDupes.h" -using namespace Jupiter::literals; using namespace std::literals; bool RenX_KickDupesPlugin::initialize() { @@ -48,7 +47,7 @@ void RenX_KickDupesPlugin::RenX_OnPlayerIdentify(RenX::Server &in_server, const if (player.hwid == in_player.hwid && player.id != in_player.id) { // Two players have the same HWID, but separate player IDs; kick the pre-existing player if there's too many. if (++hits > s_tolerance) { - in_server.forceKickPlayer(player, "Ghost client detected"_jrs); + in_server.forceKickPlayer(player, "Ghost client detected"sv); } } } diff --git a/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.h b/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.h index 2798ee9..e66840c 100644 --- a/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.h +++ b/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.h @@ -20,7 +20,6 @@ #define _RENX_KICKDUPES_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_KickDupesPlugin : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.Ladder.All-Time/RenX_Ladder_All_Time.cpp b/src/Plugins/RenX/RenX.Ladder.All-Time/RenX_Ladder_All_Time.cpp index 45a45a8..ae7e128 100644 --- a/src/Plugins/RenX/RenX.Ladder.All-Time/RenX_Ladder_All_Time.cpp +++ b/src/Plugins/RenX/RenX.Ladder.All-Time/RenX_Ladder_All_Time.cpp @@ -19,18 +19,18 @@ #include "Jupiter/IRC_Client.h" #include "RenX_Ladder_All_Time.h" -using namespace Jupiter::literals; +using namespace std::literals; -bool RenX_Ladder_All_TimePlugin::initialize() -{ +bool RenX_Ladder_All_TimePlugin::initialize() { // Load database - this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.db"_jrs)); - this->database.setName(this->config.get("DatabaseName"_jrs, "All-Time"_jrs)); - this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, true)); + this->database.process_file(this->config.get("LadderDatabase"sv, "Ladder.db"sv)); + this->database.setName(this->config.get("DatabaseName"sv, "All-Time"sv)); + this->database.setOutputTimes(this->config.get("OutputTimes"sv, true)); // Force database to default, if desired - if (this->config.get("ForceDefault"_jrs, true)) + if (this->config.get("ForceDefault"sv, true)) { RenX::default_ladder_database = &this->database; + } return true; } @@ -38,7 +38,6 @@ bool RenX_Ladder_All_TimePlugin::initialize() // Plugin instantiation and entry point. RenX_Ladder_All_TimePlugin pluginInstance; -extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() -{ +extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() { return &pluginInstance; } diff --git a/src/Plugins/RenX/RenX.Ladder.All-Time/RenX_Ladder_All_Time.h b/src/Plugins/RenX/RenX.Ladder.All-Time/RenX_Ladder_All_Time.h index b00b84c..40814e8 100644 --- a/src/Plugins/RenX/RenX.Ladder.All-Time/RenX_Ladder_All_Time.h +++ b/src/Plugins/RenX/RenX.Ladder.All-Time/RenX_Ladder_All_Time.h @@ -20,7 +20,6 @@ #define _RENX_LADDER_ALL_TIME #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" #include "RenX_LadderDatabase.h" diff --git a/src/Plugins/RenX/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp b/src/Plugins/RenX/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp index 12c8f95..b467ef5 100644 --- a/src/Plugins/RenX/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp +++ b/src/Plugins/RenX/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp @@ -20,22 +20,22 @@ #include "Jupiter/IRC_Client.h" #include "RenX_Ladder_Daily.h" -using namespace Jupiter::literals; +using namespace std::literals; -bool RenX_Ladder_Daily_TimePlugin::initialize() -{ +bool RenX_Ladder_Daily_TimePlugin::initialize() { time_t current_time = time(0); // Load database - this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Daily.db"_jrs)); - this->database.setName(this->config.get("DatabaseName"_jrs, "Daily"_jrs)); - this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); + this->database.process_file(this->config.get("LadderDatabase"sv, "Ladder.Daily.db"sv)); + this->database.setName(this->config.get("DatabaseName"sv, "Daily"sv)); + this->database.setOutputTimes(this->config.get("OutputTimes"sv, false)); this->last_sorted_day = gmtime(¤t_time)->tm_wday; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired - if (this->config.get("ForceDefault"_jrs, false)) + if (this->config.get("ForceDefault"sv, false)) { RenX::default_ladder_database = &this->database; + } return true; } @@ -43,16 +43,15 @@ bool RenX_Ladder_Daily_TimePlugin::initialize() // Plugin instantiation and entry point. RenX_Ladder_Daily_TimePlugin pluginInstance; -void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) -{ +void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { time_t current_time = time(0); tm *tm_ptr = gmtime(¤t_time); - if (pluginInstance.last_sorted_day != tm_ptr->tm_wday) + if (pluginInstance.last_sorted_day != tm_ptr->tm_wday) { database.erase(); + } pluginInstance.last_sorted_day = tm_ptr->tm_wday; } -extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() -{ +extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() { return &pluginInstance; } diff --git a/src/Plugins/RenX/RenX.Ladder.Daily/RenX_Ladder_Daily.h b/src/Plugins/RenX/RenX.Ladder.Daily/RenX_Ladder_Daily.h index 9c9f35c..476deee 100644 --- a/src/Plugins/RenX/RenX.Ladder.Daily/RenX_Ladder_Daily.h +++ b/src/Plugins/RenX/RenX.Ladder.Daily/RenX_Ladder_Daily.h @@ -20,7 +20,6 @@ #define _RENX_LADDER_ALL_TIME #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" #include "RenX_LadderDatabase.h" diff --git a/src/Plugins/RenX/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp b/src/Plugins/RenX/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp index 8bab2b9..5375147 100644 --- a/src/Plugins/RenX/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp +++ b/src/Plugins/RenX/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp @@ -20,22 +20,22 @@ #include "Jupiter/IRC_Client.h" #include "RenX_Ladder_Monthly.h" -using namespace Jupiter::literals; +using namespace std::literals; -bool RenX_Ladder_Monthly_TimePlugin::initialize() -{ +bool RenX_Ladder_Monthly_TimePlugin::initialize() { time_t current_time = time(0); // Load database - this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Monthly.db"_jrs)); - this->database.setName(this->config.get("DatabaseName"_jrs, "Monthly"_jrs)); - this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); + this->database.process_file(this->config.get("LadderDatabase"sv, "Ladder.Monthly.db"sv)); + this->database.setName(this->config.get("DatabaseName"sv, "Monthly"sv)); + this->database.setOutputTimes(this->config.get("OutputTimes"sv, false)); this->last_sorted_month = gmtime(¤t_time)->tm_mon; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired - if (this->config.get("ForceDefault"_jrs, false)) + if (this->config.get("ForceDefault"sv, false)) { RenX::default_ladder_database = &this->database; + } return true; } @@ -43,12 +43,12 @@ bool RenX_Ladder_Monthly_TimePlugin::initialize() // Plugin instantiation and entry point. RenX_Ladder_Monthly_TimePlugin pluginInstance; -void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) -{ +void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { time_t current_time = time(0); tm *tm_ptr = gmtime(¤t_time); - if (pluginInstance.last_sorted_month != tm_ptr->tm_mon) + if (pluginInstance.last_sorted_month != tm_ptr->tm_mon) { database.erase(); + } pluginInstance.last_sorted_month = tm_ptr->tm_mon; } diff --git a/src/Plugins/RenX/RenX.Ladder.Monthly/RenX_Ladder_Monthly.h b/src/Plugins/RenX/RenX.Ladder.Monthly/RenX_Ladder_Monthly.h index fb02195..801070f 100644 --- a/src/Plugins/RenX/RenX.Ladder.Monthly/RenX_Ladder_Monthly.h +++ b/src/Plugins/RenX/RenX.Ladder.Monthly/RenX_Ladder_Monthly.h @@ -20,7 +20,6 @@ #define _RENX_LADDER_ALL_TIME #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" #include "RenX_LadderDatabase.h" diff --git a/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.cpp b/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.cpp index 7e53583..14246c6 100644 --- a/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.cpp +++ b/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.cpp @@ -25,14 +25,13 @@ #include "RenX_Ladder_Web.h" using namespace std::literals; -using namespace Jupiter::literals; bool RenX_Ladder_WebPlugin::initialize() { - RenX_Ladder_WebPlugin::ladder_page_name = this->config.get("LadderPageName"_jrs, ""_jrs); - RenX_Ladder_WebPlugin::search_page_name = this->config.get("SearchPageName"_jrs, "search"_jrs); - RenX_Ladder_WebPlugin::profile_page_name = this->config.get("ProfilePageName"_jrs, "profile"_jrs); - RenX_Ladder_WebPlugin::web_hostname = this->config.get("Hostname"_jrs, ""_jrs); - RenX_Ladder_WebPlugin::web_path = this->config.get("Path"_jrs, "/"_jrs); + RenX_Ladder_WebPlugin::ladder_page_name = this->config.get("LadderPageName"sv, ""sv); + RenX_Ladder_WebPlugin::search_page_name = this->config.get("SearchPageName"sv, "search"sv); + RenX_Ladder_WebPlugin::profile_page_name = this->config.get("ProfilePageName"sv, "profile"sv); + RenX_Ladder_WebPlugin::web_hostname = this->config.get("Hostname"sv, ""sv); + RenX_Ladder_WebPlugin::web_path = this->config.get("Path"sv, "/"sv); this->init(); @@ -71,17 +70,17 @@ void RenX_Ladder_WebPlugin::init() { FILE *file; int chr; - RenX_Ladder_WebPlugin::web_header_filename = static_cast(this->config.get("HeaderFilename"_jrs, "RenX.Ladder.Web.Header.html"_jrs)); - RenX_Ladder_WebPlugin::web_footer_filename = static_cast(this->config.get("FooterFilename"_jrs, "RenX.Ladder.Web.Footer.html"_jrs)); - RenX_Ladder_WebPlugin::web_profile_filename = static_cast(this->config.get("ProfileFilename"_jrs, "RenX.Ladder.Web.Profile.html"_jrs)); - RenX_Ladder_WebPlugin::web_ladder_table_header_filename = static_cast(this->config.get("LadderTableHeaderFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Header.html"_jrs)); - RenX_Ladder_WebPlugin::web_ladder_table_footer_filename = static_cast(this->config.get("LadderTableFooterFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Footer.html"_jrs)); - RenX_Ladder_WebPlugin::entries_per_page = this->config.get("EntriesPerPage"_jrs, 50); - RenX_Ladder_WebPlugin::min_search_name_length = this->config.get("MinSearchNameLength"_jrs, 3); + RenX_Ladder_WebPlugin::web_header_filename = static_cast(this->config.get("HeaderFilename"sv, "RenX.Ladder.Web.Header.html"sv)); + RenX_Ladder_WebPlugin::web_footer_filename = static_cast(this->config.get("FooterFilename"sv, "RenX.Ladder.Web.Footer.html"sv)); + RenX_Ladder_WebPlugin::web_profile_filename = static_cast(this->config.get("ProfileFilename"sv, "RenX.Ladder.Web.Profile.html"sv)); + RenX_Ladder_WebPlugin::web_ladder_table_header_filename = static_cast(this->config.get("LadderTableHeaderFilename"sv, "RenX.Ladder.Web.Ladder.Table.Header.html"sv)); + RenX_Ladder_WebPlugin::web_ladder_table_footer_filename = static_cast(this->config.get("LadderTableFooterFilename"sv, "RenX.Ladder.Web.Ladder.Table.Footer.html"sv)); + RenX_Ladder_WebPlugin::entries_per_page = this->config.get("EntriesPerPage"sv, 50); + RenX_Ladder_WebPlugin::min_search_name_length = this->config.get("MinSearchNameLength"sv, 3); - RenX_Ladder_WebPlugin::entry_table_row = this->config.get("EntryTableRow"_jrs, R"html({RANK}{NAME}{SCORE}{SPM}{GAMES}{WINS}{LOSSES}{WLR}{KILLS}{DEATHS}{KDR})html"_jrs); - RenX_Ladder_WebPlugin::entry_profile_previous = this->config.get("EntryProfilePrevious"_jrs, R"html(
)html"_jrs); - RenX_Ladder_WebPlugin::entry_profile_next = this->config.get("EntryProfileNext"_jrs, R"html(
)html"_jrs); + RenX_Ladder_WebPlugin::entry_table_row = this->config.get("EntryTableRow"sv, R"html({RANK}{NAME}{SCORE}{SPM}{GAMES}{WINS}{LOSSES}{WLR}{KILLS}{DEATHS}{KDR})html"sv); + RenX_Ladder_WebPlugin::entry_profile_previous = this->config.get("EntryProfilePrevious"sv, R"html(
)html"sv); + RenX_Ladder_WebPlugin::entry_profile_next = this->config.get("EntryProfileNext"sv, R"html(
)html"sv); RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_table_row); RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_profile_previous); @@ -155,30 +154,30 @@ int RenX_Ladder_WebPlugin::OnRehash() { RenX_Ladder_WebPlugin pluginInstance; /** Search bar */ -Jupiter::String generate_search(RenX::LadderDatabase *db) { +std::string generate_search(RenX::LadderDatabase *db) { std::string result; - result = R"database-search()database-search"_jrs; + result += R"database-search()database-search"sv; return result; } /** Database selector */ -Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupiter::HTTP::HTMLFormResponse& query_params) { +std::string generate_database_selector(RenX::LadderDatabase *db, const Jupiter::HTTP::HTMLFormResponse& query_params) { std::string result; - result = R"database-select(
)database-select"sv; if (db != nullptr) { - result += ""_jrs; + result += ""sv; } else if (RenX::ladder_databases.size() == 0) { return {}; @@ -186,64 +185,64 @@ Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupit for (const auto& database : RenX::ladder_databases) { if (database != db) { - result += ""_jrs; + result += ""sv; } } auto value = query_params.tableFind("id"sv); if (value != query_params.table.end()) { - result += R"html(second; - result += R"html("/>)html"_jrs; + result += R"html("/>)html"sv; } - result += R"database-select(
)database-select"_jrs; + result += R"database-select()database-select"sv; return result; } /** Page buttons */ -Jupiter::String generate_page_buttons(RenX::LadderDatabase *db) { +std::string generate_page_buttons(RenX::LadderDatabase *db) { std::string result; size_t entry_count = db->getEntries(); size_t entries_per_page = pluginInstance.getEntriesPerPage(); - result = R"html(
)html"_jrs; + result = R"html(
)html"sv; size_t entry_index = 0, page_index = 1; while (entry_index < entry_count) { // Add page - result += R"html(getName(); } - result += R"html(">)html"_jrs; + result += R"html(">)html"sv; result += string_printf("%u", page_index); - result += R"html()html"_jrs; + result += R"html()html"sv; // Increment indexes entry_index += entries_per_page; ++page_index; } - result += R"html(
)html"_jrs; + result += R"html(
)html"sv; return result; } /** Ladder page */ -Jupiter::String RenX_Ladder_WebPlugin::generate_entry_table(RenX::LadderDatabase *db, uint8_t format, size_t index, size_t count) { +std::string RenX_Ladder_WebPlugin::generate_entry_table(RenX::LadderDatabase *db, uint8_t format, size_t index, size_t count) { if (db->getEntries() == 0) { // No ladder data - return Jupiter::String("Error: No ladder data"_jrs); + return std::string("Error: No ladder data"sv); } if (index >= db->getEntries() || count == 0) { // Invalid entry range - return Jupiter::String("Error: Invalid range"_jrs); + return std::string("Error: Invalid range"sv); } if (index + count > db->getEntries()) { // Invalid entry range; use valid portion of range @@ -259,7 +258,8 @@ Jupiter::String RenX_Ladder_WebPlugin::generate_entry_table(RenX::LadderDatabase } // table header - Jupiter::String result(2048); + std::string result; + result.reserve(ladder_table_header.size() + ladder_table_footer.size() + (count * entry_table_row.size()) + 256); if ((format & this->FLAG_INCLUDE_DATA_HEADER) != 0) { // Data Header result = RenX_Ladder_WebPlugin::ladder_table_header; @@ -326,7 +326,7 @@ std::string* RenX_Ladder_WebPlugin::generate_search_page(RenX::LadderDatabase *d result->append(generate_database_selector(db, query_params)); if (db->getEntries() == 0) { // No ladder data - result->append("Error: No ladder data"_jrs); + result->append("Error: No ladder data"sv); if ((format & this->FLAG_INCLUDE_PAGE_FOOTER) != 0) // Footer result->append(RenX_Ladder_WebPlugin::footer); @@ -375,7 +375,7 @@ std::string* RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDatabase * result->append(generate_database_selector(db, query_params)); if (db->getEntries() == 0) { // No ladder data - result->append("Error: No ladder data"_jrs); + result->append("Error: No ladder data"sv); if ((format & this->FLAG_INCLUDE_PAGE_FOOTER) != 0) // Footer result->append(RenX_Ladder_WebPlugin::footer); @@ -391,14 +391,14 @@ std::string* RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDatabase * } if (entry == nullptr) { - result->append("Error: Player not found"_jrs); + result->append("Error: Player not found"sv); } else { std::string profile_data(RenX_Ladder_WebPlugin::entry_profile); RenX::processTags(profile_data, *entry); result->append(profile_data); - result->append("
"_jrs); + result->append("
"sv); if (entry->prev != nullptr) { profile_data = RenX_Ladder_WebPlugin::entry_profile_previous; @@ -415,7 +415,7 @@ std::string* RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDatabase * RenX::processTags(profile_data, *entry->next); result->append(profile_data); } - result->append("
"_jrs); + result->append("
"sv); } if ((format & this->FLAG_INCLUDE_PAGE_FOOTER) != 0) // Footer @@ -431,10 +431,10 @@ std::string* generate_no_db_page(const Jupiter::HTTP::HTMLFormResponse& query_pa if (RenX::ladder_databases.size() != 0) { result->append(generate_search(nullptr)); result->append(generate_database_selector(nullptr, query_params)); - result->append("Error: No such database exists"_jrs); + result->append("Error: No such database exists"sv); } else { - result->append("Error: No ladder databases loaded"_jrs); + result->append("Error: No ladder databases loaded"sv); } result->append(pluginInstance.footer); return result; @@ -511,8 +511,8 @@ std::string* handle_profile_page(std::string_view query_string) { if (html_form_response.table.size() != 0) { - format = html_form_response.tableGetCast("format"_jrs, format); - steam_id = html_form_response.tableGetCast("id"_jrs, steam_id); + format = html_form_response.tableGetCast("format"sv, format); + steam_id = html_form_response.tableGetCast("id"sv, steam_id); std::string_view db_name = html_form_response.tableGet("database"sv, {}); if (!db_name.empty()) { diff --git a/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.h b/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.h index 9b5dae3..1d0ed60 100644 --- a/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.h +++ b/src/Plugins/RenX/RenX.Ladder.Web/RenX_Ladder_Web.h @@ -20,14 +20,12 @@ #define _RENX_LADDER_WEB_H #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" -#include "Jupiter/String.hpp" #include "RenX_Plugin.h" class RenX_Ladder_WebPlugin : public RenX::Plugin { protected: - Jupiter::String generate_entry_table(RenX::LadderDatabase *db, uint8_t format, size_t index, size_t count); + std::string generate_entry_table(RenX::LadderDatabase *db, uint8_t format, size_t index, size_t count); public: const uint8_t FLAG_INCLUDE_PAGE_HEADER = 0x01; @@ -37,8 +35,8 @@ public: const uint8_t FLAG_INCLUDE_SEARCH = 0x10; const uint8_t FLAG_INCLUDE_SELECTOR = 0x20; - Jupiter::StringS header; - Jupiter::StringS footer; + std::string header; + std::string footer; std::string* generate_ladder_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::HTTP::HTMLFormResponse& query_params); std::string* generate_search_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, std::string_view name, const Jupiter::HTTP::HTMLFormResponse& query_params); std::string* generate_profile_page(RenX::LadderDatabase *db, uint8_t format, uint64_t steam_id, const Jupiter::HTTP::HTMLFormResponse& query_params); diff --git a/src/Plugins/RenX/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp b/src/Plugins/RenX/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp index b026ee1..4d7eb27 100644 --- a/src/Plugins/RenX/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp +++ b/src/Plugins/RenX/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp @@ -20,23 +20,23 @@ #include "Jupiter/IRC_Client.h" #include "RenX_Ladder_Weekly.h" -using namespace Jupiter::literals; +using namespace std::literals; -bool RenX_Ladder_Weekly_TimePlugin::initialize() -{ +bool RenX_Ladder_Weekly_TimePlugin::initialize() { time_t current_time = time(0); // Load database - this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Weekly.db"_jrs)); - this->database.setName(this->config.get("DatabaseName"_jrs, "Weekly"_jrs)); - this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); + this->database.process_file(this->config.get("LadderDatabase"sv, "Ladder.Weekly.db"sv)); + this->database.setName(this->config.get("DatabaseName"sv, "Weekly"sv)); + this->database.setOutputTimes(this->config.get("OutputTimes"sv, false)); this->last_sorted_day = gmtime(¤t_time)->tm_wday; - this->reset_day = this->config.get("ResetDay"_jrs); + this->reset_day = this->config.get("ResetDay"sv); this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired - if (this->config.get("ForceDefault"_jrs, false)) + if (this->config.get("ForceDefault"sv, false)) { RenX::default_ladder_database = &this->database; + } return true; } @@ -44,16 +44,16 @@ bool RenX_Ladder_Weekly_TimePlugin::initialize() // Plugin instantiation and entry point. RenX_Ladder_Weekly_TimePlugin pluginInstance; -void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) -{ +void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { time_t current_time = time(0); tm *tm_ptr = gmtime(¤t_time); - if (pluginInstance.last_sorted_day != tm_ptr->tm_wday && tm_ptr->tm_wday == pluginInstance.reset_day) + if (pluginInstance.last_sorted_day != tm_ptr->tm_wday && tm_ptr->tm_wday == pluginInstance.reset_day) { database.erase(); + } + pluginInstance.last_sorted_day = tm_ptr->tm_wday; } -extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() -{ +extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() { return &pluginInstance; } diff --git a/src/Plugins/RenX/RenX.Ladder.Weekly/RenX_Ladder_Weekly.h b/src/Plugins/RenX/RenX.Ladder.Weekly/RenX_Ladder_Weekly.h index 1b517bc..75155f5 100644 --- a/src/Plugins/RenX/RenX.Ladder.Weekly/RenX_Ladder_Weekly.h +++ b/src/Plugins/RenX/RenX.Ladder.Weekly/RenX_Ladder_Weekly.h @@ -20,7 +20,6 @@ #define _RENX_LADDER_ALL_TIME #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" #include "RenX_LadderDatabase.h" diff --git a/src/Plugins/RenX/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp b/src/Plugins/RenX/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp index 7765275..30ce1ed 100644 --- a/src/Plugins/RenX/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp +++ b/src/Plugins/RenX/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp @@ -20,22 +20,22 @@ #include "Jupiter/IRC_Client.h" #include "RenX_Ladder_Yearly.h" -using namespace Jupiter::literals; +using namespace std::literals; -bool RenX_Ladder_Yearly_TimePlugin::initialize() -{ +bool RenX_Ladder_Yearly_TimePlugin::initialize() { time_t current_time = time(0); // Load database - this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Yearly.db"_jrs)); - this->database.setName(this->config.get("DatabaseName"_jrs, "Yearly"_jrs)); - this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); + this->database.process_file(this->config.get("LadderDatabase"sv, "Ladder.Yearly.db"sv)); + this->database.setName(this->config.get("DatabaseName"sv, "Yearly"sv)); + this->database.setOutputTimes(this->config.get("OutputTimes"sv, false)); this->last_sorted_year = gmtime(¤t_time)->tm_year; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired - if (this->config.get("ForceDefault"_jrs, false)) + if (this->config.get("ForceDefault"sv, false)) { RenX::default_ladder_database = &this->database; + } return true; } @@ -43,16 +43,15 @@ bool RenX_Ladder_Yearly_TimePlugin::initialize() // Plugin instantiation and entry point. RenX_Ladder_Yearly_TimePlugin pluginInstance; -void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) -{ +void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { time_t current_time = time(0); tm *tm_ptr = gmtime(¤t_time); - if (pluginInstance.last_sorted_year != tm_ptr->tm_year) + if (pluginInstance.last_sorted_year != tm_ptr->tm_year) { database.erase(); + } pluginInstance.last_sorted_year = tm_ptr->tm_year; } -extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() -{ +extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() { return &pluginInstance; } diff --git a/src/Plugins/RenX/RenX.Ladder.Yearly/RenX_Ladder_Yearly.h b/src/Plugins/RenX/RenX.Ladder.Yearly/RenX_Ladder_Yearly.h index 276d4bf..1ee59db 100644 --- a/src/Plugins/RenX/RenX.Ladder.Yearly/RenX_Ladder_Yearly.h +++ b/src/Plugins/RenX/RenX.Ladder.Yearly/RenX_Ladder_Yearly.h @@ -20,7 +20,6 @@ #define _RENX_LADDER_ALL_TIME #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" #include "RenX_LadderDatabase.h" diff --git a/src/Plugins/RenX/RenX.Ladder/RenX_Ladder.cpp b/src/Plugins/RenX/RenX.Ladder/RenX_Ladder.cpp index c1835d2..a7aa45d 100644 --- a/src/Plugins/RenX/RenX.Ladder/RenX_Ladder.cpp +++ b/src/Plugins/RenX/RenX.Ladder/RenX_Ladder.cpp @@ -24,12 +24,11 @@ #include "RenX_PlayerInfo.h" #include "RenX_BanDatabase.h" -using namespace Jupiter::literals; using namespace std::literals; bool RenX_LadderPlugin::initialize() { - RenX_LadderPlugin::only_pure = this->config.get("OnlyPure"_jrs, false); - int mlcpno = this->config.get("MaxLadderCommandPartNameOutput"_jrs, 5); + RenX_LadderPlugin::only_pure = this->config.get("OnlyPure"sv, false); + int mlcpno = this->config.get("MaxLadderCommandPartNameOutput"sv, 5); if (mlcpno < 0) RenX_LadderPlugin::max_ladder_command_part_name_output = 0; else @@ -65,9 +64,9 @@ void RenX_LadderPlugin::RenX_OnGameOver(RenX::Server &server, RenX::WinType winT void RenX_LadderPlugin::RenX_OnCommand(RenX::Server &server, std::string_view ) { if (jessilib::equalsi(server.getCurrentRCONCommand(), "clientvarlist"sv)) { - if (server.varData[this->name].get("w"_jrs, "0"_jrs) == "1"sv) { + if (server.varData[this->name].get("w"sv, "0"sv) == "1"sv) { server.varData[this->name].set("w"sv, "0"s); - RenX::TeamType team = static_cast(server.varData[this->name].get("t"_jrs, "\0"_jrs)[0]); + RenX::TeamType team = static_cast(server.varData[this->name].get("t"sv, "\0"sv)[0]); for (const auto& database : RenX::ladder_databases) { database->updateLadder(server, team); } @@ -84,7 +83,7 @@ RenX_LadderPlugin pluginInstance; /** Ladder Commands */ -Jupiter::StringS FormatLadderResponse(RenX::LadderDatabase::Entry *entry, size_t rank) { +std::string FormatLadderResponse(RenX::LadderDatabase::Entry *entry, size_t rank) { return string_printf("#%" PRIuPTR ": \"%.*s\" - Score: %" PRIu64 " - Kills: %" PRIu32 " - Deaths: %" PRIu32 " - KDR: %.2f - SPM: %.2f", rank, entry->most_recent_name.size(), entry->most_recent_name.data(), entry->total_score, entry->total_kills, entry->total_deaths, static_cast(entry->total_kills) / (entry->total_deaths == 0 ? 1 : static_cast(entry->total_deaths)), @@ -94,17 +93,17 @@ Jupiter::StringS FormatLadderResponse(RenX::LadderDatabase::Entry *entry, size_t // Ladder Command LadderGenericCommand::LadderGenericCommand() { - this->addTrigger("ladder"_jrs); - this->addTrigger("rank"_jrs); + this->addTrigger("ladder"sv); + this->addTrigger("rank"sv); } Jupiter::GenericCommand::ResponseLine *LadderGenericCommand::trigger(std::string_view parameters) { if (parameters.empty()) { - return new Jupiter::GenericCommand::ResponseLine("Error: Too few parameters. Syntax: ladder "_jrs, GenericCommand::DisplayType::PrivateError); + return new Jupiter::GenericCommand::ResponseLine("Error: Too few parameters. Syntax: ladder "sv, GenericCommand::DisplayType::PrivateError); } if (RenX::default_ladder_database == nullptr) { - return new Jupiter::GenericCommand::ResponseLine("Error: No default ladder database specified."_jrs, GenericCommand::DisplayType::PrivateError); + return new Jupiter::GenericCommand::ResponseLine("Error: No default ladder database specified."sv, GenericCommand::DisplayType::PrivateError); } RenX::LadderDatabase::Entry *entry; @@ -113,18 +112,18 @@ Jupiter::GenericCommand::ResponseLine *LadderGenericCommand::trigger(std::string if (parameters_view.find_first_not_of("0123456789"sv) == std::string_view::npos) { rank = Jupiter::asUnsignedInt(parameters_view, 10); if (rank == 0) - return new Jupiter::GenericCommand::ResponseLine("Error: Invalid parameters"_jrs, GenericCommand::DisplayType::PrivateError); + return new Jupiter::GenericCommand::ResponseLine("Error: Invalid parameters"sv, GenericCommand::DisplayType::PrivateError); entry = RenX::default_ladder_database->getPlayerEntryByIndex(rank - 1); if (entry == nullptr) - return new Jupiter::GenericCommand::ResponseLine("Error: Player not found"_jrs, GenericCommand::DisplayType::PrivateError); + return new Jupiter::GenericCommand::ResponseLine("Error: Player not found"sv, GenericCommand::DisplayType::PrivateError); return new Jupiter::GenericCommand::ResponseLine(FormatLadderResponse(entry, rank), GenericCommand::DisplayType::PublicSuccess); } std::forward_list> list = RenX::default_ladder_database->getPlayerEntriesAndIndexByPartName(parameters, pluginInstance.getMaxLadderCommandPartNameOutput()); if (list.empty()) - return new Jupiter::GenericCommand::ResponseLine("Error: Player not found"_jrs, GenericCommand::DisplayType::PrivateError); + return new Jupiter::GenericCommand::ResponseLine("Error: Player not found"sv, GenericCommand::DisplayType::PrivateError); std::pair &head_pair = list.front(); Jupiter::GenericCommand::ResponseLine *response_head = new Jupiter::GenericCommand::ResponseLine(FormatLadderResponse(std::addressof(head_pair.first), head_pair.second + 1), GenericCommand::DisplayType::PrivateSuccess); @@ -141,7 +140,7 @@ Jupiter::GenericCommand::ResponseLine *LadderGenericCommand::trigger(std::string } std::string_view LadderGenericCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Fetches ladder information about a player. Syntax: ladder "); + static constexpr std::string_view defaultHelp = "Fetches ladder information about a player. Syntax: ladder "sv; return defaultHelp; } @@ -151,8 +150,8 @@ GENERIC_COMMAND_AS_CONSOLE_COMMAND(LadderGenericCommand) // Ladder Game Command void LadderGameCommand::create() { - this->addTrigger("ladder"_jrs); - this->addTrigger("rank"_jrs); + this->addTrigger("ladder"sv); + this->addTrigger("rank"sv); } void LadderGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { @@ -164,13 +163,13 @@ void LadderGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, source->sendMessage(FormatLadderResponse(pair.first, pair.second + 1)); } else - source->sendMessage(*player, "Error: You have no ladder data. Get started by sticking around until the end of the match!"_jrs); + source->sendMessage(*player, "Error: You have no ladder data. Get started by sticking around until the end of the match!"sv); } else - source->sendMessage(*player, "Error: No default ladder database specified."_jrs); + source->sendMessage(*player, "Error: No default ladder database specified."sv); } else - source->sendMessage(*player, "Error: You have no ladder data, because you're not using Steam."_jrs); + source->sendMessage(*player, "Error: You have no ladder data, because you're not using Steam."sv); } else { Jupiter::GenericCommand::ResponseLine *response = LadderGenericCommand_instance.trigger(parameters); @@ -185,7 +184,7 @@ void LadderGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, } std::string_view LadderGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays ladder information about yourself, or another player. Syntax: ladder [name / rank]"); + static constexpr std::string_view defaultHelp = "Displays ladder information about yourself, or another player. Syntax: ladder [name / rank]"sv; return defaultHelp; } diff --git a/src/Plugins/RenX/RenX.Ladder/RenX_Ladder.h b/src/Plugins/RenX/RenX.Ladder/RenX_Ladder.h index fb4e793..937a96c 100644 --- a/src/Plugins/RenX/RenX.Ladder/RenX_Ladder.h +++ b/src/Plugins/RenX/RenX.Ladder/RenX_Ladder.h @@ -20,7 +20,6 @@ #define _RENX_LADDER_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "IRC_Command.h" #include "RenX_Plugin.h" #include "RenX_LadderDatabase.h" diff --git a/src/Plugins/RenX/RenX.Listen/RenX_Listen.cpp b/src/Plugins/RenX/RenX.Listen/RenX_Listen.cpp index a068191..d153430 100644 --- a/src/Plugins/RenX/RenX.Listen/RenX_Listen.cpp +++ b/src/Plugins/RenX/RenX.Listen/RenX_Listen.cpp @@ -21,16 +21,16 @@ #include "RenX_Core.h" #include "RenX_Server.h" -using namespace Jupiter::literals; +using namespace std::literals; RenX_ListenPlugin::~RenX_ListenPlugin() { RenX_ListenPlugin::socket.close(); } bool RenX_ListenPlugin::initialize() { - uint16_t port = this->config.get("Port"_jrs, 21337); - std::string_view address = this->config.get("Address"_jrs, "0.0.0.0"_jrs); - RenX_ListenPlugin::serverSection = this->config.get("ServerSection"_jrs, this->getName()); + uint16_t port = this->config.get("Port"sv, 21337); + std::string_view address = this->config.get("Address"sv, "0.0.0.0"sv); + RenX_ListenPlugin::serverSection = this->config.get("ServerSection"sv, this->getName()); return RenX_ListenPlugin::socket.bind(static_cast(address).c_str(), port, true) && RenX_ListenPlugin::socket.setBlocking(false); } @@ -51,9 +51,9 @@ int RenX_ListenPlugin::think() { int RenX_ListenPlugin::OnRehash() { RenX::Plugin::OnRehash(); - uint16_t port = this->config.get("Port"_jrs, 21337); - std::string_view address = this->config.get("Address"_jrs, "0.0.0.0"_jrs); - RenX_ListenPlugin::serverSection = this->config.get("ServerSection"_jrs, this->getName()); + uint16_t port = this->config.get("Port"sv, 21337); + std::string_view address = this->config.get("Address"sv, "0.0.0.0"sv); + RenX_ListenPlugin::serverSection = this->config.get("ServerSection"sv, this->getName()); if (port != RenX_ListenPlugin::socket.getBoundPort() || address != RenX_ListenPlugin::socket.getBoundHostname()) { puts("Notice: The Renegade-X listening socket has been changed!"); diff --git a/src/Plugins/RenX/RenX.Listen/RenX_Listen.h b/src/Plugins/RenX/RenX.Listen/RenX_Listen.h index e507dd0..b8c9be4 100644 --- a/src/Plugins/RenX/RenX.Listen/RenX_Listen.h +++ b/src/Plugins/RenX/RenX.Listen/RenX_Listen.h @@ -20,7 +20,6 @@ #define _EXAMPLE_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "Jupiter/TCPSocket.h" #include "RenX_Plugin.h" diff --git a/src/Plugins/RenX/RenX.Logging/RenX_Logging.cpp b/src/Plugins/RenX/RenX.Logging/RenX_Logging.cpp index 916e55a..16afea0 100644 --- a/src/Plugins/RenX/RenX.Logging/RenX_Logging.cpp +++ b/src/Plugins/RenX/RenX.Logging/RenX_Logging.cpp @@ -24,97 +24,97 @@ #include "RenX_Server.h" #include "RenX_Tags.h" -using namespace Jupiter::literals; +using namespace std::literals; bool RenX_LoggingPlugin::initialize() { - RenX_LoggingPlugin::muteOwnExecute = this->config.get("MuteOwnExecute"_jrs, true); - RenX_LoggingPlugin::playerRDNSPublic = this->config.get("PlayerRDNSPublic"_jrs, false); - RenX_LoggingPlugin::playerIdentifyPublic = this->config.get("PlayerIdentifyPublic"_jrs, false); - RenX_LoggingPlugin::joinPublic = this->config.get("JoinPublic"_jrs, true); - RenX_LoggingPlugin::partPublic = this->config.get("PartPublic"_jrs, true); - RenX_LoggingPlugin::kickPublic = this->config.get("KickPublic"_jrs, true); - RenX_LoggingPlugin::nameChangePublic = this->config.get("NameChangePublic"_jrs, true); - RenX_LoggingPlugin::teamChangePublic = this->config.get("TeamChangePublic"_jrs, true); - RenX_LoggingPlugin::speedHackPublic = this->config.get("SpeedHackPublic"_jrs, false); - RenX_LoggingPlugin::playerPublic = this->config.get("PlayerPublic"_jrs, false); - RenX_LoggingPlugin::chatPublic = this->config.get("ChatPublic"_jrs, true); - RenX_LoggingPlugin::teamChatPublic = this->config.get("TeamChatPublic"_jrs, false); - RenX_LoggingPlugin::radioChatPublic = this->config.get("RadioChatPublic"_jrs, false); - RenX_LoggingPlugin::hostChatPublic = this->config.get("HostChatPublic"_jrs, true); - RenX_LoggingPlugin::hostPagePublic = this->config.get("HostPagePublic"_jrs, false); - RenX_LoggingPlugin::adminMessagePublic = this->config.get("AdminMessagePublic"_jrs, true); - RenX_LoggingPlugin::adminPMessagePublic = this->config.get("AdminPagePublic"_jrs, false); - RenX_LoggingPlugin::otherChatPublic = this->config.get("OtherChatPublic"_jrs, false); - RenX_LoggingPlugin::deployPublic = this->config.get("DeployPublic"_jrs, true); - RenX_LoggingPlugin::mineDeployPublic = this->config.get("MineDeployPublic"_jrs, false); - RenX_LoggingPlugin::overMinePublic = this->config.get("OverMinePublic"_jrs, false); - RenX_LoggingPlugin::disarmPublic = this->config.get("DisarmPublic"_jrs, true); - RenX_LoggingPlugin::mineDisarmPublic = this->config.get("MineDisarmPublic"_jrs, false); - RenX_LoggingPlugin::explodePublic = this->config.get("ExplodePublic"_jrs, false); - RenX_LoggingPlugin::suicidePublic = this->config.get("SuicidePublic"_jrs, true); - RenX_LoggingPlugin::killPublic = this->config.get("KillPublic"_jrs, true); - RenX_LoggingPlugin::diePublic = this->config.get("DiePublic"_jrs, true); - RenX_LoggingPlugin::destroyPublic = this->config.get("DestroyPublic"_jrs, true); - RenX_LoggingPlugin::capturePublic = this->config.get("CapturePublic"_jrs, true); - RenX_LoggingPlugin::neutralizePublic = this->config.get("NeutralizePublic"_jrs, true); - RenX_LoggingPlugin::characterPurchasePublic = this->config.get("CharacterPurchasePublic"_jrs, false); - RenX_LoggingPlugin::itemPurchasePublic = this->config.get("ItemPurchasePublic"_jrs, false); - RenX_LoggingPlugin::weaponPurchasePublic = this->config.get("WeaponPurchasePublic"_jrs, false); - RenX_LoggingPlugin::refillPurchasePublic = this->config.get("RefillPurchasePublic"_jrs, false); - RenX_LoggingPlugin::vehiclePurchasePublic = this->config.get("VehiclePurchasePublic"_jrs, false); - RenX_LoggingPlugin::vehicleSpawnPublic = this->config.get("VehicleSpawnPublic"_jrs, true); - RenX_LoggingPlugin::spawnPublic = this->config.get("SpawnPublic"_jrs, true); - RenX_LoggingPlugin::botJoinPublic = this->config.get("BotJoinPublic"_jrs, true); - RenX_LoggingPlugin::vehicleCratePublic = this->config.get("VehicleCratePublic"_jrs, false); - RenX_LoggingPlugin::TSVehicleCratePublic = this->config.get("TSVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic); - RenX_LoggingPlugin::RAVehicleCratePublic = this->config.get("RAVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic); - RenX_LoggingPlugin::deathCratePublic = this->config.get("DeathCratePublic"_jrs, true); - RenX_LoggingPlugin::moneyCratePublic = this->config.get("MoneyCratePublic"_jrs, false); - RenX_LoggingPlugin::characterCratePublic = this->config.get("CharacterCratePublic"_jrs, false); - RenX_LoggingPlugin::spyCratePublic = this->config.get("SpyCratePublic"_jrs, false); - RenX_LoggingPlugin::refillCratePublic = this->config.get("RefillCratePublic"_jrs, false); - RenX_LoggingPlugin::timeBombCratePublic = this->config.get("TimeBombCratePublic"_jrs, false); - RenX_LoggingPlugin::speedCratePublic = this->config.get("SpeedCratePublic"_jrs, false); - RenX_LoggingPlugin::nukeCratePublic = this->config.get("NukeCratePublic"_jrs, true); - RenX_LoggingPlugin::abductionCratePublic = this->config.get("AbductionCratePublic"_jrs, true); - RenX_LoggingPlugin::unspecifiedCratePublic = this->config.get("UnspecifiedCratePublic"_jrs, false); - RenX_LoggingPlugin::otherCratePublic = this->config.get("OtherCratePublic"_jrs, false); - RenX_LoggingPlugin::stealPublic = this->config.get("StealPublic"_jrs, true); - RenX_LoggingPlugin::donatePublic = this->config.get("DonatePublic"_jrs, true); - RenX_LoggingPlugin::gamePublic = this->config.get("GamePublic"_jrs, true); - RenX_LoggingPlugin::gameOverPublic = this->config.get("GameOverPublic"_jrs, true); - RenX_LoggingPlugin::executePublic = this->config.get("ExecutePublic"_jrs, false); - RenX_LoggingPlugin::playerCommandPublic = this->config.get("PlayerCommandPublic"_jrs, false); - RenX_LoggingPlugin::subscribePublic = this->config.get("SubscribePublic"_jrs, false); - RenX_LoggingPlugin::RCONPublic = this->config.get("RCONPublic"_jrs, false); - RenX_LoggingPlugin::adminLoginPublic = this->config.get("AdminLoginPublic"_jrs, true); - RenX_LoggingPlugin::adminGrantPublic = this->config.get("AdminGrantPublic"_jrs, true); - RenX_LoggingPlugin::adminLogoutPublic = this->config.get("AdminLogoutPublic"_jrs, true); - RenX_LoggingPlugin::adminPublic = this->config.get("AdminPublic"_jrs, false); - RenX_LoggingPlugin::voteCallPublic = this->config.get("VoteCallPublic"_jrs, true); - RenX_LoggingPlugin::voteOverPublic = this->config.get("VoteOverPublic"_jrs, true); - RenX_LoggingPlugin::voteCancelPublic = this->config.get("VoteCancelPublic"_jrs, true); - RenX_LoggingPlugin::votePublic = this->config.get("VotePublic"_jrs, false); - RenX_LoggingPlugin::mapChangePublic = this->config.get("MapChangePublic"_jrs, true); - RenX_LoggingPlugin::mapLoadPublic = this->config.get("MapLoadPublic"_jrs, true); - RenX_LoggingPlugin::mapStartPublic = this->config.get("MapStartPublic"_jrs, true); - RenX_LoggingPlugin::mapPublic = this->config.get("MapPublic"_jrs, false); - RenX_LoggingPlugin::demoRecordPublic = this->config.get("DemoRecordPublic"_jrs, true); - RenX_LoggingPlugin::demoRecordStopPublic = this->config.get("DemoRecordStopPublic"_jrs, true); - RenX_LoggingPlugin::demoPublic = this->config.get("DemoPublic"_jrs, false); - RenX_LoggingPlugin::logPublic = this->config.get("LogPublic"_jrs, false); - RenX_LoggingPlugin::commandPublic = this->config.get("CommandPublic"_jrs, false); - RenX_LoggingPlugin::errorPublic = this->config.get("ErrorPublic"_jrs, false); - RenX_LoggingPlugin::versionPublic = this->config.get("VersionPublic"_jrs, true); - RenX_LoggingPlugin::authorizedPublic = this->config.get("AuthorizedPublic"_jrs, true); - RenX_LoggingPlugin::otherPublic = this->config.get("OtherPublic"_jrs, false); + RenX_LoggingPlugin::muteOwnExecute = this->config.get("MuteOwnExecute"sv, true); + RenX_LoggingPlugin::playerRDNSPublic = this->config.get("PlayerRDNSPublic"sv, false); + RenX_LoggingPlugin::playerIdentifyPublic = this->config.get("PlayerIdentifyPublic"sv, false); + RenX_LoggingPlugin::joinPublic = this->config.get("JoinPublic"sv, true); + RenX_LoggingPlugin::partPublic = this->config.get("PartPublic"sv, true); + RenX_LoggingPlugin::kickPublic = this->config.get("KickPublic"sv, true); + RenX_LoggingPlugin::nameChangePublic = this->config.get("NameChangePublic"sv, true); + RenX_LoggingPlugin::teamChangePublic = this->config.get("TeamChangePublic"sv, true); + RenX_LoggingPlugin::speedHackPublic = this->config.get("SpeedHackPublic"sv, false); + RenX_LoggingPlugin::playerPublic = this->config.get("PlayerPublic"sv, false); + RenX_LoggingPlugin::chatPublic = this->config.get("ChatPublic"sv, true); + RenX_LoggingPlugin::teamChatPublic = this->config.get("TeamChatPublic"sv, false); + RenX_LoggingPlugin::radioChatPublic = this->config.get("RadioChatPublic"sv, false); + RenX_LoggingPlugin::hostChatPublic = this->config.get("HostChatPublic"sv, true); + RenX_LoggingPlugin::hostPagePublic = this->config.get("HostPagePublic"sv, false); + RenX_LoggingPlugin::adminMessagePublic = this->config.get("AdminMessagePublic"sv, true); + RenX_LoggingPlugin::adminPMessagePublic = this->config.get("AdminPagePublic"sv, false); + RenX_LoggingPlugin::otherChatPublic = this->config.get("OtherChatPublic"sv, false); + RenX_LoggingPlugin::deployPublic = this->config.get("DeployPublic"sv, true); + RenX_LoggingPlugin::mineDeployPublic = this->config.get("MineDeployPublic"sv, false); + RenX_LoggingPlugin::overMinePublic = this->config.get("OverMinePublic"sv, false); + RenX_LoggingPlugin::disarmPublic = this->config.get("DisarmPublic"sv, true); + RenX_LoggingPlugin::mineDisarmPublic = this->config.get("MineDisarmPublic"sv, false); + RenX_LoggingPlugin::explodePublic = this->config.get("ExplodePublic"sv, false); + RenX_LoggingPlugin::suicidePublic = this->config.get("SuicidePublic"sv, true); + RenX_LoggingPlugin::killPublic = this->config.get("KillPublic"sv, true); + RenX_LoggingPlugin::diePublic = this->config.get("DiePublic"sv, true); + RenX_LoggingPlugin::destroyPublic = this->config.get("DestroyPublic"sv, true); + RenX_LoggingPlugin::capturePublic = this->config.get("CapturePublic"sv, true); + RenX_LoggingPlugin::neutralizePublic = this->config.get("NeutralizePublic"sv, true); + RenX_LoggingPlugin::characterPurchasePublic = this->config.get("CharacterPurchasePublic"sv, false); + RenX_LoggingPlugin::itemPurchasePublic = this->config.get("ItemPurchasePublic"sv, false); + RenX_LoggingPlugin::weaponPurchasePublic = this->config.get("WeaponPurchasePublic"sv, false); + RenX_LoggingPlugin::refillPurchasePublic = this->config.get("RefillPurchasePublic"sv, false); + RenX_LoggingPlugin::vehiclePurchasePublic = this->config.get("VehiclePurchasePublic"sv, false); + RenX_LoggingPlugin::vehicleSpawnPublic = this->config.get("VehicleSpawnPublic"sv, true); + RenX_LoggingPlugin::spawnPublic = this->config.get("SpawnPublic"sv, true); + RenX_LoggingPlugin::botJoinPublic = this->config.get("BotJoinPublic"sv, true); + RenX_LoggingPlugin::vehicleCratePublic = this->config.get("VehicleCratePublic"sv, false); + RenX_LoggingPlugin::TSVehicleCratePublic = this->config.get("TSVehicleCratePublic"sv, RenX_LoggingPlugin::vehicleCratePublic); + RenX_LoggingPlugin::RAVehicleCratePublic = this->config.get("RAVehicleCratePublic"sv, RenX_LoggingPlugin::vehicleCratePublic); + RenX_LoggingPlugin::deathCratePublic = this->config.get("DeathCratePublic"sv, true); + RenX_LoggingPlugin::moneyCratePublic = this->config.get("MoneyCratePublic"sv, false); + RenX_LoggingPlugin::characterCratePublic = this->config.get("CharacterCratePublic"sv, false); + RenX_LoggingPlugin::spyCratePublic = this->config.get("SpyCratePublic"sv, false); + RenX_LoggingPlugin::refillCratePublic = this->config.get("RefillCratePublic"sv, false); + RenX_LoggingPlugin::timeBombCratePublic = this->config.get("TimeBombCratePublic"sv, false); + RenX_LoggingPlugin::speedCratePublic = this->config.get("SpeedCratePublic"sv, false); + RenX_LoggingPlugin::nukeCratePublic = this->config.get("NukeCratePublic"sv, true); + RenX_LoggingPlugin::abductionCratePublic = this->config.get("AbductionCratePublic"sv, true); + RenX_LoggingPlugin::unspecifiedCratePublic = this->config.get("UnspecifiedCratePublic"sv, false); + RenX_LoggingPlugin::otherCratePublic = this->config.get("OtherCratePublic"sv, false); + RenX_LoggingPlugin::stealPublic = this->config.get("StealPublic"sv, true); + RenX_LoggingPlugin::donatePublic = this->config.get("DonatePublic"sv, true); + RenX_LoggingPlugin::gamePublic = this->config.get("GamePublic"sv, true); + RenX_LoggingPlugin::gameOverPublic = this->config.get("GameOverPublic"sv, true); + RenX_LoggingPlugin::executePublic = this->config.get("ExecutePublic"sv, false); + RenX_LoggingPlugin::playerCommandPublic = this->config.get("PlayerCommandPublic"sv, false); + RenX_LoggingPlugin::subscribePublic = this->config.get("SubscribePublic"sv, false); + RenX_LoggingPlugin::RCONPublic = this->config.get("RCONPublic"sv, false); + RenX_LoggingPlugin::adminLoginPublic = this->config.get("AdminLoginPublic"sv, true); + RenX_LoggingPlugin::adminGrantPublic = this->config.get("AdminGrantPublic"sv, true); + RenX_LoggingPlugin::adminLogoutPublic = this->config.get("AdminLogoutPublic"sv, true); + RenX_LoggingPlugin::adminPublic = this->config.get("AdminPublic"sv, false); + RenX_LoggingPlugin::voteCallPublic = this->config.get("VoteCallPublic"sv, true); + RenX_LoggingPlugin::voteOverPublic = this->config.get("VoteOverPublic"sv, true); + RenX_LoggingPlugin::voteCancelPublic = this->config.get("VoteCancelPublic"sv, true); + RenX_LoggingPlugin::votePublic = this->config.get("VotePublic"sv, false); + RenX_LoggingPlugin::mapChangePublic = this->config.get("MapChangePublic"sv, true); + RenX_LoggingPlugin::mapLoadPublic = this->config.get("MapLoadPublic"sv, true); + RenX_LoggingPlugin::mapStartPublic = this->config.get("MapStartPublic"sv, true); + RenX_LoggingPlugin::mapPublic = this->config.get("MapPublic"sv, false); + RenX_LoggingPlugin::demoRecordPublic = this->config.get("DemoRecordPublic"sv, true); + RenX_LoggingPlugin::demoRecordStopPublic = this->config.get("DemoRecordStopPublic"sv, true); + RenX_LoggingPlugin::demoPublic = this->config.get("DemoPublic"sv, false); + RenX_LoggingPlugin::logPublic = this->config.get("LogPublic"sv, false); + RenX_LoggingPlugin::commandPublic = this->config.get("CommandPublic"sv, false); + RenX_LoggingPlugin::errorPublic = this->config.get("ErrorPublic"sv, false); + RenX_LoggingPlugin::versionPublic = this->config.get("VersionPublic"sv, true); + RenX_LoggingPlugin::authorizedPublic = this->config.get("AuthorizedPublic"sv, true); + RenX_LoggingPlugin::otherPublic = this->config.get("OtherPublic"sv, false); /** Event formats */ - RenX_LoggingPlugin::playerRDNSFmt = this->config.get("PlayerRDNSFormat"_jrs, - ""_jrs); + RenX_LoggingPlugin::playerRDNSFmt = this->config.get("PlayerRDNSFormat"sv, + ""sv); - RenX_LoggingPlugin::playerIdentifyFmt = this->config.get("PlayerIdentifyFormat"_jrs, + RenX_LoggingPlugin::playerIdentifyFmt = this->config.get("PlayerIdentifyFormat"sv, string_printf(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " (" IRCBOLD "%.*s" IRCBOLD ") joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD " (" IRCBOLD "%.*s" IRCBOLD ") with HWID " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->steamTag.size(), RenX::tags->steamTag.data(), RenX::tags->teamLongTag.size(), @@ -123,148 +123,148 @@ bool RenX_LoggingPlugin::initialize() RenX::tags->rdnsTag.data(), RenX::tags->hwidTag.size(), RenX::tags->hwidTag.data())); - RenX_LoggingPlugin::joinPublicFmt = this->config.get("JoinPublicFormat"_jrs, + RenX_LoggingPlugin::joinPublicFmt = this->config.get("JoinPublicFormat"sv, string_printf(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s!", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.data())); - RenX_LoggingPlugin::joinAdminFmt = this->config.get("JoinAdminFormat"_jrs, - ""_jrs); + RenX_LoggingPlugin::joinAdminFmt = this->config.get("JoinAdminFormat"sv, + ""sv); - RenX_LoggingPlugin::joinNoSteamAdminFmt = this->config.get("JoinNoSteamAdminFormat"_jrs, - ""_jrs); + RenX_LoggingPlugin::joinNoSteamAdminFmt = this->config.get("JoinNoSteamAdminFormat"sv, + ""sv); - RenX_LoggingPlugin::partFmt = this->config.get("PartFormat"_jrs, + RenX_LoggingPlugin::partFmt = this->config.get("PartFormat"sv, string_printf(IRCCOLOR "12[Part] " IRCBOLD "%.*s" IRCBOLD " left the %.*s.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.data())); - RenX_LoggingPlugin::kickFmt = this->config.get("KickFormat"_jrs, + RenX_LoggingPlugin::kickFmt = this->config.get("KickFormat"sv, string_printf(IRCCOLOR "04[Kick] " IRCBOLD "%.*s" IRCCOLOR IRCBOLD " was " IRCBOLD IRCCOLOR "04kicked" IRCCOLOR IRCBOLD " (" IRCCOLOR "04%.*s" IRCCOLOR ")", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::playerExecuteFmt = this->config.get("PlayerExecuteFormat"_jrs, + RenX_LoggingPlugin::playerExecuteFmt = this->config.get("PlayerExecuteFormat"sv, string_printf("%.*s" IRCCOLOR "07 executed: %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::playerCommandSuccessFmt = this->config.get("PlayerCommandSuccessFormat"_jrs, + RenX_LoggingPlugin::playerCommandSuccessFmt = this->config.get("PlayerCommandSuccessFormat"sv, string_printf("%.*s" IRCCOLOR ": " IRCCOLOR "10%.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::playerCommandFailFmt = this->config.get("PlayerCommandFailFormat"_jrs, ""_jss); + RenX_LoggingPlugin::playerCommandFailFmt = this->config.get("PlayerCommandFailFormat"sv, ""s); - RenX_LoggingPlugin::playerFmt = this->config.get("PlayerFormat"_jrs, + RenX_LoggingPlugin::playerFmt = this->config.get("PlayerFormat"sv, string_printf(IRCCOLOR "12[Player]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::nameChangeFmt = this->config.get("NameChangeFormat"_jrs, + RenX_LoggingPlugin::nameChangeFmt = this->config.get("NameChangeFormat"sv, string_printf(IRCBOLD "%.*s" IRCBOLD " changed their name to " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->newNameTag.size(), RenX::tags->newNameTag.data())); - RenX_LoggingPlugin::teamChangeFmt = this->config.get("TeamChangeFormat"_jrs, + RenX_LoggingPlugin::teamChangeFmt = this->config.get("TeamChangeFormat"sv, string_printf("%.*s" IRCCOLOR " switched teams!", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::speedHackFmt = this->config.get("SpeedHackFormat"_jrs, + RenX_LoggingPlugin::speedHackFmt = this->config.get("SpeedHackFormat"sv, string_printf(IRCCOLOR "04[SpeedHack] " IRCBOLD "%.*s" IRCBOLD " has thrown a Speed Hack warning!", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::chatFmt = this->config.get("ChatFormat"_jrs, + RenX_LoggingPlugin::chatFmt = this->config.get("ChatFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD ": %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::teamChatFmt = this->config.get("TeamChatFormat"_jrs, + RenX_LoggingPlugin::teamChatFmt = this->config.get("TeamChatFormat"sv, string_printf(IRCBOLD "%.*s" IRCBOLD ": %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::radioChatFmt = this->config.get("RadioChatFormat"_jrs, + RenX_LoggingPlugin::radioChatFmt = this->config.get("RadioChatFormat"sv, string_printf(IRCBOLD "%.*s" IRCBOLD ": \x1D%.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::hostChatFmt = this->config.get("HostChatFormat"_jrs, + RenX_LoggingPlugin::hostChatFmt = this->config.get("HostChatFormat"sv, string_printf(IRCCOLOR "12Host" IRCCOLOR "0: %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::hostPageFmt = this->config.get("HostPageFormat"_jrs, + RenX_LoggingPlugin::hostPageFmt = this->config.get("HostPageFormat"sv, string_printf(IRCCOLOR "12(Host -> %.*s): %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::adminMsgFmt = this->config.get("AdminMsgFormat"_jrs, + RenX_LoggingPlugin::adminMsgFmt = this->config.get("AdminMsgFormat"sv, string_printf(IRCCOLOR "10%.*s: %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::warnMsgFmt = this->config.get("WarnMsgFormat"_jrs, + RenX_LoggingPlugin::warnMsgFmt = this->config.get("WarnMsgFormat"sv, string_printf(IRCCOLOR "07%.*s: %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::pAdminMsgFmt = this->config.get("PAdminMsgFormat"_jrs, + RenX_LoggingPlugin::pAdminMsgFmt = this->config.get("PAdminMsgFormat"sv, string_printf(IRCCOLOR "10(%.*s -> %.*s): %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.data(), RenX::tags->victimRawNameTag.size(), RenX::tags->victimRawNameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::pWarnMsgFmt = this->config.get("PWarnMsgFormat"_jrs, + RenX_LoggingPlugin::pWarnMsgFmt = this->config.get("PWarnMsgFormat"sv, string_printf(IRCCOLOR "07(%.*s -> %.*s): %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.data(), RenX::tags->victimRawNameTag.size(), RenX::tags->victimRawNameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::otherChatFmt = this->config.get("OtherChatFormat"_jrs, + RenX_LoggingPlugin::otherChatFmt = this->config.get("OtherChatFormat"sv, string_printf(IRCCOLOR "06[Other Chat]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::deployFmt = this->config.get("DeployFormat"_jrs, + RenX_LoggingPlugin::deployFmt = this->config.get("DeployFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " deployed a " IRCBOLD IRCCOLOR "12%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::mineDeployFmt = this->config.get("MineDeployFormat"_jrs, + RenX_LoggingPlugin::mineDeployFmt = this->config.get("MineDeployFormat"sv, RenX_LoggingPlugin::deployFmt); - RenX_LoggingPlugin::overMineFmt = this->config.get("OverMineFormat"_jrs, + RenX_LoggingPlugin::overMineFmt = this->config.get("OverMineFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " is " IRCCOLOR "04over-mining" IRCCOLOR ": " IRCBOLD IRCCOLOR "12%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::disarmFmt = this->config.get("DisarmFormat"_jrs, + RenX_LoggingPlugin::disarmFmt = this->config.get("DisarmFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " disarmed %.*s" IRCBOLD IRCCOLOR "'s " IRCCOLOR "12%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::mineDisarmFmt = this->config.get("MineDisarmFormat"_jrs, + RenX_LoggingPlugin::mineDisarmFmt = this->config.get("MineDisarmFormat"sv, RenX_LoggingPlugin::disarmFmt); - RenX_LoggingPlugin::disarmNoOwnerFmt = this->config.get("DisarmNoOwnerFormat"_jrs, + RenX_LoggingPlugin::disarmNoOwnerFmt = this->config.get("DisarmNoOwnerFormat"sv, string_printf(IRCBOLD "%.*s" IRCBOLD " disarmed a " IRCBOLD "%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::mineDisarmNoOwnerFmt = this->config.get("MineDisarmNoOwnerFormat"_jrs, + RenX_LoggingPlugin::mineDisarmNoOwnerFmt = this->config.get("MineDisarmNoOwnerFormat"sv, RenX_LoggingPlugin::disarmNoOwnerFmt); - RenX_LoggingPlugin::explodeFmt = this->config.get("ExplodeFormat"_jrs, + RenX_LoggingPlugin::explodeFmt = this->config.get("ExplodeFormat"sv, string_printf("%.*s" IRCCOLOR " detonated a " IRCCOLOR "07%.*s" IRCCOLOR ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::explodeNoOwnerFmt = this->config.get("ExplodeNoOwnerFormat"_jrs, + RenX_LoggingPlugin::explodeNoOwnerFmt = this->config.get("ExplodeNoOwnerFormat"sv, string_printf("A " IRCCOLOR "07%.*s" IRCCOLOR " detonated.", RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::suicideFmt = this->config.get("SuicideFormat"_jrs, + RenX_LoggingPlugin::suicideFmt = this->config.get("SuicideFormat"sv, string_printf("%.*s" IRCCOLOR " suicided (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::killFmt = this->config.get("KillFormat"_jrs, + RenX_LoggingPlugin::killFmt = this->config.get("KillFormat"sv, string_printf("%.*s" IRCCOLOR " killed %.*s" IRCCOLOR " (" IRCCOLOR "%.*s%.*s/%.*s" IRCCOLOR " vs " IRCCOLOR "%.*s%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.data(), RenX::tags->teamColorTag.size(), @@ -274,32 +274,32 @@ bool RenX_LoggingPlugin::initialize() RenX::tags->victimTeamColorTag.data(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.data())); - RenX_LoggingPlugin::killFmt2 = this->config.get("KillFormat2"_jrs, + RenX_LoggingPlugin::killFmt2 = this->config.get("KillFormat2"sv, string_printf(IRCCOLOR "%.*s%.*s" IRCCOLOR " killed %.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::dieFmt = this->config.get("DieFormat"_jrs, + RenX_LoggingPlugin::dieFmt = this->config.get("DieFormat"sv, string_printf("%.*s" IRCCOLOR " died (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::dieFmt2 = this->config.get("DieFormat2"_jrs, + RenX_LoggingPlugin::dieFmt2 = this->config.get("DieFormat2"sv, string_printf(IRCCOLOR "%.*s%.*s" IRCCOLOR " died (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::destroyBuildingFmt = this->config.get("DestroyBuildingFormat"_jrs, + RenX_LoggingPlugin::destroyBuildingFmt = this->config.get("DestroyBuildingFormat"sv, string_printf("%.*s" IRCCOLOR " destroyed the " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::destroyBuildingFmt2 = this->config.get("DestroyBuildingFormat2"_jrs, + RenX_LoggingPlugin::destroyBuildingFmt2 = this->config.get("DestroyBuildingFormat2"sv, string_printf(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed the " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), @@ -307,14 +307,14 @@ bool RenX_LoggingPlugin::initialize() RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::destroyDefenceFmt = this->config.get("DestroyDefenceFormat"_jrs, + RenX_LoggingPlugin::destroyDefenceFmt = this->config.get("DestroyDefenceFormat"sv, string_printf("%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::destroyDefenceFmt2 = this->config.get("DestroyDefenceFormat2"_jrs, + RenX_LoggingPlugin::destroyDefenceFmt2 = this->config.get("DestroyDefenceFormat2"sv, string_printf(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), @@ -322,14 +322,14 @@ bool RenX_LoggingPlugin::initialize() RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::destroyVehicleFmt = this->config.get("DestroyVehicleFormat"_jrs, + RenX_LoggingPlugin::destroyVehicleFmt = this->config.get("DestroyVehicleFormat"sv, string_printf("%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::destroyVehicleFmt2 = this->config.get("DestroyVehicleFormat2"_jrs, + RenX_LoggingPlugin::destroyVehicleFmt2 = this->config.get("DestroyVehicleFormat2"sv, string_printf(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), @@ -337,158 +337,158 @@ bool RenX_LoggingPlugin::initialize() RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::captureFmt = this->config.get("CaptureFormat"_jrs, + RenX_LoggingPlugin::captureFmt = this->config.get("CaptureFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " captured the " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::neutralizeFmt = this->config.get("NeutralizeFormat"_jrs, + RenX_LoggingPlugin::neutralizeFmt = this->config.get("NeutralizeFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " neutralized the " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::characterPurchaseFmt = this->config.get("CharacterPurchaseFormat"_jrs, + RenX_LoggingPlugin::characterPurchaseFmt = this->config.get("CharacterPurchaseFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.data())); - RenX_LoggingPlugin::itemPurchaseFmt = this->config.get("ItemPurchaseFormat"_jrs, + RenX_LoggingPlugin::itemPurchaseFmt = this->config.get("ItemPurchaseFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::weaponPurchaseFmt = this->config.get("WeaponPurchaseFormat"_jrs, + RenX_LoggingPlugin::weaponPurchaseFmt = this->config.get("WeaponPurchaseFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::refillPurchaseFmt = this->config.get("RefillPurchaseFormat"_jrs, + RenX_LoggingPlugin::refillPurchaseFmt = this->config.get("RefillPurchaseFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*srefill" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data())); - RenX_LoggingPlugin::vehiclePurchaseFmt = this->config.get("VehiclePurchaseFormat"_jrs, + RenX_LoggingPlugin::vehiclePurchaseFmt = this->config.get("VehiclePurchaseFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->victimVehicleTag.size(), RenX::tags->victimVehicleTag.data())); - RenX_LoggingPlugin::vehicleSpawnFmt = this->config.get("VehicleSpawnFormat"_jrs, + RenX_LoggingPlugin::vehicleSpawnFmt = this->config.get("VehicleSpawnFormat"sv, string_printf("A " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD " has spawned.", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->vehicleTag.size(), RenX::tags->vehicleTag.data())); - RenX_LoggingPlugin::spawnFmt = this->config.get("SpawnFormat"_jrs, + RenX_LoggingPlugin::spawnFmt = this->config.get("SpawnFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " spawned as a " IRCCOLOR "%.*s%.*s.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.data())); - RenX_LoggingPlugin::botJoinFmt = this->config.get("BotJoinFormat"_jrs, + RenX_LoggingPlugin::botJoinFmt = this->config.get("BotJoinFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " online.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::vehicleCrateFmt = this->config.get("VehicleCrateFormat"_jrs, + RenX_LoggingPlugin::vehicleCrateFmt = this->config.get("VehicleCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "12%.*s" IRCCOLOR " vehicle crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::TSVehicleCrateFmt = this->config.get("TSVehicleCrateFormat"_jrs, + RenX_LoggingPlugin::TSVehicleCrateFmt = this->config.get("TSVehicleCrateFormat"sv, RenX_LoggingPlugin::vehicleCrateFmt); - RenX_LoggingPlugin::RAVehicleCrateFmt = this->config.get("RAVehicleCrateFormat"_jrs, + RenX_LoggingPlugin::RAVehicleCrateFmt = this->config.get("RAVehicleCrateFormat"sv, RenX_LoggingPlugin::vehicleCrateFmt); - RenX_LoggingPlugin::deathCrateFmt = this->config.get("DeathCrateFormat"_jrs, + RenX_LoggingPlugin::deathCrateFmt = this->config.get("DeathCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "12death" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::moneyCrateFmt = this->config.get("MoneyCrateFormat"_jrs, + RenX_LoggingPlugin::moneyCrateFmt = this->config.get("MoneyCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up " IRCCOLOR "09%.*s credits" IRCCOLOR " from a " IRCCOLOR "12money" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::characterCrateFmt = this->config.get("CharacterCrateFormat"_jrs, + RenX_LoggingPlugin::characterCrateFmt = this->config.get("CharacterCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "%.*s%.*s" IRCCOLOR " " IRCCOLOR "12character" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.data())); - RenX_LoggingPlugin::spyCrateFmt = this->config.get("SpyCrateFormat"_jrs, + RenX_LoggingPlugin::spyCrateFmt = this->config.get("SpyCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "%.*s%.*s" IRCCOLOR " " IRCCOLOR "12spy" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.data())); - RenX_LoggingPlugin::refillCrateFmt = this->config.get("RefillCrateFormat"_jrs, + RenX_LoggingPlugin::refillCrateFmt = this->config.get("RefillCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "%.*srefill" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data())); - RenX_LoggingPlugin::timeBombCrateFmt = this->config.get("TimeBombCrateFormat"_jrs, + RenX_LoggingPlugin::timeBombCrateFmt = this->config.get("TimeBombCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "11time-bomb" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::speedCrateFmt = this->config.get("SpeedCrateFormat"_jrs, + RenX_LoggingPlugin::speedCrateFmt = this->config.get("SpeedCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "11speed" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::nukeCrateFmt = this->config.get("NukeCrateFormat"_jrs, + RenX_LoggingPlugin::nukeCrateFmt = this->config.get("NukeCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "04nuke" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::abductionCrateFmt = this->config.get("AbductionCrateFormat"_jrs, + RenX_LoggingPlugin::abductionCrateFmt = this->config.get("AbductionCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " has been " IRCBOLD IRCCOLOR "06abducted" IRCCOLOR IRCBOLD " by the " IRCBOLD IRCCOLOR "06Scrin" IRCCOLOR IRCBOLD "!", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::unspecifiedCrateFmt = this->config.get("UnspecifiedCrateFormat"_jrs, + RenX_LoggingPlugin::unspecifiedCrateFmt = this->config.get("UnspecifiedCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up an " IRCCOLOR "13unspecified" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::otherCrateFmt = this->config.get("OtherCrateFormat"_jrs, + RenX_LoggingPlugin::otherCrateFmt = this->config.get("OtherCrateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "13%.*s" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::stealFmt = this->config.get("StealFormat"_jrs, + RenX_LoggingPlugin::stealFmt = this->config.get("StealFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " stole " IRCBOLD "%.*s" IRCBOLD "'s " IRCBOLD "%.*s" IRCBOLD "!", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::stealNoOwnerFmt = this->config.get("StealNoOwnerFormat"_jrs, + RenX_LoggingPlugin::stealNoOwnerFmt = this->config.get("StealNoOwnerFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " stole a " IRCBOLD IRCCOLOR "12%.*s" IRCBOLD "!", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::donateFmt = this->config.get("DonateFormat"_jrs, + RenX_LoggingPlugin::donateFmt = this->config.get("DonateFormat"sv, string_printf(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " donated " IRCCOLOR "09%.*s credits" IRCCOLOR " to " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.data())); - RenX_LoggingPlugin::gameOverFmt = this->config.get("GameOverFormat"_jrs, + RenX_LoggingPlugin::gameOverFmt = this->config.get("GameOverFormat"sv, string_printf(IRCCOLOR "03[Game]" IRCCOLOR "%.*s The " IRCBOLD "%.*s" IRCBOLD " won by " IRCBOLD "%.*s" IRCBOLD, RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::gameOverTieFmt = this->config.get("GameOverTieNoWinFormat"_jrs, + RenX_LoggingPlugin::gameOverTieFmt = this->config.get("GameOverTieNoWinFormat"sv, string_printf(IRCCOLOR "03[Game]" IRCCOLOR "10 The battle ended in a " IRCBOLD "%.*s" IRCBOLD " - Victory handed to " IRCBOLD IRCCOLOR "%.*s%.*s" IRCBOLD, RenX::tags->messageTag.size(), RenX::tags->messageTag.data(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.data())); - RenX_LoggingPlugin::gameOverTieNoWinFmt = this->config.get("GameOverTieFormat"_jrs, + RenX_LoggingPlugin::gameOverTieNoWinFmt = this->config.get("GameOverTieFormat"sv, string_printf(IRCCOLOR "03[Game]" IRCCOLOR "10 The battle ended in a " IRCBOLD "%.*s" IRCBOLD, RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::gameOverScoreFmt = this->config.get("GameOverScoreFormat"_jrs, + RenX_LoggingPlugin::gameOverScoreFmt = this->config.get("GameOverScoreFormat"sv, string_printf(IRCCOLOR "03[Game]" IRCCOLOR "%.*s %.*s" IRCCOLOR ": %.*s | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %.*s", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.data(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.data(), RenX::tags->winScoreTag.size(), @@ -497,97 +497,97 @@ bool RenX_LoggingPlugin::initialize() RenX::tags->victimTeamLongTag.data(), RenX::tags->loseScoreTag.size(), RenX::tags->loseScoreTag.data())); - RenX_LoggingPlugin::gameFmt = this->config.get("GameFormat"_jrs, + RenX_LoggingPlugin::gameFmt = this->config.get("GameFormat"sv, string_printf(IRCCOLOR "03[Game]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::executeFmt = this->config.get("ExecuteFormat"_jrs, + RenX_LoggingPlugin::executeFmt = this->config.get("ExecuteFormat"sv, string_printf(IRCCOLOR "07%.*s executed: %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::devBotExecuteFmt = this->config.get("DevBotExecuteFormat"_jrs, ""_jss); + RenX_LoggingPlugin::devBotExecuteFmt = this->config.get("DevBotExecuteFormat"sv, ""s); - RenX_LoggingPlugin::subscribeFmt = this->config.get("SubscribeFormat"_jrs, + RenX_LoggingPlugin::subscribeFmt = this->config.get("SubscribeFormat"sv, string_printf(IRCCOLOR "03%.*s subscribed to the RCON data stream.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::rconFmt = this->config.get("RCONFormat"_jrs, + RenX_LoggingPlugin::rconFmt = this->config.get("RCONFormat"sv, string_printf(IRCCOLOR "05[RCON]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::adminLoginFmt = this->config.get("AdminLoginFormat"_jrs, + RenX_LoggingPlugin::adminLoginFmt = this->config.get("AdminLoginFormat"sv, string_printf(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " logged in with " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->adminTag.size(), RenX::tags->adminTag.data())); - RenX_LoggingPlugin::adminGrantFmt = this->config.get("AdminGrantFormat"_jrs, + RenX_LoggingPlugin::adminGrantFmt = this->config.get("AdminGrantFormat"sv, string_printf(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " was granted " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->adminTag.size(), RenX::tags->adminTag.data())); - RenX_LoggingPlugin::adminLogoutFmt = this->config.get("AdminLogoutFormat"_jrs, + RenX_LoggingPlugin::adminLogoutFmt = this->config.get("AdminLogoutFormat"sv, string_printf(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " logged out of their " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->adminTag.size(), RenX::tags->adminTag.data())); - RenX_LoggingPlugin::adminFmt = this->config.get("AdminFormat"_jrs, + RenX_LoggingPlugin::adminFmt = this->config.get("AdminFormat"sv, string_printf(IRCCOLOR "07[Admin]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::voteAddBotsFmt = this->config.get("VoteAddBotsFormat"_jrs, + RenX_LoggingPlugin::voteAddBotsFmt = this->config.get("VoteAddBotsFormat"sv, string_printf(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for adding " IRCCOLOR "12%.*s" IRCCOLOR " bots to %.*s, with skill level " IRCCOLOR "07%.*s" IRCCOLOR ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data(), RenX::tags->victimTeamShortTag.size(), RenX::tags->victimTeamShortTag.data(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.data())); - RenX_LoggingPlugin::voteChangeMapFmt = this->config.get("VoteChangeMapFormat"_jrs, + RenX_LoggingPlugin::voteChangeMapFmt = this->config.get("VoteChangeMapFormat"sv, string_printf(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for a Map Change.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::voteKickFmt = this->config.get("VoteKickFormat"_jrs, + RenX_LoggingPlugin::voteKickFmt = this->config.get("VoteKickFormat"sv, string_printf(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for a kick against %.*s" IRCNORMAL ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.data())); - RenX_LoggingPlugin::voteMineBanFmt = this->config.get("VoteMineBanFormat"_jrs, + RenX_LoggingPlugin::voteMineBanFmt = this->config.get("VoteMineBanFormat"sv, string_printf(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD " has called for a Mine Ban against %.*s" IRCNORMAL ".", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::voteRemoveBotsFmt = this->config.get("VoteRemoveBotsFormat"_jrs, + RenX_LoggingPlugin::voteRemoveBotsFmt = this->config.get("VoteRemoveBotsFormat"sv, string_printf(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called a vote to remove " IRCCOLOR "12%.*s" IRCCOLOR " bots from " IRCCOLOR "%.*s%.*s" IRCNORMAL ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->victimTeamShortTag.size(), RenX::tags->victimTeamShortTag.data())); - RenX_LoggingPlugin::voteRestartMapFmt = this->config.get("VoteRestartMapFormat"_jrs, + RenX_LoggingPlugin::voteRestartMapFmt = this->config.get("VoteRestartMapFormat"sv, string_printf(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for a Map Restart.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::voteSurrenderFmt = this->config.get("VoteSurrenderFormat"_jrs, + RenX_LoggingPlugin::voteSurrenderFmt = this->config.get("VoteSurrenderFormat"sv, string_printf(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD " has called for a Surrender.", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::voteSurveyFmt = this->config.get("VoteSurveyFormat"_jrs, + RenX_LoggingPlugin::voteSurveyFmt = this->config.get("VoteSurveyFormat"sv, string_printf(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR "%.*s has started a Survey: " IRCCOLOR "12%.*s", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::voteOtherFmt = this->config.get("VoteOtherFormat"_jrs, + RenX_LoggingPlugin::voteOtherFmt = this->config.get("VoteOtherFormat"sv, string_printf(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR "%.*s has called a \"%.*s\" vote.", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::voteOverSuccessFmt = this->config.get("VoteOverSuccessFormat"_jrs, + RenX_LoggingPlugin::voteOverSuccessFmt = this->config.get("VoteOverSuccessFormat"sv, string_printf(IRCCOLOR "%.*s[Vote] A vote for \"%.*s\" " IRCBOLD IRCCOLOR "09passed" IRCBOLD IRCCOLOR "%.*s (Votes Yes: %.*s | Votes No: %.*s).", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data(), RenX::tags->victimTeamColorTag.size(), @@ -595,7 +595,7 @@ bool RenX_LoggingPlugin::initialize() RenX::tags->winScoreTag.data(), RenX::tags->loseScoreTag.size(), RenX::tags->loseScoreTag.data())); - RenX_LoggingPlugin::voteOverFailFmt = this->config.get("VoteOverFailFormat"_jrs, + RenX_LoggingPlugin::voteOverFailFmt = this->config.get("VoteOverFailFormat"sv, string_printf(IRCCOLOR "%.*s[Vote] A vote for \"%.*s\" " IRCBOLD IRCCOLOR "04failed" IRCBOLD IRCCOLOR "%.*s (Votes Yes: %.*s | Votes No: %.*s).", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data(), RenX::tags->victimTeamColorTag.size(), @@ -603,64 +603,64 @@ bool RenX_LoggingPlugin::initialize() RenX::tags->winScoreTag.data(), RenX::tags->loseScoreTag.size(), RenX::tags->loseScoreTag.data())); - RenX_LoggingPlugin::voteCancelFmt = this->config.get("VoteCancelFormat"_jrs, + RenX_LoggingPlugin::voteCancelFmt = this->config.get("VoteCancelFormat"sv, string_printf(IRCCOLOR "%.*s[Vote] A vote for \"%.*s\" was " IRCBOLD IRCCOLOR "07cancelled" IRCCOLOR IRCBOLD ".", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), RenX::tags->objectTag.data())); - RenX_LoggingPlugin::voteFmt = this->config.get("VoteFormat"_jrs, + RenX_LoggingPlugin::voteFmt = this->config.get("VoteFormat"sv, string_printf(IRCCOLOR "06[Vote]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::mapChangeFmt = this->config.get("MapChangeFormat"_jrs, + RenX_LoggingPlugin::mapChangeFmt = this->config.get("MapChangeFormat"sv, string_printf(IRCCOLOR "03Loading %.*s...", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::mapLoadFmt = this->config.get("MapLoadFormat"_jrs, + RenX_LoggingPlugin::mapLoadFmt = this->config.get("MapLoadFormat"sv, string_printf(IRCCOLOR "03%.*s loaded.", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::mapStartFmt = this->config.get("MapStartFormat"_jrs, + RenX_LoggingPlugin::mapStartFmt = this->config.get("MapStartFormat"sv, string_printf(IRCCOLOR "03%.*s started.", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::mapFmt = this->config.get("MapFormat"_jrs, + RenX_LoggingPlugin::mapFmt = this->config.get("MapFormat"sv, string_printf(IRCCOLOR "06[Map]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::demoRecordFmt = this->config.get("DemoRecordFormat"_jrs, + RenX_LoggingPlugin::demoRecordFmt = this->config.get("DemoRecordFormat"sv, string_printf("%.*s has started a demo recording.", RenX::tags->nameTag.size(), RenX::tags->nameTag.data())); - RenX_LoggingPlugin::rconDemoRecordFmt = this->config.get("RCONDemoRecordFormat"_jrs, - IRCCOLOR "07A demo recording has started."_jrs); + RenX_LoggingPlugin::rconDemoRecordFmt = this->config.get("RCONDemoRecordFormat"sv, + IRCCOLOR "07A demo recording has started."sv); - RenX_LoggingPlugin::demoRecordStopFmt = this->config.get("DemoRecordStopFormat"_jrs, - IRCCOLOR "07The demo recording has stopped."_jrs); + RenX_LoggingPlugin::demoRecordStopFmt = this->config.get("DemoRecordStopFormat"sv, + IRCCOLOR "07The demo recording has stopped."sv); - RenX_LoggingPlugin::demoFmt = this->config.get("DemoFormat"_jrs, + RenX_LoggingPlugin::demoFmt = this->config.get("DemoFormat"sv, string_printf(IRCCOLOR "06[Demo]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::logFmt = this->config.get("LogFormat"_jrs, + RenX_LoggingPlugin::logFmt = this->config.get("LogFormat"sv, string_printf(IRCCOLOR "07[Log]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::commandFmt = this->config.get("CommandFormat"_jrs, + RenX_LoggingPlugin::commandFmt = this->config.get("CommandFormat"sv, string_printf("")); // Disabled by default. - RenX_LoggingPlugin::errorFmt = this->config.get("ErrorFormat"_jrs, + RenX_LoggingPlugin::errorFmt = this->config.get("ErrorFormat"sv, string_printf(IRCCOLOR "04[Error]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); - RenX_LoggingPlugin::versionFmt = this->config.get("VersionFormat"_jrs, + RenX_LoggingPlugin::versionFmt = this->config.get("VersionFormat"sv, string_printf(IRCCOLOR "03Renegade X RCON connection established; using RCON verison " IRCBOLD "%.*s" IRCBOLD " for game version " IRCBOLD "%.*s" IRCBOLD, RenX::tags->rconVersionTag.size(), RenX::tags->rconVersionTag.data(), RenX::tags->gameVersionTag.size(), RenX::tags->gameVersionTag.data())); - RenX_LoggingPlugin::authorizedFmt = this->config.get("AuthorizedFormat"_jrs, + RenX_LoggingPlugin::authorizedFmt = this->config.get("AuthorizedFormat"sv, string_printf(IRCCOLOR "03RCON authorization completed.")); - RenX_LoggingPlugin::otherFmt = this->config.get("OtherFormat"_jrs, + RenX_LoggingPlugin::otherFmt = this->config.get("OtherFormat"sv, string_printf(IRCCOLOR "06[Other]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); @@ -1139,8 +1139,8 @@ void RenX_LoggingPlugin::RenX_OnHostAdminMessage(RenX::Server &server, std::stri if (!msg.empty()) { RenX::processTags(msg, &server); - RenX::replace_tag(msg, RenX::tags->INTERNAL_NAME_TAG, "Host"_jrs); - RenX::replace_tag(msg, RenX::tags->INTERNAL_RAW_NAME_TAG, "Host"_jrs); + RenX::replace_tag(msg, RenX::tags->INTERNAL_NAME_TAG, "Host"sv); + RenX::replace_tag(msg, RenX::tags->INTERNAL_RAW_NAME_TAG, "Host"sv); RenX::replace_tag(msg, RenX::tags->INTERNAL_MESSAGE_TAG, message); (server.*func)(msg); } @@ -1158,8 +1158,8 @@ void RenX_LoggingPlugin::RenX_OnHostAdminPMessage(RenX::Server &server, const Re if (!msg.empty()) { RenX::processTags(msg, &server, nullptr, &player); - RenX::replace_tag(msg, RenX::tags->INTERNAL_NAME_TAG, "Host"_jrs); - RenX::replace_tag(msg, RenX::tags->INTERNAL_RAW_NAME_TAG, "Host"_jrs); + RenX::replace_tag(msg, RenX::tags->INTERNAL_NAME_TAG, "Host"sv); + RenX::replace_tag(msg, RenX::tags->INTERNAL_RAW_NAME_TAG, "Host"sv); RenX::replace_tag(msg, RenX::tags->INTERNAL_MESSAGE_TAG, message); (server.*func)(msg); } @@ -1177,8 +1177,8 @@ void RenX_LoggingPlugin::RenX_OnHostWarnMessage(RenX::Server &server, std::strin if (!msg.empty()) { RenX::processTags(msg, &server); - RenX::replace_tag(msg, RenX::tags->INTERNAL_NAME_TAG, "Host"_jrs); - RenX::replace_tag(msg, RenX::tags->INTERNAL_RAW_NAME_TAG, "Host"_jrs); + RenX::replace_tag(msg, RenX::tags->INTERNAL_NAME_TAG, "Host"sv); + RenX::replace_tag(msg, RenX::tags->INTERNAL_RAW_NAME_TAG, "Host"sv); RenX::replace_tag(msg, RenX::tags->INTERNAL_MESSAGE_TAG, message); (server.*func)(msg); } @@ -1196,8 +1196,8 @@ void RenX_LoggingPlugin::RenX_OnHostWarnPMessage(RenX::Server &server, const Ren if (!msg.empty()) { RenX::processTags(msg, &server, nullptr, &player); - RenX::replace_tag(msg, RenX::tags->INTERNAL_NAME_TAG, "Host"_jrs); - RenX::replace_tag(msg, RenX::tags->INTERNAL_RAW_NAME_TAG, "Host"_jrs); + RenX::replace_tag(msg, RenX::tags->INTERNAL_NAME_TAG, "Host"sv); + RenX::replace_tag(msg, RenX::tags->INTERNAL_RAW_NAME_TAG, "Host"sv); RenX::replace_tag(msg, RenX::tags->INTERNAL_MESSAGE_TAG, message); (server.*func)(msg); } diff --git a/src/Plugins/RenX/RenX.Medals/RenX_Medals.cpp b/src/Plugins/RenX/RenX.Medals/RenX_Medals.cpp index 07ecd92..6c9dcb9 100644 --- a/src/Plugins/RenX/RenX.Medals/RenX_Medals.cpp +++ b/src/Plugins/RenX/RenX.Medals/RenX_Medals.cpp @@ -28,7 +28,6 @@ #include "RenX_Core.h" #include "RenX_Tags.h" -using namespace Jupiter::literals; using namespace std::literals; bool RenX_MedalsPlugin::initialize() @@ -52,8 +51,8 @@ RenX_MedalsPlugin::~RenX_MedalsPlugin() if (server->players.size() != 0) { for (auto node = server->players.begin(); node != server->players.end(); ++node) { if (!node->uuid.empty() && !node->isBot) { - RenX_MedalsPlugin::medalsFile[node->uuid].set("Recs"_jrs, node->varData[this->getName()].get("Recs"sv, ""s)); - RenX_MedalsPlugin::medalsFile[node->uuid].set("Noobs"_jrs, node->varData[this->getName()].get("Noobs"sv, ""s)); + RenX_MedalsPlugin::medalsFile[node->uuid].set("Recs"sv, node->varData[this->getName()].get("Recs"sv, ""s)); + RenX_MedalsPlugin::medalsFile[node->uuid].set("Noobs"sv, node->varData[this->getName()].get("Noobs"sv, ""s)); } } } @@ -65,7 +64,7 @@ RenX_MedalsPlugin::~RenX_MedalsPlugin() struct CongratPlayerData { RenX::Server *server; - Jupiter::StringS playerName; + std::string playerName; unsigned int type; }; @@ -78,16 +77,16 @@ void congratPlayer(unsigned int, void *params) switch (congratPlayerData->type) { case 0: - congratPlayerData->server->sendMessage(congratPlayerData->playerName + " has been recommended for having the highest score last game!"_jrs); + congratPlayerData->server->sendMessage(jessilib::join(congratPlayerData->playerName, " has been recommended for having the highest score last game!"sv)); break; case 1: - congratPlayerData->server->sendMessage(congratPlayerData->playerName + " has been recommended for having the most kills last game!"_jrs); + congratPlayerData->server->sendMessage(jessilib::join(congratPlayerData->playerName, " has been recommended for having the most kills last game!"sv)); break; case 2: - congratPlayerData->server->sendMessage(congratPlayerData->playerName + " has been recommended for having the most vehicle kills last game!"_jrs); + congratPlayerData->server->sendMessage(jessilib::join(congratPlayerData->playerName, " has been recommended for having the most vehicle kills last game!"sv)); break; case 3: - congratPlayerData->server->sendMessage(congratPlayerData->playerName + " has been recommended for having the highest Kill-Death ratio last game!"_jrs); + congratPlayerData->server->sendMessage(jessilib::join(congratPlayerData->playerName, " has been recommended for having the highest Kill-Death ratio last game!"sv)); break; default: break; @@ -104,8 +103,8 @@ void RenX_MedalsPlugin::RenX_SanitizeTags(std::string& fmt) { void RenX_MedalsPlugin::RenX_ProcessTags(std::string& msg, const RenX::Server *server, const RenX::PlayerInfo *player, const RenX::PlayerInfo *, const RenX::BuildingInfo *) { if (player != nullptr) { - std::string_view recs = RenX_MedalsPlugin::medalsFile.get(player->uuid, "Recs"_jrs); - std::string_view noobs = RenX_MedalsPlugin::medalsFile.get(player->uuid, "Noobs"_jrs); + std::string_view recs = RenX_MedalsPlugin::medalsFile.get(player->uuid, "Recs"sv); + std::string_view noobs = RenX_MedalsPlugin::medalsFile.get(player->uuid, "Noobs"sv); RenX::replace_tag(msg, this->INTERNAL_RECS_TAG, recs); RenX::replace_tag(msg, this->INTERNAL_NOOB_TAG, noobs); @@ -122,8 +121,8 @@ void RenX_MedalsPlugin::RenX_OnPlayerCreate(RenX::Server &, const RenX::PlayerIn void RenX_MedalsPlugin::RenX_OnPlayerDelete(RenX::Server &, const RenX::PlayerInfo &player) { if (!player.uuid.empty() && player.isBot == false) { - RenX_MedalsPlugin::medalsFile[player.uuid].set("Recs"_jrs, player.varData[this->getName()].get("Recs"sv, ""s)); - RenX_MedalsPlugin::medalsFile[player.uuid].set("Noobs"_jrs, player.varData[this->getName()].get("Noobs"sv, ""s)); + RenX_MedalsPlugin::medalsFile[player.uuid].set("Recs"sv, player.varData[this->getName()].get("Recs"sv, ""s)); + RenX_MedalsPlugin::medalsFile[player.uuid].set("Noobs"sv, player.varData[this->getName()].get("Noobs"sv, ""s)); } } @@ -132,9 +131,11 @@ void RenX_MedalsPlugin::RenX_OnJoin(RenX::Server &server, const RenX::PlayerInfo int worth = getWorth(player); Jupiter::Config *section = RenX_MedalsPlugin::config.getSection(RenX_MedalsPlugin::firstSection); if (section != nullptr) { - while (section->get("MaxRecs"_jrs, INT_MAX) < worth) - if ((section = RenX_MedalsPlugin::config.getSection(section->get("NextSection"_jrs))) == nullptr) + while (section->get("MaxRecs"sv, std::numeric_limits::max()) < worth) { + if ((section = RenX_MedalsPlugin::config.getSection(section->get("NextSection"sv))) == nullptr) { return; // No matching section found. + } + } size_t table_size = section->getTable().size(); @@ -253,15 +254,15 @@ int RenX_MedalsPlugin::OnRehash() void RenX_MedalsPlugin::init() { - RenX_MedalsPlugin::killCongratDelay = std::chrono::seconds(this->config.get("KillCongratDelay"_jrs, 60)); - RenX_MedalsPlugin::vehicleKillCongratDelay = std::chrono::seconds(this->config.get("VehicleKillCongratDelay"_jrs, 60)); - RenX_MedalsPlugin::kdrCongratDelay = std::chrono::seconds(this->config.get("KDRCongratDelay"_jrs, 60)); - RenX_MedalsPlugin::medalsFileName = this->config.get("MedalsFile"_jrs, "Medals.ini"_jrs); + RenX_MedalsPlugin::killCongratDelay = std::chrono::seconds(this->config.get("KillCongratDelay"sv, 60)); + RenX_MedalsPlugin::vehicleKillCongratDelay = std::chrono::seconds(this->config.get("VehicleKillCongratDelay"sv, 60)); + RenX_MedalsPlugin::kdrCongratDelay = std::chrono::seconds(this->config.get("KDRCongratDelay"sv, 60)); + RenX_MedalsPlugin::medalsFileName = this->config.get("MedalsFile"sv, "Medals.ini"sv); RenX_MedalsPlugin::medalsFile.read(RenX_MedalsPlugin::medalsFileName); - RenX_MedalsPlugin::firstSection = RenX_MedalsPlugin::config.get("FirstSection"_jrs); - RenX_MedalsPlugin::recsTag = RenX_MedalsPlugin::config.get("RecsTag"_jrs, "{RECS}"_jrs); - RenX_MedalsPlugin::noobTag = RenX_MedalsPlugin::config.get("NoobsTag"_jrs, "{NOOBS}"_jrs); - RenX_MedalsPlugin::worthTag = RenX_MedalsPlugin::config.get("WorthTag"_jrs, "{WORTH}"_jrs); + RenX_MedalsPlugin::firstSection = RenX_MedalsPlugin::config.get("FirstSection"sv); + RenX_MedalsPlugin::recsTag = RenX_MedalsPlugin::config.get("RecsTag"sv, "{RECS}"sv); + RenX_MedalsPlugin::noobTag = RenX_MedalsPlugin::config.get("NoobsTag"sv, "{NOOBS}"sv); + RenX_MedalsPlugin::worthTag = RenX_MedalsPlugin::config.get("WorthTag"sv, "{WORTH}"sv); RenX::Core *core = RenX::getCore(); size_t server_count = core->getServerCount(); @@ -286,11 +287,11 @@ RenX_MedalsPlugin pluginInstance; void RecsGameCommand::create() { - this->addTrigger("recs"_jrs); - this->addTrigger("recommends"_jrs); - this->addTrigger("recommendations"_jrs); - this->addTrigger("noobs"_jrs); - this->addTrigger("n00bs"_jrs); + this->addTrigger("recs"sv); + this->addTrigger("recommends"sv); + this->addTrigger("recommendations"sv); + this->addTrigger("noobs"sv); + this->addTrigger("n00bs"sv); } void RecsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) @@ -302,32 +303,32 @@ void RecsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, st { Jupiter::Config *section = pluginInstance.medalsFile.getSection(parameters); if (section == nullptr) - source->sendMessage(*player, "Error: Player not found! Syntax: recs [player]"_jrs); + source->sendMessage(*player, "Error: Player not found! Syntax: recs [player]"sv); else { - unsigned int recs = section->get("Recs"_jrs); - unsigned int noobs = section->get("Noobs"_jrs); + unsigned int recs = section->get("Recs"sv); + unsigned int noobs = section->get("Noobs"sv); source->sendMessage(*player, string_printf("[Archive] %.*s has %u and %u n00bs. Their worth: %d", section->getName().size(), section->getName().c_str(), recs, noobs, recs - noobs)); } } else if (target->uuid.empty()) - source->sendMessage(*player, "Error: Player is not using steam."_jrs); + source->sendMessage(*player, "Error: Player is not using steam."sv); else if (target->isBot) - source->sendMessage(*player, "Error: Bots do not have any recommendations."_jrs); + source->sendMessage(*player, "Error: Bots do not have any recommendations."sv); else if (target == player) - RecsGameCommand::trigger(source, player, ""_jrs); + RecsGameCommand::trigger(source, player, ""sv); else source->sendMessage(*player, string_printf("%.*s has %lu and %lu n00bs. Their worth: %d", target->name.size(), target->name.data(), getRecs(*target), getNoobs(*target), getWorth(*target))); } else if (player->uuid.empty()) - source->sendMessage(*player, "Error: You are not using steam."_jrs); + source->sendMessage(*player, "Error: You are not using steam."sv); else source->sendMessage(*player, string_printf("%.*s, you have %lu recs and %lu n00bs. Your worth: %d", player->name.size(), player->name.data(), getRecs(*player), getNoobs(*player), getWorth(*player))); } std::string_view RecsGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Gets a count of a player's recommendations and noobs. Syntax: recs [player]"); + static constexpr std::string_view defaultHelp = "Gets a count of a player's recommendations and noobs. Syntax: recs [player]"sv; return defaultHelp; } @@ -337,8 +338,8 @@ GAME_COMMAND_INIT(RecsGameCommand) void RecGameCommand::create() { - this->addTrigger("rec"_jrs); - this->addTrigger("recommend"_jrs); + this->addTrigger("rec"sv); + this->addTrigger("recommend"sv); } void RecGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { @@ -349,25 +350,25 @@ void RecGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std target = source->getPlayerByPartName(parameters_split.first); } if (target == nullptr) { - source->sendMessage(*player, "Error: Player not found! Syntax: rec "_jrs); + source->sendMessage(*player, "Error: Player not found! Syntax: rec "sv); } else if (target->uuid.empty()) { - source->sendMessage(*player, "Error: Player is not using steam."_jrs); + source->sendMessage(*player, "Error: Player is not using steam."sv); } else if (target->isBot) { - source->sendMessage(*player, "Error: Bots can not receive recommendations."_jrs); + source->sendMessage(*player, "Error: Bots can not receive recommendations."sv); } else if (target == player) { addNoob(*player); - source->sendMessage(*player, "You can't recommend yourself, you noob! (+1 noob)"_jrs); + source->sendMessage(*player, "You can't recommend yourself, you noob! (+1 noob)"sv); } - else if (!player->varData["RenX.Medals"_jrs].get("gr"_jrs).empty() && player->adminType.empty()) { - source->sendMessage(*player, "You can only give one recommendation per game."_jrs); + else if (!player->varData["RenX.Medals"sv].get("gr"sv).empty() && player->adminType.empty()) { + source->sendMessage(*player, "You can only give one recommendation per game."sv); } else { addRec(*target); source->sendMessage(string_printf("%.*s has recommended %.*s!", player->name.size(), player->name.data(), target->name.size(), target->name.data())); - player->varData["RenX.Medals"_jrs].set("gr"_jrs, "1"s); + player->varData["RenX.Medals"sv].set("gr"sv, "1"s); } } else RecsGameCommand_instance.trigger(source, player, parameters); @@ -375,7 +376,7 @@ void RecGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std std::string_view RecGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Recommends a player for their gameplay. Syntax: rec [reason]"); + static constexpr std::string_view defaultHelp = "Recommends a player for their gameplay. Syntax: rec [reason]"sv; return defaultHelp; } @@ -385,8 +386,8 @@ GAME_COMMAND_INIT(RecGameCommand) void NoobGameCommand::create() { - this->addTrigger("noob"_jrs); - this->addTrigger("n00b"_jrs); + this->addTrigger("noob"sv); + this->addTrigger("n00b"sv); } void NoobGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { @@ -397,21 +398,21 @@ void NoobGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, st target = source->getPlayerByPartName(parameters_split.first); } if (target == nullptr) { - source->sendMessage(*player, "Error: Player not found! Syntax: noob [player]"_jrs); + source->sendMessage(*player, "Error: Player not found! Syntax: noob [player]"sv); } else if (target->uuid.empty()) { - source->sendMessage(*player, "Error: Player is not using steam."_jrs); + source->sendMessage(*player, "Error: Player is not using steam."sv); } else if (target->isBot) { - source->sendMessage(*player, "Error: Bots can not receive n00bs."_jrs); + source->sendMessage(*player, "Error: Bots can not receive n00bs."sv); } - else if (!player->varData["RenX.Medals"_jrs].get("gn"_jrs).empty() && player->adminType.empty()) { - source->sendMessage(*player, "You can only give one noob per game."_jrs); + else if (!player->varData["RenX.Medals"sv].get("gn"sv).empty() && player->adminType.empty()) { + source->sendMessage(*player, "You can only give one noob per game."sv); } else { addNoob(*target); source->sendMessage(string_printf("%.*s has noob'd %.*s!", player->name.size(), player->name.data(), target->name.size(), target->name.data())); - player->varData["RenX.Medals"_jrs].set("gn"_jrs, "1"s); + player->varData["RenX.Medals"sv].set("gn"sv, "1"s); } } else RecsGameCommand_instance.trigger(source, player, parameters); @@ -419,7 +420,7 @@ void NoobGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, st std::string_view NoobGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Tells people that a player is bad. Syntax: noob [player]"); + static constexpr std::string_view defaultHelp = "Tells people that a player is bad. Syntax: noob [player]"sv; return defaultHelp; } @@ -427,24 +428,24 @@ GAME_COMMAND_INIT(NoobGameCommand) void addRec(const RenX::PlayerInfo &player, int amount) { if (!jessilib::starts_withi(player.uuid, "Player"sv) && !player.isBot) { - player.varData[pluginInstance.getName()].set("Recs"_jrs, static_cast(string_printf("%u", getRecs(player) + amount))); + player.varData[pluginInstance.getName()].set("Recs"sv, static_cast(string_printf("%u", getRecs(player) + amount))); } } void addNoob(const RenX::PlayerInfo &player, int amount) { if (!jessilib::starts_withi(player.uuid, "Player"sv) && !player.isBot) { - player.varData[pluginInstance.getName()].set("Noobs"_jrs,static_cast(string_printf("%u", getNoobs(player) + amount))); + player.varData[pluginInstance.getName()].set("Noobs"sv,static_cast(string_printf("%u", getNoobs(player) + amount))); } } unsigned long getRecs(const RenX::PlayerInfo &player) { - return player.varData[pluginInstance.getName()].get("Recs"_jrs); + return player.varData[pluginInstance.getName()].get("Recs"sv); } unsigned long getNoobs(const RenX::PlayerInfo &player) { - return player.varData[pluginInstance.getName()].get("Noobs"_jrs); + return player.varData[pluginInstance.getName()].get("Noobs"sv); } int getWorth(const RenX::PlayerInfo &player) diff --git a/src/Plugins/RenX/RenX.Medals/RenX_Medals.h b/src/Plugins/RenX/RenX.Medals/RenX_Medals.h index af26d7d..7c897df 100644 --- a/src/Plugins/RenX/RenX.Medals/RenX_Medals.h +++ b/src/Plugins/RenX/RenX.Medals/RenX_Medals.h @@ -21,7 +21,6 @@ #include #include "Jupiter/Plugin.h" -#include "Jupiter/String.hpp" #include "RenX_Plugin.h" #include "RenX_GameCommand.h" @@ -60,17 +59,17 @@ public: std::chrono::milliseconds killCongratDelay; std::chrono::milliseconds vehicleKillCongratDelay; std::chrono::milliseconds kdrCongratDelay; - Jupiter::StringS recsTag; - Jupiter::StringS noobTag; - Jupiter::StringS worthTag; + std::string recsTag; + std::string noobTag; + std::string worthTag; std::string firstSection; - Jupiter::StringS medalsFileName; + std::string medalsFileName; Jupiter::INIConfig medalsFile; private: - Jupiter::StringS INTERNAL_RECS_TAG; - Jupiter::StringS INTERNAL_NOOB_TAG; - Jupiter::StringS INTERNAL_WORTH_TAG; + std::string INTERNAL_RECS_TAG; + std::string INTERNAL_NOOB_TAG; + std::string INTERNAL_WORTH_TAG; void init(); }; diff --git a/src/Plugins/RenX/RenX.MinPlayers/RenX_MinPlayers.cpp b/src/Plugins/RenX/RenX.MinPlayers/RenX_MinPlayers.cpp index 76c8b41..40a5fc3 100644 --- a/src/Plugins/RenX/RenX.MinPlayers/RenX_MinPlayers.cpp +++ b/src/Plugins/RenX/RenX.MinPlayers/RenX_MinPlayers.cpp @@ -21,56 +21,48 @@ #include "RenX_PlayerInfo.h" #include "RenX_MinPlayers.h" -using namespace Jupiter::literals; +using namespace std::literals; -bool RenX_MinPlayersPlugin::initialize() -{ - RenX_MinPlayersPlugin::player_threshold = this->config.get("PlayerThreshold"_jrs, 20); +bool RenX_MinPlayersPlugin::initialize() { + RenX_MinPlayersPlugin::player_threshold = this->config.get("PlayerThreshold"sv, 20); return true; } -void RenX_MinPlayersPlugin::RenX_OnMapStart(RenX::Server &server, std::string_view map) -{ - if (server.players.size() < RenX_MinPlayersPlugin::player_threshold) +void RenX_MinPlayersPlugin::RenX_OnMapStart(RenX::Server &server, std::string_view map) { + if (server.players.size() < RenX_MinPlayersPlugin::player_threshold) { server.send(string_printf("addbots %d", RenX_MinPlayersPlugin::player_threshold - server.players.size())); + } } -void RenX_MinPlayersPlugin::RenX_OnJoin(RenX::Server &server, const RenX::PlayerInfo &player) -{ - if (server.players.size() > RenX_MinPlayersPlugin::player_threshold && server.isMatchInProgress()) +void RenX_MinPlayersPlugin::RenX_OnJoin(RenX::Server &server, const RenX::PlayerInfo &player) { + if (server.players.size() > RenX_MinPlayersPlugin::player_threshold && server.isMatchInProgress()) { ++RenX_MinPlayersPlugin::phase_bots; + } } -void RenX_MinPlayersPlugin::RenX_OnPart(RenX::Server &server, const RenX::PlayerInfo &player) -{ - if (server.isMatchInProgress() && server.players.size() <= player_threshold) - { - switch (player.team) - { +void RenX_MinPlayersPlugin::RenX_OnPart(RenX::Server &server, const RenX::PlayerInfo &player) { + if (server.isMatchInProgress() && server.players.size() <= player_threshold) { + switch (player.team) { case RenX::TeamType::GDI: - server.send("addredbots 1"_jrs); + server.send("addredbots 1"sv); break; case RenX::TeamType::Nod: - server.send("addbluebots 1"_jrs); + server.send("addbluebots 1"sv); break; case RenX::TeamType::None: break; default: - server.send("addbots 1"_jrs); + server.send("addbots 1"sv); break; } } } -void RenX_MinPlayersPlugin::AnyDeath(RenX::Server &server, const RenX::PlayerInfo &player) -{ - if (RenX_MinPlayersPlugin::phase_bots != 0 && player.isBot && server.players.size() != 0) - { +void RenX_MinPlayersPlugin::AnyDeath(RenX::Server &server, const RenX::PlayerInfo &player) { + if (RenX_MinPlayersPlugin::phase_bots != 0 && player.isBot && server.players.size() != 0) { size_t gdi_count = 0, nod_count = 0; - for (auto node = server.players.begin(); node != server.players.end(); ++node) - { - switch (node->team) - { + for (auto node = server.players.begin(); node != server.players.end(); ++node) { + switch (node->team) { case RenX::TeamType::GDI: ++gdi_count; break; @@ -82,54 +74,44 @@ void RenX_MinPlayersPlugin::AnyDeath(RenX::Server &server, const RenX::PlayerInf } } - if (gdi_count > nod_count) - { - if (player.team != RenX::TeamType::Nod) - { - server.kickPlayer(player, "Bot Phasing"_jrs); + if (gdi_count > nod_count) { + if (player.team != RenX::TeamType::Nod) { + server.kickPlayer(player, "Bot Phasing"sv); --RenX_MinPlayersPlugin::phase_bots; } } - else if (nod_count > gdi_count) - { - if (player.team != RenX::TeamType::GDI) - { - server.kickPlayer(player, "Bot Phasing"_jrs); + else if (nod_count > gdi_count) { + if (player.team != RenX::TeamType::GDI) { + server.kickPlayer(player, "Bot Phasing"sv); --RenX_MinPlayersPlugin::phase_bots; } } - else - { - server.kickPlayer(player, "Bot Phasing"_jrs); + else { + server.kickPlayer(player, "Bot Phasing"sv); --RenX_MinPlayersPlugin::phase_bots; } } } -void RenX_MinPlayersPlugin::RenX_OnSuicide(RenX::Server &server, const RenX::PlayerInfo &player, std::string_view damageType) -{ +void RenX_MinPlayersPlugin::RenX_OnSuicide(RenX::Server &server, const RenX::PlayerInfo &player, std::string_view damageType) { this->AnyDeath(server, player); } -void RenX_MinPlayersPlugin::RenX_OnKill(RenX::Server &server, const RenX::PlayerInfo &player, const RenX::PlayerInfo &victim, std::string_view damageType) -{ +void RenX_MinPlayersPlugin::RenX_OnKill(RenX::Server &server, const RenX::PlayerInfo &player, const RenX::PlayerInfo &victim, std::string_view damageType) { this->AnyDeath(server, player); } -void RenX_MinPlayersPlugin::RenX_OnKill(RenX::Server &server, std::string_view killer, const RenX::TeamType &killerTeam, const RenX::PlayerInfo &victim, std::string_view damageType) -{ +void RenX_MinPlayersPlugin::RenX_OnKill(RenX::Server &server, std::string_view killer, const RenX::TeamType &killerTeam, const RenX::PlayerInfo &victim, std::string_view damageType) { this->AnyDeath(server, victim); } -void RenX_MinPlayersPlugin::RenX_OnDie(RenX::Server &server, const RenX::PlayerInfo &player, std::string_view damageType) -{ +void RenX_MinPlayersPlugin::RenX_OnDie(RenX::Server &server, const RenX::PlayerInfo &player, std::string_view damageType) { this->AnyDeath(server, player); } // Plugin instantiation and entry point. RenX_MinPlayersPlugin pluginInstance; -extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() -{ +extern "C" JUPITER_EXPORT Jupiter::Plugin *getPlugin() { return &pluginInstance; } diff --git a/src/Plugins/RenX/RenX.MinPlayers/RenX_MinPlayers.h b/src/Plugins/RenX/RenX.MinPlayers/RenX_MinPlayers.h index bc85886..7e8c0e3 100644 --- a/src/Plugins/RenX/RenX.MinPlayers/RenX_MinPlayers.h +++ b/src/Plugins/RenX/RenX.MinPlayers/RenX_MinPlayers.h @@ -20,7 +20,6 @@ #define _RENX_MINPLAYERS_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_MinPlayersPlugin : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp b/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp index 7340ff7..c8d06b4 100644 --- a/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp +++ b/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp @@ -26,36 +26,35 @@ #include "RenX_Core.h" #include "RenX_Functions.h" -using namespace Jupiter::literals; using namespace std::literals; constexpr std::string_view game_administrator_name = "administrator"sv; constexpr std::string_view game_moderator_name = "moderator"sv; bool RenX_ModSystemPlugin::initialize() { - m_lockSteam = this->config.get("LockSteam"_jrs, true); - m_lockIP = this->config.get("LockIP"_jrs, false); - m_lockName = this->config.get("LockName"_jrs, false); - m_kickLockMismatch = this->config.get("KickLockMismatch"_jrs, true); - m_autoAuthSteam = this->config.get("AutoAuthSteam"_jrs, true); - m_autoAuthIP = this->config.get("AutoAuthIP"_jrs, false); - m_atmDefault = this->config.get("ATMDefault"_jrs); - m_moderatorGroup = this->config.get("Moderator"_jrs, "Moderator"_jrs); - m_administratorGroup = this->config.get("Administrator"_jrs, "Administrator"_jrs); + m_lockSteam = this->config.get("LockSteam"sv, true); + m_lockIP = this->config.get("LockIP"sv, false); + m_lockName = this->config.get("LockName"sv, false); + m_kickLockMismatch = this->config.get("KickLockMismatch"sv, true); + m_autoAuthSteam = this->config.get("AutoAuthSteam"sv, true); + m_autoAuthIP = this->config.get("AutoAuthIP"sv, false); + m_atmDefault = this->config.get("ATMDefault"sv); + m_moderatorGroup = this->config.get("Moderator"sv, "Moderator"sv); + m_administratorGroup = this->config.get("Administrator"sv, "Administrator"sv); ModGroup *group; - Jupiter::ReferenceString dotLockSteam = ".LockSteam"; - Jupiter::ReferenceString dotLockIP = ".LockIP"; - Jupiter::ReferenceString dotLockName = ".LockName"; - Jupiter::ReferenceString dotKickLockMismatch = ".KickLockMismatch"; - Jupiter::ReferenceString dotAutoAuthSteam = ".AutoAuthSteam"; - Jupiter::ReferenceString dotAutoAuthIP = ".AutoAuthIP"; - Jupiter::ReferenceString dotNext = ".Next"; - Jupiter::ReferenceString dotAccess = ".Access"; - Jupiter::ReferenceString dotPrefix = ".Prefix"; - Jupiter::ReferenceString dotGamePrefix = ".GamePrefix"; - - std::string groupName = this->config.get("Default"_jrs, ""s); + static constexpr std::string_view dotLockSteam = ".LockSteam"sv; + static constexpr std::string_view dotLockIP = ".LockIP"sv; + static constexpr std::string_view dotLockName = ".LockName"sv; + static constexpr std::string_view dotKickLockMismatch = ".KickLockMismatch"sv; + static constexpr std::string_view dotAutoAuthSteam = ".AutoAuthSteam"sv; + static constexpr std::string_view dotAutoAuthIP = ".AutoAuthIP"sv; + static constexpr std::string_view dotNext = ".Next"sv; + static constexpr std::string_view dotAccess = ".Access"sv; + static constexpr std::string_view dotPrefix = ".Prefix"sv; + static constexpr std::string_view dotGamePrefix = ".GamePrefix"sv; + + std::string groupName = this->config.get("Default"sv, ""s); while (!groupName.empty()) { // Add group @@ -170,7 +169,7 @@ int RenX_ModSystemPlugin::auth(RenX::Server &server, const RenX::PlayerInfo &pla if (!player.uuid.empty()) { Jupiter::Config *section = this->config.getSection(player.uuid); if (section != nullptr) { - std::string_view groupName = section->get("Group"_jrs); + std::string_view groupName = section->get("Group"sv); if (groupName.empty()) { group = &RenX_ModSystemPlugin::groups.front(); @@ -182,10 +181,10 @@ int RenX_ModSystemPlugin::auth(RenX::Server &server, const RenX::PlayerInfo &pla } auto sectionAuth = [&] { - player.varData[this->name].set("Group"_jrs, group->name); - player.formatNamePrefix = section->get("Prefix"_jrs, group->prefix); - player.gamePrefix = section->get("GamePrefix"_jrs, group->gamePrefix); - player.access = section->get("Access"_jrs, group->access); + player.varData[this->name].set("Group"sv, group->name); + player.formatNamePrefix = section->get("Prefix"sv, group->prefix); + player.gamePrefix = section->get("GamePrefix"sv, group->gamePrefix); + player.access = section->get("Access"sv, group->access); if (player.access != 0) { server.sendMessage(player, string_printf("You are now authenticated with access level %d; group: %.*s.", player.access, group->name.size(), group->name.data())); @@ -197,7 +196,7 @@ int RenX_ModSystemPlugin::auth(RenX::Server &server, const RenX::PlayerInfo &pla server.sendData(string_printf("d%d\n", player.id)); } } - Jupiter::String playerName = RenX::getFormattedPlayerName(player); + std::string playerName = RenX::getFormattedPlayerName(player); server.sendLogChan(IRCCOLOR "03[Authentication] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is now authenticated with access level %d; group: %.*s.", playerName.size(), playerName.data(), player.access, group->name.size(), group->name.data()); return player.access; @@ -206,16 +205,16 @@ int RenX_ModSystemPlugin::auth(RenX::Server &server, const RenX::PlayerInfo &pla if (forceAuth) return sectionAuth(); - bool lockSteam_l = section->get("LockSteam"_jrs, group->lockSteam); - bool lockIP_l = section->get("LockIP"_jrs, group->lockIP); - bool lockName_l = section->get("LockName"_jrs, group->lockName); - bool kickLockMismatch_l = section->get("KickLockMismatch"_jrs, group->kickLockMismatch); - bool autoAuthSteam_l = section->get("AutoAuthSteam"_jrs, group->autoAuthSteam); - bool autoAuthIP_l = section->get("AutoAuthIP"_jrs, group->autoAuthIP); + bool lockSteam_l = section->get("LockSteam"sv, group->lockSteam); + bool lockIP_l = section->get("LockIP"sv, group->lockIP); + bool lockName_l = section->get("LockName"sv, group->lockName); + bool kickLockMismatch_l = section->get("KickLockMismatch"sv, group->kickLockMismatch); + bool autoAuthSteam_l = section->get("AutoAuthSteam"sv, group->autoAuthSteam); + bool autoAuthIP_l = section->get("AutoAuthIP"sv, group->autoAuthIP); uint64_t steamid = Jupiter::from_string(section->get("SteamID"sv)); - std::string_view ip = section->get("LastIP"_jrs); - std::string_view name = section->get("Name"_jrs); + std::string_view ip = section->get("LastIP"sv); + std::string_view name = section->get("Name"sv); if ((lockSteam_l == false || player.steamid == steamid) && (lockIP_l == false || player.ip == ip) && (lockName_l == false || jessilib::equalsi(player.name, name))) { @@ -224,14 +223,14 @@ int RenX_ModSystemPlugin::auth(RenX::Server &server, const RenX::PlayerInfo &pla } else if (kickLockMismatch_l) { - server.kickPlayer(player, "Moderator entry lock mismatch"_jrs); + server.kickPlayer(player, "Moderator entry lock mismatch"sv); return -1; } } } group = this->getDefaultGroup(); - player.varData[this->name].set("Group"_jrs, group->name); + player.varData[this->name].set("Group"sv, group->name); player.formatNamePrefix = group->prefix; player.gamePrefix = group->gamePrefix; return player.access = group->access; @@ -241,7 +240,7 @@ void RenX_ModSystemPlugin::tempAuth(RenX::Server &server, const RenX::PlayerInfo if (group == nullptr) group = this->getDefaultGroup(); - player.varData[name].set("Group"_jrs, group->name); + player.varData[name].set("Group"sv, group->name); player.formatNamePrefix = group->prefix; player.gamePrefix = group->gamePrefix; player.access = group->access; @@ -251,10 +250,10 @@ void RenX_ModSystemPlugin::tempAuth(RenX::Server &server, const RenX::PlayerInfo } bool RenX_ModSystemPlugin::set(RenX::PlayerInfo &player, ModGroup &group) { - bool r = this->config[player.uuid].set("Group"_jrs, group.name); - this->config[player.uuid].set("SteamID"_jrs, static_cast(string_printf("%llu", player.steamid))); - this->config[player.uuid].set("LastIP"_jrs, static_cast(player.ip)); - this->config[player.uuid].set("Name"_jrs, player.name); + bool r = this->config[player.uuid].set("Group"sv, group.name); + this->config[player.uuid].set("SteamID"sv, static_cast(string_printf("%llu", player.steamid))); + this->config[player.uuid].set("LastIP"sv, static_cast(player.ip)); + this->config[player.uuid].set("Name"sv, player.name); this->config.write(); return r; @@ -299,7 +298,7 @@ int RenX_ModSystemPlugin::getConfigAccess(std::string_view uuid) const { return RenX_ModSystemPlugin::groups.front().access; } - return section->get("Access"_jrs, getGroupByName(section->get("Group"_jrs),const_cast(&groups.front()))->access); + return section->get("Access"sv, getGroupByName(section->get("Group"sv),const_cast(&groups.front()))->access); } size_t RenX_ModSystemPlugin::getGroupCount() const { @@ -331,9 +330,9 @@ RenX_ModSystemPlugin::~RenX_ModSystemPlugin() { if (server->players.size() != server->getBotCount()) { for (auto node = server->players.begin(); node != server->players.end(); ++node) { if (node->isBot == false) { - node->varData[RenX_ModSystemPlugin::name].remove("Group"_jrs); - node->gamePrefix.truncate(node->gamePrefix.size()); - node->formatNamePrefix.truncate(node->formatNamePrefix.size()); + node->varData[RenX_ModSystemPlugin::name].remove("Group"sv); + node->gamePrefix.clear(); + node->formatNamePrefix.clear(); if (node->adminType == game_administrator_name) node->access = 2; else if (node->adminType == game_moderator_name) @@ -358,9 +357,9 @@ void RenX_ModSystemPlugin::RenX_OnPlayerDelete(RenX::Server &server, const RenX: if (RenX_ModSystemPlugin::groups.size() != 0 && !player.isBot && !player.uuid.empty()) { Jupiter::Config *section = this->config.getSection(player.uuid); if (section != nullptr) { - section->set("SteamID"_jrs, static_cast(string_printf("%llu", player.steamid))); - section->set("LastIP"_jrs, static_cast(player.ip)); - section->set("Name"_jrs, player.name); + section->set("SteamID"sv, static_cast(string_printf("%llu", player.steamid))); + section->set("LastIP"sv, static_cast(player.ip)); + section->set("Name"sv, player.name); } } } @@ -427,7 +426,7 @@ RenX_ModSystemPlugin pluginInstance; void AuthIRCCommand::create() { - this->addTrigger("auth"_jrs); + this->addTrigger("auth"sv); this->setAccessLevel(3); } @@ -450,32 +449,32 @@ void AuthIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str serverMatch = true; player = server->getPlayerByPartName(parameters); if (player == nullptr) - source->sendNotice(nick, "Error: Player not found."_jrs); + source->sendNotice(nick, "Error: Player not found."sv); else { int uAccess = source->getAccessLevel(channel, nick); int cAccess = pluginInstance.getConfigAccess(player->uuid); if (cAccess > uAccess && uAccess < static_cast(source->getPrefixes().size())) - source->sendNotice(nick, "Error: Can't authenticate higher level moderators."_jrs); + source->sendNotice(nick, "Error: Can't authenticate higher level moderators."sv); else if (player->access == cAccess) - source->sendNotice(nick, "Error: Player is already authenticated"_jrs); + source->sendNotice(nick, "Error: Player is already authenticated"sv); else if (player->access > cAccess) - source->sendNotice(nick, "Error: Player is already temporarily authenticated."_jrs); + source->sendNotice(nick, "Error: Player is already temporarily authenticated."sv); else { RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); if (pluginInstance.auth(*server, *player) == -1) - source->sendNotice(nick, "Error: Player failed to pass strict lock checks. Player kicked."_jrs); - else if (defaultGroup->name == player->varData[pluginInstance.getName()].get("Group"_jrs)) - source->sendNotice(nick, "Error: Failed to authenticate player."_jrs); + source->sendNotice(nick, "Error: Player failed to pass strict lock checks. Player kicked."sv); + else if (defaultGroup->name == player->varData[pluginInstance.getName()].get("Group"sv)) + source->sendNotice(nick, "Error: Failed to authenticate player."sv); else - source->sendNotice(nick, "Player authenticated successfully."_jrs); + source->sendNotice(nick, "Player authenticated successfully."sv); } } } } if (serverMatch == false) - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } else @@ -484,7 +483,7 @@ void AuthIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str std::string_view AuthIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Authenticates a player in-game. Syntax: auth [player=you]"); + static constexpr std::string_view defaultHelp = "Authenticates a player in-game. Syntax: auth [player=you]"sv; return defaultHelp; } @@ -494,10 +493,10 @@ IRC_COMMAND_INIT(AuthIRCCommand) void DeAuthIRCCommand::create() { - this->addTrigger("unauth"_jrs); - this->addTrigger("deauth"_jrs); - this->addTrigger("demod"_jrs); - this->addTrigger("dtm"_jrs); + this->addTrigger("unauth"sv); + this->addTrigger("deauth"sv); + this->addTrigger("demod"sv); + this->addTrigger("dtm"sv); this->setAccessLevel(3); } @@ -520,22 +519,22 @@ void DeAuthIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s serverMatch = true; player = server->getPlayerByPartName(parameters); if (player == nullptr) - source->sendNotice(nick, "Error: Player not found."_jrs); + source->sendNotice(nick, "Error: Player not found."sv); else { int uAccess = source->getAccessLevel(channel, nick); int cAccess = pluginInstance.getConfigAccess(player->uuid); if (cAccess > uAccess && uAccess < static_cast(source->getPrefixes().size())) - source->sendNotice(nick, "Error: Can't unauthenticate higher level moderators."_jrs); + source->sendNotice(nick, "Error: Can't unauthenticate higher level moderators."sv); else if (pluginInstance.resetAccess(*player)) - source->sendNotice(nick, "Player unauthenticated successfully."_jrs); + source->sendNotice(nick, "Player unauthenticated successfully."sv); else - source->sendNotice(nick, "Error: Player not authenticated."_jrs); + source->sendNotice(nick, "Error: Player not authenticated."sv); } } } if (serverMatch == false) - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } else @@ -544,7 +543,7 @@ void DeAuthIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s std::string_view DeAuthIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Unauthenticates a player in-game. Syntax: deauth [player=you]"); + static constexpr std::string_view defaultHelp = "Unauthenticates a player in-game. Syntax: deauth [player=you]"sv; return defaultHelp; } @@ -554,7 +553,7 @@ IRC_COMMAND_INIT(DeAuthIRCCommand) void ATMIRCCommand::create() { - this->addTrigger("atm"_jrs); + this->addTrigger("atm"sv); this->setAccessLevel(3); } @@ -577,7 +576,7 @@ void ATMIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri int index = Jupiter::asInt(parameters_split.first); if (index < 0 || index >= static_cast(pluginInstance.groups.size())) { - source->sendNotice(nick, "Warning: Invalid group index. Ingoring parameter..."_jrs); + source->sendNotice(nick, "Warning: Invalid group index. Ingoring parameter..."sv); } else if (index == 0) { source->sendNotice(nick, "Error: Default group is not valid for this command. Use \"deauth\" to deauthorize a player."sv); @@ -596,7 +595,7 @@ void ATMIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri } } if (group == nullptr) - source->sendNotice(nick, "Error: Invalid group."_jrs); + source->sendNotice(nick, "Error: Invalid group."sv); else { for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) @@ -607,18 +606,18 @@ void ATMIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri serverMatch = true; player = server->getPlayerByPartName(playerName); if (player == nullptr) - source->sendNotice(nick, "Error: Player not found."_jrs); + source->sendNotice(nick, "Error: Player not found."sv); else if (player->access > group->access) - source->sendNotice(nick, "Error: This command can not lower a player's access level."_jrs); + source->sendNotice(nick, "Error: This command can not lower a player's access level."sv); else { pluginInstance.tempAuth(*server, *player, group); - source->sendNotice(nick, "Player successfully temporarily authenticated."_jrs); + source->sendNotice(nick, "Player successfully temporarily authenticated."sv); } } } if (serverMatch == false) - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } } @@ -626,7 +625,7 @@ void ATMIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri std::string_view ATMIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Temporarily authenticates a player in-game. Syntax: atm [level] [player=you]"); + static constexpr std::string_view defaultHelp = "Temporarily authenticates a player in-game. Syntax: atm [level] [player=you]"sv; return defaultHelp; } @@ -636,16 +635,16 @@ IRC_COMMAND_INIT(ATMIRCCommand) void AddIRCCommand::create() { - this->addTrigger("addmod"_jrs); - this->addTrigger("add"_jrs); - this->addTrigger("set"_jrs); + this->addTrigger("addmod"sv); + this->addTrigger("add"sv); + this->addTrigger("set"sv); this->setAccessLevel(5); } void AddIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { auto parameters_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); if (parameters_split.second.empty()) { - source->sendNotice(nick, "Error: Too few parameters. Syntax: add "_jrs); + source->sendNotice(nick, "Error: Too few parameters. Syntax: add "sv); return; } @@ -662,7 +661,7 @@ void AddIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri int index = Jupiter::asInt(parameters_split.first); if (index < 0 || index >= static_cast(pluginInstance.groups.size())) { - source->sendNotice(nick, "Error: Invalid group index."_jrs); + source->sendNotice(nick, "Error: Invalid group index."sv); } else { group = pluginInstance.getGroupByIndex(index); @@ -670,7 +669,7 @@ void AddIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri } } if (group == nullptr) - source->sendNotice(nick, "Error: Invalid group."_jrs); + source->sendNotice(nick, "Error: Invalid group."sv); else { for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) { server = RenX::getCore()->getServer(i); @@ -678,11 +677,11 @@ void AddIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri serverMatch = true; player = server->getPlayerByPartName(playerName); if (player == nullptr) - source->sendNotice(nick, "Error: Player not found."_jrs); + source->sendNotice(nick, "Error: Player not found."sv); else if (player->isBot) - source->sendNotice(nick, "Error: A bot can not be a moderator."_jrs); + source->sendNotice(nick, "Error: A bot can not be a moderator."sv); else if (player->uuid.empty()) - source->sendNotice(nick, "Error: Player has no UUID."_jrs); + source->sendNotice(nick, "Error: Player has no UUID."sv); else { pluginInstance.resetAccess(*player); if (pluginInstance.set(*player, *group)) @@ -694,14 +693,14 @@ void AddIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri } } if (serverMatch == false) - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } } std::string_view AddIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Adds a player to the in-game moderator list. Syntax: add "); + static constexpr std::string_view defaultHelp = "Adds a player to the in-game moderator list. Syntax: add "sv; return defaultHelp; } @@ -711,10 +710,10 @@ IRC_COMMAND_INIT(AddIRCCommand) void DelIRCCommand::create() { - this->addTrigger("delmod"_jrs); - this->addTrigger("remmod"_jrs); - this->addTrigger("del"_jrs); - this->addTrigger("rem"_jrs); + this->addTrigger("delmod"sv); + this->addTrigger("remmod"sv); + this->addTrigger("del"sv); + this->addTrigger("rem"sv); this->setAccessLevel(5); } @@ -722,7 +721,7 @@ void DelIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri { std::string_view parameters_view = parameters; if (parameters.empty()) - source->sendNotice(nick, "Error: Too few parameters. Syntax: del "_jrs); + source->sendNotice(nick, "Error: Too few parameters. Syntax: del "sv); else { Jupiter::IRC::Client::Channel *chan = source->getChannel(channel); @@ -742,43 +741,43 @@ void DelIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::stri if (player == nullptr) { if (pluginInstance.removeModSection(parameters)) - source->sendNotice(nick, "Player has been removed from the moderator list."_jrs); + source->sendNotice(nick, "Player has been removed from the moderator list."sv); else { for (auto& section : pluginInstance.getConfig().getSections()) { - if (jessilib::equalsi(section.second.get("Name"_jrs), parameters_view)) { + if (jessilib::equalsi(section.second.get("Name"sv), parameters_view)) { if (pluginInstance.removeModSection(section.first)) - source->sendNotice(nick, "Player has been removed from the moderator list."_jrs); + source->sendNotice(nick, "Player has been removed from the moderator list."sv); else - source->sendNotice(nick, "Error: Unknown error occurred."_jrs); + source->sendNotice(nick, "Error: Unknown error occurred."sv); return; } } - source->sendNotice(nick, "Error: Player not found."_jrs); + source->sendNotice(nick, "Error: Player not found."sv); } } else if (player->isBot) - source->sendNotice(nick, "Error: A bot can not be a moderator."_jrs); + source->sendNotice(nick, "Error: A bot can not be a moderator."sv); else if (pluginInstance.removeModSection(player->uuid)) - source->sendNotice(nick, "Player has been removed from the moderator list."_jrs); + source->sendNotice(nick, "Player has been removed from the moderator list."sv); else - source->sendNotice(nick, "Player is not in the moderator list."_jrs); + source->sendNotice(nick, "Player is not in the moderator list."sv); break; } } if (serverMatch == false) - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } } std::string_view DelIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Removes a player from the in-game moderator list. Syntax: del "); + static constexpr std::string_view defaultHelp = "Removes a player from the in-game moderator list. Syntax: del "sv; return defaultHelp; } @@ -788,8 +787,8 @@ IRC_COMMAND_INIT(DelIRCCommand) void ForceAuthIRCCommand::create() { - this->addTrigger("fauth"_jrs); - this->addTrigger("forceauth"_jrs); + this->addTrigger("fauth"sv); + this->addTrigger("forceauth"sv); this->setAccessLevel(4); } @@ -812,31 +811,31 @@ void ForceAuthIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std serverMatch = true; player = server->getPlayerByPartName(parameters); if (player == nullptr) - source->sendNotice(nick, "Error: Player not found."_jrs); + source->sendNotice(nick, "Error: Player not found."sv); else { int uAccess = source->getAccessLevel(channel, nick); int cAccess = pluginInstance.getConfigAccess(player->uuid); if (cAccess > uAccess && uAccess < static_cast(source->getPrefixes().size())) - source->sendNotice(nick, "Error: Can't authenticate higher level moderators."_jrs); + source->sendNotice(nick, "Error: Can't authenticate higher level moderators."sv); else if (player->access == cAccess) - source->sendNotice(nick, "Error: Player is already authenticated"_jrs); + source->sendNotice(nick, "Error: Player is already authenticated"sv); else if (player->access > cAccess) - source->sendNotice(nick, "Error: Player is already temporarily authenticated."_jrs); + source->sendNotice(nick, "Error: Player is already temporarily authenticated."sv); else { RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); pluginInstance.auth(*server, *player, false, true); - if (defaultGroup->name == player->varData[pluginInstance.getName()].get("Group"_jrs)) - source->sendNotice(nick, "Error: Failed to authenticate player."_jrs); + if (defaultGroup->name == player->varData[pluginInstance.getName()].get("Group"sv)) + source->sendNotice(nick, "Error: Failed to authenticate player."sv); else - source->sendNotice(nick, "Player authenticated successfully."_jrs); + source->sendNotice(nick, "Player authenticated successfully."sv); } } } } if (serverMatch == false) - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); } } else @@ -845,7 +844,7 @@ void ForceAuthIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std std::string_view ForceAuthIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Forcefully authenticates a player in-game. Syntax: auth [player=you]"); + static constexpr std::string_view defaultHelp = "Forcefully authenticates a player in-game. Syntax: auth [player=you]"sv; return defaultHelp; } @@ -854,12 +853,12 @@ IRC_COMMAND_INIT(ForceAuthIRCCommand) // ModList IRC Command void ModListIRCCommand::create() { - this->addTrigger("modlist"_jrs); - this->addTrigger("mlist"_jrs); + this->addTrigger("modlist"sv); + this->addTrigger("mlist"sv); } void ModListIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { - Jupiter::String msg; + std::string msg; size_t msgBaseSize; bool haveMods = false; for (auto node = pluginInstance.groups.begin(); node != pluginInstance.groups.end(); ++node) { @@ -869,24 +868,25 @@ void ModListIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: msgBaseSize = msg.size(); for (auto& section : pluginInstance.getConfig().getSections()) { - if (jessilib::equalsi(section.second.get("Group"_jrs), node->name)) { - msg += section.second.get("Name"_jrs, section.second.getName()); - msg += ", "_jrs; + if (jessilib::equalsi(section.second.get("Group"sv), node->name)) { + msg += section.second.get("Name"sv, section.second.getName()); + msg += ", "sv; } } if (msg.size() != msgBaseSize) { - msg.truncate(2); + msg.pop_back(); // ' ' + msg.pop_back(); // ',' source->sendMessage(channel, msg); haveMods = true; } } if (!haveMods) - source->sendMessage(channel, "There are no configured moderators."_jrs); + source->sendMessage(channel, "There are no configured moderators."sv); } std::string_view ModListIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays the moderator list. Syntax: modlist"); + static constexpr std::string_view defaultHelp = "Displays the moderator list. Syntax: modlist"sv; return defaultHelp; } @@ -898,7 +898,7 @@ IRC_COMMAND_INIT(ModListIRCCommand) void AuthGameCommand::create() { - this->addTrigger("auth"_jrs); + this->addTrigger("auth"sv); this->setAccessLevel(3); } @@ -908,37 +908,37 @@ void AuthGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, st { RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); else if (target == player) - source->sendMessage(*player, "Error: You can not authenticate yourself."_jrs); + source->sendMessage(*player, "Error: You can not authenticate yourself."sv); else { int cAccess = pluginInstance.getConfigAccess(target->uuid); if (cAccess > player->access) - source->sendMessage(*player, "Error: Can't authenticate higher level moderators."_jrs); + source->sendMessage(*player, "Error: Can't authenticate higher level moderators."sv); else if (target->access == cAccess) - source->sendMessage(*player, "Error: Player is already authenticated"_jrs); + source->sendMessage(*player, "Error: Player is already authenticated"sv); else if (target->access > cAccess) - source->sendMessage(*player, "Error: Player is already temporarily authenticated."_jrs); + source->sendMessage(*player, "Error: Player is already temporarily authenticated."sv); else { RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); if (pluginInstance.auth(*source, *player) == -1) - source->sendMessage(*player, "Error: Player failed to pass strict lock checks. Player kicked."_jrs); - else if (defaultGroup->name == player->varData[pluginInstance.getName()].get("Group"_jrs)) - source->sendMessage(*player, "Error: Failed to authenticate player."_jrs); + source->sendMessage(*player, "Error: Player failed to pass strict lock checks. Player kicked."sv); + else if (defaultGroup->name == player->varData[pluginInstance.getName()].get("Group"sv)) + source->sendMessage(*player, "Error: Failed to authenticate player."sv); else - source->sendMessage(*player, "Player authenticated successfully."_jrs); + source->sendMessage(*player, "Player authenticated successfully."sv); } } } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: auth "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: auth "sv); } std::string_view AuthGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Authenticates a player. Syntax: auth "); + static constexpr std::string_view defaultHelp = "Authenticates a player. Syntax: auth "sv; return defaultHelp; } @@ -948,7 +948,7 @@ GAME_COMMAND_INIT(AuthGameCommand) void ATMGameCommand::create() { - this->addTrigger("atm"_jrs); + this->addTrigger("atm"sv); this->setAccessLevel(3); } @@ -963,17 +963,17 @@ void ATMGameCommand::trigger(RenX::Server *server, RenX::PlayerInfo *player, std int index = Jupiter::asInt(parameters_split.first); if (index < 0 || index >= static_cast(pluginInstance.groups.size())) { - server->sendMessage(*player, "Warning: Invalid group index. Ingoring parameter..."_jrs); + server->sendMessage(*player, "Warning: Invalid group index. Ingoring parameter..."sv); } else if (index == 0) { - server->sendMessage(*player, "Error: Default group is not valid for this command. Use \"deauth\" to deauthorize a player."_jrs); + server->sendMessage(*player, "Error: Default group is not valid for this command. Use \"deauth\" to deauthorize a player."sv); return; } else { group = pluginInstance.getGroupByIndex(index); if (group->access > player->access) { group = pluginInstance.getDefaultATMGroup(); - server->sendMessage(*player, "Warning: You can not authorize an access level higher than yourself. Ignoring parameter..."_jrs); + server->sendMessage(*player, "Warning: You can not authorize an access level higher than yourself. Ignoring parameter..."sv); } playerName = parameters_split.second; } @@ -981,25 +981,25 @@ void ATMGameCommand::trigger(RenX::Server *server, RenX::PlayerInfo *player, std if (group != nullptr) { target = server->getPlayerByPartName(playerName); if (target == nullptr) - server->sendMessage(*player, "Error: Player not found."_jrs); + server->sendMessage(*player, "Error: Player not found."sv); else if (target->access > group->access) - server->sendMessage(*player, "Error: This command can not lower a player's access level."_jrs); + server->sendMessage(*player, "Error: This command can not lower a player's access level."sv); else { pluginInstance.tempAuth(*server, *target, group); - server->sendMessage(*player, "Player successfully temporarily authenticated."_jrs); + server->sendMessage(*player, "Player successfully temporarily authenticated."sv); } } else - server->sendMessage(*player, "Error: Invalid group."_jrs); + server->sendMessage(*player, "Error: Invalid group."sv); } else - server->sendMessage(*player, "Error: Too few parameters. Syntax: auth "_jrs); + server->sendMessage(*player, "Error: Too few parameters. Syntax: auth "sv); } std::string_view ATMGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Temporarily authenticates a player. Syntax: atm [level] "); + static constexpr std::string_view defaultHelp = "Temporarily authenticates a player. Syntax: atm [level] "sv; return defaultHelp; } @@ -1009,8 +1009,8 @@ GAME_COMMAND_INIT(ATMGameCommand) void ForceAuthGameCommand::create() { - this->addTrigger("fauth"_jrs); - this->addTrigger("forceauth"_jrs); + this->addTrigger("fauth"sv); + this->addTrigger("forceauth"sv); this->setAccessLevel(4); } @@ -1020,36 +1020,36 @@ void ForceAuthGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *playe { RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) - source->sendMessage(*player, "Error: Player not found."_jrs); + source->sendMessage(*player, "Error: Player not found."sv); else if (target == player) - source->sendMessage(*player, "Error: You can not force-authenticate yourself."_jrs); + source->sendMessage(*player, "Error: You can not force-authenticate yourself."sv); else { int cAccess = pluginInstance.getConfigAccess(target->uuid); if (cAccess > player->access) - source->sendMessage(*player, "Error: Can't authenticate higher level moderators."_jrs); + source->sendMessage(*player, "Error: Can't authenticate higher level moderators."sv); else if (target->access == cAccess) - source->sendMessage(*player, "Error: Player is already authenticated"_jrs); + source->sendMessage(*player, "Error: Player is already authenticated"sv); else if (target->access > cAccess) - source->sendMessage(*player, "Error: Player is already temporarily authenticated."_jrs); + source->sendMessage(*player, "Error: Player is already temporarily authenticated."sv); else { RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); pluginInstance.auth(*source, *player, false, true); - if (defaultGroup->name == player->varData[pluginInstance.getName()].get("Group"_jrs)) - source->sendMessage(*player, "Error: Failed to authenticate player."_jrs); + if (defaultGroup->name == player->varData[pluginInstance.getName()].get("Group"sv)) + source->sendMessage(*player, "Error: Failed to authenticate player."sv); else - source->sendMessage(*player, "Player authenticated successfully."_jrs); + source->sendMessage(*player, "Player authenticated successfully."sv); } } } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: fauth "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: fauth "sv); } std::string_view ForceAuthGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Forcefully authenticates a player. Syntax: fauth "); + static constexpr std::string_view defaultHelp = "Forcefully authenticates a player. Syntax: fauth "sv; return defaultHelp; } diff --git a/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.h b/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.h index f4af96b..8951af4 100644 --- a/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.h +++ b/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.h @@ -21,8 +21,6 @@ #include #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" -#include "Jupiter/String.hpp" #include "IRC_Command.h" #include "RenX_Plugin.h" #include "RenX_GameCommand.h" diff --git a/src/Plugins/RenX/RenX.NicknameUUID/RenX_NicknameUUID.cpp b/src/Plugins/RenX/RenX.NicknameUUID/RenX_NicknameUUID.cpp index a164bd4..aad37be 100644 --- a/src/Plugins/RenX/RenX.NicknameUUID/RenX_NicknameUUID.cpp +++ b/src/Plugins/RenX/RenX.NicknameUUID/RenX_NicknameUUID.cpp @@ -16,14 +16,13 @@ * Written by Jessica James */ -#include "Jupiter/String.hpp" #include "RenX_Core.h" #include "RenX_Server.h" #include "RenX_PlayerInfo.h" #include "RenX_Functions.h" #include "RenX_NicknameUUID.h" -Jupiter::StringS calc_uuid(RenX::PlayerInfo &player) +std::string calc_uuid(RenX::PlayerInfo &player) { return player.name; } diff --git a/src/Plugins/RenX/RenX.NicknameUUID/RenX_NicknameUUID.h b/src/Plugins/RenX/RenX.NicknameUUID/RenX_NicknameUUID.h index 68e3fc5..8d3b32a 100644 --- a/src/Plugins/RenX/RenX.NicknameUUID/RenX_NicknameUUID.h +++ b/src/Plugins/RenX/RenX.NicknameUUID/RenX_NicknameUUID.h @@ -20,7 +20,6 @@ #define _RENX_NICKNAMEUUID_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_NicknameUUIDPlugin : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.Plugin.Template/Example.h b/src/Plugins/RenX/RenX.Plugin.Template/Example.h index b0deefb..341e929 100644 --- a/src/Plugins/RenX/RenX.Plugin.Template/Example.h +++ b/src/Plugins/RenX/RenX.Plugin.Template/Example.h @@ -10,7 +10,6 @@ #define _EXAMPLE_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_TPlugin : public RenX::Plugin diff --git a/src/Plugins/RenX/RenX.Relay/RenX_Relay.cpp b/src/Plugins/RenX/RenX.Relay/RenX_Relay.cpp index b871871..287dadc 100644 --- a/src/Plugins/RenX/RenX.Relay/RenX_Relay.cpp +++ b/src/Plugins/RenX/RenX.Relay/RenX_Relay.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include "fmt/format.h" // TODO: replace with later #include #include "jessilib/split.hpp" @@ -23,7 +24,6 @@ // String literal redefinition of RenX::DelimC #define RX_DELIM "\x02" -using namespace Jupiter::literals; using namespace std::literals; constexpr const char g_blank_steamid[] = "0x0000000000000000"; constexpr std::chrono::steady_clock::duration g_reconnect_delay = std::chrono::seconds{15 }; // game server: 120s @@ -178,7 +178,7 @@ bool RenX_RelayPlugin::initialize() { m_default_settings = get_settings(config); - std::string_view upstreams_list = config.get("Upstreams"_jrs, ""sv); + std::string_view upstreams_list = config.get("Upstreams"sv, ""sv); std::vector upstream_names = jessilib::word_split_view(upstreams_list, WHITESPACE_SV); for (auto upstream_name : upstream_names) { auto upstream_config = config.getSection(upstream_name); @@ -325,7 +325,7 @@ void RenX_RelayPlugin::RenX_OnRaw(RenX::Server &server, std::string_view line) { // This is a command response for an upstream command; this is only relevant to one server: that server // Always echo the command back exactly as it was sent - Jupiter::StringS line_sanitized; + std::string line_sanitized; const auto& rcon_username = get_upstream_rcon_username(*front_server_info, server); if (rcon_username == server.getRCONUsername()) { // No need to recombine tokens @@ -556,20 +556,20 @@ RenX_RelayPlugin::upstream_settings RenX_RelayPlugin::get_settings(const Jupiter upstream_settings result{}; // Read in settings - result.m_upstream_hostname = in_config.get("UpstreamHost"_jrs, m_default_settings.m_upstream_hostname); - result.m_upstream_port = in_config.get("UpstreamPort"_jrs, m_default_settings.m_upstream_port); - result.m_rcon_username = in_config.get("RconUsername"_jrs, m_default_settings.m_rcon_username); - result.m_log_traffic = in_config.get("LogTraffic"_jrs, m_default_settings.m_log_traffic); - result.m_fake_pings = in_config.get("FakePings"_jrs, m_default_settings.m_fake_pings); - result.m_fake_ignored_commands = in_config.get("FakeSuppressedCommands"_jrs, m_default_settings.m_fake_ignored_commands); - result.m_sanitize_names = in_config.get("SanitizeNames"_jrs, m_default_settings.m_sanitize_names); - result.m_sanitize_ips = in_config.get("SanitizeIPs"_jrs, m_default_settings.m_sanitize_ips); - result.m_sanitize_hwids = in_config.get("SanitizeHWIDs"_jrs, m_default_settings.m_sanitize_hwids); - result.m_sanitize_steam_ids = in_config.get("SanitizeSteamIDs"_jrs, m_default_settings.m_sanitize_steam_ids); - result.m_suppress_unknown_commands = in_config.get("SuppressUnknownCmds"_jrs, m_default_settings.m_suppress_unknown_commands); - result.m_suppress_blacklisted_commands = in_config.get("SuppressBlacklistedCmds"_jrs, m_default_settings.m_suppress_blacklisted_commands); - result.m_suppress_chat_logs = in_config.get("SuppressChatLogs"_jrs, m_default_settings.m_suppress_chat_logs); - result.m_suppress_rcon_command_logs = in_config.get("SuppressRconCommandLogs"_jrs, m_default_settings.m_suppress_rcon_command_logs); + result.m_upstream_hostname = in_config.get("UpstreamHost"sv, m_default_settings.m_upstream_hostname); + result.m_upstream_port = in_config.get("UpstreamPort"sv, m_default_settings.m_upstream_port); + result.m_rcon_username = in_config.get("RconUsername"sv, m_default_settings.m_rcon_username); + result.m_log_traffic = in_config.get("LogTraffic"sv, m_default_settings.m_log_traffic); + result.m_fake_pings = in_config.get("FakePings"sv, m_default_settings.m_fake_pings); + result.m_fake_ignored_commands = in_config.get("FakeSuppressedCommands"sv, m_default_settings.m_fake_ignored_commands); + result.m_sanitize_names = in_config.get("SanitizeNames"sv, m_default_settings.m_sanitize_names); + result.m_sanitize_ips = in_config.get("SanitizeIPs"sv, m_default_settings.m_sanitize_ips); + result.m_sanitize_hwids = in_config.get("SanitizeHWIDs"sv, m_default_settings.m_sanitize_hwids); + result.m_sanitize_steam_ids = in_config.get("SanitizeSteamIDs"sv, m_default_settings.m_sanitize_steam_ids); + result.m_suppress_unknown_commands = in_config.get("SuppressUnknownCmds"sv, m_default_settings.m_suppress_unknown_commands); + result.m_suppress_blacklisted_commands = in_config.get("SuppressBlacklistedCmds"sv, m_default_settings.m_suppress_blacklisted_commands); + result.m_suppress_chat_logs = in_config.get("SuppressChatLogs"sv, m_default_settings.m_suppress_chat_logs); + result.m_suppress_rcon_command_logs = in_config.get("SuppressRconCommandLogs"sv, m_default_settings.m_suppress_rcon_command_logs); // Populate fake command handlers if (result.m_fake_pings) { diff --git a/src/Plugins/RenX/RenX.Relay/RenX_Relay.h b/src/Plugins/RenX/RenX.Relay/RenX_Relay.h index 71b8626..c9b6e71 100644 --- a/src/Plugins/RenX/RenX.Relay/RenX_Relay.h +++ b/src/Plugins/RenX/RenX.Relay/RenX_Relay.h @@ -10,7 +10,6 @@ #include #include #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "Jupiter/TCPSocket.h" #include "RenX_Plugin.h" diff --git a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp index b0ee22e..b5169d5 100644 --- a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp +++ b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp @@ -17,6 +17,7 @@ */ #include "jessilib/split.hpp" +#include "jessilib/unicode.hpp" #include "Jupiter/IRC_Client.h" #include "Jupiter/HTTP.h" #include "Jupiter/HTTP_QueryString.h" @@ -27,10 +28,9 @@ #include "RenX_PlayerInfo.h" #include "RenX_ServerList.h" -using namespace Jupiter::literals; using namespace std::literals; -static STRING_LITERAL_AS_NAMED_REFERENCE(CONTENT_TYPE_APPLICATION_JSON, "application/json"); +static constexpr std::string_view CONTENT_TYPE_APPLICATION_JSON = "application/json"sv; constexpr std::string_view server_list_game_header = ""sv; constexpr std::string_view server_list_game_footer = "\n"sv; @@ -94,13 +94,13 @@ std::string jsonify(std::string_view in_str) { } bool RenX_ServerListPlugin::initialize() { - m_web_hostname = this->config.get("Hostname"_jrs, ""_jrs); - m_web_path = this->config.get("Path"_jrs, "/"_jrs); - m_server_list_page_name = this->config.get("ServersPageName"_jrs, "servers"_jrs); - m_server_list_long_page_name = this->config.get("HumanServersPageName"_jrs, "servers_long"_jrs); - m_server_page_name = this->config.get("ServerPageName"_jrs, "server"_jrs); - m_metadata_page_name = this->config.get("MetadataPageName"_jrs, "metadata"_jrs); - m_metadata_prometheus_page_name = this->config.get("MetadataPrometheusPageName"_jrs, "metadata_prometheus"_jrs); + m_web_hostname = this->config.get("Hostname"sv, ""sv); + m_web_path = this->config.get("Path"sv, "/"sv); + m_server_list_page_name = this->config.get("ServersPageName"sv, "servers"sv); + m_server_list_long_page_name = this->config.get("HumanServersPageName"sv, "servers_long"sv); + m_server_page_name = this->config.get("ServerPageName"sv, "server"sv); + m_metadata_page_name = this->config.get("MetadataPageName"sv, "metadata"sv); + m_metadata_prometheus_page_name = this->config.get("MetadataPrometheusPageName"sv, "metadata_prometheus"sv); /** Initialize content */ Jupiter::HTTP::Server &server = getHTTPServer(); @@ -184,16 +184,16 @@ std::string RenX_ServerListPlugin::server_as_json(const RenX::Server &server) { return "null"s; } - Jupiter::String server_name = jsonify(server.getName()); - Jupiter::String server_map = jsonify(server.getMap().name); - Jupiter::String server_version = jsonify(server.getGameVersion()); - Jupiter::ReferenceString server_hostname = serverInfo.hostname; + std::string server_name = jsonify(server.getName()); + std::string server_map = jsonify(server.getMap().name); + std::string server_version = jsonify(server.getGameVersion()); + std::string_view server_hostname = serverInfo.hostname; unsigned short server_port = serverInfo.port; - Jupiter::String server_prefix = jsonify(serverInfo.namePrefix); + std::string server_prefix = jsonify(serverInfo.namePrefix); // Some members we only include if they're populated if (!server_prefix.empty()) { - server_prefix = R"json("NamePrefix":")json"s + server_prefix + "\","_jrs; + server_prefix = jessilib::join(R"json("NamePrefix":")json"sv, server_prefix, "\","sv); } std::string server_attributes; @@ -249,20 +249,20 @@ std::string RenX_ServerListPlugin::server_as_server_details_json(const RenX::Ser // Levels if (server.maps.size() != 0) { - server_json_block += "\"Levels\":["_jrs; + server_json_block += "\"Levels\":["sv; - server_json_block += "{\"Name\":\""_jrs; + server_json_block += "{\"Name\":\""sv; server_json_block += jsonify(server.maps[0].name); - server_json_block += "\",\"GUID\":\""_jrs; + server_json_block += "\",\"GUID\":\""sv; server_json_block += RenX::formatGUID(server.maps[0]); - server_json_block += "\"}"_jrs; + server_json_block += "\"}"sv; for (size_t index = 1; index != server.maps.size(); ++index) { - server_json_block += ",{\"Name\":\""_jrs; + server_json_block += ",{\"Name\":\""sv; server_json_block += jsonify(server.maps[index].name); - server_json_block += "\",\"GUID\":\""_jrs; + server_json_block += "\",\"GUID\":\""sv; server_json_block += RenX::formatGUID(server.maps[index]); - server_json_block += "\"}"_jrs; + server_json_block += "\"}"sv; } server_json_block += ']'; @@ -271,17 +271,17 @@ std::string RenX_ServerListPlugin::server_as_server_details_json(const RenX::Ser // Mutators if (server.mutators.size() != 0) { if (server.maps.size() != 0) - server_json_block += ","_jrs; - server_json_block += "\"Mutators\":["_jrs; + server_json_block += ","sv; + server_json_block += "\"Mutators\":["sv; - server_json_block += "{\"Name\":\""_jrs; + server_json_block += "{\"Name\":\""sv; server_json_block += jsonify(server.mutators[0]); - server_json_block += "\"}"_jrs; + server_json_block += "\"}"sv; for (size_t index = 1; index != server.mutators.size(); ++index) { - server_json_block += ",{\"Name\":\""_jrs; + server_json_block += ",{\"Name\":\""sv; server_json_block += jsonify(server.mutators[index]); - server_json_block += "\"}"_jrs; + server_json_block += "\"}"sv; } server_json_block += ']'; @@ -289,35 +289,35 @@ std::string RenX_ServerListPlugin::server_as_server_details_json(const RenX::Ser // Player List if (server.players.size() != 0 && server.players.size() != server.getBotCount()) { - server_json_block += ",\"PlayerList\":["_jrs; + server_json_block += ",\"PlayerList\":["sv; auto node = server.players.begin(); if (node != server.players.end()) { - server_json_block += "{\"Name\":\""_jrs; + server_json_block += "{\"Name\":\""sv; server_json_block += jsonify(node->name); - server_json_block += "\", \"isBot\":"_jrs; + server_json_block += "\", \"isBot\":"sv; server_json_block += json_bool_as_cstring(node->isBot); - server_json_block += ", \"Team\":"_jrs; + server_json_block += ", \"Team\":"sv; server_json_block += std::to_string(static_cast(node->team)); - server_json_block += "}"_jrs; + server_json_block += "}"sv; ++node; } while (node != server.players.end()) { - server_json_block += ",{\"Name\":\""_jrs; + server_json_block += ",{\"Name\":\""sv; server_json_block += jsonify(node->name); - server_json_block += "\", \"isBot\":"_jrs; + server_json_block += "\", \"isBot\":"sv; server_json_block += json_bool_as_cstring(node->isBot); - server_json_block += ", \"Team\":"_jrs; + server_json_block += ", \"Team\":"sv; server_json_block += std::to_string(static_cast(node->team)); - server_json_block += "}"_jrs; + server_json_block += "}"sv; ++node; } - server_json_block += "]"_jrs; + server_json_block += "]"sv; } server_json_block += '}'; @@ -327,12 +327,12 @@ std::string RenX_ServerListPlugin::server_as_server_details_json(const RenX::Ser std::string RenX_ServerListPlugin::server_as_long_json(const RenX::Server &server) { ListServerInfo serverInfo = getListServerInfo(server); - Jupiter::String server_name = jsonify(server.getName()); - Jupiter::String server_map = jsonify(server.getMap().name); - Jupiter::String server_version = jsonify(server.getGameVersion()); - Jupiter::ReferenceString server_hostname = serverInfo.hostname; + std::string server_name = jsonify(server.getName()); + std::string server_map = jsonify(server.getMap().name); + std::string server_version = jsonify(server.getGameVersion()); + std::string_view server_hostname = serverInfo.hostname; unsigned short server_port = serverInfo.port; - Jupiter::String server_prefix = jsonify(serverInfo.namePrefix); + std::string server_prefix = jsonify(serverInfo.namePrefix); std::vector activePlayers = server.activePlayers(false); std::string server_attributes = "[]"; @@ -403,72 +403,72 @@ std::string RenX_ServerListPlugin::server_as_long_json(const RenX::Server &serve // Level Rotation if (server.maps.size() != 0) { - server_json_block += ",\n\t\t\"Levels\": ["_jrs; + server_json_block += ",\n\t\t\"Levels\": ["sv; - server_json_block += "\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; + server_json_block += "\n\t\t\t{\n\t\t\t\t\"Name\": \""sv; server_json_block += jsonify(server.maps[0].name); - server_json_block += "\",\n\t\t\t\t\"GUID\": \""_jrs; + server_json_block += "\",\n\t\t\t\t\"GUID\": \""sv; server_json_block += RenX::formatGUID(server.maps[0]); - server_json_block += "\"\n\t\t\t}"_jrs; + server_json_block += "\"\n\t\t\t}"sv; for (size_t index = 1; index != server.maps.size(); ++index) { - server_json_block += ",\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; + server_json_block += ",\n\t\t\t{\n\t\t\t\t\"Name\": \""sv; server_json_block += jsonify(server.maps[index].name); - server_json_block += "\",\n\t\t\t\t\"GUID\": \""_jrs; + server_json_block += "\",\n\t\t\t\t\"GUID\": \""sv; server_json_block += RenX::formatGUID(server.maps[index]); - server_json_block += "\"\n\t\t\t}"_jrs; + server_json_block += "\"\n\t\t\t}"sv; } - server_json_block += "\n\t\t]"_jrs; + server_json_block += "\n\t\t]"sv; } // Mutators if (server.mutators.size() != 0) { - server_json_block += ",\n\t\t\"Mutators\": ["_jrs; + server_json_block += ",\n\t\t\"Mutators\": ["sv; - server_json_block += "\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; + server_json_block += "\n\t\t\t{\n\t\t\t\t\"Name\": \""sv; server_json_block += jsonify(server.mutators[0]); - server_json_block += "\"\n\t\t\t}"_jrs; + server_json_block += "\"\n\t\t\t}"sv; for (size_t index = 1; index != server.mutators.size(); ++index) { - server_json_block += ",\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; + server_json_block += ",\n\t\t\t{\n\t\t\t\t\"Name\": \""sv; server_json_block += jsonify(server.mutators[index]); - server_json_block += "\"\n\t\t\t}"_jrs; + server_json_block += "\"\n\t\t\t}"sv; } - server_json_block += "\n\t\t]"_jrs; + server_json_block += "\n\t\t]"sv; } // Player List if (activePlayers.size() != 0) { - server_json_block += ",\n\t\t\"PlayerList\": ["_jrs; + server_json_block += ",\n\t\t\"PlayerList\": ["sv; auto node = activePlayers.begin(); // Add first player to JSON - server_json_block += "\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; + server_json_block += "\n\t\t\t{\n\t\t\t\t\"Name\": \""sv; server_json_block += jsonify((*node)->name); - server_json_block += "\"\n\t\t\t}"_jrs; + server_json_block += "\"\n\t\t\t}"sv; ++node; // Add remaining players to JSON while (node != activePlayers.end()) { - server_json_block += ",\n\t\t\t{\n\t\t\t\t\"Name\": \""_jrs; + server_json_block += ",\n\t\t\t{\n\t\t\t\t\"Name\": \""sv; server_json_block += jsonify((*node)->name); - server_json_block += "\"\n\t\t\t}"_jrs; + server_json_block += "\"\n\t\t\t}"sv; ++node; } - server_json_block += "\n\t\t]"_jrs; + server_json_block += "\n\t\t]"sv; } - server_json_block += "\n\t}"_jrs; + server_json_block += "\n\t}"sv; return static_cast(server_json_block); } void RenX_ServerListPlugin::addServerToServerList(RenX::Server &server) { - Jupiter::String server_json_block(256); + std::string server_json_block; // append to server_list_json server_json_block = server_as_json(server); @@ -481,7 +481,6 @@ void RenX_ServerListPlugin::addServerToServerList(RenX::Server &server) { } m_server_list_json += server_json_block; m_server_list_json += ']'; - server_json_block.clear(); // Also update metadata so it reflects the now added server updateMetadata(); @@ -543,23 +542,23 @@ void RenX_ServerListPlugin::updateMetadata() { } void RenX_ServerListPlugin::markDetailsStale(RenX::Server& in_server) { - in_server.varData[this->name].remove("j"_jrs); + in_server.varData[this->name].remove("j"sv); } void RenX_ServerListPlugin::touchDetails(RenX::Server& in_server) { auto& server_varData = in_server.varData[this->name]; - if (server_varData.get("j"_jrs).empty()) { + if (server_varData.get("j"sv).empty()) { auto server_json_block = server_as_server_details_json(in_server); - server_varData.set("j"_jrs, server_json_block); + server_varData.set("j"sv, server_json_block); } } std::string_view RenX_ServerListPlugin::getListServerAddress(const RenX::Server& server) { - Jupiter::ReferenceString serverHostname; + std::string_view serverHostname; serverHostname = server.getSocketHostname(); if (auto section = config.getSection(serverHostname)) { - serverHostname = section->get("ListAddress"_jrs, serverHostname); + serverHostname = section->get("ListAddress"sv, serverHostname); } return serverHostname; @@ -573,12 +572,12 @@ RenX_ServerListPlugin::ListServerInfo RenX_ServerListPlugin::getListServerInfo(c return; } - result.hostname = section->get("ListAddress"_jrs, result.hostname); - result.port = section->get("ListPort"_jrs, result.port); - result.namePrefix = section->get("ListNamePrefix"_jrs, result.namePrefix); + result.hostname = section->get("ListAddress"sv, result.hostname); + result.port = section->get("ListPort"sv, result.port); + result.namePrefix = section->get("ListNamePrefix"sv, result.namePrefix); // Attributes - std::string_view attributes_str = section->get("ListAttributes"_jrs); + std::string_view attributes_str = section->get("ListAttributes"sv); if (!attributes_str.empty()) { result.attributes = jessilib::split_view(attributes_str, ' '); } @@ -641,12 +640,12 @@ std::string* handle_server_list_long_page(std::string_view) { // regenerate server_list_json - *server_list_long_json = "["_jrs; + *server_list_long_json = "["sv; while (index != servers.size()) { server = servers[index]; if (server->isConnected() && server->isFullyConnected()) { - *server_list_long_json += "\n\t"_jrs; + *server_list_long_json += "\n\t"sv; *server_list_long_json += pluginInstance.server_as_long_json(*server); ++index; break; @@ -656,20 +655,20 @@ std::string* handle_server_list_long_page(std::string_view) { while (index != servers.size()) { server = servers[index]; if (server->isConnected() && server->isFullyConnected()) { - *server_list_long_json += ",\n\t"_jrs; + *server_list_long_json += ",\n\t"sv; *server_list_long_json += pluginInstance.server_as_long_json(*server); } ++index; } - *server_list_long_json += "\n]"_jrs; + *server_list_long_json += "\n]"sv; return server_list_long_json; } std::string* handle_server_page(std::string_view query_string) { Jupiter::HTTP::HTMLFormResponse html_form_response(query_string); - Jupiter::ReferenceString address; + std::string_view address; int port = 0; RenX::Server *server; @@ -700,7 +699,7 @@ std::string* handle_server_page(std::string_view query_string) { // return server data pluginInstance.touchDetails(*server); - return new std::string(server->varData[pluginInstance.getName()].get("j"_jrs)); + return new std::string(server->varData[pluginInstance.getName()].get("j"sv)); } std::string* handle_metadata_page(std::string_view) { diff --git a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.h b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.h index 5d5c38c..4d83d9f 100644 --- a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.h +++ b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.h @@ -20,16 +20,15 @@ #define _RENX_SERVERLIST_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "RenX_Plugin.h" class RenX_ServerListPlugin : public RenX::Plugin { public: // RenX_ServerListPlugin struct ListServerInfo { - Jupiter::ReferenceString hostname; + std::string_view hostname; unsigned short port; - Jupiter::ReferenceString namePrefix; + std::string_view namePrefix; std::vector attributes; }; diff --git a/src/Plugins/RenX/RenX.SetJoin/RenX_SetJoin.cpp b/src/Plugins/RenX/RenX.SetJoin/RenX_SetJoin.cpp index fe01d9c..3cf21c3 100644 --- a/src/Plugins/RenX/RenX.SetJoin/RenX_SetJoin.cpp +++ b/src/Plugins/RenX/RenX.SetJoin/RenX_SetJoin.cpp @@ -21,7 +21,7 @@ #include "RenX_Server.h" #include "RenX_SetJoin.h" -using namespace Jupiter::literals; +using namespace std::literals; void RenX_SetJoinPlugin::RenX_OnJoin(RenX::Server &server, const RenX::PlayerInfo &player) { if (!player.uuid.empty() && server.isMatchInProgress()) { @@ -37,8 +37,8 @@ RenX_SetJoinPlugin pluginInstance; // ViewJoin Game Command void ViewJoinGameCommand::create() { - this->addTrigger("viewjoin"_jrs); - this->addTrigger("vjoin"_jrs); + this->addTrigger("viewjoin"sv); + this->addTrigger("vjoin"sv); } void ViewJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { @@ -48,14 +48,14 @@ void ViewJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player if (!setjoin.empty()) source->sendMessage(*player, string_printf("[%.*s] %.*s", player->name.size(), player->name.data(), setjoin.size(), setjoin.data())); else - source->sendMessage(*player, "Error: No setjoin found."_jrs); + source->sendMessage(*player, "Error: No setjoin found."sv); } else - source->sendMessage(*player, "Error: A setjoin message requires steam."_jrs); + source->sendMessage(*player, "Error: A setjoin message requires steam."sv); } std::string_view ViewJoinGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays your join message. Syntax: viewjoin"); + static constexpr std::string_view defaultHelp = "Displays your join message. Syntax: viewjoin"sv; return defaultHelp; } @@ -64,8 +64,8 @@ GAME_COMMAND_INIT(ViewJoinGameCommand) // ShowJoin Game Command void ShowJoinGameCommand::create() { - this->addTrigger("showjoin"_jrs); - this->addTrigger("shjoin"_jrs); + this->addTrigger("showjoin"sv); + this->addTrigger("shjoin"sv); } void ShowJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { @@ -75,14 +75,14 @@ void ShowJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player if (!setjoin.empty()) source->sendMessage(string_printf("[%.*s] %.*s", player->name.size(), player->name.data(), setjoin.size(), setjoin.data())); else - source->sendMessage(*player, "Error: No setjoin found."_jrs); + source->sendMessage(*player, "Error: No setjoin found."sv); } else - source->sendMessage(*player, "Error: A setjoin message requires steam."_jrs); + source->sendMessage(*player, "Error: A setjoin message requires steam."sv); } std::string_view ShowJoinGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays your join message. Syntax: showjoin"); + static constexpr std::string_view defaultHelp = "Displays your join message. Syntax: showjoin"sv; return defaultHelp; } @@ -92,10 +92,10 @@ GAME_COMMAND_INIT(ShowJoinGameCommand) void DelJoinGameCommand::create() { - this->addTrigger("deljoin"_jrs); - this->addTrigger("remjoin"_jrs); - this->addTrigger("djoin"_jrs); - this->addTrigger("rjoin"_jrs); + this->addTrigger("deljoin"sv); + this->addTrigger("remjoin"sv); + this->addTrigger("djoin"sv); + this->addTrigger("rjoin"sv); } void DelJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view ) { @@ -103,14 +103,14 @@ void DelJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, if (pluginInstance.setjoin_file.remove(player->uuid)) source->sendMessage(*player, string_printf("%.*s, your join message has been removed.", player->name.size(), player->name.data())); else - source->sendMessage(*player, "Error: Setjoin not found."_jrs); + source->sendMessage(*player, "Error: Setjoin not found."sv); } else - source->sendMessage(*player, "Error: A setjoin message requires steam."_jrs); + source->sendMessage(*player, "Error: A setjoin message requires steam."sv); } std::string_view DelJoinGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Removes your automatic join message. Syntax: deljoin"); + static constexpr std::string_view defaultHelp = "Removes your automatic join message. Syntax: deljoin"sv; return defaultHelp; } @@ -119,8 +119,8 @@ GAME_COMMAND_INIT(DelJoinGameCommand) // SetJoin Game Command void SetJoinGameCommand::create() { - this->addTrigger("setjoin"_jrs); - this->addTrigger("sjoin"_jrs); + this->addTrigger("setjoin"sv); + this->addTrigger("sjoin"sv); } void SetJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, std::string_view parameters) { @@ -133,11 +133,11 @@ void SetJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, } else DelJoinGameCommand_instance.trigger(source, player, parameters); } - else source->sendMessage(*player, "Error: A setjoin message requires steam."_jrs); + else source->sendMessage(*player, "Error: A setjoin message requires steam."sv); } std::string_view SetJoinGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sets an automatic join message. Syntax: setjoin [message]"); + static constexpr std::string_view defaultHelp = "Sets an automatic join message. Syntax: setjoin [message]"sv; return defaultHelp; } diff --git a/src/Plugins/RenX/RenX.Warn/RenX_Warn.cpp b/src/Plugins/RenX/RenX.Warn/RenX_Warn.cpp index 945122f..4ae2fd6 100644 --- a/src/Plugins/RenX/RenX.Warn/RenX_Warn.cpp +++ b/src/Plugins/RenX/RenX.Warn/RenX_Warn.cpp @@ -22,11 +22,11 @@ #include "RenX_PlayerInfo.h" #include "RenX_Warn.h" -using namespace Jupiter::literals; +using namespace std::literals; bool RenX_WarnPlugin::initialize() { - m_maxWarns = this->config.get("MaxWarns"_jrs, 3); - m_warnAction = this->config.get("MaxAction"_jrs, -1); + m_maxWarns = this->config.get("MaxWarns"sv, 3); + m_warnAction = this->config.get("MaxAction"sv, -1); return true; } @@ -38,20 +38,20 @@ int RenX_WarnPlugin::OnRehash() { // Plugin instantiation and entry point. RenX_WarnPlugin pluginInstance; -STRING_LITERAL_AS_NAMED_REFERENCE(WARNS_KEY, "w"); +static constexpr std::string_view WARNS_KEY = "w"sv; // Warn IRC Command void WarnIRCCommand::create() { - this->addTrigger("warn"_jrs); - this->addTrigger("w"_jrs); + this->addTrigger("warn"sv); + this->addTrigger("w"sv); this->setAccessLevel(2); } void WarnIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { auto parameters_split = jessilib::word_split_once_view(std::string_view{parameters}, WHITESPACE_SV); if (parameters_split.second.empty()) { - source->sendNotice(nick, "Error: Too Few Parameters. Syntax: Warn "_jrs); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: Warn "sv); return; } @@ -62,7 +62,7 @@ void WarnIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str const auto& servers = RenX::getCore()->getServers(chan->getType()); if (servers.empty()) { - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } @@ -82,7 +82,7 @@ void WarnIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str source->sendNotice(nick, string_printf("%.*s has been kicked from the server for exceeding the warning limit (%d warnings).", player->name.size(), player->name.data(), warns)); break; default: - server->banPlayer(*player, "Jupiter Bot/RenX.Warn"_jrs, string_printf("Warning limit reached (%d warnings)", warns), std::chrono::seconds(pluginInstance.m_warnAction)); + server->banPlayer(*player, "Jupiter Bot/RenX.Warn"sv, string_printf("Warning limit reached (%d warnings)", warns), std::chrono::seconds(pluginInstance.m_warnAction)); source->sendNotice(nick, string_printf("%.*s has been banned from the server for exceeding the warning limit (%d warnings).", player->name.size(), player->name.data(), reason.size(), reason.data(), warns)); break; } @@ -99,7 +99,7 @@ void WarnIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::str } std::string_view WarnIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Warns a player. Syntax: Warn "); + static constexpr std::string_view defaultHelp = "Warns a player. Syntax: Warn "sv; return defaultHelp; } @@ -108,9 +108,9 @@ IRC_COMMAND_INIT(WarnIRCCommand) // Pardon IRC Command void PardonIRCCommand::create() { - this->addTrigger("pardon"_jrs); - this->addTrigger("forgive"_jrs); - this->addTrigger("unwarn"_jrs); + this->addTrigger("pardon"sv); + this->addTrigger("forgive"sv); + this->addTrigger("unwarn"sv); this->setAccessLevel(2); } @@ -127,7 +127,7 @@ void PardonIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s const auto& servers = RenX::getCore()->getServers(chan->getType()); if (servers.empty()) { - source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."sv); return; } @@ -146,7 +146,7 @@ void PardonIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::s } std::string_view PardonIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Resets a player's warnings. Syntax: Pardon "); + static constexpr std::string_view defaultHelp = "Resets a player's warnings. Syntax: Pardon "sv; return defaultHelp; } @@ -155,8 +155,8 @@ IRC_COMMAND_INIT(PardonIRCCommand) // Warn Game Command void WarnGameCommand::create() { - this->addTrigger("warn"_jrs); - this->addTrigger("w"_jrs); + this->addTrigger("warn"sv); + this->addTrigger("w"sv); this->setAccessLevel(1); } @@ -177,7 +177,7 @@ void WarnGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, st source->sendMessage(*player, string_printf("%.*s has been kicked from the server for exceeding the warning limit (%d warnings).", target->name.size(), target->name.data(), warns)); break; default: - source->banPlayer(*target, "Jupiter Bot/RenX.Warn"_jrs, string_printf("Warning limit reached (%d warnings)", warns), std::chrono::seconds(pluginInstance.m_warnAction)); + source->banPlayer(*target, "Jupiter Bot/RenX.Warn"sv, string_printf("Warning limit reached (%d warnings)", warns), std::chrono::seconds(pluginInstance.m_warnAction)); source->sendMessage(*player, string_printf("%.*s has been banned from the server for exceeding the warning limit (%d warnings).", target->name.size(), target->name.data(), warns)); break; } @@ -190,11 +190,11 @@ void WarnGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, st } } else - source->sendMessage(*player, "Error: Too few parameters. Syntax: Warn "_jrs); + source->sendMessage(*player, "Error: Too few parameters. Syntax: Warn "sv); } std::string_view WarnGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Warns a player. Syntax: Warn "); + static constexpr std::string_view defaultHelp = "Warns a player. Syntax: Warn "sv; return defaultHelp; } @@ -203,9 +203,9 @@ GAME_COMMAND_INIT(WarnGameCommand) // Pardon Game Command void PardonGameCommand::create() { - this->addTrigger("pardon"_jrs); - this->addTrigger("forgive"_jrs); - this->addTrigger("unwarn"_jrs); + this->addTrigger("pardon"sv); + this->addTrigger("forgive"sv); + this->addTrigger("unwarn"sv); this->setAccessLevel(1); } @@ -224,7 +224,7 @@ void PardonGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, } std::string_view PardonGameCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Resets a player's warnings. Syntax: Pardon "); + static constexpr std::string_view defaultHelp = "Resets a player's warnings. Syntax: Pardon "sv; return defaultHelp; } diff --git a/src/Plugins/RenX/RenX.Warn/RenX_Warn.h b/src/Plugins/RenX/RenX.Warn/RenX_Warn.h index b22e350..0510bb1 100644 --- a/src/Plugins/RenX/RenX.Warn/RenX_Warn.h +++ b/src/Plugins/RenX/RenX.Warn/RenX_Warn.h @@ -20,7 +20,6 @@ #define _RENX_WARN_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/Reference_String.h" #include "IRC_Command.h" #include "RenX_Plugin.h" #include "RenX_GameCommand.h" diff --git a/src/Plugins/SetJoin/SetJoin.cpp b/src/Plugins/SetJoin/SetJoin.cpp index fe0bf31..c78e526 100644 --- a/src/Plugins/SetJoin/SetJoin.cpp +++ b/src/Plugins/SetJoin/SetJoin.cpp @@ -17,19 +17,22 @@ */ #include +#include "jessilib/unicode.hpp" #include "Jupiter/Functions.h" #include "SetJoin.h" #include "IRC_Bot.h" -using namespace Jupiter::literals; +using namespace std::literals; -void SetJoinPlugin::OnJoin(Jupiter::IRC::Client *server, std::string_view chan, std::string_view nick) -{ +void SetJoinPlugin::OnJoin(Jupiter::IRC::Client *server, std::string_view chan, std::string_view nick) { std::string_view setjoin = this->config[server->getConfigSection()].get(nick); - if (setjoin.empty()) - server->sendNotice(nick, "No setjoin has been set for you. To set one, use the !setjoin command"_jrs); - else - server->sendMessage(chan, string_printf(IRCBOLD IRCCOLOR "07[%.*s]" IRCCOLOR IRCBOLD ": %.*s", nick.size(), nick.data(), setjoin.size(), setjoin.data())); + if (setjoin.empty()) { + server->sendNotice(nick, "No setjoin has been set for you. To set one, use the !setjoin command"sv); + return; + } + + std::string join_message = jessilib::join(IRCBOLD IRCCOLOR "07["sv, nick, "]" IRCCOLOR IRCBOLD ": "sv, setjoin); + server->sendMessage(chan, join_message); } SetJoinPlugin pluginInstance; @@ -38,7 +41,7 @@ SetJoinPlugin pluginInstance; void SetJoinIRCCommand::create() { - this->addTrigger("setJoin"_jrs); + this->addTrigger("setJoin"sv); } void SetJoinIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) @@ -47,14 +50,14 @@ void SetJoinIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std:: { pluginInstance.setjoin_file[source->getConfigSection()].set(nick, static_cast(parameters)); pluginInstance.setjoin_file.write(); - source->sendMessage(channel, "Your join message has been set."_jrs); + source->sendMessage(channel, "Your join message has been set."sv); } - else source->sendMessage(channel, "Too few parameters! Syntax: setjoin "_jrs); + else source->sendMessage(channel, "Too few parameters! Syntax: setjoin "sv); } std::string_view SetJoinIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sets your join message. Syntax: setjoin "); + static constexpr std::string_view defaultHelp = "Sets your join message. Syntax: setjoin "sv; return defaultHelp; } @@ -64,26 +67,29 @@ IRC_COMMAND_INIT(SetJoinIRCCommand) void ViewJoinIRCCommand::create() { - this->addTrigger("viewJoin"_jrs); - this->addTrigger("vJoin"_jrs); + this->addTrigger("viewJoin"sv); + this->addTrigger("vJoin"sv); } -void ViewJoinIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) -{ +void ViewJoinIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { std::string_view target = parameters.empty() ? nick : parameters; std::string_view setjoin = pluginInstance.setjoin_file[source->getConfigSection()].get(target); - if (setjoin.empty()) - source->sendMessage(channel, string_printf("No setjoin has been set for \"%.*s\".", target.size(), - target.data())); - else - source->sendMessage(channel, string_printf(IRCBOLD IRCCOLOR "07[%.*s]" IRCCOLOR IRCBOLD ": %.*s", target.size(), - target.data(), setjoin.size(), setjoin.data())); + if (setjoin.empty()) { + source->sendMessage(channel, jessilib::join("No setjoin has been set for \""sv, target, "\"."sv)); + } + else { + std::string join_message = IRCBOLD IRCCOLOR "07["; + join_message += target; + join_message += "]" IRCCOLOR IRCBOLD ": "; + join_message += setjoin; + source->sendMessage(channel, join_message); + } } std::string_view ViewJoinIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Views a user's join message. Syntax: viewjoin [user=you]"); + static constexpr std::string_view defaultHelp = "Views a user's join message. Syntax: viewjoin [user=you]"sv; return defaultHelp; } @@ -93,20 +99,20 @@ IRC_COMMAND_INIT(ViewJoinIRCCommand) void DelJoinIRCCommand::create() { - this->addTrigger("delJoin"_jrs); - this->addTrigger("dJoin"_jrs); + this->addTrigger("delJoin"sv); + this->addTrigger("dJoin"sv); } void DelJoinIRCCommand::trigger(IRC_Bot *source, std::string_view channel, std::string_view nick, std::string_view parameters) { if (pluginInstance.setjoin_file[source->getConfigSection()].remove(nick)) - source->sendNotice(nick, "Your setjoin has been deleted successfully."_jrs); - else source->sendNotice(nick, "No setjoin was found to delete."_jrs); + source->sendNotice(nick, "Your setjoin has been deleted successfully."sv); + else source->sendNotice(nick, "No setjoin was found to delete."sv); } std::string_view DelJoinIRCCommand::getHelp(std::string_view ) { - static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Deletes your join message. Syntax: deljoin"); + static constexpr std::string_view defaultHelp = "Deletes your join message. Syntax: deljoin"sv; return defaultHelp; }