using System.IO; using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif namespace Photon.Chat.DemoChat { /// /// Utility class to provide an instance with the Chat AppId to use by the demo. Can use PUN PhotonServerSettings or work as standalone. /// /// /// See the Instance getter for the different implementations (with and without PUN). /// public class ChatSettings : ScriptableObject { [Tooltip("Your Chat AppId from Photon Dashboard")] public string AppId; [HideInInspector] public bool WizardDone; // backing field for property private static ChatSettings instance; // provides access to instance of ChatSettings. file gets created if not available public static ChatSettings Instance { get { #if PUN_2_OR_NEWER if (instance == null) { instance = ScriptableObject.CreateInstance(); } instance.AppId = Photon.Pun.PhotonNetwork.PhotonServerSettings.AppSettings.AppIdChat; return instance; #else if (instance == null) { instance = Load(); } return instance; #endif } } // loads existing "ChatSettingsFile" of type ChatSettings from a Resources folder public static ChatSettings Load() { ChatSettings settings = (ChatSettings)Resources.Load("ChatSettingsFile", typeof(ChatSettings)); if (settings != null) { return settings; } else { return Create(); } } // creates an instance of ChatSettings and in Editor, stores it in a default path private static ChatSettings Create() { ChatSettings settings = (ChatSettings)ScriptableObject.CreateInstance("ChatSettings"); #if UNITY_EDITOR if (!Directory.Exists("Assets/Resources")) { AssetDatabase.CreateFolder("Assets", "Resources"); AssetDatabase.ImportAsset("Assets/Resources"); } AssetDatabase.CreateAsset(settings, "Assets/Resources/ChatSettingsFile.asset"); EditorUtility.SetDirty(settings); settings = (ChatSettings)Resources.Load("ChatSettingsFile", typeof(ChatSettings)); #endif return settings; } } }