Exemplo n.º 1
0
        public static GameLevel[] GetGameLevelsBasedOnCategory(string categoryName)
        {
            GameLevelData    data       = GameLevelToolkitWindow.GetGameLevelsData();
            List <GameLevel> categories = new List <GameLevel>();

            if (categoryName == data.allCategoriesName) // Get All
            {
                for (int i = 0; i < data.gameLevelsCreatedByUser.Count; i++)
                {
                    categories.Add(data.gameLevelsCreatedByUser[i]);
                }
            }
            else // Get By Name
            {
                for (int i = 0; i < data.gameLevelsCreatedByUser.Count; i++)
                {
                    if (data.gameLevelsCreatedByUser[i].assignedCategory == categoryName)
                    {
                        categories.Add(data.gameLevelsCreatedByUser[i]);
                    }
                }
            }

            return(categories.ToArray());
        }
Exemplo n.º 2
0
        public static void CreateCategory(string targetName)
        {
            GameLevelData data = GameLevelToolkitWindow.GetGameLevelsData();

            data.allUserCreatedCategories.Add(targetName);
            EditorUtility.SetDirty(data);
        }
Exemplo n.º 3
0
        private void DuplicateLevel()
        {
            if (HasNewLocationNameAssigned() == true)
            {
                Debug.LogError("Has No New Location Name Assigned");
                return;
            }

            if (gameLevelToCreateDuplicateOf == null)
            {
                Debug.LogError("Location Required to Duplicate");
                return;
            }

            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();
            string projectPathName         = GameLevelToolkitWindow.GetProjectPathStringWithSlash();

            //Check if there is a location already existing with that name.
            GameLevel existingGameLevel = (GameLevel)AssetDatabase.LoadAssetAtPath("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + newGameLevelName + "/" + newGameLevelName + ".asset", typeof(GameLevel));

            if (existingGameLevel != null)
            {
                Debug.LogError("Location With Same Name Already Exists");
                return;
            }

            //Create the Location Resource
            GameLevel gameLevelResource = GameLevelData.CreateInstance <GameLevel>();

            AssetDatabase.CreateAsset(GameLevel.CreateInstance <GameLevel>(), "Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + "Existing " + SceneAndResourceFolderName.folderNameValue + "/" + newGameLevelName + ".asset");
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            GameLevel createdGameLevel = (GameLevel)AssetDatabase.LoadAssetAtPath("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + "Existing " + SceneAndResourceFolderName.folderNameValue + "/" + newGameLevelName + ".asset", typeof(GameLevel));

            createdGameLevel.gameLevelName           = newGameLevelName;
            createdGameLevel.assignedScenesDirectory = "Assets/" + projectPathName + "Scenes/" + SceneAndResourceFolderName.folderNameValue + "/" + newGameLevelName;
            createdGameLevel.levelDependencies       = gameLevelToCreateDuplicateOf.levelDependencies;
            createdGameLevel.assignedScenes          = gameLevelToCreateDuplicateOf.assignedScenes;
            GameLevelToolkitWindow.GetGameLevelsData().gameLevelsCreatedByUser.Add(createdGameLevel);

            //Create the Scene Directory
            string scenesFolder = AssetDatabase.CreateFolder("Assets/" + projectPathName + "Scenes/" + SceneAndResourceFolderName.folderNameValue, newGameLevelName);

            //Copy the Existing Scenes
            for (int i = 0; i < gameLevelToCreateDuplicateOf.assignedScenes.Count; i++)
            {
                string sceneToCopy = gameLevelToCreateDuplicateOf.assignedScenesDirectory + "/" + gameLevelToCreateDuplicateOf.gameLevelName + "_" + gameLevelToCreateDuplicateOf.assignedScenes[i] + ".unity";
                string destination = createdGameLevel.assignedScenesDirectory + "/" + newGameLevelName + "_" + gameLevelToCreateDuplicateOf.assignedScenes[i] + ".unity";
                FileUtil.CopyFileOrDirectory(sceneToCopy, destination);
            }

            EditorUtility.SetDirty(createdGameLevel);
            EditorUtility.SetDirty(toolkit.gameLevelsData);

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
        }
Exemplo n.º 4
0
        public static void RefreshLevelsList(out string[] levelOptionsToLoad, out int selectedValue, out GameLevel[] levels, out GameLevelData gameLevelData)
        {
            gameLevelData = GameLevelToolkitWindow.GetGameLevelsData();
            selectedValue = 0;
            levels        = gameLevelData.gameLevelsCreatedByUser.ToArray();
            List <string> levelsToString = new List <string>();

            foreach (GameLevel item in levels)
            {
                levelsToString.Add(item.gameLevelName);
            }
            levelOptionsToLoad = levelsToString.ToArray();
        }
Exemplo n.º 5
0
        public static void OpenMenu()
        {
            window = (OpenGameLevel)GetWindow(typeof(OpenGameLevel), false, "Load Game Level");
            window.gameLevelData = GameLevelToolkitWindow.GetGameLevelsData();
            window.selectedValue = 0;
            window.levels        = window.gameLevelData.gameLevelsCreatedByUser.ToArray();
            List <string> levelsToString = new List <string>();

            foreach (GameLevel item in window.levels)
            {
                levelsToString.Add(item.gameLevelName);
            }
            window.levelOptionsToLoad = levelsToString.ToArray();
        }
Exemplo n.º 6
0
        public static void OpenMenu()
        {
            window = GetWindow <AssignCategoryToLevel>("Assign Category To Level");
            window.gameLevelData = GameLevelToolkitWindow.GetGameLevelsData();
            window.selectedValue = 0;
            window.levels        = window.gameLevelData.gameLevelsCreatedByUser.ToArray();
            List <string> levelsToString = new List <string>();

            foreach (GameLevel item in window.levels)
            {
                levelsToString.Add(item.gameLevelName);
            }
            window.levelOptionsToLoad = levelsToString.ToArray();
        }
Exemplo n.º 7
0
        public static void RenameCategory(string categoryOriginalName, string targetCategoryName)
        {
            //Get All Levels that Have this category and rename it there too
            GameLevel[] levels = GetGameLevelsBasedOnCategory(categoryOriginalName);
            RenameGameLevelsCategory(levels, targetCategoryName);

            GameLevelData data = GameLevelToolkitWindow.GetGameLevelsData();

            for (int i = 0; i < data.allUserCreatedCategories.Count; i++)
            {
                if (data.allUserCreatedCategories[i] == categoryOriginalName)
                {
                    data.allUserCreatedCategories[i] = targetCategoryName;
                    break;
                }
            }
            EditorUtility.SetDirty(data);
        }
Exemplo n.º 8
0
        public static void DeleteExistingCategory(string targetCategory)
        {
            GameLevelData data = GameLevelToolkitWindow.GetGameLevelsData();

            //Get All Levels that have this category and assign them to unassigned
            GameLevel[] levels = GetGameLevelsBasedOnCategory(targetCategory);
            RenameGameLevelsCategory(levels, data.unassignedCategoryName);

            //Remove The Item From The data list
            for (int i = 0; i < data.allUserCreatedCategories.Count; i++)
            {
                if (data.allUserCreatedCategories[i] == targetCategory)
                {
                    data.allUserCreatedCategories.RemoveAt(i);
                    break;
                }
            }

            EditorUtility.SetDirty(data);
        }
Exemplo n.º 9
0
        public static string[] GetAllCategories(bool includeAllType, bool includeUnassigned = true)
        {
            GameLevelData data       = GameLevelToolkitWindow.GetGameLevelsData();
            List <string> categories = new List <string>();

            if (includeAllType == true)
            {
                categories.Add(data.allCategoriesName);
            }
            if (includeUnassigned == true)
            {
                categories.Add(data.unassignedCategoryName);
            }
            if (data.allUserCreatedCategories.Count > 0)
            {
                for (int i = 0; i < data.allUserCreatedCategories.Count; i++)
                {
                    categories.Add(data.allUserCreatedCategories[i]);
                }
            }
            return(categories.ToArray());
        }
 public static void OpenMenu()
 {
     window = (CreateNewGameLevelMenu)GetWindow(typeof(CreateNewGameLevelMenu), false, "Create New Level");
     window.gameLevelData = GameLevelToolkitWindow.GetGameLevelsData();
 }
        private void CreateLevel()
        {
            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();
            string projectPathName         = GameLevelToolkitWindow.GetProjectPathStringWithSlash();

            //Check If the Location Already Exists
            GameLevel existingLocation = (GameLevel)AssetDatabase.LoadAssetAtPath("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + gameLevelName + "/" + gameLevelName + ".asset", typeof(GameLevel));

            if (existingLocation != null)
            {
                Debug.LogError("Level With Same Name Already Exists");
                return;
            }

            //First We Will need to make sure we have all the required data before proceeding
            if (gameLevelName == null || gameLevelName == "")
            {
                Debug.LogError("Level Name Cannot Be Empty");
                return;
            }

            //Check If Any Scene Names are empty
            for (int i = 0; i < scenesToCreateInGameLevel.Count; i++)
            {
                if (scenesToCreateInGameLevel[i].VerifySceneNameIsNotEmpty() == true)
                {
                    Debug.LogError("Scene Name Cannot Be Empty");
                    return;
                }
            }

            for (int i = 0; i < scenesToCreateInGameLevel.Count; i++)
            {
                string sceneDirectory = gameLevelName;
                CreateScene.CreateEmptyScene(gameLevelName + "_" + scenesToCreateInGameLevel[i].sceneName, sceneDirectory);
            }

            //Create the Location Resources
            string resourceFolder = AssetDatabase.CreateFolder("Assets/" + projectPathName + "Resources/Locations", gameLevelName);
            string newFolderPath  = AssetDatabase.GUIDToAssetPath(resourceFolder);

            //Check Does FolderExist To Place Resource File Inside
            if (!Directory.Exists("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/Existing " + SceneAndResourceFolderName.folderNameValue))
            {
                AssetDatabase.CreateFolder("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue, "Existing " + SceneAndResourceFolderName.folderNameValue);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }

            GameLevel gameLevelResource = GameLevelData.CreateInstance <GameLevel>();

            AssetDatabase.CreateAsset(GameLevel.CreateInstance <GameLevel>(), "Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/Existing " + SceneAndResourceFolderName.folderNameValue + "/" + gameLevelName + ".asset");
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();


            GameLevel createdGameLevel = (GameLevel)AssetDatabase.LoadAssetAtPath("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/Existing " + SceneAndResourceFolderName.folderNameValue + "/" + gameLevelName + ".asset", typeof(GameLevel));

            createdGameLevel.gameLevelName           = gameLevelName;
            createdGameLevel.assignedScenesDirectory = "Assets/" + projectPathName + "Scenes/" + SceneAndResourceFolderName.folderNameValue + "/" + gameLevelName;
            createdGameLevel.assignedCategory        = categories[selectedCategoryValue];
            GameLevelToolkitWindow.GetGameLevelsData().gameLevelsCreatedByUser.Add(createdGameLevel);
            EditorUtility.SetDirty(createdGameLevel);

            for (int i = 0; i < scenesToCreateInGameLevel.Count; i++)
            {
                createdGameLevel.assignedScenes.Add(scenesToCreateInGameLevel[i].sceneName);
            }

            for (int i = 0; i < gameLevelDependencies.Count; i++)
            {
                createdGameLevel.levelDependencies.Add(gameLevelDependencies[i]);
            }
            EditorUtility.SetDirty(toolkit.gameLevelsData);

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();

            OpenGameLevel.OpenLevel(createdGameLevel, true, false, true);

            if (addLevelToUnityBuildScenes == true)
            {
                BuildSettingsSceneManagement.AddLevelToBuild(createdGameLevel);
            }
        }
        private void AddSceneToLocation()
        {
            string projectPathName = GameLevelToolkitWindow.GetProjectPathStringWithSlash();

            if (targetGameLevel == null)
            {
                Debug.LogError("Target Location Is Required");
                return;
            }

            string originalScenePath = null;

            if (useRootDirectory == true)
            {
                originalScenePath = "Assets/" + targetSceneFolderPath + ".unity";
            }
            else
            {
                originalScenePath = "Assets/" + projectPathName + "Scenes/" + targetSceneFolderPath + "/" + targetSceneName + ".unity";
            }

            //Check to See If the scene belongs to an existing location
            bool          sceneExistsInAGameLevel         = false;
            string        sceneNameWithoutGameLevelPrefix = null;
            GameLevelData gameLevelData = GameLevelToolkitWindow.GetGameLevelsData();

            for (int i = 0; i < gameLevelData.gameLevelsCreatedByUser.Count; i++)
            {
                for (int g = 0; g < gameLevelData.gameLevelsCreatedByUser[i].assignedScenes.Count; g++)
                {
                    string assignedSceneName = gameLevelData.gameLevelsCreatedByUser[i].gameLevelName + "_" + gameLevelData.gameLevelsCreatedByUser[i].assignedScenes[g];

                    if (assignedSceneName == targetSceneName)
                    {
                        sceneNameWithoutGameLevelPrefix = gameLevelData.gameLevelsCreatedByUser[i].assignedScenes[g];
                        //Remove this scene from its location that it is apart of
                        gameLevelData.gameLevelsCreatedByUser[i].assignedScenes.Remove(targetSceneName);
                        sceneExistsInAGameLevel = true;
                    }
                }
            }

            //Rename the scene based on the location naming convention
            string targetGameLevelPrefix = targetGameLevel.gameLevelName;
            string finalSceneName        = null;

            if (sceneExistsInAGameLevel == true)
            {
                finalSceneName = targetGameLevelPrefix + "_" + sceneNameWithoutGameLevelPrefix + ".unity";
                targetGameLevel.assignedScenes.Add(finalSceneName);
            }
            else
            {
                finalSceneName = targetGameLevelPrefix + "_" + targetSceneName + ".unity";
                targetGameLevel.assignedScenes.Add(targetSceneName);
            }

            AssetDatabase.RenameAsset(originalScenePath, finalSceneName);
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();

            //Move the scene to the correct Directory
            string adjustedDirectoryToMoveSceneFrom = "Assets/" + projectPathName + targetSceneFolderPath + "/" + targetSceneName + ".unity";
            string directoryToMoveSceneTo           = targetGameLevel.assignedScenesDirectory + "/" + finalSceneName;

            FileUtil.MoveFileOrDirectory(adjustedDirectoryToMoveSceneFrom, directoryToMoveSceneTo);
            EditorUtility.SetDirty(targetGameLevel);
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
        }