Skip to content
This repository was archived by the owner on Apr 6, 2023. It is now read-only.

Commit 375d246

Browse files
committed
Add Language Command
1 parent 9f33ce0 commit 375d246

File tree

7 files changed

+101
-18
lines changed

7 files changed

+101
-18
lines changed

VT-Api/Config/VtApiTranslation.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,7 @@ public class VtApiTranslation : IPluginTranslation
1616

1717
[Description("The death message when you are kill by a custom class of the VT-API")]
1818
public string DefaultDeathMessage { get; set; } = "You were killed by\\n%PlayerName%\\nas\\n%RoleName%";
19+
20+
1921
}
2022
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
using Synapse.Command;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace VT_Api.Core.Command.Commands
9+
{
10+
[CommandInformation(
11+
Name = "Language",
12+
Aliases = new[] { "Lang" },
13+
Description = "For change the language of the text of the serveur",
14+
Usage = "no arguement send you the list of possible language, else add the desired language",
15+
Permission = "",
16+
Platforms = new[] { Platform.ClientConsole },
17+
Arguments = new[] { "(new language)" }
18+
)]
19+
public class ChangeLanguage : ISynapseCommand
20+
{
21+
public CommandResult Execute(CommandContext context)
22+
{
23+
var result = new CommandResult();
24+
25+
try
26+
{
27+
result.State = CommandResultState.Ok;
28+
if (context.Arguments.Any())
29+
{
30+
var language = context.Arguments.First().ToUpper();
31+
if (language == "HELP")
32+
{
33+
result.Message = Help();
34+
}
35+
else if (Translation.TranslationManager.Get.AvailableLanguage.Contains(language))
36+
{
37+
context.Player.SetData("Language", language);
38+
Translation.TranslationManager.Get.PlayersLanguage[context.Player.NickName] = language;
39+
result.Message = "New language set successfully";
40+
}
41+
else
42+
{
43+
result.Message = "Invalide Language";
44+
}
45+
}
46+
else
47+
{
48+
result.Message = Help();
49+
}
50+
}
51+
catch (Exception e)
52+
{
53+
Synapse.Api.Logger.Get.Error($"Vt-Command : Language failed!!\n{e}\nStackTrace:\n{e.StackTrace}");
54+
result.Message = e.Message;
55+
result.State = CommandResultState.Error;
56+
}
57+
return result;
58+
}
59+
60+
public string Help()
61+
{
62+
var message = "All possible languages:\n";
63+
message += String.Join("\n", Translation.TranslationManager.Get.AvailableLanguage);
64+
return message;
65+
}
66+
}
67+
}

VT-Api/Core/Events/EventHandler.cs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,28 +32,26 @@ public class EventHandler
3232
internal EventHandler()
3333
{
3434
SyanpseEventHandler.Get.Player.PlayerJoinEvent += PlayerJoin;
35-
SyanpseEventHandler.Get.Server.RemoteAdminCommandEvent += OnRaOverwatchFix;
35+
//SyanpseEventHandler.Get.Server.RemoteAdminCommandEvent += OnRaOverwatchFix;
3636
SyanpseEventHandler.Get.Round.WaitingForPlayersEvent += OnWaiting;
3737
#if DEBUG
3838
SyanpseEventHandler.Get.Player.PlayerKeyPressEvent += KeyPress;
3939
#endif
4040
}
41+
#endregion
4142

42-
private void OnWaiting()
43-
{
44-
SynapseController.Server.Host.gameObject.GetOrAddComponent<ServerStopTrap>();
45-
}
46-
43+
#region Methods
4744
internal void Init()
4845
{
4946

5047
}
5148
#endregion
5249

53-
#region Methods
54-
#endregion
55-
5650
#region Events
51+
private void OnWaiting()
52+
{
53+
SynapseController.Server.Host.gameObject.GetOrAddComponent<ServerStopTrap>();
54+
}
5755

5856
private void PlayerJoin(Synapse.Api.Events.SynapseEventArguments.PlayerJoinEventArgs ev)
5957
{

VT-Api/Core/Plugin/VtAbstractPlugins.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public string PluginDirectory
4848

4949

5050
[Obsolete("This is the old Translation system, use Translation", true)]
51-
Translation IPlugin.Translation { get; set; }
51+
Synapse.Api.Plugin.Translation IPlugin.Translation { get; set; }
5252
#endregion
5353

5454
#region Constructor & Destructor
@@ -116,7 +116,7 @@ public string PluginDirectory
116116

117117

118118
[Obsolete("This is the old Translation Systemn, use Translation", true)]
119-
Translation IPlugin.Translation { get; set; }
119+
Synapse.Api.Plugin.Translation IPlugin.Translation { get; set; }
120120
#endregion
121121

122122
#region Constructor & Destructor
@@ -183,7 +183,7 @@ public string PluginDirectory
183183

184184

185185
[Obsolete("This is the old Translation Systemn, use Translation", true)]
186-
Translation IPlugin.Translation { get; set; }
186+
Synapse.Api.Plugin.Translation IPlugin.Translation { get; set; }
187187
#endregion
188188

189189
#region Constructor & Destructor

VT-Api/Core/Roles/CustomDisplay.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ public CustomDisplay()
100100
#endregion
101101

102102
#region Methods
103-
private void Start()
103+
104+
protected override void Start()
104105
{
105106
Player = this.gameObject.GetPlayer();
106107

VT-Api/Core/Translation/TranslationManager.cs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,20 @@ public class TranslationManager
2020
#region Properties & Variables
2121
public static TranslationManager Get => Singleton<TranslationManager>.Instance;
2222

23-
public Dictionary<string, string> PlayersLanguage = new Dictionary<string, string>();
23+
public Dictionary<string, string> PlayersLanguage { get; } = new Dictionary<string, string>();
24+
25+
public Dictionary<string, string> CountryLanguage { get; } = new Dictionary<string, string>()
26+
{
27+
{ "FRANCE", "FRENCH" },
28+
{ "GERMANY", "GERMAN" },
29+
{ "ITALY", "ITALIAN" },
30+
{ "SPAIN", "SPANISH" },
31+
{ "BRITAIN", "ENGLISH" }
32+
};
33+
34+
public List<string> AvailableLanguage => CountryLanguage.Values.Distinct().ToList();
35+
36+
2437
#endregion
2538

2639
#region Constructor & Destructor
@@ -82,8 +95,9 @@ public string GetUserCountry(string ip)
8295
public string GetLanguage(Player player)
8396
{
8497
var contry = GetUserCountry(player);
85-
var cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(c => new RegionInfo(c.Name).EnglishName == contry);
86-
return cultureInfo.IetfLanguageTag;
98+
if (!CountryLanguage.TryGetValue(contry, out string language))
99+
language = "ENGLISH";
100+
return language;
87101
}
88102

89103
public TPluginTranslation GetTranslation<TPluginTranslation>(SynapseTranslation<TPluginTranslation> translation, Player player) where TPluginTranslation : IPluginTranslation
@@ -105,8 +119,8 @@ private void OnJoin(PlayerJoinEventArgs ev)
105119
var language = ev.Player.GetData("Language");
106120
if (language == null)
107121
{
108-
language = GetLanguage(ev.Player);
109-
ev.Player.SetData("Language", GetLanguage(ev.Player));
122+
language = GetLanguage(ev.Player).ToUpper();
123+
ev.Player.SetData("Language", language);
110124
}
111125
PlayersLanguage.Add(ev.Player.NickName, language);
112126
}

VT-Api/VT-Api.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
<Compile Include="Core\Audio\AudioManager.cs" />
5353
<Compile Include="Core\Audio\Controller.cs" />
5454
<Compile Include="Core\Audio\FakeMicrophone.cs" />
55+
<Compile Include="Core\Command\Commands\ChangeLanguage.cs" />
5556
<Compile Include="Core\Roles\CustomDisplay.cs" />
5657
<Compile Include="Core\Behaviour\ServerStopTrap.cs" />
5758
<Compile Include="Core\Enum\AudioStatus.cs" />

0 commit comments

Comments
 (0)