Administration tools: commands and non gameplay server configuration
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

197 lines
6.8 KiB

/**
* Config object for `FutileNickames_Feature`.
* Copyright 2022 Anton Tarasenko
*------------------------------------------------------------------------------
* This file is part of Acedia.
*
* Acedia is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License, or
* (at your option) any later version.
*
* Acedia is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Acedia. If not, see <https://www.gnu.org/licenses/>.
*/
class FutilityNicknames extends FeatureConfig
perobjectconfig
config(FutilityNicknames);
enum NicknameSpacesAction
{
NSA_DoNothing,
NSA_Trim,
NSA_Simplify
};
enum NicknameColorPermissions
{
NCP_ForbidColor,
NCP_ForceTeamColor,
NCP_ForceSingleColor,
NCP_AllowAnyColor
};
var public config NicknameSpacesAction spacesAction;
var public config NicknameColorPermissions colorPermissions;
var public config bool replaceSpacesWithUnderscores;
var public config bool removeSingleQuotationMarks;
var public config bool removeDoubleQuotationMarks;
var public config bool correctEmptyNicknames;
var public config int maxNicknameLength;
var public config array<string> fallbackNickname;
protected function HashTable ToData()
{
local int i;
local ArrayList fallbackNicknamesData;
local HashTable data;
data = __().collections.EmptyHashTable();
data.SetString(P("spacesAction"), string(spacesAction));
data.SetString(P("colorPermissions"), string(colorPermissions));
data.SetBool( P("replaceSpacesWithUnderscores"),
replaceSpacesWithUnderscores);
data.SetBool( P("removeSingleQuotationMarks"),
removeSingleQuotationMarks);
data.SetBool( P("removeDoubleQuotationMarks"),
removeDoubleQuotationMarks);
data.SetBool(P("correctEmptyNicknames"), correctEmptyNicknames);
data.SetInt(P("maxNicknameLength"), maxNicknameLength);
fallbackNicknamesData = __().collections.EmptyArrayList();
for (i = 0; i < fallbackNickname.length; i += 1)
{
fallbackNicknamesData.AddItem(
__().text.FromFormattedString(fallbackNickname[i]));
}
data.SetItem(P("fallbackNickname"), fallbackNicknamesData);
_.memory.Free(fallbackNicknamesData);
return data;
}
protected function FromData(HashTable source)
{
local int i;
local Text nextNickName, storedText;
local ArrayList fallbackNicknamesData;
if (source == none) {
return;
}
storedText = source.GetText(P("spacesAction"));
spacesAction = SpaceActionFromText(storedText);
_.memory.Free(storedText);
storedText = source.GetText(P("colorPermissions"));
colorPermissions = ColorPermissionsFromText(storedText);
_.memory.Free(storedText);
replaceSpacesWithUnderscores =
source.GetBool(P("replaceSpacesWithUnderscores"), true);
removeSingleQuotationMarks =
source.GetBool(P("removeSingleQuotationMarks"), true);
removeDoubleQuotationMarks =
source.GetBool(P("removeDoubleQuotationMarks"), true);
correctEmptyNicknames = source.GetBool(P("correctEmptyNicknames"), true);
maxNicknameLength = source.GetInt(P("correctEmptyNicknames"), 20);
fallbackNicknamesData = source.GetArrayList(P("fallbackNickname"));
if (fallbackNickname.length > 0) {
fallbackNickname.length = 0;
}
for (i = 0; i < fallbackNicknamesData.GetLength(); i += 1)
{
nextNickName = fallbackNicknamesData.GetText(i);
if (nextNickName != none) {
fallbackNickname[i] = nextNickName.ToFormattedString();
}
else {
fallbackNickname[i] = "";
}
_.memory.Free(nextNickName);
}
_.memory.Free(fallbackNicknamesData);
}
private function NicknameSpacesAction SpaceActionFromText(BaseText action)
{
if (action == none) {
return NSA_DoNothing;
}
if (action.EndsWith(P("DoNothing"), SCASE_INSENSITIVE)) {
return NSA_DoNothing;
}
if (action.EndsWith(P("Trim"), SCASE_INSENSITIVE)) {
return NSA_Trim;
}
if (action.EndsWith(P("Simplify"), SCASE_INSENSITIVE)) {
return NSA_Simplify;
}
return NSA_DoNothing;
}
private function NicknameColorPermissions ColorPermissionsFromText(
BaseText permissions)
{
if (permissions == none) {
return NCP_ForbidColor;
}
if (permissions.EndsWith(P("ForbidColor"), SCASE_INSENSITIVE)) {
return NCP_ForbidColor;
}
if (permissions.EndsWith(P("TeamColor"), SCASE_INSENSITIVE)) {
return NCP_ForceTeamColor;
}
if (permissions.EndsWith(P("SingleColor"), SCASE_INSENSITIVE)) {
return NCP_ForceSingleColor;
}
if (permissions.EndsWith(P("AllowAnyColor"), SCASE_INSENSITIVE)) {
return NCP_AllowAnyColor;
}
return NCP_ForbidColor;
}
protected function DefaultIt()
{
spacesAction = NSA_DoNothing;
colorPermissions = NCP_ForbidColor;
replaceSpacesWithUnderscores = true;
removeSingleQuotationMarks = false;
removeDoubleQuotationMarks = true;
correctEmptyNicknames = true;
maxNicknameLength = 20;
if (fallbackNickname.length > 0) {
fallbackNickname.length = 0;
}
fallbackNickname[0] = "Fresh Meat";
fallbackNickname[1] = "Rotten Meat";
fallbackNickname[2] = "Troll Meat";
fallbackNickname[3] = "Rat Meat";
fallbackNickname[4] = "Dog Meat";
fallbackNickname[5] = "Elk Meat";
fallbackNickname[6] = "Crab Meat";
fallbackNickname[7] = "Boar Meat";
fallbackNickname[8] = "Horker Meat";
fallbackNickname[9] = "Bug Meat";
}
defaultproperties
{
configName = "FutilityNicknames"
spacesAction = NSA_DoNothing
colorPermissions = NCP_ForbidColor
replaceSpacesWithUnderscores = true
removeSingleQuotationMarks = false
removeDoubleQuotationMarks = true
correctEmptyNicknames = true
maxNicknameLength = 20
fallbackNickname(0) = "Fresh Meat"
fallbackNickname(1) = "Rotten Meat"
fallbackNickname(2) = "Troll Meat"
fallbackNickname(3) = "Rat Meat"
fallbackNickname(4) = "Dog Meat"
fallbackNickname(5) = "Elk Meat"
fallbackNickname(6) = "Crab Meat"
fallbackNickname(7) = "Boar Meat"
fallbackNickname(8) = "Horker Meat"
fallbackNickname(9) = "Bug Meat"
}