Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

namespace BepInEx5Plugins.Ash.Alisa.ControlsMenuLocalization
{
public class AxisLocalization
{
public static readonly List<string> strings = new List<string>();
public static readonly List<string> strings_French = new List<string>();
public static readonly List<string> strings_Italian = new List<string>();
public static readonly List<string> strings_Japanese = new List<string>();
public static readonly List<string> strings_Custom = new List<string>();

public static void Load()
{
try
{
ReadText(Path.Combine(Application.streamingAssetsPath, "Text"), "", strings);
ReadText(Path.Combine(Application.streamingAssetsPath, "Text"), "_French", strings_French);
ReadText(Path.Combine(Application.streamingAssetsPath, "Text"), "_Italian", strings_Italian);
ReadText(Path.Combine(Application.streamingAssetsPath, "Text"), "_Japanese", strings_Japanese);
ReadText(Path.Combine(Application.streamingAssetsPath, "CustomLanguage/Text"), "", strings_Custom);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}

private static void ReadText(string basePath, string suffix, List<string> items)
{
if (items.Count > 0)
{
return;
}

var path = Path.Combine(basePath, "Axis" + suffix + ".txt");

if (!File.Exists(path))
{
var lines = new List<string>(24);

for (var i = 0; i < 12; ++i)
{
var axis = "Axis " + (i + 1).ToString();

lines.Add(axis + " -");
lines.Add(axis + " +");
}

Directory.CreateDirectory(basePath);
File.WriteAllLines(path, lines.ToArray());

return;
}
else
{
var lines = File.ReadAllLines(path);

if (lines.Length < 24)
{
Console.WriteLine("ERROR: Invalid axis text file. Must have 24 lines.");
return;
}

for (var i = 0; i < 24; ++i)
{
if (string.IsNullOrEmpty(lines[i]))
{
break;
}

items.Add(lines[i]);
}
}
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net35</TargetFramework>
<AssemblyName>BepInEx5Plugins.Ash.Alisa.ControlsMenuLocalization</AssemblyName>
<Description>ControlsMenuLocalization</Description>
<Version>1.0.0</Version>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<LangVersion>9.0</LangVersion>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="BepInEx.Analyzers" Version="1.*" PrivateAssets="all" />
<PackageReference Include="BepInEx.Core" Version="5.*" />
<PackageReference Include="BepInEx.PluginInfoProps" Version="1.*" />
<PackageReference Include="UnityEngine.Modules" Version="5.6.7" IncludeAssets="compile" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework.TrimEnd(`0123456789`))' == 'net'">
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="all" />
</ItemGroup>

<ItemGroup>
<Reference Include="Assembly-CSharp">
<HintPath>..\lib\SteamRelease\Assembly-CSharp.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>..\lib\UnityEngine\UnityEngine.UI.dll</HintPath>
<Private>false</Private>
</Reference>
</ItemGroup>

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="xcopy /Y /Q /C /I &quot;$(OutDir)&quot; &quot;..\$(OutDir)\$(TargetName)\&quot;" />
</Target>
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using HarmonyLib;
using System;

namespace BepInEx5Plugins.Ash.Alisa.ControlsMenuLocalization.HarmonyPatches
{
[HarmonyPatch(typeof(KeyBindScript), "CheckForDirectionOverlap")]
public class KeyBindScript_CheckForDirectionOverlap
{
// Refresh localization.
public static void Postfix(KeyBindScript __instance)
{
Console.WriteLine("KeyBindScript_CheckForDirectionOverlap.Postfix: Refreshing buttons");

__instance.RefreshButtons();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using HarmonyLib;
using System;

namespace BepInEx5Plugins.Ash.Alisa.ControlsMenuLocalization.HarmonyPatches
{
[HarmonyPatch(typeof(KeyBindScript), "ControllerInput")]
public class KeyBindScript_ControllerInput
{
// Refresh localization.
public static void Postfix(KeyBindScript __instance)
{
Console.WriteLine("KeyBindScript_ControllerInput.Postfix: Refreshing buttons");

__instance.RefreshButtons();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
using HarmonyLib;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace BepInEx5Plugins.Ash.Alisa.ControlsMenuLocalization.HarmonyPatches
{
[HarmonyPatch(typeof(KeyBindScript), "DpadNames")]
public class KeyBindScript_DpadNames
{
// Apply custom localization to axii buttons.
public static void Postfix(KeyBindScript __instance
, ref Settings ___settings
)
{
Console.WriteLine("KeyBindScript_DpadNames.Postfix: Refreshing buttons");

if (___settings.keyboardAlt != 0)
{
return;
}

if (___settings.horizontalAxis == 0)
{
__instance.leftButton.transform.GetChild(0).GetComponent<Text>().text = KeyBindScript_RefreshButtons.GetString(KeyCode.LeftArrow, ___settings);
__instance.rightButton.transform.GetChild(0).GetComponent<Text>().text = KeyBindScript_RefreshButtons.GetString(KeyCode.RightArrow, ___settings);
}
else
{
__instance.leftButton.transform.GetChild(0).GetComponent<Text>().text = GetString(___settings.horizontalAxis * -1, ___settings);
__instance.rightButton.transform.GetChild(0).GetComponent<Text>().text = GetString(___settings.horizontalAxis, ___settings);
}

if (___settings.verticalAxis == 0)
{
__instance.upButton.transform.GetChild(0).GetComponent<Text>().text = KeyBindScript_RefreshButtons.GetString(KeyCode.UpArrow, ___settings);
__instance.downButton.transform.GetChild(0).GetComponent<Text>().text = KeyBindScript_RefreshButtons.GetString(KeyCode.DownArrow, ___settings);
}
else
{
__instance.upButton.transform.GetChild(0).GetComponent<Text>().text = GetString(___settings.verticalAxis, ___settings);
__instance.downButton.transform.GetChild(0).GetComponent<Text>().text = GetString(___settings.verticalAxis * -1, ___settings);
}
}

public static string GetString(int axis, Settings settings)
{
var negative = axis < 0;
var strings = (List<string>)null;

if (settings.language == 0)
{
strings = AxisLocalization.strings;
}
else if (settings.language == 1)
{
strings = AxisLocalization.strings_French;
}
else if (settings.language == 2)
{
strings = AxisLocalization.strings_Italian;
}
else if (settings.language == 3)
{
strings = AxisLocalization.strings_Japanese;
}
else
{
strings = AxisLocalization.strings_Custom;
}

if (strings is null)
{
Console.WriteLine("KeyBindScript_DpadNames.GetString: localization strings not ready yet!");
}

if (axis < 0)
{
#pragma warning disable Harmony003 // Harmony non-ref patch parameters modified
axis = -axis;
#pragma warning restore Harmony003 // Harmony non-ref patch parameters modified
}

if (strings != null
&& (axis - 1) < strings.Count / 2)
{
return strings[((axis - 1) * 2) + (negative ? 0 : 1)];
}
else
{
return "Axis " + axis + " " + (negative ? "-" : "+");
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
using HarmonyLib;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;

namespace BepInEx5Plugins.Ash.Alisa.ControlsMenuLocalization.HarmonyPatches
{
[HarmonyPatch(typeof(KeyBindScript), "RefreshButtons")]
public class KeyBindScript_RefreshButtons
{
public static readonly Regex splitRegex = new Regex("([A-Z]+(?![a-z])|[A-Z][a-z]+|[0-9]+|[a-z]+)");

// Ensure settings is assigned to a valid value.
public static void Prefix(KeyBindScript __instance
, ref Settings ___settings
)
{
if (___settings is null)
{
Console.WriteLine("KeyBindScript_RefreshButtons.Prefix: settings is null! Auto fixing...");

___settings = ProgressManager.instance.GetComponent<Settings>();
}
}

// Apply custom localization to key buttons.
public static void Postfix(KeyBindScript __instance
, ref Settings ___settings
)
{
Console.WriteLine("KeyBindScript_RefreshButtons.Postfix: Localizing labels");

__instance.action.text = GetString(___settings.keys["Action"], ___settings);
__instance.cancel.text = GetString(___settings.keys["Cancel"], ___settings);
__instance.sprint.text = GetString(___settings.keys["Sprint"], ___settings);
__instance.switchWeapon.text = GetString(___settings.keys["SwitchWeapon"], ___settings);
__instance.aim.text = GetString(___settings.keys["Aim"], ___settings);
__instance.submit.text = GetString(___settings.keys["Submit"], ___settings);
__instance.select.text = GetString(___settings.keys["Select"], ___settings);
__instance.special.text = GetString(___settings.keys["Special"], ___settings);
__instance.reload.text = GetString(___settings.keys["Reload"], ___settings);
}

public static string GetString(KeyCode key, Settings settings)
{
var strings = (Dictionary<KeyCode, string>)null;

if (settings.language == 0)
{
strings = KeyCodeLocalization.strings;
}
else if (settings.language == 1)
{
strings = KeyCodeLocalization.strings_French;
}
else if (settings.language == 2)
{
strings = KeyCodeLocalization.strings_Italian;
}
else if (settings.language == 3)
{
strings = KeyCodeLocalization.strings_Japanese;
}
else
{
strings = KeyCodeLocalization.strings_Custom;
}

if (strings is null)
{
Console.WriteLine("KeyBindScript_RefreshButtons.GetString: localization strings not ready yet!");
}

if (strings != null
&& strings.ContainsKey(key))
{
return strings[key];
}
else
{
#pragma warning disable Harmony003 // Harmony non-ref patch parameters modified
var name = key.ToString();
#pragma warning restore Harmony003 // Harmony non-ref patch parameters modified

if (settings.xboxType)
{
name = name
.Replace("JoystickButton0", "ButtonA")
.Replace("JoystickButton1", "ButtonB")
.Replace("JoystickButton2", "ButtonX")
.Replace("JoystickButton3", "ButtonY")
.Replace("JoystickButton4", "ButtonLB")
.Replace("JoystickButton5", "ButtonRB")
.Replace("JoystickButton6", "ButtonBack")
.Replace("JoystickButton7", "ButtonStart")
.Replace("JoystickButton8", "ButtonLS")
.Replace("JoystickButton9", "ButtonRS")
;
}

name = name
.Replace("Alpha", "")
.Replace("Joystick", "")
;

return string.Join(" ", splitRegex.Split(name));
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using HarmonyLib;
using System;

namespace BepInEx5Plugins.Ash.Alisa.ControlsMenuLocalization.HarmonyPatches
{
[HarmonyPatch(typeof(KeyBindScript), "ResetToDefault")]
public class KeyBindScript_ResetToDefault
{
// Refresh localization.
public static void Postfix(KeyBindScript __instance)
{
Console.WriteLine("KeyBindScript_ResetToDefault.Postfix: Refreshing buttons");

__instance.RefreshButtons();
}
}
}
Loading