// 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);
        }
Exemple #2
0
    /// <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);
 }
Exemple #6
0
        //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());
            }
        }
Exemple #7
0
    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 LevelEditorSceneGUI(LevelEditorData _editor) {
		editor = _editor;
	}
Exemple #14
0
        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;
        }
 public LevelEditorWindowGUI(LevelEditorWindow ownerWindow, LevelEditorData _editor)
 {
     window = ownerWindow;
     editor = _editor;
 }