// Load the next level (extract the file) IEnumerator LoadLevel() { _KUBRotation.instance.ResetRotation(); if (_lockRotate) { UIManager.instance.TurnOffRotate(); } else { UIManager.instance.TurnOnRotate(); } string json = _levelFile.ToString(); LevelEditorData levelData = JsonUtility.FromJson <LevelEditorData>(json); SaveAndLoad.instance.finishedBuilding = false; SaveAndLoad.instance.ExtractAndRebuildLevel(levelData); while (!SaveAndLoad.instance.finishedBuilding) { yield return(null); } // once the level is loaded VictoryConditionManager.instance.CheckVictoryCubes(); _DataManager.instance.GameSet(); _MaterialCentral.instance.MaterialSet(); _MaterialCentral.instance.ChangeUniverse(_levelBiome); yield return(null); }
/// <summary> /// Unity event. Initialization point of this window. /// </summary> void OnEnable() { // Init editor data model. if (editor == null) { editor = new LevelEditorData(); } if (!editor.Init()) { // return; } // Init scene GUI renderer if (sceneGUI == null) { sceneGUI = new LevelEditorSceneGUI(editor); } sceneGUI.Init(); // Init window GUI renderer. if (windowGUI == null) { windowGUI = new LevelEditorWindowGUI(this, editor); } windowGUI.Init(); // Register the scene view GUI renderer SceneView.onSceneGUIDelegate += OnSceneGUI; }
/// <summary> /// Unity event. Initialization point of this window. /// </summary> void OnEnable() { // Init editor data model. if (editor == null) { editor = new LevelEditorData(); } if ( !editor.Init() ) { // return; } // Init scene GUI renderer if (sceneGUI == null) { sceneGUI = new LevelEditorSceneGUI(editor); } sceneGUI.Init(); // Init window GUI renderer. if (windowGUI == null) { windowGUI = new LevelEditorWindowGUI(this, editor); } windowGUI.Init(); // Register the scene view GUI renderer SceneView.onSceneGUIDelegate += OnSceneGUI; }
public void LoadLevelFromGenericMenu(string path) { if (File.Exists(path)) { objectsInSceneToLoad = FindObjectsOfType <Grid_Object>(); foreach (Grid_Object obj in objectsInSceneToLoad) { Destroy(obj.gameObject); } string json = File.ReadAllText(path); levelData = JsonUtility.FromJson <LevelEditorData>(json); _LoaderQueuer.instance.ExtractLevel(levelData); if (_LoaderQueuer.isInEditor) { levelMessage.text = "Level loading...done."; } } levelData.savedObjectsData.Clear(); levelData.savedEnvironmentData.Clear(); currentLevelPath = path; }
//returns a LevelEditorData class (IS NOT A CONSTRUCTOR) private LevelEditorData CreateEditor() { levelData = new LevelEditorData(); levelData.savedObjectsData = new List <ObjectData>(); levelData.savedEnvironmentData = new List <DecorData>(); return(levelData); }
//Peek at first file in the Queue and get its properties public void GetNextLevelInfo() { levelIsLoaded = false; if (testLevel != null) { _gridSize = new Vector3Int(4, 4, 4); extractedLevelFile = JsonUtility.FromJson <LevelEditorData>(testLevel.ToString()); } else { //get level world and level number _levelIndex = masterLevelQueue.Peek().levelIndex; _levelName = masterLevelQueue.Peek().levelName; _hasRotate = !masterLevelQueue.Peek().noRotate; _minimalMoves = masterLevelQueue.Peek().minimalMoves; if (_levelIndex.Contains("Worl1")) { _levelWorld = GameWorlds.plains; } if (_levelIndex.Contains("Worl2")) { _levelWorld = GameWorlds.mountains; } if (_levelIndex.Contains("Worl3")) { _levelWorld = GameWorlds.underwater; } if (_levelIndex.Contains("Worl4")) { _levelWorld = GameWorlds.ruins; } if (_levelIndex.Contains("Worl5")) { _levelWorld = GameWorlds.temple; } if (_levelIndex.Contains("Worl6")) { _levelWorld = GameWorlds.statues; } if (_levelIndex.Contains("Worl7")) { _levelWorld = GameWorlds.chaos; } _gridSize = masterLevelQueue.Peek().gridSize; _jsonFile = masterLevelQueue.Peek().jsonFile; extractedLevelFile = JsonUtility.FromJson <LevelEditorData>(_jsonFile.ToString()); } }
private async UniTask BatchRandomizeAsync() { try { // Get the settings var settings = Settings.GetGameSettings; // Init await LevelEditorData.InitAsync(settings); // Get the manager var manager = Settings.GetGameManager; // Get the flags var flag = RandomizerFlags; // Enumerate every world foreach (var world in manager.GetLevels(settings).First().Worlds) { // Set the world settings.World = world.Index; // Enumerate every level foreach (var lvl in world.Maps) { // Set the level settings.Level = lvl; // Create the context var context = new Context(settings); // Load the files await manager.LoadFilesAsync(context); // Load the level var level = await manager.LoadAsync(context, true); // Randomize (only first map for now) Randomizer.Randomize(level, flag, world.Index + lvl + RandomizerSeed, 0); // Save the level await manager.SaveLevelAsync(context, level); } } } catch (Exception ex) { Debug.LogError(ex); } }
public void LoadLevelFromUI() { string folder = Application.dataPath + "/Scenes/_LevelsFolder"; string levelFile = levelLoadDropdown.captionText.text + ".json"; foreach (Object obj in savedLevels) { if (obj.name == levelLoadDropdown.captionText.text) { selectedLevelToLoad = obj; break; } } string path = Path.Combine(folder, levelFile); //AssetDatabase.GetAssetPath(selectedLevelToLoad); if (File.Exists(path)) { objectsInSceneToLoad = FindObjectsOfType <Grid_Object>(); foreach (Grid_Object obj in objectsInSceneToLoad) { Destroy(obj.gameObject); } string json = File.ReadAllText(path); levelData = JsonUtility.FromJson <LevelEditorData>(json); _LoaderQueuer.instance.ExtractLevel(levelData); if (_LoaderQueuer.isInEditor) { levelMessage.text = "Level loading...done."; } } else { levelMessage.text = levelFile + " could not be found!"; } levelData.savedObjectsData.Clear(); levelData.savedEnvironmentData.Clear(); currentLevelPath = path; }
public void GenerateBaseGrid() { switch (levelSetup) { case LevelSetup.none: string emptyGridJson = prefabLevels.Find(item => item.name.Contains("Empty")).ToString(); LevelEditorData emptyGrid = JsonUtility.FromJson <LevelEditorData>(emptyGridJson); SaveAndLoad.instance.ExtractAndRebuildLevel(emptyGrid); break; case LevelSetup.baseGrid: string baseGridJson = prefabLevels.Find(item => item.name.Contains("Base")).ToString(); LevelEditorData baseGrid = JsonUtility.FromJson <LevelEditorData>(baseGridJson); SaveAndLoad.instance.ExtractAndRebuildLevel(baseGrid); break; case LevelSetup.plane: string planeJson = prefabLevels.Find(item => item.name.Contains("Plane")).ToString(); LevelEditorData planeData = JsonUtility.FromJson <LevelEditorData>(planeJson); SaveAndLoad.instance.ExtractAndRebuildLevel(planeData); break; case LevelSetup.rightDoublePlane: string rightJson = prefabLevels.Find(item => item.name.Contains("Right")).ToString(); LevelEditorData rightData = JsonUtility.FromJson <LevelEditorData>(rightJson); SaveAndLoad.instance.ExtractAndRebuildLevel(rightData); break; case LevelSetup.leftDoublePlane: string leftJson = prefabLevels.Find(item => item.name.Contains("Left")).ToString(); LevelEditorData leftData = JsonUtility.FromJson <LevelEditorData>(leftJson); SaveAndLoad.instance.ExtractAndRebuildLevel(leftData); break; default: break; } }
public void GenerateBaseLevel(string levelName) { string folder = Application.dataPath + "/Scenes/_LevelsFolder/00_BASE LEVELS"; string levelFile = levelName + ".json"; string path = Path.Combine(folder, levelFile); if (File.Exists(path)) { objectsInSceneToLoad = FindObjectsOfType <Grid_Object>(); foreach (Grid_Object obj in objectsInSceneToLoad) { Destroy(obj.gameObject); } string json = File.ReadAllText(path); levelData = JsonUtility.FromJson <LevelEditorData>(json); _LoaderQueuer.instance.ExtractLevel(levelData); if (_LoaderQueuer.isInEditor) { levelMessage.text = "Level loading...done."; } } else { levelMessage.text = levelFile + " could not find BaseLevel !"; } levelData.savedObjectsData.Clear(); levelData.savedEnvironmentData.Clear(); currentLevelPath = path; }
public LevelEditorWindowGUI(LevelEditorWindow ownerWindow, LevelEditorData _editor) { window = ownerWindow; editor = _editor; }
public LevelEditorSceneGUI(LevelEditorData _editor) { editor = _editor; }
public void ExtractLevel(LevelEditorData receivedLevelData) { //foreach object in saveObjectData //create a new ObjectData bin to assign values to; //get the cubeType data //get the world position data //get the nodePOs data //create a new Cube from prefab //Get the cube's EditorObject Component //set the component's values to match the recovered data //Get the new nodes in the world //get the worldPosition of each of their ndoes //set cube worldPosition to its corresponding Node_Object worldPosition GameObject newCube; GameObject newDecor; if (isInEditor) { _LevelEditor.instance.inSceneGameObjects.Clear(); } foreach (DecorData recoveredDecorFromSave in receivedLevelData.savedEnvironmentData) { newDecor = Instantiate(decorPrefab, Vector3.zero, Quaternion.identity); newDecor.transform.parent = _Grid.instance.gameObject.transform.GetChild(0).GetChild(2); newDecor.transform.localPosition = recoveredDecorFromSave.localPosition; newDecor.transform.localRotation = recoveredDecorFromSave.localRotation; //get the new cube's Object Data and create a reference to it DecorData newDecorData = newDecor.GetComponent <_DecorObject>().decorData; //assign the new Cube's data to match the recovered cube's newDecorData = recoveredDecorFromSave; } foreach (ObjectData recoveredDataFromSave in receivedLevelData.savedObjectsData) { //create a new empty cube newCube = Instantiate(cubePrefab, Vector3.zero, Quaternion.identity); //get the new cube's Object Data and create a reference to it ObjectData newCubeData = newCube.GetComponent <Grid_Object>().cubeData; //assign the new Cube's data to match the recovered cube's newCubeData = recoveredDataFromSave; //assign the cube's parent in the hiearchy newCube.transform.parent = _Grid.instance.gameObject.transform.GetChild(0).transform.GetChild(1).transform; //add the newly created cube to a list of existing cubes if (isInEditor) { _LevelEditor.instance.inSceneGameObjects.Add(newCube); } for (int i = 0; i < _Grid.instance.onPlayNodePosList.Count; i++) { Grid_Node newNodeObjects = _Grid.instance.onPlayNodePosList[i].GetComponent <Grid_Node>(); if (newCubeData.gridPositionX >= _Grid.instance.gridSize.x || newCubeData.gridPositionY >= _Grid.instance.gridSize.y || newCubeData.gridPositionZ >= _Grid.instance.gridSize.z) { Destroy(newCube); } else if (newNodeObjects.posX == newCubeData.gridPositionX && newNodeObjects.posY == newCubeData.gridPositionY && newNodeObjects.posZ == newCubeData.gridPositionZ) { newCube.SendMessage("ReceiveData", recoveredDataFromSave); if (isInEditor) { Node nodeToPlace = _Grid.instance.grid[(int)newCubeData.gridPositionX, (int)newCubeData.gridPositionY, (int)newCubeData.gridPositionZ]; nodeToPlace.cubeOnNodePos = newCube.GetComponent <Grid_Object>(); } newCube.transform.position = _Grid.instance.onPlayNodePosList[i].transform.position; newCubeData.worldPosition = newCube.transform.position; newCube.transform.GetChild(0).rotation = newCubeData.worldRotation; } } } receivedLevelData.savedObjectsData.Clear(); receivedLevelData.savedEnvironmentData.Clear(); levelIsLoaded = true; }