Skip to content

Commit 035390b

Browse files
Custom PC binding support
1 parent 9359907 commit 035390b

File tree

3 files changed

+94
-21
lines changed

3 files changed

+94
-21
lines changed

Menu/Main.cs

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
using UnityEngine.XR;
5858
using Valve.Newtonsoft.Json;
5959
using Valve.VR;
60+
using WebSocketSharp;
6061
using static iiMenu.Utilities.AssetUtilities;
6162
using static iiMenu.Utilities.FileUtilities;
6263
using static iiMenu.Utilities.RandomUtilities;
@@ -193,12 +194,25 @@ public static void OnLaunch()
193194
{
194195
Settings.LoadPreferences();
195196
}
196-
catch
197+
catch (Exception exc)
197198
{
199+
LogManager.LogError(
200+
$"Error with Settings.LoadPreferences() at {exc.StackTrace}: {exc.Message}");
201+
198202
CoroutineManager.instance.StartCoroutine(DelayLoadPreferences());
199203
}
200204
}
201205

206+
try
207+
{
208+
Settings.LoadPCControls();
209+
}
210+
catch (Exception exc)
211+
{
212+
LogManager.LogError(
213+
$"Error with Settings.LoadPCControls() at {exc.StackTrace}: {exc.Message}");
214+
}
215+
202216
if (new DirectoryInfo(Path.Combine(GetGamePath(), PluginInfo.ClientResourcePath)).CreationTime >= DateTime.Now.AddYears(1))
203217
AchievementManager.UnlockAchievement(new AchievementManager.Achievement
204218
{
@@ -217,19 +231,19 @@ public static void Prefix()
217231
#region Controls
218232
try
219233
{
220-
rightPrimary = ControllerInputPoller.instance.rightControllerPrimaryButton || UnityInput.Current.GetKey(KeyCode.E);
221-
rightSecondary = ControllerInputPoller.instance.rightControllerSecondaryButton || UnityInput.Current.GetKey(KeyCode.R);
222-
leftPrimary = ControllerInputPoller.instance.leftControllerPrimaryButton || UnityInput.Current.GetKey(KeyCode.F);
223-
leftSecondary = ControllerInputPoller.instance.leftControllerSecondaryButton || UnityInput.Current.GetKey(KeyCode.G);
224-
leftGrab = ControllerInputPoller.instance.leftGrab || UnityInput.Current.GetKey(KeyCode.LeftBracket);
225-
rightGrab = ControllerInputPoller.instance.rightGrab || UnityInput.Current.GetKey(KeyCode.RightBracket);
234+
rightPrimary = ControllerInputPoller.instance.rightControllerPrimaryButton || UnityInput.Current.GetKey(Settings.pcBindings[Settings.ControllerBinding.RightPrimaryButton]);
235+
rightSecondary = ControllerInputPoller.instance.rightControllerSecondaryButton || UnityInput.Current.GetKey(Settings.pcBindings[Settings.ControllerBinding.RightSecondaryButton]);
236+
leftPrimary = ControllerInputPoller.instance.leftControllerPrimaryButton || UnityInput.Current.GetKey(Settings.pcBindings[Settings.ControllerBinding.LeftPrimaryButton]);
237+
leftSecondary = ControllerInputPoller.instance.leftControllerSecondaryButton || UnityInput.Current.GetKey(Settings.pcBindings[Settings.ControllerBinding.LeftSecondaryButton]);
238+
leftGrab = ControllerInputPoller.instance.leftGrab || UnityInput.Current.GetKey(Settings.pcBindings[Settings.ControllerBinding.LeftGrip]);
239+
rightGrab = ControllerInputPoller.instance.rightGrab || UnityInput.Current.GetKey(Settings.pcBindings[Settings.ControllerBinding.RightGrip]);
226240
leftTrigger = ControllerInputPoller.TriggerFloat(XRNode.LeftHand);
227241
rightTrigger = ControllerInputPoller.TriggerFloat(XRNode.RightHand);
228242

229-
if (UnityInput.Current.GetKey(KeyCode.Minus))
243+
if (UnityInput.Current.GetKey(Settings.pcBindings[Settings.ControllerBinding.LeftTrigger]))
230244
leftTrigger = 1f;
231245

232-
if (UnityInput.Current.GetKey(KeyCode.Equals))
246+
if (UnityInput.Current.GetKey(Settings.pcBindings[Settings.ControllerBinding.RightTrigger]))
233247
rightTrigger = 1f;
234248

235249
if (IsSteam)
@@ -250,18 +264,20 @@ public static void Prefix()
250264
}
251265

252266
bool arrowKeysPressed = UnityInput.Current.GetKey(KeyCode.UpArrow) || UnityInput.Current.GetKey(KeyCode.DownArrow) || UnityInput.Current.GetKey(KeyCode.LeftArrow) || UnityInput.Current.GetKey(KeyCode.RightArrow);
267+
bool leftOverride = UnityInput.Current.GetKey(Settings.pcBindings[Settings.ControllerBinding.LeftOverride]);
268+
253269
if (arrowKeysPressed)
254270
{
255271
Vector2 direction = new Vector2((UnityInput.Current.GetKey(KeyCode.RightArrow) ? 1f : 0f) + (UnityInput.Current.GetKey(KeyCode.LeftArrow) ? -1f : 0f), (UnityInput.Current.GetKey(KeyCode.UpArrow) ? 1f : 0f) + (UnityInput.Current.GetKey(KeyCode.DownArrow) ? -1f : 0f));
256-
if (UnityInput.Current.GetKey(KeyCode.LeftAlt))
272+
if (leftOverride)
257273
rightJoystick = direction;
258274
else
259275
leftJoystick = direction;
260276
}
261277

262-
if (UnityInput.Current.GetKey(KeyCode.Return))
278+
if (UnityInput.Current.GetKey(Settings.pcBindings[Settings.ControllerBinding.JoystickClick]))
263279
{
264-
if (UnityInput.Current.GetKey(KeyCode.LeftAlt))
280+
if (leftOverride)
265281
rightJoystickClick = true;
266282
else
267283
leftJoystickClick = true;
@@ -290,14 +306,7 @@ public static void Prefix()
290306
}
291307
}
292308

293-
shouldBePC = UnityInput.Current.GetKey(KeyCode.E)
294-
|| UnityInput.Current.GetKey(KeyCode.R)
295-
|| UnityInput.Current.GetKey(KeyCode.F)
296-
|| UnityInput.Current.GetKey(KeyCode.G)
297-
|| UnityInput.Current.GetKey(KeyCode.LeftBracket)
298-
|| UnityInput.Current.GetKey(KeyCode.RightBracket)
299-
|| UnityInput.Current.GetKey(KeyCode.Minus)
300-
|| UnityInput.Current.GetKey(KeyCode.Equals)
309+
shouldBePC = Settings.pcBindings.Values.Any(key => UnityInput.Current.GetKey(key))
301310
|| Mouse.current.leftButton.isPressed
302311
|| Mouse.current.rightButton.isPressed
303312
|| arrowKeysPressed;

Mods/Settings.cs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6319,6 +6319,70 @@ public static void Panic()
63196319
}
63206320
}
63216321

6322+
public enum ControllerBinding
6323+
{
6324+
None,
6325+
LeftTrigger,
6326+
RightTrigger,
6327+
LeftGrip,
6328+
RightGrip,
6329+
LeftPrimaryButton,
6330+
RightPrimaryButton,
6331+
LeftSecondaryButton,
6332+
RightSecondaryButton,
6333+
JoystickClick,
6334+
LeftOverride
6335+
}
6336+
6337+
public static readonly Dictionary<ControllerBinding, KeyCode> pcBindings = new Dictionary<ControllerBinding, KeyCode>
6338+
{
6339+
{ ControllerBinding.RightPrimaryButton, KeyCode.E },
6340+
{ ControllerBinding.RightSecondaryButton, KeyCode.R },
6341+
{ ControllerBinding.LeftPrimaryButton, KeyCode.F },
6342+
{ ControllerBinding.LeftSecondaryButton, KeyCode.G },
6343+
{ ControllerBinding.LeftGrip, KeyCode.LeftBracket },
6344+
{ ControllerBinding.RightGrip, KeyCode.RightBracket },
6345+
{ ControllerBinding.LeftTrigger, KeyCode.Minus },
6346+
{ ControllerBinding.LeftTrigger, KeyCode.Equals },
6347+
{ ControllerBinding.JoystickClick, KeyCode.Return },
6348+
{ ControllerBinding.LeftOverride, KeyCode.LeftAlt }
6349+
};
6350+
6351+
public static void LoadPCControls()
6352+
{
6353+
string fileName = $"{PluginInfo.BaseDirectory}/iiMenu_PCControls.txt";
6354+
6355+
if (File.Exists(fileName))
6356+
{
6357+
string data = File.ReadAllText(fileName);
6358+
string[] lines = data.Split('\n');
6359+
pcBindings.Clear();
6360+
6361+
foreach (string line in lines)
6362+
{
6363+
string finalLine = line.Trim();
6364+
6365+
if (!finalLine.Contains(" - "))
6366+
continue;
6367+
6368+
string[] splitData = finalLine.Split(" - ");
6369+
6370+
if (Enum.TryParse(splitData[1], out ControllerBinding binding) && Enum.TryParse(splitData[0], out KeyCode key))
6371+
pcBindings[binding] = key;
6372+
}
6373+
}
6374+
else
6375+
{
6376+
var lines = new List<string>();
6377+
6378+
foreach (var pair in pcBindings)
6379+
lines.Add($"{pair.Value} - {pair.Key}");
6380+
6381+
File.WriteAllLines(fileName, lines);
6382+
}
6383+
}
6384+
6385+
63226386
public static void ChangeReconnectTime(bool positive = true)
63236387
{
63246388
if (positive)

PluginInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class PluginInfo
2626
public const string GUID = "org.iidk.gorillatag.iimenu";
2727
public const string Name = "ii's Stupid Menu";
2828
public const string Description = "Created by @crimsoncauldron with love <3";
29-
public const string BuildTimestamp = "2026-02-13T18:10:34Z";
29+
public const string BuildTimestamp = "2026-02-13T18:23:06Z";
3030
public const string Version = "8.2.4";
3131

3232
public const string BaseDirectory = "iisStupidMenu";

0 commit comments

Comments
 (0)