void SavePlayerDataInCurrentRun(PlayableCharacterScript player, CurrentRunData run) { // Remember player stats since player object is destroyed when loading next level run.CurrentWeapon = player?.CurrentWeapon?.Id ?? WeaponIds.Rifle; run.MaxLife = player.MaxLife; run.Life = player.Life; }
void AdvanceCurrentRun(CurrentRunData run, PlayableCharacterScript player) { // Advance progress. if (run.SpecialLocation == SpecialLocation.BossWorld1) { // World1 complete, move to world 2 (but first a visit to the shop) run.FloorInWorld = 1; run.World = World.World2; run.SpecialLocation = SpecialLocation.Shop; run.ShopKeeperPokeCount = 0; // Start over poke count when changing world } else if (run.SpecialLocation == SpecialLocation.Shop) { run.SpecialLocation = SpecialLocation.None; } else if (run.World == World.World2 && run.FloorInWorld > 1) { run.FloorInWorld = 1; run.World = World.World3; run.SpecialLocation = SpecialLocation.Shop; run.ShopKeeperPokeCount = 0; } else if (run.SpecialLocation == SpecialLocation.None) { // Just completed a standard floor. run.FloorInWorld++; run.TotalFloor++; run.SpecialLocation = SpecialLocation.Shop; } else { run.SpecialLocation = SpecialLocation.None; } }
void StartGame() { var stringPath = HumanPlayerController.TrackedPath.AsString(); PlayerPrefs.SetString("LatestCampPath", stringPath); PlayerPrefs.Save(); // Init the run data var player = PlayableCharacters.GetPlayerInScene(); CurrentRunData.StartNewRun(); CurrentRunData.Instance.MaxLife = player.MaxLife; CurrentRunData.Instance.Life = player.Life; CurrentRunData.Instance.CurrentWeapon = player.CurrentWeapon.Id; CurrentRunData.Instance.BulletAmmo = 999; CurrentRunData.Instance.ShellAmmo = 999; CurrentRunData.Instance.StartingCharacterTag = player.tag; CurrentRunData.Instance.HasPlayerData = true; GameProgressData.CurrentProgress.QuestProgress.ApplyAllRewards(); CurrentRunData.StoreState(); HumanPlayerController.CanShoot = true; SceneManager.LoadScene(EnterPortalSceneName, LoadSceneMode.Single); }
void CreatePlayer(Vector3 position) { string characterTag = CurrentRunData.Instance.StartingCharacterTag; var player = PlayableCharacters.Instance.InstantiateCharacter(characterTag, position); player.transform.SetParent(DynamicObjectRoot); playerScript_ = player.GetComponent <PlayableCharacterScript>(); if (!CurrentRunData.Instance.HasPlayerData) { // Initialize current run if game is started directly from this scene, and not from camp CurrentRunData.StartNewRun(); SavePlayerDataInCurrentRun(playerScript_, CurrentRunData.Instance); CurrentRunData.Instance.HasPlayerData = true; CurrentRunData.StoreState(); } else { InitializePlayerWithCurrentRunData(playerScript_, CurrentRunData.Instance); } }
void InitializePlayerWithCurrentRunData(PlayableCharacterScript player, CurrentRunData run) { player.EquipWeapon(run.CurrentWeapon); player.MaxLife = run.MaxLife; player.Life = run.Life; }
public static void RestoreState() { Instance = JsonUtility.FromJson <CurrentRunData>(state); }
public static void Clear() { Instance = new CurrentRunData(); }