RecipeMenuCore.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using GadgetCore.API;
  2. using GadgetCore.API.ConfigMenu;
  3. using RecipeMenuCore.API;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6. using UnityEngine.SceneManagement;
  7. namespace RecipeMenuCore
  8. {
  9. [Gadget("RecipeMenuCore", RequiredOnClients: false)]
  10. public class RecipeMenuCore : Gadget<RecipeMenuCore>
  11. {
  12. public const string MOD_VERSION = "1.6"; // Set this to the version of your mod.
  13. public const string CONFIG_VERSION = "1.0"; // Increment this whenever you change your mod's config file.
  14. protected override void LoadConfig()
  15. {
  16. Config.Load();
  17. string fileVersion = Config.ReadString("ConfigVersion", CONFIG_VERSION, comments: "The Config Version (not to be confused with mod version)");
  18. if (fileVersion != CONFIG_VERSION)
  19. {
  20. Config.Reset();
  21. Config.WriteString("ConfigVersion", CONFIG_VERSION, comments: "The Config Version (not to be confused with mod version)");
  22. }
  23. Core.settingUseDialog = Config.ReadBool("UseDialog", true, comments: new string[] { "Should an item dialog be shown in recipe menus?" });
  24. Config.Save();
  25. }
  26. public override string GetModDescription()
  27. {
  28. return "A utility mod providing a recipe menu API.";
  29. }
  30. protected override void Initialize()
  31. {
  32. Logger.Log("Recipe Menu Core v" + Info.Mod.Version);
  33. Core.logger = Logger;
  34. Core.pageGearForgeInfoList = new List<RecipePage>();
  35. Core.pageAlchemyStationInfoList = new List<RecipePage>();
  36. Core.pageUltimateForgeInfoList = new List<RecipePage>();
  37. SceneManager.sceneLoaded += OnSceneLoaded;
  38. }
  39. internal static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
  40. {
  41. if (scene.buildIndex == 1)
  42. {
  43. var menuRecipeElement = GameObject.Find("Main Camera").transform.Find("menuRecipe");
  44. var locksElement = menuRecipeElement.Find("ultLocks").gameObject;
  45. var hoverElements = Object.Instantiate(locksElement, menuRecipeElement.transform);
  46. hoverElements.name = "hoverElements";
  47. for (int i = 0; i < 12 * 3; i++)
  48. {
  49. var element = hoverElements.transform.GetChild(i).gameObject;
  50. Component.DestroyImmediate(element.GetComponent<Renderer>());
  51. var collider = element.AddComponent<BoxCollider>();
  52. collider.size = new Vector3(14f / 32f * 2, (18f + 1) / 32f * 2, 1);
  53. collider.isTrigger = true;
  54. element.tag = "recipe";
  55. element.layer = 16;
  56. element.name = "" + (i + 12);
  57. }
  58. var buttonsElement = menuRecipeElement.Find("buttons").gameObject;
  59. for (int i = 0; i < 12; i++)
  60. {
  61. var element = buttonsElement.transform.GetChild(i).gameObject;
  62. var collider = element.GetComponent<BoxCollider>();
  63. collider.size = new Vector3(collider.size.x, 0.6f, collider.size.z);
  64. }
  65. }
  66. }
  67. }
  68. }