ChainsafeServerSettings.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. using UnityEditor;
  2. using System.Collections;
  3. using UnityEngine;
  4. using SDKConfiguration;
  5. using System;
  6. public class ChainSafeServerSettings : EditorWindow
  7. {
  8. public string ProjectID = "Please Enter Your Project ID";
  9. public string ChainID = "Please Enter Your Chain ID";
  10. public string Chain = "Please Enter Your Chain i.e Ethereum, Binance, Cronos";
  11. public string Network = "Please Enter Your Network i.e Mainnet, Testnet";
  12. public string RPC = "Please Enter Your RPC";
  13. public User saveObject;
  14. Texture2D m_Logo = null;
  15. GameObject serverCheck = null;
  16. ProjectConfigScriptableObject projectConfigSO = null;
  17. // checks if data is already entered
  18. void Awake()
  19. {
  20. if ((ProjectID == ("Please Enter Your Project ID")) && (PlayerPrefs.GetString("ProjectID") != ""))
  21. {
  22. ProjectID = PlayerPrefs.GetString("ProjectID");
  23. PlayerPrefs.Save();
  24. }
  25. if ((ChainID == ("Please Enter Your Chain ID")) && (PlayerPrefs.GetString("ChainID") != ""))
  26. {
  27. ChainID = PlayerPrefs.GetString("ChainID");
  28. PlayerPrefs.Save();
  29. }
  30. if (Chain == ("Please Enter Your Chain i.e Ethereum, Binance, Cronos") && (PlayerPrefs.GetString("Chain") != ""))
  31. {
  32. Chain = PlayerPrefs.GetString("Chain");
  33. PlayerPrefs.Save();
  34. }
  35. if (Network == ("Please Enter Your Network i.e Mainnet, Testnet") && (PlayerPrefs.GetString("Network") != ""))
  36. {
  37. Network = PlayerPrefs.GetString("Network");
  38. PlayerPrefs.Save();
  39. }
  40. if (RPC == ("Please Enter Your RPC") && (PlayerPrefs.GetString("RPC") != ""))
  41. {
  42. RPC = PlayerPrefs.GetString("RPC");
  43. PlayerPrefs.Save();
  44. }
  45. }
  46. // Initializes window
  47. [MenuItem("Window/ChainSafeServerSettings")]
  48. public static void ShowWindow()
  49. {
  50. // show existing window instance. If one doesn't exist, make one.
  51. EditorWindow.GetWindow(typeof(ChainSafeServerSettings));
  52. }
  53. // called when menu is opened, loads Chainsafe Logo
  54. void OnEnable()
  55. {
  56. m_Logo = (Texture2D)Resources.Load("chainsafemenulogo", typeof(Texture2D));
  57. }
  58. // displayed content
  59. void OnGUI()
  60. {
  61. // image
  62. EditorGUILayout.BeginVertical("box");
  63. GUILayout.Label(m_Logo, GUILayout.MaxWidth(250f), GUILayout.MaxHeight(250f));
  64. EditorGUILayout.EndVertical();
  65. // text
  66. GUILayout.Label("Welcome To The ChainSafe SDK!", EditorStyles.boldLabel);
  67. GUILayout.Label("Here you can enter all the information needed to get your game started on the blockchain!", EditorStyles.label);
  68. // inputs
  69. ProjectID = EditorGUILayout.TextField("Project ID", ProjectID);
  70. ChainID = EditorGUILayout.TextField("Chain ID", ChainID);
  71. Chain = EditorGUILayout.TextField("Chain", Chain);
  72. Network = EditorGUILayout.TextField("Network", Network);
  73. RPC = EditorGUILayout.TextField("RPC", RPC);
  74. // buttons
  75. // register
  76. if (GUILayout.Button("Need To Register?"))
  77. {
  78. Application.OpenURL("https://dashboard.gaming.chainsafe.io/");
  79. }
  80. // docs
  81. if (GUILayout.Button("Check Out Our Docs!"))
  82. {
  83. Application.OpenURL("https://docs.gaming.chainsafe.io/");
  84. }
  85. // save button
  86. if (GUILayout.Button("Save Settings"))
  87. {
  88. Debug.Log("Saving Settings!");
  89. // set player prefs for unity open close within the editor
  90. PlayerPrefs.SetString("ProjectID", ProjectID);
  91. PlayerPrefs.SetString("ChainID", ChainID);
  92. PlayerPrefs.SetString("Chain", Chain);
  93. PlayerPrefs.SetString("Network", Network);
  94. PlayerPrefs.SetString("RPC", RPC);
  95. PlayerPrefs.SetString("Registered", "true");
  96. // set the scriptable object for when the project is built out
  97. projectConfigSO = (ProjectConfigScriptableObject)Resources.Load("ProjectConfigData", typeof(ScriptableObject));
  98. projectConfigSO.ProjectID = ProjectID;
  99. projectConfigSO.ChainID = ChainID;
  100. projectConfigSO.Chain = Chain;
  101. projectConfigSO.Network = Network;
  102. projectConfigSO.RPC = RPC;
  103. EditorUtility.SetDirty(projectConfigSO);
  104. AssetDatabase.SaveAssets();
  105. // assign script to prefab and instantiate then destroy after
  106. serverCheck = (GameObject)Resources.Load("dll", typeof(GameObject));
  107. GameObject serverCheckScript = (GameObject)Instantiate(serverCheck, new Vector3(0, 0, 0), new Quaternion(0, 0, 0, 0));
  108. serverCheckScript.GetComponent<ServerCheck>().CheckProject();
  109. Debug.Log("Server Check Script: " + serverCheck);
  110. }
  111. GUILayout.Label("Reminder: Your ProjectID Must Be Valid To Save & Build With Our SDK. You Can Register For One On Our Website At Dashboard.Gaming.Chainsafe.io", EditorStyles.label);
  112. }
  113. }