ScreenshotMode.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using GadgetCore.API;
  2. using GadgetCore.API.ConfigMenu;
  3. using System;
  4. using UnityEngine;
  5. using UnityEngine.SceneManagement;
  6. namespace ScreenshotMode
  7. {
  8. [Gadget("ScreenshotMode", RequiredOnClients: false)]
  9. public class ScreenshotMode : Gadget<ScreenshotMode>
  10. {
  11. public const string MOD_VERSION = "1.0"; // Set this to the version of your mod.
  12. public const string CONFIG_VERSION = "1.0"; // Increment this whenever you change your mod's config file.
  13. public override IGadgetConfigMenu GetConfigMenu() { return null; }
  14. public override string GetModDescription()
  15. {
  16. return "A mod that adds options to hide hud elements and the player to be able to take clean screenshots.";
  17. }
  18. protected override void Initialize()
  19. {
  20. Logger.Log("Screenshot Mode v" + Info.Mod.Version);
  21. Core.logger = Logger;
  22. SceneManager.sceneLoaded += OnSceneLoaded;
  23. }
  24. internal static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
  25. {
  26. if (scene.buildIndex == 1)
  27. {
  28. AddOptions();
  29. }
  30. }
  31. private static void AddOptions()
  32. {
  33. try
  34. {
  35. var options = GameObject.Find("Main Camera").transform.Find("menuPause").Find("optionsmenu").gameObject;
  36. var fulls = options.transform.Find("bFullscreen");
  37. fulls.localPosition = new Vector3(0.446f, 0.284f, 0.39f);
  38. var mode = GameObject.Instantiate(options.transform.Find("bFullscreen").gameObject);
  39. mode.transform.SetParent(options.transform);
  40. mode.transform.localPosition = new Vector3(0.446f, 0.431f, 0.39f);
  41. mode.transform.localEulerAngles = fulls.transform.localEulerAngles;
  42. mode.transform.localScale = fulls.transform.localScale;
  43. mode.name = "bScreenshotMode";
  44. Update();
  45. }
  46. catch (Exception e) { Core.logger.Log(e); }
  47. }
  48. internal static void Update()
  49. {
  50. var text = "";
  51. switch (Core.state)
  52. {
  53. case 0:
  54. text = "Screenshot Mode";
  55. SetHudState(true);
  56. SetPlayerState(true);
  57. break;
  58. case 1:
  59. text = "No Hud";
  60. SetHudState(false);
  61. SetPlayerState(true);
  62. break;
  63. case 2:
  64. text = "No Hud/Player";
  65. SetHudState(false);
  66. SetPlayerState(false);
  67. break;
  68. }
  69. var options = GameObject.Find("Main Camera").transform.Find("menuPause").Find("optionsmenu").gameObject;
  70. var mode = options.transform.Find("bScreenshotMode");
  71. mode.transform.GetChild(0).GetComponent<TextMesh>().text = text;
  72. mode.transform.GetChild(0).GetChild(0).GetComponent<TextMesh>().text = text;
  73. }
  74. private static void SetPlayerState(bool visible)
  75. {
  76. if (MenuScript.player != null)
  77. {
  78. SetState(MenuScript.player.transform.Find("e").Find("newplayer"), visible);
  79. SetState(MenuScript.player.transform.Find("W"), visible);
  80. }
  81. }
  82. private static void SetHudState(bool visible)
  83. {
  84. SetState(GameObject.Find("Main Camera").transform.Find("inventoryBar"), visible);
  85. SetState(GameObject.Find("Main Camera").transform.Find("barObjective"), visible);
  86. SetState(GameObject.Find("Main Camera").transform.Find("buildBar"), visible);
  87. SetState(GameObject.Find("Main Camera").transform.Find("txtBuild"), visible, 0);
  88. }
  89. private static void SetState(Transform t, bool v, int defaultRot = -180)
  90. {
  91. t.localEulerAngles = new Vector3(t.localEulerAngles.x, v ? defaultRot : 90, t.localEulerAngles.z);
  92. }
  93. }
  94. }