private void AskToCreate <T> (string obName) where T : ScriptableObject { EditorStyles.label.wordWrap = true; GUILayout.Label("A '" + obName + "' asset is required for the game to run correctly.", EditorStyles.label); if (GUILayout.Button("Create new " + obName + " file")) { try { ScriptableObject t = CustomAssetUtility.CreateAndReturnAsset <T> (obName, Resource.managersDirectory); Undo.RegisterUndo(references, "Assign " + obName); if (t is SceneManager) { references.sceneManager = (SceneManager)t; } else if (t is SettingsManager) { references.settingsManager = (SettingsManager)t; } else if (t is ActionsManager) { references.actionsManager = (ActionsManager)t; references.actionsManager.RefreshList(); } else if (t is VariablesManager) { references.variablesManager = (VariablesManager)t; } else if (t is InventoryManager) { references.inventoryManager = (InventoryManager)t; } else if (t is SpeechManager) { references.speechManager = (SpeechManager)t; } } catch { Debug.LogWarning("Could not create " + obName + ". Does the subdirectory " + Resource.managersDirectory + " exist?"); } } }
void OnGUI() { if (!references) { GetReferences(); } if (references) { GUILayout.Space(10); GUILayout.BeginHorizontal(); if (GUILayout.Toggle(showScene, "Scene", "toolbarbutton", GUILayout.ExpandWidth(true))) { SetTab(0); } if (GUILayout.Toggle(showSettings, "Settings", "toolbarbutton", GUILayout.ExpandWidth(true))) { SetTab(1); } if (GUILayout.Toggle(showActions, "Actions", "toolbarbutton", GUILayout.ExpandWidth(true))) { SetTab(2); } if (GUILayout.Toggle(showGVars, "Variables", "toolbarbutton", GUILayout.ExpandWidth(true))) { SetTab(3); } if (GUILayout.Toggle(showInvItems, "Inventory", "toolbarbutton", GUILayout.ExpandWidth(true))) { SetTab(4); } if (GUILayout.Toggle(showSpeech, "Speech", "toolbarbutton", GUILayout.ExpandWidth(true))) { SetTab(5); } GUILayout.EndHorizontal(); GUILayout.Space(5); scroll = GUILayout.BeginScrollView(scroll); if (showScene) { GUILayout.Label("Scene manager", EditorStyles.largeLabel); references.sceneManager = (SceneManager)EditorGUILayout.ObjectField("Asset file: ", references.sceneManager, typeof(SceneManager), false); EditorGUILayout.Separator(); GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1)); if (!references.sceneManager) { AskToCreate <SceneManager> ("SceneManager"); } else { references.sceneManager.ShowGUI(); } } else if (showSettings) { GUILayout.Label("Settings manager", EditorStyles.largeLabel); references.settingsManager = (SettingsManager)EditorGUILayout.ObjectField("Asset file: ", references.settingsManager, typeof(SettingsManager), false); EditorGUILayout.Separator(); GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1)); if (!references.settingsManager) { AskToCreate <SettingsManager> ("SettingsManager"); } else { references.settingsManager.ShowGUI(); } } else if (showActions) { GUILayout.Label("Actions manager", EditorStyles.largeLabel); references.actionsManager = (ActionsManager)EditorGUILayout.ObjectField("Asset file: ", references.actionsManager, typeof(ActionsManager), false); EditorGUILayout.Separator(); GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1)); if (!references.actionsManager) { AskToCreate <ActionsManager> ("ActionsManager"); } else { references.actionsManager.ShowGUI(); } } else if (showGVars) { GUILayout.Label("Gloval variables manager", EditorStyles.largeLabel); references.variablesManager = (VariablesManager)EditorGUILayout.ObjectField("Asset file: ", references.variablesManager, typeof(VariablesManager), false); EditorGUILayout.Separator(); GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1)); if (!references.variablesManager) { AskToCreate <VariablesManager> ("VariablesManager"); } else { references.variablesManager.ShowGUI(); } } else if (showInvItems) { GUILayout.Label("Inventory items manager", EditorStyles.largeLabel); references.inventoryManager = (InventoryManager)EditorGUILayout.ObjectField("Asset file: ", references.inventoryManager, typeof(InventoryManager), false); EditorGUILayout.Separator(); GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1)); if (!references.inventoryManager) { AskToCreate <InventoryManager> ("InventoryManager"); } else { references.inventoryManager.ShowGUI(); } } else if (showSpeech) { GUILayout.Label("Speech manager", EditorStyles.largeLabel); references.speechManager = (SpeechManager)EditorGUILayout.ObjectField("Asset file: ", references.speechManager, typeof(SpeechManager), false); EditorGUILayout.Separator(); GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1)); if (!references.speechManager) { AskToCreate <SpeechManager> ("SpeechManager"); } else { references.speechManager.ShowGUI(); } } GUILayout.Label("Adventure Creator - Version " + version); GUILayout.EndScrollView(); } else { EditorStyles.label.wordWrap = true; GUILayout.Label("No 'References' asset found in the resources folder. Please click to create one.", EditorStyles.label); if (GUILayout.Button("Create 'References' file")) { references = CustomAssetUtility.CreateAndReturnAsset <References> ("References", "AdventureCreator" + Path.DirectorySeparatorChar.ToString() + "Resources"); } } if (GUI.changed) { EditorUtility.SetDirty(this); EditorUtility.SetDirty(references); } }