Skip to content

Commit 7ea654a

Browse files
authored
[Autosave] Add localtex API support, update packages (#372)
1 parent dc212d9 commit 7ea654a

File tree

10 files changed

+83
-21
lines changed

10 files changed

+83
-21
lines changed

src/Autosave.AI/AI.Autosave.csproj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
</PropertyGroup>
1515
<ItemGroup>
1616
<PackageReference Include="BepInEx.Analyzers" Version="1.0.4" />
17-
<PackageReference Include="ExtensibleSaveFormat.AIGirl" Version="19.3.3" />
1817
<PackageReference Include="IllusionLibs.AIGirl.Assembly-CSharp" Version="2020.5.29.5" />
1918
<PackageReference Include="IllusionLibs.AIGirl.Assembly-CSharp-firstpass" Version="2020.5.29.5" />
2019
<PackageReference Include="IllusionLibs.AIGirl.Cinemachine" Version="2018.2.21.4" />
@@ -29,8 +28,7 @@
2928
<PackageReference Include="IllusionLibs.BepInEx" Version="5.4.22" />
3029
<PackageReference Include="IllusionLibs.BepInEx.Harmony" Version="2.9.0" />
3130
<PackageReference Include="IllusionLibs.BepInEx.MonoMod" Version="22.1.29.1" />
32-
<PackageReference Include="IllusionModdingAPI.AIAPI" Version="1.38.0" />
33-
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.21.0" />
31+
<PackageReference Include="IllusionModdingAPI.AIAPI" Version="1.44.0" />
3432
</ItemGroup>
3533
<Import Project="..\Autosave.Core\Autosave.Core.projitems" Label="Shared" />
3634
<Import Project="..\Shared\Shared.projitems" Label="Shared" />

src/Autosave.Core/Autosave.cs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
using KKAPI;
2424
using KKAPI.Maker;
2525
using ExtensibleSaveFormat;
26+
#if !EC
27+
using KKAPI.Studio;
28+
#endif
2629
#endif
2730
#if PC || SBPR
2831
// Too old Unity version, fall back to WaitForSeconds since it doesn't cause any major issues in these games
@@ -73,6 +76,17 @@ public class Autosave : BaseUnityPlugin
7376
public static ConfigEntry<int> AutosaveCountdown { get; private set; }
7477
public static ConfigEntry<bool> PauseInBackground { get; private set; }
7578
public static ConfigEntry<int> AutosaveFileLimit { get; private set; }
79+
#if !HS && !PC && !SBPR
80+
public static ConfigEntry<string> CharaTexSaveTypeAutosaveOverride { get; private set; }
81+
#if !EC
82+
public static ConfigEntry<string> SceneTexSaveTypeAutosaveOverride { get; private set; }
83+
84+
private static SceneTextureSaveType sceneTexSaveTypeBuffered = SceneTextureSaveType.Bundled;
85+
#endif
86+
private static CharaTextureSaveType charaTexSaveTypeBuffered = CharaTextureSaveType.Bundled;
87+
88+
public const string NoOverride = "No Override";
89+
#endif
7690

7791
private void Start()
7892
{
@@ -84,6 +98,12 @@ private void Start()
8498
AutosaveCountdown = Config.Bind("Config", "Autosave Countdown", 10, new ConfigDescription("Seconds of countdown before autosaving", new AcceptableValueRange<int>(0, 60), new ConfigurationManagerAttributes { Order = 9 }));
8599
PauseInBackground = Config.Bind("Config", "Pause In Background", true, new ConfigDescription("Do not count down when the game is not focused", null, new ConfigurationManagerAttributes { Order = 8 }));
86100
AutosaveFileLimit = Config.Bind("Config", "Autosave File Limit", 10, new ConfigDescription("Number of autosaves to keep, older ones will be deleted", new AcceptableValueRange<int>(0, 100), new ConfigurationManagerAttributes { Order = 7, ShowRangeAsPercent = false }));
101+
#if !PC && !HS && !SBPR
102+
CharaTexSaveTypeAutosaveOverride = Config.Bind("Texture Save Type", "Chara Autosave Type Override", NoOverride, new ConfigDescription($"Save type override for autosaves in Maker. Set to \"{NoOverride}\" to use the KKAPI setting.", AutoSaveTypeOptions(false), new ConfigurationManagerAttributes { Order = 6, IsAdvanced = true }));
103+
#if !EC
104+
SceneTexSaveTypeAutosaveOverride = Config.Bind("Texture Save Type", "Scene Autosave Type Override", NoOverride, new ConfigDescription($"Save type override for autosaves in Studio. Set to \"{NoOverride}\" to use the KKAPI setting.", AutoSaveTypeOptions(true), new ConfigurationManagerAttributes { Order = 4, IsAdvanced = true }));
105+
#endif
106+
#endif
87107

88108
#if PC || HS || SBPR
89109
Hooks.ApplyHooks(PluginGUID);
@@ -221,16 +241,57 @@ private IEnumerator AutosaveCoroutine()
221241
}
222242

223243
Autosaving = true;
244+
TodoBeforeSave();
224245
MakeSave();
225246
DeleteAutosaves();
226247
SetText("Saved!");
248+
TodoAfterSave();
227249
Autosaving = false;
228250

229251
yield return new WaitForSecondsRealtime(2);
230252
SetText("");
231253
}
232254
}
233255

256+
private static void TodoBeforeSave()
257+
{
258+
#if !HS && !PC && !SBPR
259+
#if !EC
260+
if (StudioAPI.InsideStudio)
261+
{
262+
sceneTexSaveTypeBuffered = SceneLocalTextures.SaveType;
263+
if (SceneTexSaveTypeAutosaveOverride.Value != NoOverride)
264+
SceneLocalTextures.SaveType = EnumParser<SceneTextureSaveType>(SceneTexSaveTypeAutosaveOverride.Value);
265+
}
266+
#endif
267+
if (MakerAPI.InsideMaker)
268+
{
269+
charaTexSaveTypeBuffered = CharaLocalTextures.SaveType;
270+
if (CharaTexSaveTypeAutosaveOverride.Value != NoOverride)
271+
CharaLocalTextures.SaveType = EnumParser<CharaTextureSaveType>(CharaTexSaveTypeAutosaveOverride.Value);
272+
}
273+
#endif
274+
}
275+
276+
private static void TodoAfterSave()
277+
{
278+
#if !HS && !PC && !SBPR
279+
#if !EC
280+
if (StudioAPI.InsideStudio)
281+
SceneLocalTextures.SaveType = sceneTexSaveTypeBuffered;
282+
#endif
283+
if (MakerAPI.InsideMaker)
284+
CharaLocalTextures.SaveType = charaTexSaveTypeBuffered;
285+
#endif
286+
}
287+
288+
#if !HS && !PC && !SBPR
289+
private static T EnumParser<T>(string _val)
290+
{
291+
return (T)Enum.Parse(typeof(T), _val.Split(' ').Join((x) => x, ""), true);
292+
}
293+
#endif
294+
234295
private static bool MakerIsAlive()
235296
{
236297
#if PC || HS || SBPR
@@ -395,6 +456,22 @@ private static void SetText(string text)
395456
AutosaveText.text = text;
396457
}
397458

459+
#if !HS && !PC && !SBPR
460+
internal static AcceptableValueBase AutoSaveTypeOptions(bool forStudio)
461+
{
462+
var options = new List<string> { NoOverride };
463+
if (forStudio)
464+
{
465+
#if !EC
466+
options.AddRange(((SceneTextureSaveType[])Enum.GetValues(typeof(SceneTextureSaveType))).Select(x => x.ToString()));
467+
#endif
468+
}
469+
else
470+
options.AddRange(((CharaTextureSaveType[])Enum.GetValues(typeof(CharaTextureSaveType))).Select(x => x.ToString()));
471+
return new AcceptableValueList<string>(options.ToArray());
472+
}
473+
#endif
474+
398475
#if PC || HS || SBPR
399476
private static class Hooks
400477
{

src/Autosave.EC/EC.Autosave.csproj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
</PropertyGroup>
1515
<ItemGroup>
1616
<PackageReference Include="BepInEx.Analyzers" Version="1.0.4" />
17-
<PackageReference Include="ExtensibleSaveFormat.EmotionCreators" Version="19.3.3" />
1817
<PackageReference Include="IllusionLibs.BepInEx" Version="5.4.22" />
1918
<PackageReference Include="IllusionLibs.BepInEx.Harmony" Version="2.9.0" />
2019
<PackageReference Include="IllusionLibs.BepInEx.MonoMod" Version="22.1.29.1" />
@@ -27,8 +26,7 @@
2726
<PackageReference Include="IllusionLibs.EmotionCreators.UnityEngine.TextRenderingModule" Version="2017.4.24.4" />
2827
<PackageReference Include="IllusionLibs.EmotionCreators.UnityEngine.UI" Version="2017.4.24.4" />
2928
<PackageReference Include="IllusionLibs.EmotionCreators.UnityEngine.UIModule" Version="2017.4.24.4" />
30-
<PackageReference Include="IllusionModdingAPI.ECAPI" Version="1.38.0" />
31-
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.21.0" />
29+
<PackageReference Include="IllusionModdingAPI.ECAPI" Version="1.44.0" />
3230
</ItemGroup>
3331
<Import Project="..\Autosave.Core\Autosave.Core.projitems" Label="Shared" />
3432
<Import Project="..\Shared\Shared.projitems" Label="Shared" />

src/Autosave.HS/HS.Autosave.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
<PackageReference Include="IllusionLibs.HoneySelect.Assembly-CSharp" Version="2017.6.30.2" />
2020
<PackageReference Include="IllusionLibs.HoneySelect.UnityEngine" Version="5.3.5.2" />
2121
<PackageReference Include="IllusionLibs.HoneySelect.UnityEngine.UI" Version="5.3.5.2" />
22-
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.21.0" />
2322
</ItemGroup>
2423
<Import Project="..\Autosave.Core\Autosave.Core.projitems" Label="Shared" />
2524
<Import Project="..\Shared\Shared.projitems" Label="Shared" />

src/Autosave.HS2/HS2.Autosave.csproj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
</PropertyGroup>
1515
<ItemGroup>
1616
<PackageReference Include="BepInEx.Analyzers" Version="1.0.4" />
17-
<PackageReference Include="ExtensibleSaveFormat.HoneySelect2" Version="19.3.3" />
1817
<PackageReference Include="IllusionLibs.BepInEx" Version="5.4.22" />
1918
<PackageReference Include="IllusionLibs.BepInEx.Harmony" Version="2.9.0" />
2019
<PackageReference Include="IllusionLibs.BepInEx.MonoMod" Version="22.1.29.1" />
@@ -29,8 +28,7 @@
2928
<PackageReference Include="IllusionLibs.HoneySelect2.UnityEngine.TextRenderingModule" Version="2018.4.11.4" />
3029
<PackageReference Include="IllusionLibs.HoneySelect2.UnityEngine.UI" Version="2018.4.11.4" />
3130
<PackageReference Include="IllusionLibs.HoneySelect2.UnityEngine.UIModule" Version="2018.4.11.4" />
32-
<PackageReference Include="IllusionModdingAPI.HS2API" Version="1.38.0" />
33-
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.21.0" />
31+
<PackageReference Include="IllusionModdingAPI.HS2API" Version="1.44.0" />
3432
</ItemGroup>
3533
<Import Project="..\Autosave.Core\Autosave.Core.projitems" Label="Shared" />
3634
<Import Project="..\Shared\Shared.projitems" Label="Shared" />

src/Autosave.KK/KK.Autosave.csproj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,15 @@
1414
</PropertyGroup>
1515
<ItemGroup>
1616
<PackageReference Include="BepInEx.Analyzers" Version="1.0.4" />
17-
<PackageReference Include="ExtensibleSaveFormat.Koikatu" Version="19.3.3" />
1817
<PackageReference Include="IllusionLibs.BepInEx" Version="5.4.22" />
1918
<PackageReference Include="IllusionLibs.BepInEx.Harmony" Version="2.9.0" />
2019
<PackageReference Include="IllusionLibs.BepInEx.MonoMod" Version="22.1.29.1" />
2120
<PackageReference Include="IllusionLibs.Koikatu.Assembly-CSharp" Version="2019.4.27.4" />
2221
<PackageReference Include="IllusionLibs.Koikatu.Assembly-CSharp-firstpass" Version="2019.4.27.4" />
2322
<PackageReference Include="IllusionLibs.Koikatu.UnityEngine" Version="5.6.2.4" />
2423
<PackageReference Include="IllusionLibs.Koikatu.UnityEngine.UI" Version="5.6.2.4" />
25-
<PackageReference Include="IllusionModdingAPI.KKAPI" Version="1.38.0" />
24+
<PackageReference Include="IllusionModdingAPI.KKAPI" Version="1.44.0" />
2625
<PackageReference Include="KoikatuCompatibilityAnalyzer" Version="1.1.0" />
27-
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.21.0" />
2826
</ItemGroup>
2927
<Import Project="..\Autosave.Core\Autosave.Core.projitems" Label="Shared" />
3028
<Import Project="..\Shared\Shared.projitems" Label="Shared" />

src/Autosave.KKS/KKS.Autosave.csproj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
</PropertyGroup>
1414
<ItemGroup>
1515
<PackageReference Include="BepInEx.Analyzers" Version="1.0.4" />
16-
<PackageReference Include="ExtensibleSaveFormat.KoikatsuSunshine" Version="19.3.3" />
1716
<PackageReference Include="IllusionLibs.BepInEx" Version="5.4.22" />
1817
<PackageReference Include="IllusionLibs.BepInEx.Harmony" Version="2.9.0" />
1918
<PackageReference Include="IllusionLibs.BepInEx.MonoMod" Version="22.1.29.1" />
@@ -33,8 +32,7 @@
3332
<PackageReference Include="IllusionLibs.KoikatsuSunshine.UnityEngine.UI" Version="2019.4.9" />
3433
<PackageReference Include="IllusionLibs.KoikatsuSunshine.UnityEngine.UIModule" Version="2019.4.9" />
3534
<PackageReference Include="IllusionLibs.XUnity.AutoTranslator.Plugin.Core" Version="4.18.0" />
36-
<PackageReference Include="IllusionModdingAPI.KKSAPI" Version="1.38.0" />
37-
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.21.0" />
35+
<PackageReference Include="IllusionModdingAPI.KKSAPI" Version="1.44.0" />
3836
</ItemGroup>
3937
<Import Project="..\Autosave.Core\Autosave.Core.projitems" Label="Shared" />
4038
<Import Project="..\Shared\Shared.projitems" Label="Shared" />

src/Autosave.PC/PC.Autosave.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
<PackageReference Include="BepInEx.Analyzers" Version="1.0.4" />
3232
<PackageReference Include="IllusionLibs.BepInEx" Version="5.4.22" />
3333
<PackageReference Include="IllusionLibs.BepInEx.Harmony" Version="2.9.0" />
34-
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.21.0" />
3534
</ItemGroup>
3635
<Import Project="..\Autosave.Core\Autosave.Core.projitems" Label="Shared" />
3736
<Import Project="..\Shared\Shared.projitems" Label="Shared" />

src/Autosave.PH/PH.Autosave.csproj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,12 @@
1414
</PropertyGroup>
1515
<ItemGroup>
1616
<PackageReference Include="BepInEx.Analyzers" Version="1.0.4" />
17-
<PackageReference Include="ExtensibleSaveFormat.PlayHome" Version="21.0.0" />
1817
<PackageReference Include="IllusionLibs.BepInEx" Version="5.4.22" />
1918
<PackageReference Include="IllusionLibs.BepInEx.Harmony" Version="2.9.0" />
2019
<PackageReference Include="IllusionLibs.PlayHome.Assembly-CSharp" Version="2018.3.11.4" />
2120
<PackageReference Include="IllusionLibs.PlayHome.UnityEngine" Version="5.5.5.4" />
2221
<PackageReference Include="IllusionLibs.PlayHome.UnityEngine.UI" Version="5.5.5.4" />
23-
<PackageReference Include="IllusionModdingAPI.PHAPI" Version="1.15.1" />
24-
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.21.0" />
22+
<PackageReference Include="IllusionModdingAPI.PHAPI" Version="1.44.0" />
2523
</ItemGroup>
2624
<Import Project="..\Autosave.Core\Autosave.Core.projitems" Label="Shared" />
2725
<Import Project="..\Shared\Shared.projitems" Label="Shared" />

src/Autosave.SBPR/SBPR.Autosave.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
<PackageReference Include="BepInEx.Analyzers" Version="1.0.4" />
3636
<PackageReference Include="IllusionLibs.BepInEx" Version="5.4.22" />
3737
<PackageReference Include="IllusionLibs.BepInEx.Harmony" Version="2.9.0" />
38-
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.21.0" />
3938
</ItemGroup>
4039
<Import Project="..\Autosave.Core\Autosave.Core.projitems" Label="Shared" />
4140
<Import Project="..\Shared\Shared.projitems" Label="Shared" />

0 commit comments

Comments
 (0)