Add sunset hour offset
This commit is contained in:
@@ -6,6 +6,7 @@ using BepInEx;
|
|||||||
using BepInEx.Configuration;
|
using BepInEx.Configuration;
|
||||||
using Controllers;
|
using Controllers;
|
||||||
using Controllers.CharacterLogic;
|
using Controllers.CharacterLogic;
|
||||||
|
using Controllers.Time;
|
||||||
using Controllers.Weather;
|
using Controllers.Weather;
|
||||||
using GameCustomization;
|
using GameCustomization;
|
||||||
using Gameplay;
|
using Gameplay;
|
||||||
@@ -34,6 +35,9 @@ using Zenject;
|
|||||||
// AreaWork
|
// AreaWork
|
||||||
// Gameplay.Vehicles.Vehicle.Update() : void @060044A1
|
// Gameplay.Vehicles.Vehicle.Update() : void @060044A1
|
||||||
// System.Single Gameplay.Units.Movements.Movement::CalculateSpeed()
|
// System.Single Gameplay.Units.Movements.Movement::CalculateSpeed()
|
||||||
|
// GameConfig looks interesting
|
||||||
|
// See dayLengthInSeconds (defaults to 720 actually)
|
||||||
|
// System.Single Controllers.Time.TimeController::GetSunsetHour(System.Int32,System.Double,System.Double)
|
||||||
|
|
||||||
namespace InfectionFreeZone {
|
namespace InfectionFreeZone {
|
||||||
[BepInPlugin(pluginGuid, pluginName, pluginVersion)]
|
[BepInPlugin(pluginGuid, pluginName, pluginVersion)]
|
||||||
@@ -90,6 +94,7 @@ namespace InfectionFreeZone {
|
|||||||
public static ConfigEntry<float> childToAdultRatioInfluenceCeilingParam;
|
public static ConfigEntry<float> childToAdultRatioInfluenceCeilingParam;
|
||||||
|
|
||||||
public static ConfigEntry<float> rotationTimestepMultiplier;
|
public static ConfigEntry<float> rotationTimestepMultiplier;
|
||||||
|
public static ConfigEntry<float> sunsetHourOffset;
|
||||||
|
|
||||||
public void Awake() {
|
public void Awake() {
|
||||||
resourceMultiplierDebug = Config.Bind("General", "Resource Multiplier Debug", false);
|
resourceMultiplierDebug = Config.Bind("General", "Resource Multiplier Debug", false);
|
||||||
@@ -152,6 +157,7 @@ namespace InfectionFreeZone {
|
|||||||
Config.Bind("Birthing Config", "Child to Adult Ratio Influence Ceiling Param", 0f);
|
Config.Bind("Birthing Config", "Child to Adult Ratio Influence Ceiling Param", 0f);
|
||||||
|
|
||||||
rotationTimestepMultiplier = Config.Bind("General", "Rotation Timestep Multiplier", 1f);
|
rotationTimestepMultiplier = Config.Bind("General", "Rotation Timestep Multiplier", 1f);
|
||||||
|
sunsetHourOffset = Config.Bind("General", "Sunset Hour Offset", 0f);
|
||||||
|
|
||||||
Logger.LogInfo("Cyka mod loaded");
|
Logger.LogInfo("Cyka mod loaded");
|
||||||
HarmonyFileLog.Enabled = true;
|
HarmonyFileLog.Enabled = true;
|
||||||
@@ -459,8 +465,12 @@ namespace InfectionFreeZone {
|
|||||||
Console.WriteLine($"Opcode is {code.opcode}");
|
Console.WriteLine($"Opcode is {code.opcode}");
|
||||||
if (code.opcode == OpCodes.Ldc_R4 && Mathf.Approximately((float)code.operand, 100f)) {
|
if (code.opcode == OpCodes.Ldc_R4 && Mathf.Approximately((float)code.operand, 100f)) {
|
||||||
Console.WriteLine($"Operand is {code.operand}");
|
Console.WriteLine($"Operand is {code.operand}");
|
||||||
codes[i] = new CodeInstruction(OpCodes.Ldsfld, AccessTools.Field(typeof(Main), "rotationTimestepMultiplier"));
|
codes[i] = new CodeInstruction(OpCodes.Ldsfld,
|
||||||
codes.Insert(i+1, new CodeInstruction(OpCodes.Call, AccessTools.PropertyGetter(typeof(Main).GetField("rotationTimestepMultiplier").FieldType, "Value")));
|
AccessTools.Field(typeof(Main), "rotationTimestepMultiplier"));
|
||||||
|
codes.Insert(i + 1,
|
||||||
|
new CodeInstruction(OpCodes.Call,
|
||||||
|
AccessTools.PropertyGetter(typeof(Main).GetField("rotationTimestepMultiplier").FieldType,
|
||||||
|
"Value")));
|
||||||
Console.WriteLine($"Operand modified to {codes[i].operand}");
|
Console.WriteLine($"Operand modified to {codes[i].operand}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -477,13 +487,26 @@ namespace InfectionFreeZone {
|
|||||||
Console.WriteLine($"Opcode is {code.opcode}");
|
Console.WriteLine($"Opcode is {code.opcode}");
|
||||||
if (code.opcode == OpCodes.Ldc_R4 && Mathf.Approximately((float)code.operand, 100f)) {
|
if (code.opcode == OpCodes.Ldc_R4 && Mathf.Approximately((float)code.operand, 100f)) {
|
||||||
Console.WriteLine($"Operand is {code.operand}");
|
Console.WriteLine($"Operand is {code.operand}");
|
||||||
codes[i] = new CodeInstruction(OpCodes.Ldsfld, AccessTools.Field(typeof(Main), "rotationTimestepMultiplier"));
|
codes[i] = new CodeInstruction(OpCodes.Ldsfld,
|
||||||
codes.Insert(i+1, new CodeInstruction(OpCodes.Call, AccessTools.PropertyGetter(typeof(Main).GetField("rotationTimestepMultiplier").FieldType, "Value")));
|
AccessTools.Field(typeof(Main), "rotationTimestepMultiplier"));
|
||||||
|
codes.Insert(i + 1,
|
||||||
|
new CodeInstruction(OpCodes.Call,
|
||||||
|
AccessTools.PropertyGetter(typeof(Main).GetField("rotationTimestepMultiplier").FieldType,
|
||||||
|
"Value")));
|
||||||
Console.WriteLine($"Operand modified to {codes[i].operand}");
|
Console.WriteLine($"Operand modified to {codes[i].operand}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return codes.AsEnumerable();
|
return codes.AsEnumerable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HarmonyPostfix]
|
||||||
|
[HarmonyPatch(typeof(TimeController), "GetSunsetHour")]
|
||||||
|
public static void PostfixGetSunsetHour(ref float __result) {
|
||||||
|
if (Main.sunsetHourOffset.Value <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
__result += Main.sunsetHourOffset.Value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user