Skip to content

Commit

Permalink
Removed bepinex and moved fully to TimberAPI
Browse files Browse the repository at this point in the history
  • Loading branch information
hytonhan committed Apr 22, 2023
1 parent d74c6a5 commit f371192
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 63 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ than you.

# Changelog

## v2.1.0 - 22.4.2023
- Removed all deps to BepInEx
- Config system now used TimberAPI configs
- Updated to work with game v0.4.1.1

## v2.0.0 - 23.9.2022
- Updated to work with TimberAPI v0.5
- Refactored code heavily
Expand Down
73 changes: 15 additions & 58 deletions WindPlugin/WindPlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,69 +8,25 @@
using TimberApi.ModSystem;
using TimberApi.ConsoleSystem;
using Timberborn.EntitySystem;
using UnityEngine;
using Timberborn.BaseComponentSystem;

namespace WindPlugin
{
/// <summary>
/// This class holds all the initial stuff to do in startup
/// </summary>
[BepInPlugin("hytone.plugins.windplugin", "WindPlugin", "2.0.0")]
//[BepInDependency("com.timberapi.timberapi")]
//[BepInProcess("Timberborn.exe")]
[HarmonyPatch]
public class WindPlugin : BaseUnityPlugin, IModEntrypoint
public class WindPlugin : IModEntrypoint
{
public static new BepInEx.Logging.ManualLogSource? Logger;
public static float MinRequiredWindmillWindStrength = 0.3f;
public static float MinRequiredLargeWindmillWindStrength = 0.2f;
public static WindPluginConfig Config;

private static float _minWindStrength = 0f;
private static float _maxWindStrength = 1f;
private static float _minWindTimeInHours = 5f;
private static float _maxWindTimeInHours = 12f;

/// <summary>
/// The entry point. Handle configs and registrations and such
/// </summary>
public void Entry(IMod mod, IConsoleWriter consoleWriter)
{
//Logger = base.Logger;
MinRequiredWindmillWindStrength = Config.Bind(
"WindMills",
"MinRequiredWindmillWindStrength",
0.3f,
"The minimum wind strength when a regular Windmill will generate power").Value;
MinRequiredLargeWindmillWindStrength = Config.Bind(
"WindMills",
"MinRequiredLargeWindmillWindStrength",
0.2f,
"The maximum wind strength when a Large Windmill will generate power").Value;
_minWindStrength = Config.Bind(
"Wind",
"MinWindStrength",
0f,
"The minimum wind strength on a scale of 0-1.").Value;
_maxWindStrength = Config.Bind(
"Wind",
"MaxWindStrength",
1f,
"The maximum wind strength on a scale of 0-1.").Value;
_minWindTimeInHours = Config.Bind(
"Wind",
"MinWindTimeInHours",
5f,
"The minimum time it takes for wind to change in hours.").Value;
_maxWindTimeInHours = Config.Bind(
"Wind",
"MaxWindTimeInHours",
12f,
"The maximum time it takes for wind to change in hours.").Value;

Config = mod.Configs.Get<WindPluginConfig>();
var harmony = new Harmony("hytone.plugins.windplugin");
harmony.PatchAll();

//DependencyRegistry.AddConfigurator(new WindPluginConfigurator());
consoleWriter.LogInfo("WindPlugin is loaded.");
}

Expand All @@ -84,30 +40,31 @@ public void Entry(IMod mod, IConsoleWriter consoleWriter)
static bool OverrideWindValues()
{
FieldInfo minWindStrengthField = typeof(WindService).GetField(nameof(WindService.MinWindStrength), BindingFlags.Static | BindingFlags.NonPublic);
minWindStrengthField.SetValue(null, _minWindStrength);
minWindStrengthField.SetValue(null, Config.MinWindStrength);
FieldInfo maxWindStrengthField = typeof(WindService).GetField(nameof(WindService.MaxWindStrength), BindingFlags.Static | BindingFlags.NonPublic);
maxWindStrengthField.SetValue(null, _maxWindStrength);
maxWindStrengthField.SetValue(null, Config.MaxWindStrength);
FieldInfo minWindTimeInHours = typeof(WindService).GetField(nameof(WindService.MinWindTimeInHours), BindingFlags.Static | BindingFlags.NonPublic);
minWindTimeInHours.SetValue(null, _minWindTimeInHours);
minWindTimeInHours.SetValue(null, Config.MinWindTimeInHours);
FieldInfo maxWindTimeInHours = typeof(WindService).GetField(nameof(WindService.MaxWindTimeInHours), BindingFlags.Static | BindingFlags.NonPublic);
maxWindTimeInHours.SetValue(null, _maxWindTimeInHours);
maxWindTimeInHours.SetValue(null, Config.MaxWindTimeInHours);
return false;
}

[HarmonyPatch(typeof(EntityService), "Instantiate", typeof(GameObject), typeof(Guid))]

[HarmonyPatch(typeof(EntityService), "Instantiate", typeof(BaseComponent), typeof(Guid))]
class MinWindStrengthPatch
{
public static void Postfix(GameObject __result)
public static void Postfix(BaseComponent __result)
{
if(__result.name.StartsWith("LargeWindmill"))
{
var gen = __result.GetComponent<WindPoweredGenerator>();
gen._minRequiredWindStrength = MinRequiredLargeWindmillWindStrength;
var gen = __result.GetComponentFast<WindPoweredGenerator>();
gen._minRequiredWindStrength = Config.MinRequiredLargeWindmillWindStrength;
}
else if(__result.name.StartsWith("Windmill"))
{
var gen = __result.GetComponent<WindPoweredGenerator>();
gen._minRequiredWindStrength = MinRequiredWindmillWindStrength;
var gen = __result.GetComponentFast<WindPoweredGenerator>();
gen._minRequiredWindStrength = Config.MinRequiredWindmillWindStrength;
}
}
}
Expand Down
3 changes: 1 addition & 2 deletions WindPlugin/WindPlugin.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="BepInEx.Core" Version="5.4.19" />
<PackageReference Include="TimberAPI" Version="0.5.0-beta" />
<PackageReference Include="TimberAPI" Version="0.5.4.2" />
</ItemGroup>

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
Expand Down
16 changes: 16 additions & 0 deletions WindPlugin/WindPluginConfig.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using TimberApi.ConfigSystem;

namespace WindPlugin
{
public class WindPluginConfig : IConfig
{
public string ConfigFileName => "WindChanger";

public float MinRequiredWindmillWindStrength = 0.3f;
public float MinRequiredLargeWindmillWindStrength = 0.2f;
public float MinWindStrength = 0f;
public float MaxWindStrength = 1f;
public float MinWindTimeInHours = 5f;
public float MaxWindTimeInHours = 12f;
}
}
Binary file added logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions package/WindChanger/plugins/mod.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"Name": "WindPlugin",
"Version": "2.0.0",
"Version": "2.1.0",
"UniqueId": "hytone.plugins.windplugin",
"MinimumApiVersion": "0.0.0",
"MinimumGameVersion": "0.2.8",
"MinimumApiVersion": "0.5.4",
"MinimumGameVersion": "0.4.1",
"EntryDll": "WindPlugin.dll"
}

0 comments on commit f371192

Please sign in to comment.