private void OnGUI()
        {
            if (!ACInstaller.IsInstalled())
            {
                ACInstaller.DoInstall();
            }

            if (!references)
            {
                GetReferences();
            }

            if (references)
            {
                GUILayout.Space(10);

                GUILayout.BeginHorizontal();

                if (GUILayout.Toggle(showScene, "Scene", "toolbarbutton", tabWidth))
                {
                    SetTab(0);
                }
                if (GUILayout.Toggle(showSettings, "Settings", "toolbarbutton", tabWidth))
                {
                    SetTab(1);
                }
                if (GUILayout.Toggle(showActions, "Actions", "toolbarbutton", tabWidth))
                {
                    SetTab(2);
                }
                if (GUILayout.Toggle(showGVars, "Variables", "toolbarbutton", tabWidth))
                {
                    SetTab(3);
                }

                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal();

                if (GUILayout.Toggle(showInvItems, "Inventory", "toolbarbutton", tabWidth))
                {
                    SetTab(4);
                }
                if (GUILayout.Toggle(showSpeech, "Speech", "toolbarbutton", tabWidth))
                {
                    SetTab(5);
                }
                if (GUILayout.Toggle(showCursor, "Cursor", "toolbarbutton", tabWidth))
                {
                    SetTab(6);
                }
                if (GUILayout.Toggle(showMenu, "Menu", "toolbarbutton", tabWidth))
                {
                    SetTab(7);
                }

                GUILayout.EndHorizontal();
                GUILayout.Space(5);

                scroll = GUILayout.BeginScrollView(scroll);

                if (showScene)
                {
                    GUILayout.Label("Scene manager", CustomStyles.managerHeader);
                    EditorGUI.BeginChangeCheck();
                    references.sceneManager = (SceneManager)EditorGUILayout.ObjectField("Asset file: ", references.sceneManager, typeof(SceneManager), false);
                    if (EditorGUI.EndChangeCheck())
                    {
                        KickStarter.ClearManagerCache();
                    }
                    DrawManagerSpace();

                    if (!references.sceneManager)
                    {
                        AskToCreate <SceneManager> ("SceneManager");
                    }
                    else
                    {
                        if (references.sceneManager.name == "Demo_SceneManager" || references.sceneManager.name == "Demo2D_SceneManager")
                        {
                            EditorGUILayout.HelpBox("The Demo Managers are for demonstration purposes only.  Modifying them to create your game may result in data loss upon upgrading - instead, use the New Game Wizard to create a new set of Managers.", MessageType.Warning);
                        }

                        references.sceneManager.ShowGUI();
                    }
                }

                else if (showSettings)
                {
                    GUILayout.Label("Settings manager", CustomStyles.managerHeader);
                    EditorGUI.BeginChangeCheck();
                    references.settingsManager = (SettingsManager)EditorGUILayout.ObjectField("Asset file: ", references.settingsManager, typeof(SettingsManager), false);
                    if (EditorGUI.EndChangeCheck())
                    {
                        KickStarter.ClearManagerCache();
                    }
                    DrawManagerSpace();

                    if (!references.settingsManager)
                    {
                        AskToCreate <SettingsManager> ("SettingsManager");
                    }
                    else
                    {
                        if (references.settingsManager.name == "Demo_SettingsManager" || references.settingsManager.name == "Demo2D_SettingsManager")
                        {
                            EditorGUILayout.HelpBox("The Demo Managers are for demonstration purposes only.  Modifying them to create your game may result in data loss upon upgrading - instead, use the New Game Wizard to create a new set of Managers.", MessageType.Warning);
                        }

                        references.settingsManager.ShowGUI();
                    }
                }

                else if (showActions)
                {
                    GUILayout.Label("Actions manager", CustomStyles.managerHeader);
                    EditorGUI.BeginChangeCheck();
                    references.actionsManager = (ActionsManager)EditorGUILayout.ObjectField("Asset file: ", references.actionsManager, typeof(ActionsManager), false);
                    if (EditorGUI.EndChangeCheck())
                    {
                        KickStarter.ClearManagerCache();
                    }
                    DrawManagerSpace();

                    if (!references.actionsManager)
                    {
                        AskToCreate <ActionsManager> ("ActionsManager");
                    }
                    else
                    {
                        if (references.actionsManager.name == "Demo_ActionsManager" || references.actionsManager.name == "Demo2D_ActionsManager")
                        {
                            EditorGUILayout.HelpBox("The Demo Managers are for demonstration purposes only.  Modifying them to create your game may result in data loss upon upgrading - instead, use the New Game Wizard to create a new set of Managers.", MessageType.Warning);
                        }

                        references.actionsManager.ShowGUI();
                    }
                }

                else if (showGVars)
                {
                    GUILayout.Label("Variables manager", CustomStyles.managerHeader);
                    EditorGUI.BeginChangeCheck();
                    references.variablesManager = (VariablesManager)EditorGUILayout.ObjectField("Asset file: ", references.variablesManager, typeof(VariablesManager), false);
                    if (EditorGUI.EndChangeCheck())
                    {
                        KickStarter.ClearManagerCache();
                    }
                    DrawManagerSpace();

                    if (!references.variablesManager)
                    {
                        AskToCreate <VariablesManager> ("VariablesManager");
                    }
                    else
                    {
                        if (references.variablesManager.name == "Demo_VariablesManager" || references.variablesManager.name == "Demo2D_VariablesManager")
                        {
                            EditorGUILayout.HelpBox("The Demo Managers are for demonstration purposes only.  Modifying them to create your game may result in data loss upon upgrading - instead, use the New Game Wizard to create a new set of Managers.", MessageType.Warning);
                        }

                        references.variablesManager.ShowGUI();
                    }
                }

                else if (showInvItems)
                {
                    GUILayout.Label("Inventory manager", CustomStyles.managerHeader);
                    EditorGUI.BeginChangeCheck();
                    references.inventoryManager = (InventoryManager)EditorGUILayout.ObjectField("Asset file: ", references.inventoryManager, typeof(InventoryManager), false);
                    if (EditorGUI.EndChangeCheck())
                    {
                        KickStarter.ClearManagerCache();
                    }
                    DrawManagerSpace();

                    if (!references.inventoryManager)
                    {
                        AskToCreate <InventoryManager> ("InventoryManager");
                    }
                    else
                    {
                        if (references.inventoryManager.name == "Demo_InventoryManager" || references.inventoryManager.name == "Demo2D_InventoryManager")
                        {
                            EditorGUILayout.HelpBox("The Demo Managers are for demonstration purposes only.  Modifying them to create your game may result in data loss upon upgrading - instead, use the New Game Wizard to create a new set of Managers.", MessageType.Warning);
                        }

                        references.inventoryManager.ShowGUI();
                    }
                }

                else if (showSpeech)
                {
                    GUILayout.Label("Speech manager", CustomStyles.managerHeader);
                    EditorGUI.BeginChangeCheck();
                    references.speechManager = (SpeechManager)EditorGUILayout.ObjectField("Asset file: ", references.speechManager, typeof(SpeechManager), false);
                    if (EditorGUI.EndChangeCheck())
                    {
                        KickStarter.ClearManagerCache();
                    }
                    DrawManagerSpace();

                    if (!references.speechManager)
                    {
                        AskToCreate <SpeechManager> ("SpeechManager");
                    }
                    else
                    {
                        if (references.speechManager.name == "Demo_SpeechManager" || references.speechManager.name == "Demo2D_SpeechManager")
                        {
                            EditorGUILayout.HelpBox("The Demo Managers are for demonstration purposes only.  Modifying them to create your game may result in data loss upon upgrading - instead, use the New Game Wizard to create a new set of Managers.", MessageType.Warning);
                        }

                        references.speechManager.ShowGUI();
                    }
                }

                else if (showCursor)
                {
                    GUILayout.Label("Cursor manager", CustomStyles.managerHeader);
                    EditorGUI.BeginChangeCheck();
                    references.cursorManager = (CursorManager)EditorGUILayout.ObjectField("Asset file: ", references.cursorManager, typeof(CursorManager), false);
                    if (EditorGUI.EndChangeCheck())
                    {
                        KickStarter.ClearManagerCache();
                    }
                    DrawManagerSpace();

                    if (!references.cursorManager)
                    {
                        AskToCreate <CursorManager> ("CursorManager");
                    }
                    else
                    {
                        if (references.cursorManager.name == "Demo_CursorManager" || references.cursorManager.name == "Demo2D_CursorManager")
                        {
                            EditorGUILayout.HelpBox("The Demo Managers are for demonstration purposes only.  Modifying them to create your game may result in data loss upon upgrading - instead, use the New Game Wizard to create a new set of Managers.", MessageType.Warning);
                        }

                        references.cursorManager.ShowGUI();
                    }
                }

                else if (showMenu)
                {
                    GUILayout.Label("Menu manager", CustomStyles.managerHeader);
                    EditorGUI.BeginChangeCheck();
                    references.menuManager = (MenuManager)EditorGUILayout.ObjectField("Asset file: ", references.menuManager, typeof(MenuManager), false);
                    if (EditorGUI.EndChangeCheck())
                    {
                        KickStarter.ClearManagerCache();
                    }
                    DrawManagerSpace();

                    if (!references.menuManager)
                    {
                        AskToCreate <MenuManager> ("MenuManager");
                    }
                    else
                    {
                        if (references.menuManager.name == "Demo_MenuManager" || references.menuManager.name == "Demo2D_MenuManager")
                        {
                            EditorGUILayout.HelpBox("The Demo Managers are for demonstration purposes only.  Modifying them to create your game may result in data loss upon upgrading - instead, use the New Game Wizard to create a new set of Managers.", MessageType.Warning);
                        }

                        references.menuManager.ShowGUI();
                    }
                }

                references.viewingMenuManager = showMenu;

                EditorGUILayout.Separator();
                GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1));
                GUILayout.Label("Adventure Creator - Version " + AdventureCreator.version, EditorStyles.miniLabel);

                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.CreateAsset <References> ("References", "AdventureCreator" + Path.DirectorySeparatorChar.ToString() + "Resources");
                }
            }

            if (GUI.changed)
            {
                if (showActions)
                {
                    RefreshActions();
                }

                EditorUtility.SetDirty(this);
                EditorUtility.SetDirty(references);
            }
        }
        /**
         * Assigns its various Manager asset files.
         */
        public void AssignManagers()
        {
            if (AdvGame.GetReferences() != null)
            {
                int numAssigned = 0;

                if (sceneManager)
                {
                    AdvGame.GetReferences().sceneManager = sceneManager;
                    numAssigned++;
                }

                if (settingsManager)
                {
                    AdvGame.GetReferences().settingsManager = settingsManager;
                    numAssigned++;
                }

                if (actionsManager)
                {
                    AdvGame.GetReferences().actionsManager = actionsManager;
                    numAssigned++;
                }

                if (variablesManager)
                {
                    AdvGame.GetReferences().variablesManager = variablesManager;
                    numAssigned++;
                }

                if (inventoryManager)
                {
                    AdvGame.GetReferences().inventoryManager = inventoryManager;
                    numAssigned++;
                }

                if (speechManager)
                {
                    AdvGame.GetReferences().speechManager = speechManager;
                    numAssigned++;
                }

                if (cursorManager)
                {
                    AdvGame.GetReferences().cursorManager = cursorManager;
                    numAssigned++;
                }

                if (menuManager)
                {
                    AdvGame.GetReferences().menuManager = menuManager;
                    numAssigned++;
                }

                                #if UNITY_EDITOR
                if (!Application.isPlaying)
                {
                    KickStarter.ClearManagerCache();
                }

                if (KickStarter.sceneManager)
                {
                    KickStarter.sceneManager.GetPrefabsInScene();
                }

                UnityVersionHandler.CustomSetDirty(AdvGame.GetReferences(), true);
                AssetDatabase.SaveAssets();
                                #endif

                if (this)
                {
                    if (numAssigned == 0)
                    {
                        ACDebug.Log(this.name + " No Mangers assigned.");
                    }
                    else if (numAssigned == 1)
                    {
                        ACDebug.Log(this.name + " - (" + numAssigned.ToString() + ") Manager assigned.");
                    }
                    else
                    {
                        ACDebug.Log(this.name + " - (" + numAssigned.ToString() + ") Managers assigned.");
                    }
                }
            }
            else
            {
                ACDebug.LogError("Can't assign managers - no References file found in Resources folder.");
            }
        }
Beispiel #3
0
        /**
         * Assigns its various Manager asset files.
         */
        public void AssignManagers()
        {
            if (AdvGame.GetReferences() != null)
            {
                int numAssigned = 0;

                if (sceneManager)
                {
                    AdvGame.GetReferences().sceneManager = sceneManager;
                    numAssigned++;
                }

                if (settingsManager)
                {
                    AdvGame.GetReferences().settingsManager = settingsManager;
                    numAssigned++;
                }

                if (actionsManager)
                {
                    AdvGame.GetReferences().actionsManager = actionsManager;
                    numAssigned++;
                }

                if (variablesManager)
                {
                    AdvGame.GetReferences().variablesManager = variablesManager;
                    numAssigned++;
                }

                if (inventoryManager)
                {
                    AdvGame.GetReferences().inventoryManager = inventoryManager;
                    numAssigned++;
                }

                if (speechManager)
                {
                    AdvGame.GetReferences().speechManager = speechManager;
                    numAssigned++;
                }

                if (cursorManager)
                {
                    AdvGame.GetReferences().cursorManager = cursorManager;
                    numAssigned++;
                }

                if (menuManager)
                {
                    AdvGame.GetReferences().menuManager = menuManager;
                    numAssigned++;
                }

                                #if UNITY_EDITOR
                if (!Application.isPlaying)
                {
                    KickStarter.ClearManagerCache();
                }

                if (KickStarter.sceneManager)
                {
                    KickStarter.sceneManager.GetPrefabsInScene();
                }

                UnityVersionHandler.CustomSetDirty(AdvGame.GetReferences(), true);
                AssetDatabase.SaveAssets();
                                #endif

                if (this)
                {
                    if (numAssigned == 0)
                    {
                        ACDebug.Log(this.name + " No Mangers assigned.");
                    }
                    else if (numAssigned == 1)
                    {
                        ACDebug.Log(this.name + " - (" + numAssigned.ToString() + ") Manager assigned.", this);
                    }
                    else
                    {
                        ACDebug.Log(this.name + " - (" + numAssigned.ToString() + ") Managers assigned.", this);
                    }
                }
            }
            else
            {
                                #if UNITY_EDITOR
                string intendedDirectory = Resource.MainFolderPathRelativeToAssets + System.IO.Path.DirectorySeparatorChar.ToString() + "Resources";

                bool canProceed = EditorUtility.DisplayDialog("Error - missing References", "A 'References' file must be present in the directory '" + intendedDirectory + "'. Create one?", "OK", "Cancel");
                if (!canProceed)
                {
                    return;
                }

                CustomAssetUtility.CreateAsset <References> ("References", intendedDirectory);

                if (AdvGame.GetReferences() != null)
                {
                    AssignManagers();
                }
                                #else
                ACDebug.LogError("Can't assign managers - no References file found in Resources folder.");
                                #endif
            }
        }