Skip to content

Commit

Permalink
Half done HLightControl code
Browse files Browse the repository at this point in the history
  • Loading branch information
Keelhauled committed May 24, 2021
1 parent 07232b5 commit 6616305
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 16 deletions.
49 changes: 33 additions & 16 deletions src/FreeHDefaults.Koikatu/FreeHDefaults.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
using Manager;
using UniRx;
using UnityEngine;
using UnityEngine.Events;

namespace FreeHDefaults.Koikatu
{
Expand All @@ -23,16 +22,18 @@ public class FreeHDefaults : BaseUnityPlugin
public const string GUID = "keelhauled.freehdefaults";
public const string Version = "1.0.0." + BuildNumber.Version;

private static List<CustomFileInfo> lastFileList;
private static Savedata saveData = new Savedata();
private Harmony harmony;
private static readonly string saveFilePath = Path.Combine(Paths.ConfigPath, "FreeHDefaults.xml");
private static readonly XmlSerializer xmlSerializer = new XmlSerializer(typeof(Savedata));
private static readonly int[] modeMagic = { 0, 1012, 1100, 3000, 4000 };
private static List<CustomFileInfo> lastFileList;
private static Savedata saveData = new Savedata();
private static bool firstRun;

private void Awake()
{
Log.SetLogSource(Logger);
Harmony.CreateAndPatchAll(typeof(FreeHDefaults));
harmony = Harmony.CreateAndPatchAll(typeof(FreeHDefaults));

if(File.Exists(saveFilePath))
{
Expand All @@ -41,27 +42,41 @@ private void Awake()
}
}

private void Start()
// private void Start()
// {
// var lightControlType = Type.GetType("KK_HLightControl.KK_HLightControl, KK_HLightControl");
// if(lightControlType != null)
// {
// harmony.Patch(AccessTools.Method(lightControlType, "btn_LockCamLight"),
// postfix: new HarmonyMethod(AccessTools.Method(typeof(FreeHDefaults), nameof(HookHLightControl))));
// }
// }

private static void HookHLightControl(List<ConfigEntry<bool>> ___btn, GameObject ___newParent, ref bool value)
{
var lightControlType = Type.GetType("KK_HLightControl.KK_HLightControl, KK_HLightControl");
if(lightControlType != null)
if(___btn[0].Value != value)
___btn[0].Value = value;

if(firstRun && value)
{
var lightTraverse = Traverse.Create(lightControlType);
var toggleInfo = lightTraverse.Field("toggleInfo").GetValue<IList>();
var clickEventField = Traverse.Create(toggleInfo[0]).Field("clickEvent");
var btn = lightTraverse.Field("btn").GetValue<List<ConfigEntry<bool>>>().First();

var clickEvent = clickEventField.GetValue<UnityAction<bool>>();
clickEvent += x => { if(btn.Value != x) btn.Value = x; };
clickEventField.SetValue(clickEvent);
firstRun = false;
___newParent.transform.eulerAngles = new Vector3(saveData.LightX, saveData.LightY);
}
else if(value)
{
var rot = ___newParent.transform.eulerAngles;
saveData.LightX = rot.x;
saveData.LightY = rot.y;
saveData.LightZ = rot.z;
SaveXml();
}
}

[HarmonyPostfix, HarmonyPatch(typeof(TitleScene), nameof(TitleScene.Start))]
private static void PrepareSavedata()
{
// vanilla code will load values from FreeHBackData when freeh chara select is started
var backData = Singleton<Scene>.Instance.commonSpace.GetOrAddComponent<FreeHBackData>();
var backData = Singleton<Scene>.Instance.commonSpace.AddComponent<FreeHBackData>();
backData.heroine = LoadChara(saveData.HeroinePath, x => backData.heroine = new SaveData.Heroine(x, false));
backData.partner = LoadChara(saveData.PartnerPath, x => backData.partner = new SaveData.Heroine(x, false));
backData.player = LoadChara(saveData.PlayerPath, x => backData.player = new SaveData.Player(x, false));
Expand All @@ -77,6 +92,8 @@ private static void PrepareSavedata()
[HarmonyPrefix, HarmonyPatch(typeof(FreeHScene), nameof(FreeHScene.NormalSetup))]
private static void HookFreeHProps(FreeHScene __instance)
{
firstRun = true;

var member = __instance.member;
member.resultHeroine.Where(x => x != null).Subscribe(x => SaveChara(x.charFile, y => saveData.HeroinePath = y));
member.resultPartner.Where(x => x != null).Subscribe(x => SaveChara(x.charFile, y => saveData.PartnerPath = y));
Expand Down
7 changes: 7 additions & 0 deletions src/FreeHDefaults.Koikatu/Savedata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,12 @@ public class Savedata

[XmlElement]
public float Fov = 23f;

[XmlElement]
public float LightX;
[XmlElement]
public float LightY;
[XmlElement]
public float LightZ;
}
}

0 comments on commit 6616305

Please sign in to comment.