public static void LoadLevel(int index) { GetObject.ClearReferences(); Time.timeScale = 1; SceneManager.LoadScene(index); GameMaster.GamePaused = false; }
public static void LoadLevel(string name) { GetObject.ClearReferences(); Time.timeScale = 1; RPG.LoadLevel(name, false); GameMaster.GamePaused = false; }
public bool Load(string savePathOrPPrefKey) { GetObject.ClearReferences(); #if (!UNITY_IOS && !UNITY_ANDROID) if (!File.Exists(savePathOrPPrefKey)) { return(false); } Debug.Log("SavePath: " + savePathOrPPrefKey); var fileLoad = File.ReadAllText(savePathOrPPrefKey); var jsonFromEncode = fileLoad; if (encryptFiles) { jsonFromEncode = new Xor().Decrypt(fileLoad, GameDataSaveLoadManager.Instance.EncryptKey); } #else var jsonFromEncode = PlayerPrefs.GetString(savePathOrPPrefKey, ""); #endif if (string.IsNullOrEmpty(jsonFromEncode)) { return(false); } var loadedPlayerSave = JsonConvert.DeserializeObject <PlayerSave>(jsonFromEncode, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects, TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple, ObjectCreationHandling = ObjectCreationHandling.Replace }); var loadedScene = SceneManager.GetActiveScene().name; if (loadedScene != loadedPlayerSave.CurrentScene) { RPG.LoadLevel(loadedPlayerSave.CurrentScene, false); } //todo: check this var classDef = Rm_RPGHandler.Instance.Player.CharacterDefinitions.FirstOrDefault(c => c.ID == loadedPlayerSave.Character.PlayerCharacterID); if (classDef == null) { Debug.Log("Class not found for character you're trying to load. Try creating a new character."); return(false); } var className = classDef.Name; var gameObject = Resources.Load(classDef.ClassPrefabPath) as GameObject; var spawnTransform = GetObject.SpawnPositionTransform; var spawnPosition = spawnTransform.transform.position; if (!string.IsNullOrEmpty(loadedPlayerSave.WorldMap.CurrentLocationID)) { var location = Rm_RPGHandler.Instance.Customise.WorldMapLocations.First(w => w.ID == loadedPlayerSave.WorldMap.CurrentWorldAreaID). Locations.First(l => l.ID == loadedPlayerSave.WorldMap.CurrentLocationID); if (location.UseCustomLocation) { spawnPosition = location.CustomSpawnLocation; } } if (spawnTransform != null) { //Spawn Player Object.Instantiate(gameObject, spawnPosition, GetObject.SpawnPositionTransform.rotation); GetObject.RPGCamera.transform.position = spawnPosition - (GetObject.SpawnPositionTransform.forward * 2); } else { Debug.LogError("[RPGAIO] Did not find spawn position. This is required to spawn the player."); } GetObject.ClearReferences(); var playerMono = GetObject.PlayerMono; playerMono.SetPlayerSave(loadedPlayerSave); #if (!UNITY_IOS && !UNITY_ANDROID) //Todo: allow savables for mobile //Debug.Log("Loading savables"); LoadSavableGameObjects(savePathOrPPrefKey); #endif //Debug.Log("Loaded file with ID " + loadedPlayerSave.SaveID); UserSaveLoadManager.Instance.LoadUserData(); TimeLastSaved = Time.time; return(true); }
//todo: check scene exists public static bool LoadLevel(string name, bool updatePlayerLevel, bool saveGame = true, WorldArea worldArea = null, Location location = null, bool forceReload = false) { //check we can load //if we can load then: if (updatePlayerLevel && GetObject.PlayerSave != null) { GetObject.PlayerSave.CurrentScene = name; if (worldArea != null) { GetObject.PlayerSave.WorldMap.CurrentWorldAreaID = worldArea.ID; } if (location != null) { GetObject.PlayerSave.WorldMap.CurrentLocationID = location.ID; } } if (location != null) { GetObject.PlayerSave.WorldMap.AddVisitedLocation(location.ID); } if (saveGame) { PlayerSaveLoadManager.Instance.SaveGame(); } GetObject.ClearReferences(); Time.timeScale = 1; var loadedPlayerSave = GetObject.PlayerSave; var saveToLoad = PlayerSaveLoadManager.Instance.RecentSave(); var loadedScene = SceneManager.GetActiveScene().name; if (forceReload || loadedScene != name || (loadedPlayerSave == null || loadedPlayerSave.SaveID != saveToLoad.SaveID)) //check it's the same save { SceneManager.LoadScene(name); return(true); } else { var spawnPosition = GetObject.SpawnPositionTransform.transform.position; var playerSave = GetObject.PlayerSave; if (!string.IsNullOrEmpty(playerSave.WorldMap.CurrentLocationID)) { var newlocation = Rm_RPGHandler.Instance.Customise.WorldMapLocations.First(w => w.ID == playerSave.WorldMap.CurrentWorldAreaID). Locations.First(l => l.ID == playerSave.WorldMap.CurrentLocationID); if (newlocation.UseCustomLocation) { spawnPosition = location.CustomSpawnLocation; } } GetObject.PlayerController.Resume(); GetObject.PlayerMonoGameObject.transform.position = spawnPosition; } return(false); }