IEnumerator LoadScene() { var scene = SceneManager.GetSceneByName(gameplayScene); if (scene.IsValid()) { var o = SceneManager.UnloadSceneAsync(scene); yield return(o); } SceneManager.LoadScene(gameplayScene, LoadSceneMode.Additive); yield return(null); //wait until all GameObjects are initialized SceneManager.SetActiveScene(SceneManager.GetSceneByName(gameplayScene)); var gameMap = FindObjectOfType <GameMap>(); var storage = new GameSaveStorage(); var slot = storage.Read(); gameMap.CreateMap(slot.mapData); gameMap.CreateEntites(slot.entities); yield return(null); TransitionToState(gameplayState); }
private void Update() { //Save game if (Input.GetKeyDown(KeyCode.F5)) { var storage = new GameSaveStorage(); var slot = new GameSaveSlot(); var entityDatabase = FindObjectOfType <EntityDatabase>(); var mapData = gameMap.GetMapData(); var visibilityData = gameMap.GetVisibilityData(); slot.mapData = mapData; slot.visibilityData = visibilityData; slot.entities = new EntitiesData(); var entities = entityDatabase.GetAllInstances(); foreach (var entity in entities) { var entityData = entity.GetData(); slot.entities.Add(entityData); } storage.Write(slot); var log = FindObjectOfType <UI.MessageLog>(); log.AddMessage(new Actions.MessageActionResult("Game saved.")); } //Load game //if (Input.GetKeyDown(KeyCode.F6)) //{ // var storage = new GameSaveStorage(); // var slot = storage.Read(); // gameMap.CreateMap(slot.mapData); // CreateEntites(slot.entities); //} }