From feebcdeae336ec35497a9ed0bc685dcc31656aaf Mon Sep 17 00:00:00 2001
From: ManlyMarco <39247311+ManlyMarco@users.noreply.github.com>
Date: Wed, 9 Nov 2022 20:29:17 +0100
Subject: [PATCH] TitleShortcuts - Add KoikatuSunshine version
---
KeelPlugins.sln | 12 ++-
.../TitleShortcuts.KoikatuSunshine.csproj | 16 +++
.../TitleShortcuts.cs | 97 +++++++++++++++++++
3 files changed, 124 insertions(+), 1 deletion(-)
create mode 100644 src/TitleShortcuts.KoikatuSunshine/TitleShortcuts.KoikatuSunshine.csproj
create mode 100644 src/TitleShortcuts.KoikatuSunshine/TitleShortcuts.cs
diff --git a/KeelPlugins.sln b/KeelPlugins.sln
index 52b45c4..4acfbf8 100644
--- a/KeelPlugins.sln
+++ b/KeelPlugins.sln
@@ -221,6 +221,8 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "FreeHDefaults.Core", "src\F
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TitleShortcuts.HoneySelect2", "src\TitleShortcuts.HoneySelect2\TitleShortcuts.HoneySelect2.csproj", "{CA3C684F-A778-4C76-8CA2-DFB93A8CAC13}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TitleShortcuts.KoikatuSunshine", "src\TitleShortcuts.KoikatuSunshine\TitleShortcuts.KoikatuSunshine.csproj", "{74EA67FD-3A71-4043-ABD5-B8907D70938C}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -397,6 +399,10 @@ Global
{CA3C684F-A778-4C76-8CA2-DFB93A8CAC13}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA3C684F-A778-4C76-8CA2-DFB93A8CAC13}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA3C684F-A778-4C76-8CA2-DFB93A8CAC13}.Release|Any CPU.Build.0 = Release|Any CPU
+ {74EA67FD-3A71-4043-ABD5-B8907D70938C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {74EA67FD-3A71-4043-ABD5-B8907D70938C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {74EA67FD-3A71-4043-ABD5-B8907D70938C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {74EA67FD-3A71-4043-ABD5-B8907D70938C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -494,6 +500,7 @@ Global
{A7AFC683-C17F-4B97-8127-122BAD10FBE8} = {A541BB96-39B7-44C7-98A1-C934EFBD52AE}
{D77A4720-B234-4A59-B7EF-7F9ABEA81CD3} = {A541BB96-39B7-44C7-98A1-C934EFBD52AE}
{CA3C684F-A778-4C76-8CA2-DFB93A8CAC13} = {E462D3D8-0715-45C9-869C-F1FA8CD2F5CD}
+ {74EA67FD-3A71-4043-ABD5-B8907D70938C} = {E462D3D8-0715-45C9-869C-F1FA8CD2F5CD}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CECC9C6B-8041-49A1-B7FD-DC89264B7393}
@@ -509,7 +516,7 @@ Global
src\Common.Unity\Common.Unity.projitems*{0d28ab7e-cc4c-4ec5-b322-876641d7426b}*SharedItemsImports = 4
src\DefaultParamEditor.Core\DefaultParamEditor.Core.projitems*{0d28ab7e-cc4c-4ec5-b322-876641d7426b}*SharedItemsImports = 4
src\Common.Core\Common.Core.projitems*{0dfa53ab-37b6-4aca-b5d2-4441f62cc15a}*SharedItemsImports = 5
- src\Common.Koikatu\Common.Koikatu.projitems*{0dfa53ab-37b6-4aca-b5d2-4441f62cc15a}*SharedItemsImports = 5
+ src\Common.KoikatsuSunshine\Common.KoikatsuSunshine.projitems*{0dfa53ab-37b6-4aca-b5d2-4441f62cc15a}*SharedItemsImports = 5
src\RealPOV.Core.Koikatu\RealPOV.Core.Koikatu.projitems*{0dfa53ab-37b6-4aca-b5d2-4441f62cc15a}*SharedItemsImports = 5
src\RealPOV.Core\RealPOV.Core.projitems*{0dfa53ab-37b6-4aca-b5d2-4441f62cc15a}*SharedItemsImports = 5
src\Common.AISyoujyo\Common.AISyoujyo.projitems*{0efad08f-d9a9-49a0-aaeb-a47e9b60fb91}*SharedItemsImports = 4
@@ -577,6 +584,9 @@ Global
src\Common.Core\Common.Core.projitems*{736f80a7-88a4-4508-b6c7-b36fdd175ae4}*SharedItemsImports = 4
src\Common.HoneySelect2\Common.HoneySelect2.projitems*{736f80a7-88a4-4508-b6c7-b36fdd175ae4}*SharedItemsImports = 4
src\DefaultStudioScene.Core\DefaultStudioScene.Core.projitems*{736f80a7-88a4-4508-b6c7-b36fdd175ae4}*SharedItemsImports = 4
+ src\Common.Core\Common.Core.projitems*{74ea67fd-3a71-4043-abd5-b8907d70938c}*SharedItemsImports = 5
+ src\Common.KoikatsuSunshine\Common.KoikatsuSunshine.projitems*{74ea67fd-3a71-4043-abd5-b8907d70938c}*SharedItemsImports = 5
+ src\TitleShortcuts.Core\TitleShortcuts.Core.projitems*{74ea67fd-3a71-4043-abd5-b8907d70938c}*SharedItemsImports = 5
src\UIUtility\UIUtility.projitems*{7f30866a-1b8b-40f1-8960-0e203eede225}*SharedItemsImports = 13
src\Common.Core\Common.Core.projitems*{805950cd-b415-4a41-97e2-7bce459c08a0}*SharedItemsImports = 5
src\Common.Koikatu\Common.Koikatu.projitems*{805950cd-b415-4a41-97e2-7bce459c08a0}*SharedItemsImports = 5
diff --git a/src/TitleShortcuts.KoikatuSunshine/TitleShortcuts.KoikatuSunshine.csproj b/src/TitleShortcuts.KoikatuSunshine/TitleShortcuts.KoikatuSunshine.csproj
new file mode 100644
index 0000000..6aa945a
--- /dev/null
+++ b/src/TitleShortcuts.KoikatuSunshine/TitleShortcuts.KoikatuSunshine.csproj
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/TitleShortcuts.KoikatuSunshine/TitleShortcuts.cs b/src/TitleShortcuts.KoikatuSunshine/TitleShortcuts.cs
new file mode 100644
index 0000000..5326750
--- /dev/null
+++ b/src/TitleShortcuts.KoikatuSunshine/TitleShortcuts.cs
@@ -0,0 +1,97 @@
+using System;
+using BepInEx;
+using BepInEx.Configuration;
+using HarmonyLib;
+using KeelPlugins.Koikatu;
+using System.Collections;
+using TitleShortcuts.Core;
+using UnityEngine;
+
+[assembly: System.Reflection.AssemblyFileVersion(TitleShortcuts.KoikatuSunshine.TitleShortcuts.Version)]
+
+namespace TitleShortcuts.KoikatuSunshine
+{
+ [BepInProcess(Constants.MainGameProcessName)]
+ //[BepInProcess(Constants.MainGameProcessNameSteam)]
+ [BepInPlugin(GUID, PluginName, Version)]
+ public class TitleShortcuts : TitleShortcutsCore
+ {
+ public const string Version = "1.3.0." + BuildNumber.Version;
+
+ private static ConfigEntry StartFemaleMaker { get; set; }
+ private static ConfigEntry StartMaleMaker { get; set; }
+ private static ConfigEntry StartUploader { get; set; }
+ private static ConfigEntry StartDownloader { get; set; }
+ private static ConfigEntry StartFreeH { get; set; }
+ private static ConfigEntry StartGameLoad { get; set; }
+
+ protected override void Awake()
+ {
+ base.Awake();
+
+ StartFemaleMaker = Config.Bind(SECTION_HOTKEYS, "Open female maker", new KeyboardShortcut(KeyCode.F));
+ StartMaleMaker = Config.Bind(SECTION_HOTKEYS, "Open male maker", new KeyboardShortcut(KeyCode.M));
+ StartUploader = Config.Bind(SECTION_HOTKEYS, "Open uploader", new KeyboardShortcut(KeyCode.U));
+ StartDownloader = Config.Bind(SECTION_HOTKEYS, "Open downloader", new KeyboardShortcut(KeyCode.D));
+ StartFreeH = Config.Bind(SECTION_HOTKEYS, "Start free H", new KeyboardShortcut(KeyCode.H));
+ StartGameLoad = Config.Bind(SECTION_HOTKEYS, "Open Load Game screen", new KeyboardShortcut(KeyCode.G));
+
+ Harmony.CreateAndPatchAll(GetType());
+ }
+
+ [HarmonyPrefix, HarmonyPatch(typeof(TitleScene), nameof(TitleScene.Start))]
+ private static void TitleStart(TitleScene __instance)
+ {
+ Plugin.StartCoroutine(TitleInput(__instance));
+ }
+
+ private static IEnumerator TitleInput(TitleScene titleScene)
+ {
+ do
+ {
+ yield return null;
+
+ if(StartFemaleMaker.Value.IsDown()) StartMode(titleScene.OnCustomFemale, "Starting female maker");
+ else if(StartMaleMaker.Value.IsDown()) StartMode(titleScene.OnCustomMale, "Starting male maker");
+ else if(StartUploader.Value.IsDown()) StartMode(titleScene.OnUploader, "Starting uploader");
+ else if(StartDownloader.Value.IsDown()) StartMode(titleScene.OnDownloader, "Starting downloader");
+ else if(StartFreeH.Value.IsDown()) StartMode(titleScene.OnOtherFreeH, "Starting free H");
+ else if(StartGameLoad.Value.IsDown()) StartMode(titleScene.OnLoad, "Opening Load Game screen");
+ }
+ while(titleScene);
+
+ void StartMode(Action action, string msg)
+ {
+ if(titleScene && (!FindObjectOfType() || !ConfigScene.active))
+ {
+ Log.Message(msg);
+ action();
+ titleScene = null;
+ }
+ }
+ }
+
+ [HarmonyPostfix, HarmonyPatch(typeof(FreeHScene), nameof(FreeHScene.Start))]
+ private static void TitleStart(FreeHScene __instance, ref IEnumerator __result)
+ {
+ var origResult = __result;
+ __result = new object[]{origResult, HSceneInput(__instance)}.GetEnumerator();
+ }
+
+ private static IEnumerator HSceneInput(FreeHScene freeHScene)
+ {
+ for(int i = 0; i < 4; i++)
+ yield return null;
+
+ while(freeHScene != null)
+ {
+ if(StartFreeH.Value.IsDown())
+ {
+ freeHScene.enterButton.onClick.Invoke();
+ freeHScene = null;
+ }
+ yield return null;
+ }
+ }
+ }
+}