Skip to content

Commit

Permalink
HigherZoom bug fix; need to defuse the zoom level for vanilla gnomori…
Browse files Browse the repository at this point in the history
…a to work with the save
  • Loading branch information
Nefaro committed Mar 9, 2022
1 parent e57e53f commit 707fc95
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 3 deletions.
22 changes: 22 additions & 0 deletions Gnoll Mods/HigherZoom/HigherZoom/ModMain.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,30 @@ public class ModMain : IGnollMod
public void OnLoad(HookManager hookManager)
{
hookManager.AfterGameLoaded += HookManager_AfterGameLoaded;
hookManager.BeforeInGameHudInit += HookManager_BeforeInGameHudInit;
hookManager.BeforeGameSaved += HookManager_BeforeGameSaved;
}

private void HookManager_BeforeGameSaved()
{
// We need to defuse the zoome level
// Just in case someone loads the game without the given mod

// Set it to a safe level
GnomanEmpire.Instance.Camera.int_0 = 1;
}

private void HookManager_BeforeInGameHudInit()
{
EnhanceZoomLevel();
}

private void HookManager_AfterGameLoaded()
{
EnhanceZoomLevel();
}

private void EnhanceZoomLevel()
{
// Reset the camera
GnomanEmpire.Instance.Camera.float_1 = new float[]
Expand Down
17 changes: 16 additions & 1 deletion GnollModLoader/GnollModLoader/GlobalPatcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public void PerformPatching()
Logger.Log("-- Applying patches ...");
this.ApplyPatch_GnomanEmpire_PlayGame();
this.ApplyPatch_GnomanEmpire_LoadGame();
this.ApplyPatch_GnomanEmpire_SaveGame();
this.ApplyPatch_GameSettings_ApplyDisplayChanges();
Logger.Log("-- Applying patches ... DONE");
}
Expand All @@ -41,6 +42,13 @@ private void ApplyPatch_GnomanEmpire_LoadGame()
this.ApplyPatchImpl(loadGame, postfixPatch: postfixPatch);
}

private void ApplyPatch_GnomanEmpire_SaveGame()
{
var saveGame = typeof(GnomanEmpire).GetMethod(nameof(GnomanEmpire.SaveGame));
var prefixPatch = typeof(Patch_GnomanEmpire_SaveGame).GetMethod(nameof(Patch_GnomanEmpire_SaveGame.Prefix));
this.ApplyPatchImpl(saveGame, prefixPatch: prefixPatch);
}

private void ApplyPatch_GameSettings_ApplyDisplayChanges()
{
var playGame = typeof(GameSettings).GetMethod(nameof(GameSettings.ApplyDisplayChanges));
Expand Down Expand Up @@ -91,8 +99,15 @@ internal class Patch_GnomanEmpire_LoadGame
{
public static void Postfix()
{
HookManager.HookLoadSaveGame_after();
HookManager.HookLoadGame_after();
}
}

internal class Patch_GnomanEmpire_SaveGame
{
public static void Prefix()
{
HookManager.HookSaveGame_before();
}
}
}
16 changes: 14 additions & 2 deletions GnollModLoader/GnollModLoader/HookManager.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using Game;
using GnollModLoader.GUI;

Expand Down Expand Up @@ -32,6 +33,8 @@ public class HookManager
public delegate void BeforeStartNewGameAfterReadDefsHandler(CreateWorldOptions worldOptions);
// Called after a savegame has been loaded
public delegate void AfterGameLoadedHandler();
// Called before a game is being saved
public delegate void BeforeGameSavedHandler();

private List<IGnollMod> _listOfMods;

Expand Down Expand Up @@ -159,14 +162,22 @@ public static void HookInGameHUDInit_before()
}
}

public static void HookLoadSaveGame_after()
public static void HookLoadGame_after()
{
if (instance.AfterGameLoaded != null)
{
instance.AfterGameLoaded();
}
}

internal static void HookSaveGame_before()
{
if (instance.BeforeGameSaved != null)
{
instance.BeforeGameSaved();
}
}

public event ExportMenuListInitHandler ExportMenuListInit;
public event InGameHUDInitHandler InGameHUDInit;
public event BeforeInGameHUDInitHandler BeforeInGameHudInit;
Expand All @@ -179,6 +190,7 @@ public static void HookLoadSaveGame_after()
public event BeforeStartNewGameHandler BeforeStartNewGame;
public event BeforeStartNewGameAfterReadDefsHandler BeforeStartNewGameAfterReadDefs;
public event AfterGameLoadedHandler AfterGameLoaded;
public event BeforeGameSavedHandler BeforeGameSaved;

private static HookManager instance;
}
Expand Down

0 comments on commit 707fc95

Please sign in to comment.