AlternativeTitles.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using UnityEngine;
  2. using GadgetCore.API;
  3. using UnityEngine.SceneManagement;
  4. using GadgetCore.API.ConfigMenu;
  5. using System;
  6. using System.Collections.Generic;
  7. using AlternativeTitles.ConfigEnums;
  8. namespace AlternativeTitles
  9. {
  10. [Gadget("AlternativeTitles", RequiredOnClients: false)]
  11. public class AlternativeTitles : Gadget<AlternativeTitles>
  12. {
  13. public const string MOD_VERSION = "1.0"; // Set this to the version of your mod.
  14. public const string CONFIG_VERSION = "1.0"; // Increment this whenever you change your mod's config file.
  15. protected override void LoadConfig()
  16. {
  17. Config.Load();
  18. string fileVersion = Config.ReadString("ConfigVersion", CONFIG_VERSION, comments: "The Config Version (not to be confused with mod version)");
  19. if (fileVersion != CONFIG_VERSION)
  20. {
  21. Config.Reset();
  22. Config.WriteString("ConfigVersion", CONFIG_VERSION, comments: "The Config Version (not to be confused with mod version)");
  23. }
  24. Core.settingTitleRarity = Config.ReadEnum("TitleRarity", TitleRarityEnum.Common, comments: new string[] { "How rare sould the replacement titles be?" });
  25. Config.Save();
  26. }
  27. public override string GetModDescription()
  28. {
  29. return "A mod that adds random alternative titles to the main menu.";
  30. }
  31. protected override void Initialize()
  32. {
  33. Logger.Log("Alternative Titles v" + Info.Mod.Version);
  34. Core.logger = Logger;
  35. SceneManager.sceneLoaded += OnSceneLoaded;
  36. ChangeMenuText();
  37. }
  38. internal static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
  39. {
  40. if (scene.buildIndex == 0)
  41. {
  42. ChangeMenuText();
  43. }
  44. }
  45. private static Texture2D texture2D = GadgetCoreAPI.LoadTexture2D("roguelandsTitle.png");
  46. private static Texture2D texture2DL = GadgetCoreAPI.LoadTexture2D("roguelandsTitleL2.png");
  47. private static void ChangeMenuText()
  48. {
  49. try
  50. {
  51. var titleElement = GameObject.Find("MAIN").transform.Find("-").gameObject;
  52. var renderer = titleElement.GetComponent<Renderer>();
  53. if (Core.defaultTitleTexture == null)
  54. Core.defaultTitleTexture = renderer.material.mainTexture;
  55. int i = 100;
  56. switch (Core.settingTitleRarity)
  57. {
  58. case TitleRarityEnum.UltraRare:
  59. i = 120;
  60. break;
  61. case TitleRarityEnum.VeryRare:
  62. i = 70;
  63. break;
  64. case TitleRarityEnum.Rare:
  65. i = 30;
  66. break;
  67. case TitleRarityEnum.Common:
  68. i = 10;
  69. break;
  70. case TitleRarityEnum.VeryCommon:
  71. i = 5;
  72. break;
  73. case TitleRarityEnum.UltraCommon:
  74. i = 2;
  75. break;
  76. case TitleRarityEnum.Only:
  77. i = 1;
  78. break;
  79. }
  80. if (random.Next(i) == 0)
  81. if (random.Next(2) == 0)
  82. renderer.material = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = texture2DL };
  83. else
  84. renderer.material = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = texture2D };
  85. else
  86. renderer.material = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = Core.defaultTitleTexture };
  87. }
  88. catch (Exception e) { Core.logger.Log(e); }
  89. }
  90. private static System.Random random = new System.Random();
  91. }
  92. }