#if !PHOTON_UNITY_NETWORKING using System; using Photon.Chat; using Photon.Chat.Demo; using Photon.Realtime; using UnityEditor; using UnityEngine; [InitializeOnLoad] public class ChatEditor : EditorWindow { static ChatEditor() { EditorApplication.update += OnEditorUpdate; } private static void OnEditorUpdate() { EditorApplication.update -= OnEditorUpdate; //ChatSettings settings = ChatSettings.Load(); //if (settings != null && !settings.WizardDone && string.IsNullOrEmpty(settings.AppId)) //{ // OpenWizard(); //} } [MenuItem("Window/Photon Chat/Setup")] public static void OpenWizard() { //currentSettings = ChatSettings.Load(); //currentSettings.WizardDone = true; //EditorUtility.SetDirty(currentSettings); ChatEditor editor = (ChatEditor)EditorWindow.GetWindow(typeof (ChatEditor), false, "Photon Chat"); editor.minSize = editor.preferredSize; } private ChatGui cGui; internal string mailOrAppId; internal bool showDashboardLink = false; internal bool showRegistrationDone = false; internal bool showRegistrationError = false; private readonly Vector2 preferredSize = new Vector2(350, 400); internal static string UrlCloudDashboard = "https://dashboard.photonengine.com/en-US/"; public string WelcomeText = "Thanks for importing Photon Chat.\nThis window should set you up.\n\nYou will need a free Photon Account to setup a Photon Chat application.\nOpen the Photon Dashboard (webpage) to access your account (see button below).\n\nCopy and paste a Chat AppId into the field below and click \"Setup\"."; //public string AlreadyRegisteredInfo = "The email is registered so we can't fetch your AppId (without password).\n\nPlease login online to get your AppId and paste it above."; //public string RegisteredNewAccountInfo = "We created a (free) account and fetched you an AppId.\nWelcome. Your Photon Chat project is setup."; //public string FailedToRegisterAccount = "This wizard failed to register an account right now. Please check your mail address or try via the Dashboard."; //public string AppliedToSettingsInfo = "Your AppId is now applied to this project."; public string SetupCompleteInfo = "Done!\nYour Chat AppId is now stored in the Scripts object, Chat App Settings."; public string CloseWindowButton = "Close"; public string OpenCloudDashboardText = "Photon Dashboard Login"; public string OpenCloudDashboardTooltip = "Review Cloud App information and statistics."; public void OnGUI() { if (this.cGui == null) { cGui = FindObjectOfType(); } GUI.skin.label.wordWrap = true; GUI.skin.label.richText = true; if (string.IsNullOrEmpty(mailOrAppId)) { mailOrAppId = string.Empty; } GUILayout.Label("Chat Settings", EditorStyles.boldLabel); GUILayout.Label(this.WelcomeText); GUILayout.Space(15); GUILayout.Label("Chat AppId"); string input = EditorGUILayout.TextField(this.mailOrAppId); if (GUI.changed) { this.mailOrAppId = input.Trim(); } //bool isMail = false; bool minimumInput = false; bool isAppId = false; if (IsValidEmail(this.mailOrAppId)) { // this should be a mail address minimumInput = true; //isMail = true; } else if (IsAppId(this.mailOrAppId)) { // this should be an appId minimumInput = true; isAppId = true; } EditorGUI.BeginDisabledGroup(!minimumInput); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); bool setupBtn = GUILayout.Button("Setup", GUILayout.Width(205)); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); if (setupBtn) { this.showDashboardLink = false; this.showRegistrationDone = false; this.showRegistrationError = false; //if (isMail) //{ // EditorUtility.DisplayProgressBar("Fetching Account", "Trying to register a Photon Cloud Account.", 0.5f); // AccountService service = new AccountService(); // //service.RegisterByEmail(this.mailOrAppId, AccountService.Origin.Pun); // //EditorUtility.ClearProgressBar(); // //if (service.ReturnCode == 0) // //{ // // currentSettings.AppId = service.AppId; // // EditorUtility.SetDirty(currentSettings); // // this.showRegistrationDone = true; // // Selection.objects = new UnityEngine.Object[] { currentSettings }; // //} // //else // //{ // // if (service.Message.Contains("registered")) // // { // // this.showDashboardLink = true; // // } // // else // // { // // this.showRegistrationError = true; // // } // //} //} //else if (isAppId) { //currentSettings.AppId = this.mailOrAppId; //EditorUtility.SetDirty(currentSettings); if (this.cGui != null) { this.cGui.ChatAppSettings.AppIdChat = this.mailOrAppId; EditorUtility.SetDirty(this.cGui); } showRegistrationDone = true; } //EditorGUIUtility.PingObject(currentSettings); } EditorGUI.EndDisabledGroup(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button(new GUIContent(OpenCloudDashboardText, OpenCloudDashboardTooltip), GUILayout.Width(205))) { EditorUtility.OpenWithDefaultApp(UrlCloudDashboard); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); //if (this.showDashboardLink) //{ // // button to open dashboard and get the AppId // GUILayout.Space(15); // GUILayout.Label(AlreadyRegisteredInfo); // GUILayout.BeginHorizontal(); // GUILayout.FlexibleSpace(); // if (GUILayout.Button(new GUIContent(OpenCloudDashboardText, OpenCloudDashboardTooltip), GUILayout.Width(205))) // { // EditorUtility.OpenWithDefaultApp(UrlCloudDashboard + Uri.EscapeUriString(this.mailOrAppId)); // this.mailOrAppId = string.Empty; // this.showDashboardLink = false; // } // GUILayout.FlexibleSpace(); // GUILayout.EndHorizontal(); //} //if (this.showRegistrationError) //{ // GUILayout.Space(15); // GUILayout.Label(FailedToRegisterAccount); // GUILayout.BeginHorizontal(); // GUILayout.FlexibleSpace(); // if (GUILayout.Button(new GUIContent(OpenCloudDashboardText, OpenCloudDashboardTooltip), GUILayout.Width(205))) // { // EditorUtility.OpenWithDefaultApp(UrlCloudDashboard + Uri.EscapeUriString(this.mailOrAppId)); // this.mailOrAppId = string.Empty; // this.showDashboardLink = false; // } // GUILayout.FlexibleSpace(); // GUILayout.EndHorizontal(); //} if (this.showRegistrationDone) { GUILayout.Space(15); //GUILayout.Label("Registration done"); ////if (isMail) ////{ //// GUILayout.Label(RegisteredNewAccountInfo); ////} ////else ////{ // GUILayout.Label(AppliedToSettingsInfo); ////} // setup-complete info GUILayout.Space(15); GUILayout.Label(SetupCompleteInfo); // close window (done) GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button(CloseWindowButton, GUILayout.Width(205))) { this.Close(); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } } public static bool IsAppId(string val) { if (string.IsNullOrEmpty(val) || val.Length < 16) { return false; } try { new Guid(val); } catch { return false; } return true; } // https://stackoverflow.com/a/1374644/1449056 private static bool IsValidEmail(string email) { if (string.IsNullOrEmpty(email) || !email.Contains("@")) { return false; } try { System.Net.Mail.MailAddress addr = new System.Net.Mail.MailAddress(email); return email.Equals(addr.Address); } catch { return false; } } } #endif