Skip to content

Commit

Permalink
add manager
Browse files Browse the repository at this point in the history
  • Loading branch information
Kirus59 committed Feb 26, 2025
1 parent b115ea4 commit fb0b71c
Show file tree
Hide file tree
Showing 8 changed files with 79 additions and 6 deletions.
3 changes: 3 additions & 0 deletions Content.Server/Entry/EntryPoint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
using Robust.Shared.Timing;
using Robust.Shared.Utility;
using Content.Server.SS220.BackEndApi;
using Content.Server.SS220.Language;

namespace Content.Server.Entry
{
Expand Down Expand Up @@ -168,6 +169,8 @@ public override void PostInit()
IoCManager.Resolve<IBanManager>().Initialize();
IoCManager.Resolve<IConnectionManager>().PostInit();
IoCManager.Resolve<MultiServerKickManager>().Initialize();

IoCManager.Resolve<LanguageManager>().Initialize(); // SS220 Languages
}
}

Expand Down
2 changes: 2 additions & 0 deletions Content.Server/IoC/ServerContentIoC.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
using Content.Shared.Kitchen;
using Content.Shared.Players.PlayTimeTracking;
using Content.Shared.Players.RateLimiting;
using Content.Server.SS220.Language;

namespace Content.Server.IoC
{
Expand Down Expand Up @@ -89,6 +90,7 @@ public static void Register()
IoCManager.Register<IWatchlistWebhookManager, WatchlistWebhookManager>();
IoCManager.Register<ConnectionManager>();
IoCManager.Register<MultiServerKickManager>();
IoCManager.Register<LanguageManager>(); // SS220 Languages
}
}
}
3 changes: 2 additions & 1 deletion Content.Server/SS220/Commands/LanguageCommands.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public sealed class AddLanguageCommand : IConsoleCommand
{
[Dependency] private readonly IEntityManager _entities = default!;
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly LanguageManager _languageManager = default!;

public string Command => "addlanguage";
public string Description => Loc.GetString("cmd-language-add-desc");
Expand All @@ -32,7 +33,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args)

var languageId = args[1];

if (!_proto.TryIndex<LanguagePrototype>(languageId, out var languageProto))
if (_languageManager.TryGetLanguageById(languageId, out var language))
{
shell.WriteError(Loc.GetString("cmd-language-proto-miss"));
return;
Expand Down
46 changes: 46 additions & 0 deletions Content.Server/SS220/Language/LanguageManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// © SS220, An EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt
using Robust.Shared.Prototypes;
using System.Diagnostics.CodeAnalysis;

namespace Content.Server.SS220.Language;

public sealed class LanguageManager
{
[Dependency] private readonly ILogManager _logManager = default!;
[Dependency] private readonly IPrototypeManager _prototype = default!;

public List<LanguagePrototype> Languages { get; private set; } = new();

private ISawmill _sawmill = default!;

public void Initialize()
{
Languages = new List<LanguagePrototype>();
foreach (var language in _prototype.EnumeratePrototypes<LanguagePrototype>())
{
Languages.Add(language);
}

_sawmill = _logManager.GetSawmill("language.manager");
}

public bool TryGetLanguageById(string id, [NotNullWhen(true)] out LanguagePrototype? language)
{
language = Languages.Find(l => l.ID == id);

if (language == null)
_sawmill.Error($"Doesn't found a language with id: {id}");

return language != null;
}

public bool TryGetLanguageByKey(string key, [NotNullWhen(true)] out LanguagePrototype? language)
{
language = Languages.Find(l => l.Key == key);

if (language == null)
_sawmill.Error($"Doesn't found a language with key: {key}");

return language != null;
}
}
4 changes: 2 additions & 2 deletions Content.Server/SS220/Language/LanguageSystem.Verbs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ private List<Verb> CreateVerbs(EntityUid ent, List<string> languages)

public string GetName(string language)
{
if (!_proto.TryIndex<LanguagePrototype>(language, out var proto))
if (!_languageManager.TryGetLanguageById(language, out var proto))
return language;

if (proto.Name == null)
Expand All @@ -66,7 +66,7 @@ public string GetName(string language)

public string? GetDescription(string language)
{
if (!_proto.TryIndex<LanguagePrototype>(language, out var proto))
if (!_languageManager.TryGetLanguageById(language, out var proto))
return null;

if (proto.Description == null)
Expand Down
7 changes: 4 additions & 3 deletions Content.Server/SS220/Language/LanguageSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ namespace Content.Server.SS220.Language;
public sealed partial class LanguageSystem : EntitySystem
{
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly LanguageManager _languageManager = default!;

public readonly string UniversalLanguage = "Universal";
public readonly string GalacticLanguage = "Galactic";
Expand Down Expand Up @@ -152,7 +153,7 @@ public bool KnowsUniversalLanguage(EntityUid ent)
{
if (!TryComp<LanguageComponent>(ent, out var comp))
{
if (_proto.TryIndex<LanguagePrototype>(UniversalLanguage, out var universalProto))
if (_languageManager.TryGetLanguageById(UniversalLanguage, out var universalProto))
return universalProto;
}

Expand All @@ -161,7 +162,7 @@ public bool KnowsUniversalLanguage(EntityUid ent)
if (languageID == null)
return null;

if (_proto.TryIndex<LanguagePrototype>(languageID, out var proto))
if (_languageManager.TryGetLanguageById(languageID, out var proto))
return proto;

return null;
Expand All @@ -188,7 +189,7 @@ public void AddLanguage(EntityUid uid, string languageId)
if (!TryComp<LanguageComponent>(uid, out var comp))
return;

if (!_proto.TryIndex<LanguagePrototype>(languageId, out var proto))
if (!_languageManager.TryGetLanguageById(languageId, out var proto))
{
Log.Error($"Doesn't found a LanguagePrototype with id: {languageId}");
return;
Expand Down
3 changes: 3 additions & 0 deletions Content.Server/SS220/Language/LanguagesPrototype.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ public sealed partial class LanguagePrototype : IPrototype
[DataField]
public string? Description { get; private set; }

[DataField(required: true)]
public string Key = string.Empty;

/// <summary>
/// The color of the language in which messages will be recolored,
/// an empty value will not be recolored
Expand Down
17 changes: 17 additions & 0 deletions Resources/Prototypes/SS220/Language/language.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,20 @@
# Everyone understands you, you understand everyone, but there's no right to speak all languages
- type: language
id: Universal
key: uni

# Galactic common lanaguges region:
- type: language
id: Galactic
key: gal
name: "language-galacticcommon-name"
description: "language-galacticcommon-desc"
scrambleMethod: !type:RandomSyllablesScrambleMethod
syllables: [бла, бла, бла, бле, мех, ньех, нах, ах, угу, увы]

- type: language
id: SolCommon
key: sol
name: "language-solcommon-name"
description: "language-solcommon-desc"
color: "#2f2fad"
Expand All @@ -22,6 +25,7 @@

- type: language
id: Tradeband
key: trade
name: "language-tradeband-name"
description: "language-tradeband-desc"
color: "#87451c"
Expand All @@ -36,6 +40,7 @@

- type: language
id: Gutter
key: gut
name: "language-gutter-name"
description: "language-gutter-desc"
color: "#7092BE"
Expand All @@ -45,6 +50,7 @@

- type: language
id: Clownish
key: clown
name: "language-clownish-name"
description: "language-clownish-desc"
color: "#ff0000"
Expand All @@ -54,6 +60,7 @@

- type: language
id: NeoRusskiya
key: neoru
name: "language-neorusskiya-name"
description: "language-neorusskiya-desc"
color: "#7c4848"
Expand All @@ -70,6 +77,7 @@
# Race region:
- type: language
id: Sintaunathi
key: unathi
name: "language-unathi-name"
description: "language-unathi-desc"
color: "#228B22"
Expand All @@ -83,6 +91,7 @@

- type: language
id: Siiktajr
key: tajr
name: "language-siiktajr-name"
description: "language-siiktajr-desc"
color: "#803B56"
Expand All @@ -97,6 +106,7 @@

- type: language
id: VoxPidgin
key: vox
name: "language-voxpidgin-name"
description: "language-voxpidgin-desc"
color: "#AA00AA"
Expand All @@ -108,6 +118,7 @@

- type: language
id: Rootspeak
key: root
name: "language-rootspeak-name"
description: "language-rootspeak-desc"
color: "#804000"
Expand All @@ -117,6 +128,7 @@

- type: language
id: Bubblish
key: bubbl
name: "language-bobblish-name"
description: "language-bobblish-desc"
color: "#0077AA"
Expand All @@ -126,6 +138,7 @@

- type: language
id: Tkachi
key: tch
name: "language-tkachi-name"
description: "language-tkachi-desc"
color: "#869b29"
Expand All @@ -139,6 +152,7 @@

- type: language
id: Eldwarf
key: dwarf
name: "language-eldwarf-name"
description: "language-eldwarf-desc"
color: "#515d63"
Expand All @@ -150,6 +164,7 @@

- type: language
id: Arati
key: arati
name: "language-arati-name"
description: "language-arati-desc"
color: "#68477a"
Expand All @@ -164,6 +179,7 @@

- type: language
id: Canilunzt
key: cani
name: "language-canilunzt-name"
description: "language-canilunzt-desc"
color: "#B97A57"
Expand All @@ -178,6 +194,7 @@
# Misc region:
- type: language
id: Binary
key: bin
name: "language-binary-name"
description: "language-binary-desc"
color: "#2cc2e8"
Expand Down

0 comments on commit fb0b71c

Please sign in to comment.