void GameServiceModuleGUI() { EditorGUILayout.BeginVertical(EM_GUIStyleManager.GetCustomStyle("Module Box")); EditorGUI.BeginChangeCheck(); isGameServiceModuleEnable.boolValue = EM_EditorGUI.ModuleToggle(isGameServiceModuleEnable.boolValue, GameServiceModuleLabel); // Update the main prefab according to the toggle state. if (EditorGUI.EndChangeCheck()) { GameObject prefab = EM_EditorUtil.GetMainPrefab(); if (!isGameServiceModuleEnable.boolValue) { EM_PluginManager.DisableGameServiceModule(prefab); } else { EM_PluginManager.EnableGameServiceModule(prefab); } } // Now draw the GUI. if (!isGameServiceModuleEnable.boolValue) { EditorGUILayout.Space(); EditorGUILayout.HelpBox(GameServiceModuleIntro, MessageType.Info); } else { #if UNITY_ANDROID && !EM_GPGS EditorGUILayout.Space(); EditorGUILayout.HelpBox(AndroidGPGSImportInstruction, MessageType.Error); EditorGUILayout.Space(); if (GUILayout.Button("Download Google Play Games Plugin", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { EM_ExternalPluginManager.DownloadGooglePlayGamesPlugin(); } #elif UNITY_ANDROID && EM_GPGS EditorGUILayout.Space(); EditorGUILayout.HelpBox(AndroidGPGSAvailMsg, MessageType.Info); EditorGUILayout.Space(); if (GUILayout.Button("Download Google Play Games Plugin", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { EM_ExternalPluginManager.DownloadGooglePlayGamesPlugin(); } // Android Google Play Games setup EditorGUILayout.Space(); EditorGUILayout.LabelField("GOOGLE PLAY GAMES SETUP", EditorStyles.boldLabel); // GPGPS debug log GameServiceProperties.gpgsDebugLog.property.boolValue = EditorGUILayout.Toggle(GameServiceProperties.gpgsDebugLog.content, GameServiceProperties.gpgsDebugLog.property.boolValue); // GPGS (optional) Web App Client ID. EditorGUILayout.Space(); EditorGUILayout.LabelField("Web App Client ID (Optional)", EditorStyles.boldLabel); EditorGUILayout.HelpBox("The web app client ID is needed to access the user's ID token and call other APIs on behalf of the user. It is not required for Game Services. " + "Enter your oauth2 client ID below. To obtain this ID, generate a web linked app in Developer Console.\n" + "Example: 123456789012-abcdefghijklm.apps.googleusercontent.com", MessageType.None); sGPGSWebClientId = EditorGUILayout.TextField("Web Client Id", sGPGSWebClientId); // Text area to input the Android Xml resource. EditorGUILayout.Space(); EditorGUILayout.LabelField(GameServiceProperties.gpgsXmlResources.content, EditorStyles.boldLabel); EditorGUILayout.HelpBox(AndroidGPGPSSetupInstruction, MessageType.None); // Draw text area inside a scroll view. androidResourcesTextAreaScroll = GUILayout.BeginScrollView(androidResourcesTextAreaScroll, false, false, GUILayout.Height(EditorGUIUtility.singleLineHeight * 10)); GameServiceProperties.gpgsXmlResources.property.stringValue = EditorGUILayout.TextArea( GameServiceProperties.gpgsXmlResources.property.stringValue, GUILayout.Height(EditorGUIUtility.singleLineHeight * 100), GUILayout.ExpandHeight(true)); EditorGUILayout.EndScrollView(); EditorGUILayout.Space(); // Replicate the "Setup" button within the Android GPGS setup window. if (GUILayout.Button("Setup Google Play Games", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { EditorApplication.delayCall += SetupAndroidGPGSButtonHandler; } #endif #if !UNITY_ANDROID || (UNITY_ANDROID && EM_GPGS) // Auto-init config EditorGUILayout.Space(); EditorGUILayout.LabelField("AUTO-INIT CONFIG", EditorStyles.boldLabel); GameServiceProperties.autoInit.property.boolValue = EditorGUILayout.Toggle(GameServiceProperties.autoInit.content, GameServiceProperties.autoInit.property.boolValue); EditorGUI.BeginDisabledGroup(!GameServiceProperties.autoInit.property.boolValue); GameServiceProperties.autoInitDelay.property.floatValue = EditorGUILayout.FloatField(GameServiceProperties.autoInitDelay.content, GameServiceProperties.autoInitDelay.property.floatValue); EditorGUI.EndDisabledGroup(); GameServiceProperties.androidMaxLoginRequest.property.intValue = EditorGUILayout.IntField(GameServiceProperties.androidMaxLoginRequest.content, GameServiceProperties.androidMaxLoginRequest.property.intValue); if (!GameServiceProperties.autoInit.property.boolValue) { EditorGUILayout.Space(); EditorGUILayout.HelpBox(GameServiceManualInitInstruction, MessageType.Info); } // Saved Games config. #if EASY_MOBILE_PRO EditorGUILayout.Space(); EditorGUILayout.LabelField("SAVED GAMES CONFIG", EditorStyles.boldLabel); GameServiceProperties.enableSavedGames.property.boolValue = EditorGUILayout.Toggle(GameServiceProperties.enableSavedGames.content, GameServiceProperties.enableSavedGames.property.boolValue); if (GameServiceProperties.enableSavedGames.property.boolValue) { EditorGUILayout.PropertyField(GameServiceProperties.autoConflictResolutionStrategy.property, GameServiceProperties.autoConflictResolutionStrategy.content); EditorGUILayout.PropertyField(GameServiceProperties.gpgsDataSource.property, GameServiceProperties.gpgsDataSource.content); } #endif // Leaderboard setup. EditorGUILayout.Space(); EditorGUILayout.LabelField("LEADERBOARD SETUP", EditorStyles.boldLabel); DrawGameServiceItemArray("Leaderboard", GameServiceProperties.leaderboards, ref isLeadeboardsFoldout); // Achievement setup. EditorGUILayout.Space(); EditorGUILayout.LabelField("ACHIEVEMENT SETUP", EditorStyles.boldLabel); DrawGameServiceItemArray("Achievement", GameServiceProperties.achievements, ref isAchievementsFoldout); // Constant generation. EditorGUILayout.Space(); EditorGUILayout.LabelField("CONSTANTS GENERATION", EditorStyles.boldLabel); EditorGUILayout.HelpBox(GameServiceConstantGenerationIntro, MessageType.None); EditorGUILayout.Space(); if (GUILayout.Button("Generate Constants Class", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { GenerateGameServiceConstants(); } #endif } EditorGUILayout.EndVertical(); }
void GameServiceModuleGUI() { DrawModuleHeader(); // Now draw the GUI. if (!isGameServiceModuleEnable.boolValue) { return; } #if UNITY_ANDROID && !EM_GPGS EditorGUILayout.Space(); EditorGUILayout.BeginVertical(EM_GUIStyleManager.UppercaseSectionBox); EditorGUILayout.HelpBox(AndroidGPGSImportInstruction, MessageType.Error); if (GUILayout.Button("Download Google Play Games Plugin", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { EM_ExternalPluginManager.DownloadGooglePlayGamesPlugin(); } EditorGUILayout.EndVertical(); #elif UNITY_ANDROID && EM_GPGS EditorGUILayout.Space(); DrawUppercaseSection("GAMESERVICES_DOWNLOAD_PLUGIN_FOLDOUT_KEY", "DOWNLOAD GPGS PLUGIN", () => { EditorGUILayout.HelpBox(AndroidGPGSAvailMsg, MessageType.Info); if (GUILayout.Button("Download Google Play Games Plugin", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { EM_ExternalPluginManager.DownloadGooglePlayGamesPlugin(); } }); // Android Google Play Games setup EditorGUILayout.Space(); DrawUppercaseSection("GOOGLE_PLAY_GAMES_SETUP_FOLDOUT_KEY", "GOOGLE PLAY GAMES SETUP", () => { // GPGPS debug log. EditorGUILayout.PropertyField(GameServiceProperties.gpgsDebugLog.property, GameServiceProperties.gpgsDebugLog.content); // GPGS popup gravity. EditorGUILayout.PropertyField(GameServiceProperties.gpgsPopupGravity.property, GameServiceProperties.gpgsPopupGravity.content); // GPGS (optional) Web App Client ID. EditorGUILayout.Space(); EditorGUILayout.LabelField("Web App Client ID (Optional)", EditorStyles.boldLabel); EditorGUILayout.HelpBox("The web app client ID is needed to access the user's ID token and call other APIs on behalf of the user. It is not required for Game Services. " + "Enter your oauth2 client ID below. To obtain this ID, generate a web linked app in Developer Console.\n" + "Example: 123456789012-abcdefghijklm.apps.googleusercontent.com", MessageType.None); sGPGSWebClientId = EditorGUILayout.TextField("Web Client Id", sGPGSWebClientId); // Text area to input the Android Xml resource. EditorGUILayout.Space(); EditorGUILayout.LabelField(GameServiceProperties.gpgsXmlResources.content, EditorStyles.boldLabel); EditorGUILayout.HelpBox(AndroidGPGPSSetupInstruction, MessageType.None); // Draw text area inside a scroll view. androidResourcesTextAreaScroll = GUILayout.BeginScrollView(androidResourcesTextAreaScroll, false, false, GUILayout.Height(EditorGUIUtility.singleLineHeight * 10)); GameServiceProperties.gpgsXmlResources.property.stringValue = EditorGUILayout.TextArea( GameServiceProperties.gpgsXmlResources.property.stringValue, GUILayout.ExpandHeight(true)); EditorGUILayout.EndScrollView(); EditorGUILayout.Space(); // Replicate the "Setup" button within the Android GPGS setup window. if (GUILayout.Button("Setup Google Play Games", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { EditorApplication.delayCall += SetupAndroidGPGSButtonHandler; } }); #endif #if !UNITY_ANDROID || (UNITY_ANDROID && EM_GPGS) // Auto-init config EditorGUILayout.Space(); DrawUppercaseSection("GAMESERVICES_AUTO_INIT_CONFIG", "AUTO INITIALIZATION", () => { EditorGUILayout.PropertyField(GameServiceProperties.autoInit.property, GameServiceProperties.autoInit.content); EditorGUI.BeginDisabledGroup(!GameServiceProperties.autoInit.property.boolValue); EditorGUILayout.PropertyField(GameServiceProperties.autoInitDelay.property, GameServiceProperties.autoInitDelay.content); EditorGUI.EndDisabledGroup(); EditorGUILayout.PropertyField(GameServiceProperties.androidMaxLoginRequest.property, GameServiceProperties.androidMaxLoginRequest.content); if (!GameServiceProperties.autoInit.property.boolValue) { EditorGUILayout.HelpBox(GameServiceManualInitInstruction, MessageType.Info); } }); // Saved Games config. #if EASY_MOBILE_PRO EditorGUILayout.Space(); DrawUppercaseSection("SAVED_GAMES_CONFIG_FOLDOUT_KEY", "SAVED GAMES", () => { GameServiceProperties.enableSavedGames.property.boolValue = EditorGUILayout.Toggle(GameServiceProperties.enableSavedGames.content, GameServiceProperties.enableSavedGames.property.boolValue); if (GameServiceProperties.enableSavedGames.property.boolValue) { EditorGUILayout.PropertyField(GameServiceProperties.autoConflictResolutionStrategy.property, GameServiceProperties.autoConflictResolutionStrategy.content); EditorGUILayout.PropertyField(GameServiceProperties.gpgsDataSource.property, GameServiceProperties.gpgsDataSource.content); } }); #endif // Leaderboard setup. EditorGUILayout.Space(); DrawUppercaseSection("LEADERBOARD_SETUP_FOLDOUT_KEY", "LEADERBOARDS", () => { DrawGameServiceItemArray("Leaderboard", GameServiceProperties.leaderboards, ref isLeadeboardsFoldout); }); // Achievement setup. EditorGUILayout.Space(); DrawUppercaseSection("ACHIVEMENT_SETUP_FOLDOUT_KEY", "ACHIEVEMENTS", () => { DrawGameServiceItemArray("Achievement", GameServiceProperties.achievements, ref isAchievementsFoldout); }); // Constant generation. EditorGUILayout.Space(); DrawUppercaseSection("GAMESERVICES_CONTANTS_GENERATION_FOLDOUT_KEY", "CONSTANTS GENERATION", () => { EditorGUILayout.HelpBox(GameServiceConstantGenerationIntro, MessageType.None); if (GUILayout.Button("Generate Constants Class", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { GenerateGameServiceConstants(); } }); #endif }
void GameServiceModuleGUI() { EditorGUILayout.BeginVertical(EM_GUIStyleManager.GetCustomStyle("Module Box")); EditorGUI.BeginChangeCheck(); isGameServiceModuleEnable.boolValue = EM_EditorGUI.ModuleToggle(isGameServiceModuleEnable.boolValue, GameServiceModuleLabel); // Update the main prefab according to the toggle state. if (EditorGUI.EndChangeCheck()) { GameObject prefab = EM_EditorUtil.GetMainPrefab(); if (!isGameServiceModuleEnable.boolValue) { EM_Manager.DisableGameServiceModule(prefab); } else { EM_Manager.EnableGameServiceModule(prefab); } } // Now draw the GUI. if (!isGameServiceModuleEnable.boolValue) { EditorGUILayout.Space(); EditorGUILayout.HelpBox(GameServiceModuleIntro, MessageType.Info); } else { #if UNITY_ANDROID && !EM_GPGS EditorGUILayout.Space(); EditorGUILayout.HelpBox(AndroidGPGSImportInstruction, MessageType.Error); EditorGUILayout.Space(); if (GUILayout.Button("Download Google Play Games Plugin", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { EM_ExternalPluginManager.DownloadGooglePlayGamesPlugin(); } #elif UNITY_ANDROID && EM_GPGS EditorGUILayout.Space(); EditorGUILayout.HelpBox(AndroidGPGSAvailMsg, MessageType.Info); EditorGUILayout.Space(); if (GUILayout.Button("Download Google Play Games Plugin", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { EM_ExternalPluginManager.DownloadGooglePlayGamesPlugin(); } // Android Google Play Games setup EditorGUILayout.Space(); EditorGUILayout.LabelField("[ANDROID] GOOGLE PLAY GAMES SETUP", EditorStyles.boldLabel); // GPGPS debug log GameServiceProperties.gpgsDebugLog.property.boolValue = EditorGUILayout.Toggle(GameServiceProperties.gpgsDebugLog.content, GameServiceProperties.gpgsDebugLog.property.boolValue); // Text area to input the Android resource. EditorGUILayout.Space(); EditorGUILayout.HelpBox(AndroidGPGPSSetupInstruction, MessageType.None); EditorGUILayout.LabelField(GameServiceProperties.androidXmlResources.content, EditorStyles.boldLabel); // Draw text area inside a scroll view. androidResourcesTextAreaScroll = GUILayout.BeginScrollView(androidResourcesTextAreaScroll, false, false, GUILayout.Height(EditorGUIUtility.singleLineHeight * 10)); GameServiceProperties.androidXmlResources.property.stringValue = EditorGUILayout.TextArea( GameServiceProperties.androidXmlResources.property.stringValue, GUILayout.Height(EditorGUIUtility.singleLineHeight * 100), GUILayout.ExpandHeight(true)); EditorGUILayout.EndScrollView(); EditorGUILayout.Space(); // Replicate the "Setup" button within the Android GPGS setup window. if (GUILayout.Button("Setup Google Play Games", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { string webClientId = null; // Web ClientId, not required for Games Services. string folder = EM_Constants.GeneratedFolder; // Folder to contain the generated id constant class. string className = EM_Constants.AndroidGPGSConstantClassName; // Name of the generated id constant class. string resourceXmlData = GameServiceProperties.androidXmlResources.property.stringValue; // The xml resources inputted. string nearbySvcId = null; // Nearby Connection Id, not supported by us. bool requiresGooglePlus = false; // Not required Google+ API. try { if (GPGSUtil.LooksLikeValidPackageName(className)) { SetupAndroidGPGS(webClientId, folder, className, resourceXmlData, nearbySvcId, requiresGooglePlus); } } catch (System.Exception e) { GPGSUtil.Alert( GPGSStrings.Error, "Invalid classname: " + e.Message); } } #endif #if !UNITY_ANDROID || (UNITY_ANDROID && EM_GPGS) // Auto-init config EditorGUILayout.Space(); EditorGUILayout.LabelField("AUTO-INIT CONFIG", EditorStyles.boldLabel); GameServiceProperties.autoInit.property.boolValue = EditorGUILayout.Toggle(GameServiceProperties.autoInit.content, GameServiceProperties.autoInit.property.boolValue); EditorGUI.BeginDisabledGroup(!GameServiceProperties.autoInit.property.boolValue); GameServiceProperties.autoInitDelay.property.floatValue = EditorGUILayout.FloatField(GameServiceProperties.autoInitDelay.content, GameServiceProperties.autoInitDelay.property.floatValue); EditorGUI.EndDisabledGroup(); GameServiceProperties.androidMaxLoginRequest.property.intValue = EditorGUILayout.IntField(GameServiceProperties.androidMaxLoginRequest.content, GameServiceProperties.androidMaxLoginRequest.property.intValue); if (!GameServiceProperties.autoInit.property.boolValue) { EditorGUILayout.Space(); EditorGUILayout.HelpBox(GameServiceManualInitInstruction, MessageType.Info); } // Leaderboard setup. EditorGUILayout.Space(); EditorGUILayout.LabelField("LEADERBOARD SETUP", EditorStyles.boldLabel); DrawGameServiceItemArray("Leaderboard", GameServiceProperties.leaderboards, ref isLeadeboardsFoldout); // Achievement setup. EditorGUILayout.Space(); EditorGUILayout.LabelField("ACHIEVEMENT SETUP", EditorStyles.boldLabel); DrawGameServiceItemArray("Achievement", GameServiceProperties.achievements, ref isAchievementsFoldout); // Constant generation. EditorGUILayout.Space(); EditorGUILayout.LabelField("CONSTANTS CLASS GENERATION", EditorStyles.boldLabel); EditorGUILayout.HelpBox(GameServiceConstantGenerationIntro, MessageType.None); EditorGUILayout.Space(); if (GUILayout.Button("Generate Constants Class", GUILayout.Height(EM_GUIStyleManager.buttonHeight))) { GenerateGameServiceConstants(); } #endif } EditorGUILayout.EndVertical(); }