You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.3KB

  1. using System;
  2. using System.Reflection;
  3. using IllusionPlugin;
  4. //using GamecraftModdingAPI;
  5. namespace NScript
  6. {
  7. public class NScriptPlugin : IEnhancedPlugin
  8. {
  9. public override string Name { get; } = Assembly.GetExecutingAssembly().GetName().Name;
  10. public override string Version { get; } = Assembly.GetExecutingAssembly().GetName().Version.ToString();
  11. private string toggleButtonText = "Turn On";
  12. private HarmonyLib.Harmony instance;
  13. // called when Gamecraft shuts down
  14. public override void OnApplicationQuit()
  15. {
  16. // Shutdown this mod
  17. instance?.UnpatchAll(Assembly.GetExecutingAssembly().GetName().FullName);
  18. GamecraftModdingAPI.Utility.Logging.LogDebug($"{Name} has shutdown");
  19. // Shutdown the Gamecraft modding API last
  20. GamecraftModdingAPI.Main.Shutdown();
  21. }
  22. // called when Gamecraft starts up
  23. public override void OnApplicationStart()
  24. {
  25. // Initialize the Gamecraft modding API first
  26. GamecraftModdingAPI.Main.Init();
  27. // check out the modding API docs here: https://mod.exmods.org/
  28. instance = new HarmonyLib.Harmony(Assembly.GetExecutingAssembly().GetName().FullName);
  29. instance.PatchAll(Assembly.GetExecutingAssembly());
  30. // load external libraries
  31. try
  32. {
  33. string filmscriptVersion = Filmscript.GeneralBindings.Version();
  34. GamecraftModdingAPI.Utility.Logging.MetaLog($"filmscript.dll {filmscriptVersion}");
  35. }
  36. catch (DllNotFoundException e)
  37. {
  38. GamecraftModdingAPI.Utility.Logging.MetaLog($"Failed to find filmscript DLL: {e.Message} ({e.TypeName} | {e.Source})");
  39. }
  40. // Initialize this mod
  41. GamecraftModdingAPI.Utility.GameEngineManager.AddGameEngine(new CameraEngine());
  42. GamecraftModdingAPI.Utility.Logging.MetaLog($"{Name} has started up");
  43. }
  44. public override void OnGUI()
  45. {
  46. // toggle custom camera mode
  47. if (UnityEngine.GUILayout.Button(toggleButtonText))
  48. {
  49. // toggle button text indicates what the button will do *next* time it's pressed
  50. if (CameraPatch.AllowDefaultBehaviour)
  51. {
  52. toggleButtonText = "Turn Off"; // custom camera mode is turning on
  53. }
  54. else
  55. {
  56. toggleButtonText = "Turn On"; // custom camera mode is turning off
  57. }
  58. CameraPatch.AllowDefaultBehaviour = !CameraPatch.AllowDefaultBehaviour;
  59. CameraEngine.useDefaultBehaviour = !CameraEngine.useDefaultBehaviour;
  60. }
  61. }
  62. }
  63. }