Skip to content

Commit

Permalink
Combine input lib and core
Browse files Browse the repository at this point in the history
  • Loading branch information
Kirefel committed Feb 10, 2024
1 parent 9d5b752 commit fa08fb4
Show file tree
Hide file tree
Showing 13 changed files with 55 additions and 111 deletions.
5 changes: 5 additions & 0 deletions OriModding.BF.ConfigMenu/Plugin.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using OriModding.BF.InputLib;
using OriModding.BF.UiLib.Menu;
using System;
using System.Collections.Generic;
Expand Down Expand Up @@ -51,6 +52,10 @@ private void Start()
var props = GetSliderProps(config);
screen.AddSlider(config as ConfigEntry<float>, config.Definition.Key, props.Min, props.Max, props.Step, config.Description.Description);
}
else if (config.SettingType == typeof(CustomInput))
{
screen.AddInputBind(config as ConfigEntry<CustomInput>);
}
else if (customControlCallbacks.ContainsKey(config.SettingType))
{
customControlCallbacks[config.SettingType](screen, config);
Expand Down
10 changes: 10 additions & 0 deletions OriModding.BF.Core/Helpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,14 @@ public static bool TryGetPlugin(this BaseUnityPlugin _, string guid, out BaseUni
plugin = default;
return false;
}

public static T GetPlugin<T>(this BaseUnityPlugin _, string guid) where T : BaseUnityPlugin
{
if (TryGetPlugin(_, guid, out var p))
{
return (T)p;
}

throw new System.Exception($"Plugin not found: {guid}");
}
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,76 +1,22 @@
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using OriModding.BF.Core;
using System;
using System.Collections.Generic;

namespace OriModding.BF.InputLib;

[BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)]
[BepInDependency(Core.PluginInfo.PLUGIN_GUID)]
[BepInDependency(ConfigMenu.PluginInfo.PLUGIN_GUID, BepInDependency.DependencyFlags.SoftDependency)]
public class Plugin : BaseUnityPlugin
public class InputManager
{
private readonly List<ConfigEntry<CustomInput>> customInputs = new List<ConfigEntry<CustomInput>>();

internal static new ManualLogSource Logger;

private void Awake()
{
Logger = base.Logger;

// Add converter so the config manager recognises the CustomInput format in the .cfg
TomlTypeConverter.AddConverter(typeof(CustomInput), new TypeConverter
{
ConvertToString = (obj, type) => ((CustomInput)obj).Serialise(),
ConvertToObject = (str, type) => CustomInput.FromString(str)
});

if (this.TryGetPlugin(ConfigMenu.PluginInfo.PLUGIN_GUID, out var configMenuPlugin))
{
var configMenu = configMenuPlugin as ConfigMenu.Plugin;
configMenu.AddConfigType<CustomInput>((screen, c) => screen.AddInputBind(c as ConfigEntry<CustomInput>));
}


AddDetours();

Logger.LogInfo($"Plugin {PluginInfo.PLUGIN_GUID} is loaded!");
}

public ConfigEntry<CustomInput> BindAndRegister(BaseUnityPlugin plugin, string section, string key, CustomInput defaultValue)
{
try
{
ConfigEntry<CustomInput> configEntry = plugin.Config.Bind(section, key, defaultValue);

RegisterCustomInput(configEntry);

return configEntry;
}
catch (Exception ex)
{
Logger.LogError(ex);
throw;
}
}

public void RegisterCustomInput(ConfigEntry<CustomInput> customInput)
{
if (!customInputs.Contains(customInput))
{
customInputs.Add(customInput);
}
}

private void AddDetours()
public InputManager()
{
On.PlayerInput.ClearControls += (orig, self) =>
{
orig(self);

Logger.LogInfo("Clearing");
Plugin.Logger.LogInfo("Clearing controls");
//foreach (var input in customInputs)
// input.Value.Clear();
};
Expand Down Expand Up @@ -105,4 +51,29 @@ private void AddDetours()
// AddDefaultControllerControls();
//};
}

public ConfigEntry<CustomInput> BindAndRegister(BaseUnityPlugin plugin, string section, string key, CustomInput defaultValue)
{
try
{
ConfigEntry<CustomInput> configEntry = plugin.Config.Bind(section, key, defaultValue);

RegisterCustomInput(configEntry);

return configEntry;
}
catch (Exception ex)
{
Plugin.Logger.LogError(ex);
throw;
}
}

public void RegisterCustomInput(ConfigEntry<CustomInput> customInput)
{
if (!customInputs.Contains(customInput))
{
customInputs.Add(customInput);
}
}
}
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Use this for custom controls.

```c#
// Plugin.Awake()
var inputLib = this.GetPlugin("OriModding.BF.InputLib");
var inputLib = this.GetPlugin<OriModding.BF.Core.Plugin>("OriModding.BF.Core").InputManager;
var input = inputLib.BindAndRegister(this, "MyPlugin", "MyCustomInput",
new CustomInput()
.AddKeyCodes(KeyCode.T)
Expand Down
14 changes: 11 additions & 3 deletions OriModding.BF.Core/Plugin.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using OriModding.BF.InputLib;
using OriModding.BF.l10n;
using OriModding.BF.UiLib;
using System;
using System.Collections.Generic;
using UnityEngine;

namespace OriModding.BF.Core;

Expand All @@ -15,16 +14,25 @@ public class Plugin : BaseUnityPlugin
public static new ManualLogSource Logger;

private LocalisationManager localisationManager;
public InputManager InputManager { get; private set; }

private void Awake()
{
Logger = base.Logger;

// Add converter so the config manager recognises the CustomInput format in the .cfg
TomlTypeConverter.AddConverter(typeof(CustomInput), new TypeConverter
{
ConvertToString = (obj, type) => ((CustomInput)obj).Serialise(),
ConvertToObject = (str, type) => CustomInput.FromString(str)
});

new Harmony(PluginInfo.PLUGIN_GUID).PatchAll();

TitleScreenModMenu.Init();

localisationManager = new LocalisationManager();
InputManager = new InputManager();

Logger.LogInfo($"Plugin {PluginInfo.PLUGIN_GUID} is loaded!");
}
Expand Down
44 changes: 0 additions & 44 deletions OriModding.BF.InputLib/OriModding.BF.InputLib.csproj

This file was deleted.

6 changes: 0 additions & 6 deletions OriModding.BF.sln
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OriModding.BF.Core", "OriMo
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OriModding.BF.ConfigMenu", "OriModding.BF.ConfigMenu\OriModding.BF.ConfigMenu.csproj", "{6315DC70-8E88-445D-A471-54A07BC9F296}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OriModding.BF.InputLib", "OriModding.BF.InputLib\OriModding.BF.InputLib.csproj", "{0895923A-E0AF-4CE7-B561-9590796E55BC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -29,10 +27,6 @@ Global
{6315DC70-8E88-445D-A471-54A07BC9F296}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6315DC70-8E88-445D-A471-54A07BC9F296}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6315DC70-8E88-445D-A471-54A07BC9F296}.Release|Any CPU.Build.0 = Release|Any CPU
{0895923A-E0AF-4CE7-B561-9590796E55BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0895923A-E0AF-4CE7-B561-9590796E55BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0895923A-E0AF-4CE7-B561-9590796E55BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0895923A-E0AF-4CE7-B561-9590796E55BC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down

0 comments on commit fa08fb4

Please sign in to comment.