Splitting WLCCvar into separate logical group files (#403)

* splitting WLCCvar into separate logical group files

* fix SendManifestDiscord
This commit is contained in:
Litogin
2025-11-29 20:36:32 +03:00
committed by GitHub
parent 259aeca61e
commit c28b436076
11 changed files with 153 additions and 108 deletions

View File

@@ -1,6 +1,7 @@
using Content.Server.Discord;
using Content.Shared.CCVar;
using Content.Shared.GameTicking;
using Content.Shared._WL.CCVars; //WL-Change: Send Manifest in Discord
namespace Content.Server.GameTicking
{
@@ -81,14 +82,14 @@ namespace Content.Server.GameTicking
}, true);
Subs.CVar(_cfg, CCVars.RoundEndSoundCollection, value => RoundEndSoundCollection = value, true);
//WL-Change: Send Manifest in Discord Start
Subs.CVar(_cfg, CCVars.DiscordRoundManifestWebhook, value =>
Subs.CVar(_cfg, WLCVars.DiscordRoundManifestWebhook, value =>
{
if (!string.IsNullOrWhiteSpace(value))
{
_discord.GetWebhook(value, data => _webhookIdentifierManifest = data.ToIdentifier());
}
}, true);
Subs.CVar(_cfg, CCVars.DiscordRoundManifestWebhookEmbedColor, value =>
Subs.CVar(_cfg, WLCVars.DiscordRoundManifestWebhookEmbedColor, value =>
{
_webhookEmbedColor = Color.DeepSkyBlue;
if (Color.TryParse(value, out var color))

View File

@@ -711,7 +711,7 @@ namespace Content.Server.GameTicking
var payload = new WebhookPayload { Embeds = [embed] };
await _discord.CreateMessage(_webhookIdentifierManifest.Value, payload);
if (!string.IsNullOrEmpty(roundEndMessage.RoundEndText))
if (!string.IsNullOrEmpty(roundEndMessage.RoundEndText) && roundEndMessage.RoundEndText != "\n")
{
if (roundEndMessage.RoundEndText.Length <= 4096)
{

View File

@@ -59,20 +59,6 @@ public sealed partial class CCVars
public static readonly CVarDef<string> DiscordRoundEndRoleWebhook =
CVarDef.Create("discord.round_end_role", string.Empty, CVar.SERVERONLY);
//WL-Change: Send Manifest in Discord Start
/// <summary>
/// URL of the Discord webhook which will relay manifest messages.
/// </summary>
public static readonly CVarDef<string> DiscordRoundManifestWebhook =
CVarDef.Create("discord.round_manifest_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL);
/// <summary>
/// HEX color of manifest discord webhook's embed.
/// </summary>
public static readonly CVarDef<string> DiscordRoundManifestWebhookEmbedColor =
CVarDef.Create("discord.round_manifest_webhook_embed_color", Color.DeepSkyBlue.ToHex(), CVar.SERVERONLY);
//WL-Change: Send Manifest in Discord End
/// <summary>
/// The token used to authenticate with Discord. For the Bot to function set: discord.token, discord.guild_id, and discord.prefix.
/// If this is empty, the bot will not connect.

View File

@@ -0,0 +1,27 @@
using Robust.Shared.Configuration;
namespace Content.Shared._WL.CCVars;
/// <summary>
/// WL modules console variables
/// </summary>
public sealed partial class WLCVars
{
/// <summary>
/// Через какое время все токены на подключение аккаунта игры к дискорду будут недействительны.
/// </summary>
public static readonly CVarDef<int> DiscordAuthTokensExpirationTime =
CVarDef.Create("discord.auth_tokens_expiration_time", 300, CVar.REPLICATED);
/// <summary>
/// URL of the Discord webhook which will relay manifest messages.
/// </summary>
public static readonly CVarDef<string> DiscordRoundManifestWebhook =
CVarDef.Create("discord.round_manifest_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL);
/// <summary>
/// HEX color of manifest discord webhook's embed.
/// </summary>
public static readonly CVarDef<string> DiscordRoundManifestWebhookEmbedColor =
CVarDef.Create("discord.round_manifest_webhook_embed_color", Color.DeepSkyBlue.ToHex(), CVar.SERVERONLY);
}

View File

@@ -0,0 +1,21 @@
using Robust.Shared.Configuration;
namespace Content.Shared._WL.CCVars;
/// <summary>
/// WL modules console variables
/// </summary>
public sealed partial class WLCVars
{
/// <summary>
/// Через сколько времени(в секундах) появится кнопка возвращения в лобби.
/// </summary>
public static readonly CVarDef<int> GhostReturnToLobbyButtonCooldown =
CVarDef.Create("ghost.return_to_lobby_button_cooldown", 600, CVar.SERVERONLY); //WL-changes (10 minutes)
/// <summary>
/// Нужно ли проверять игрока на возраст при выборе роли.
/// </summary>
public static readonly CVarDef<bool> IsAgeCheckNeeded =
CVarDef.Create("game.is_age_check_needed", true, CVar.REPLICATED);
}

View File

@@ -0,0 +1,18 @@
using Robust.Shared.Configuration;
namespace Content.Shared._WL.CCVars;
/// <summary>
/// WL modules console variables
/// </summary>
public sealed partial class WLCVars
{
/// <summary>
/// Токен для авторизации htpp-запросов на api сервера.
/// </summary>
public static readonly CVarDef<string> WLApiToken =
CVarDef.Create(
"admin.wl_api_token", string.Empty,
CVar.SERVERONLY | CVar.CONFIDENTIAL,
"Строковой токен, использующийся для авторизации HTTP-запросов, отправленных на http API сервера.");
}

View File

@@ -0,0 +1,15 @@
using Robust.Shared.Configuration;
namespace Content.Shared._WL.CCVars;
/// <summary>
/// WL modules console variables
/// </summary>
public sealed partial class WLCVars
{
/// <summary>
/// Количество символов в динамическом описании
/// </summary>
public static readonly CVarDef<int> MaxDynamicTextLength =
CVarDef.Create("ic.dynamic_text_length", 1024, CVar.SERVER | CVar.REPLICATED);
}

View File

@@ -0,0 +1,23 @@
using Robust.Shared.Configuration;
namespace Content.Shared._WL.CCVars;
/// <summary>
/// WL modules console variables
/// </summary>
public sealed partial class WLCVars
{
/// <summary>
/// Интервал, через который Поли™ будет готова выбрать новое сообщение!
/// </summary>
public static readonly CVarDef<int> PolyMessageChooseCooldown =
CVarDef.Create("poly.choose_cooldown_time", 3600, CVar.SERVERONLY,
"Интервал, через который Поли™ будет готова выбрать новое сообщение!");
/// <summary>
/// Нужна ли очистка выбранных Поли™ сообщений после РАУНДА.
/// </summary>
public static readonly CVarDef<bool> PolyNeededRoundEndCleanup =
CVarDef.Create("poly.round_end_cleanup", false, CVar.SERVERONLY,
"Нужна ли очистка выбранных Поли™ сообщений после РАУНДА.");
}

View File

@@ -0,0 +1,15 @@
using Robust.Shared.Configuration;
namespace Content.Shared._WL.CCVars;
/// <summary>
/// WL modules console variables
/// </summary>
public sealed partial class WLCVars
{
/// <summary>
/// ГАНС! ЕСЛИ ОНИ ВДРУГ НЕ НУЖНЫ ТО ПЕРЕКЛЮЧИ ПЕРЕКЛЮЧАТЕЛЬ!!!
/// </summary>
public static readonly CVarDef<bool> SkillsEnabled =
CVarDef.Create("skills.enabled", true, CVar.SERVER | CVar.REPLICATED | CVar.ARCHIVE);
}

View File

@@ -0,0 +1,28 @@
using Robust.Shared.Configuration;
namespace Content.Shared._WL.CCVars;
/// <summary>
/// WL modules console variables
/// </summary>
public sealed partial class WLCVars
{
/// <summary>
/// Доступна ли игрокам возможность вызвать шаттл голосованием?
/// </summary>
public static readonly CVarDef<bool> VoteShuttleEnabled =
CVarDef.Create("vote.evacuation_shuttle_vote_enabled", true, CVar.SERVERONLY);
/// <summary>
/// Сколько требуется согласных игроков для вызова.
/// В процентах.
/// </summary>
public static readonly CVarDef<float> VoteShuttlePlayersRatio =
CVarDef.Create("vote.evacuation_shuttle_vote_ratio", 0.6f, CVar.SERVERONLY);
/// <summary>
/// Время голосования.
/// </summary>
public static readonly CVarDef<int> VoteShuttleTimer =
CVarDef.Create("vote.evacuation_shuttle_vote_time", 40, CVar.SERVERONLY);
}

View File

@@ -6,96 +6,7 @@ namespace Content.Shared._WL.CCVars;
/// WL modules console variables
/// </summary>
[CVarDefs]
public sealed class WLCVars
public sealed partial class WLCVars
{
/*
* Game
*/
/// <summary>
/// Через сколько времени(в секундах) появится кнопка возвращения в лобби.
/// </summary>
public static readonly CVarDef<int> GhostReturnToLobbyButtonCooldown =
CVarDef.Create("ghost.return_to_lobby_button_cooldown", 600, CVar.SERVERONLY); //WL-changes (10 minutes)
/// <summary>
/// Нужно ли проверять игрока на возраст при выборе роли.
/// </summary>
public static readonly CVarDef<bool> IsAgeCheckNeeded =
CVarDef.Create("game.is_age_check_needed", true, CVar.REPLICATED);
/*
* HTTP API
*/
/// <summary>
/// Токен для авторизации htpp-запросов на api сервера.
/// </summary>
public static readonly CVarDef<string> WLApiToken =
CVarDef.Create(
"admin.wl_api_token", string.Empty,
CVar.SERVERONLY | CVar.CONFIDENTIAL,
"Строковой токен, использующийся для авторизации HTTP-запросов, отправленных на http API сервера.");
/*
* Discord
*/
/// <summary>
/// Через какое время все токены на подключение аккаунта игры к дискорду будут недействительны.
/// </summary>
public static readonly CVarDef<int> DiscordAuthTokensExpirationTime =
CVarDef.Create("discord.auth_tokens_expiration_time", 300, CVar.REPLICATED);
/*
* Poly
*/
/// <summary>
/// Интервал, через который Поли™ будет готова выбрать новое сообщение!
/// </summary>
public static readonly CVarDef<int> PolyMessageChooseCooldown =
CVarDef.Create("poly.choose_cooldown_time", 3600, CVar.SERVERONLY,
"Интервал, через который Поли™ будет готова выбрать новое сообщение!");
/// <summary>
/// Нужна ли очистка выбранных Поли™ сообщений после РАУНДА.
/// </summary>
public static readonly CVarDef<bool> PolyNeededRoundEndCleanup =
CVarDef.Create("poly.round_end_cleanup", false, CVar.SERVERONLY,
"Нужна ли очистка выбранных Поли™ сообщений после РАУНДА.");
/*
* Vote
*/
/// <summary>
/// Доступна ли игрокам возможность вызвать шаттл голосованием?
/// </summary>
public static readonly CVarDef<bool> VoteShuttleEnabled =
CVarDef.Create("vote.evacuation_shuttle_vote_enabled", true, CVar.SERVERONLY);
/// <summary>
/// Сколько требуется согласных игроков для вызова.
/// В процентах.
/// </summary>
public static readonly CVarDef<float> VoteShuttlePlayersRatio =
CVarDef.Create("vote.evacuation_shuttle_vote_ratio", 0.6f, CVar.SERVERONLY);
/// <summary>
/// Время голосования.
/// </summary>
public static readonly CVarDef<int> VoteShuttleTimer =
CVarDef.Create("vote.evacuation_shuttle_vote_time", 40, CVar.SERVERONLY);
/*
* Ic
*/
public static readonly CVarDef<int> MaxDynamicTextLength =
CVarDef.Create("ic.dynamic_text_length", 1024, CVar.SERVER | CVar.REPLICATED);
/*
* Skills
*/
/// <summary>
/// ГАНС! ЕСЛИ ОНИ ВДРУГ НЕ НУЖНЫ ТО ПЕРЕКЛЮЧИ ПЕРЕКЛЮЧАТЕЛЬ!!!
/// </summary>
public static readonly CVarDef<bool> SkillsEnabled =
CVarDef.Create("skills.enabled", true, CVar.SERVER | CVar.REPLICATED | CVar.ARCHIVE);
// Реклама, которая работает!
}