public void SetDetails(string levelname) { LevelName = levelname; var state = new LevelStatusSaveState(); state.LevelName = levelname; state.Load(); IsLocked = state.IsLocked; IsLocked = false; var flag = false; for (var i = 1; i <= SeasonManager.NumberOfLevelsInSeasons.Count; i++) { for (var j = 1; j <= SeasonManager.NumberOfLevelsInSeasons[i - 1]; j++) { if (LevelName == string.Format("level_{0}_{1}_{2}", i.ToString(), j.ToString(), "L")) { flag = true; break; } } if (flag) { break; } } Status.text = IsLocked ? "LOCKED" : LevelName; }
public void Load() { SaveState levelState = new SaveState(); LevelStatusSaveState levelStatusState = new LevelStatusSaveState(); SaveManager sm = new SaveManager(); levelState = sm.Load(LevelName.text); levelStatusState.LevelName = LevelName.text; levelStatusState.Load(); if (levelStatusState.IsLocked) { Locked.text = "T"; } else { Locked.text = "F"; } MaxTime.text = levelState.MaxTime.ToString(); MaxTries.text = levelState.MaxTries.ToString(); Coins.text = levelState.Coins.ToString(); Diamonds.text = levelState.Diamonds.ToString(); BestTime.text = levelStatusState.BestTime.ToString(); BestTries.text = levelStatusState.BestTries.ToString(); Stars.text = levelStatusState.Stars.ToString(); }
public void Save() { SaveState levelState = new SaveState(); LevelStatusSaveState levelStatusState = new LevelStatusSaveState(); SaveManager sm = new SaveManager(); levelStatusState.LevelName = LevelName.text; levelState = sm.Load(LevelName.text); levelState.MaxTime = int.Parse(MaxTime.text); levelState.MaxTries = int.Parse(MaxTries.text); levelState.Coins = int.Parse(Coins.text); levelState.Diamonds = int.Parse(Diamonds.text); levelStatusState.Stars = int.Parse(Stars.text); levelStatusState.BestTime = int.Parse(BestTime.text); levelStatusState.BestTries = int.Parse(BestTries.text); if (Locked.text == "T" || Locked.text == "t") { levelStatusState.IsLocked = true; } else { levelStatusState.IsLocked = false; } levelStatusState.Save(); sm.Save(levelState, LevelName.text); Load(); }
public void Save() { string directory; if (LevelName.Split('_')[3] == "s") { directory = Application.persistentDataPath + "/" + LevelName; } else { directory = Application.streamingAssetsPath + "/" + LevelName; } var jsonString = JsonUtility.ToJson(this); var fullPath = directory; try { if (!File.Exists(fullPath)) { Debug.Log("creating file"); LevelStatusSaveState state = new LevelStatusSaveState { LevelName = LevelName, IsLocked = false, IndexOfCoinsCollected = new List <int>(), IndexOfDiamondsCollected = new List <int>(), BestTime = 0, BestTries = 0, }; var file = File.CreateText(fullPath); jsonString = JsonUtility.ToJson(state); file.WriteLine(jsonString); file.Close(); } else { Debug.Log("file exists in " + fullPath); File.WriteAllText(fullPath, jsonString); } } catch (Exception e) { Debug.Log(e); } }
void Start() { SeasonManager.NumberOfLevelsInSeasons = NumberOfLevelsInSeasons; for (int i = 1; i <= NumberOfLevelsInSeasons.Count; i++) { for (int j = 1; j <= NumberOfLevelsInSeasons[i - 1]; j++) { string filename = string.Format("level_{0}_{1}_{2}", i.ToString(), j.ToString(), "s"); string directory; if (filename.Split('_')[3] == "s") { directory = Application.persistentDataPath + "/" + filename; } else { directory = Application.streamingAssetsPath + "/" + filename; } if (!File.Exists(directory)) { Debug.Log("creating file"); LevelStatusSaveState state = new LevelStatusSaveState { LevelName = filename, IsLocked = false, IndexOfCoinsCollected = new List <int>(), IndexOfDiamondsCollected = new List <int>(), BestTime = 0, BestTries = 0, }; var file = File.CreateText(directory); var jsonString = JsonUtility.ToJson(state); file.WriteLine(jsonString); file.Close(); } } } if (PlayerPrefs.GetInt("levelIndex") == 0) { PlayerPrefs.SetInt("levelIndex", 1); } }
public static void GameWon() { Debug.Log("won the game"); SaveManager sm = new SaveManager(); LevelStatusSaveState state = new LevelStatusSaveState(); state.LevelName = string.Format("level_{0}_{1}_" + "s", CurrentLevel.Split('_')[1], (int.Parse(CurrentLevel.Split('_')[2])).ToString()); state.Load(); Player.NoOfMoves = IndexOfCoinsCollected.Count; state.IndexOfCoinsCollected = state.IndexOfCoinsCollected.Union(IndexOfCoinsCollected).ToList(); state.IndexOfDiamondsCollected = state.IndexOfDiamondsCollected.Union(IndexOfDiamondsCollected).ToList(); state.Save(); if (LevelManager.NextLevelPresent) { state.LevelName = string.Format("level_{0}_{1}_" + "s", CurrentLevel.Split('_')[1], (int.Parse(CurrentLevel.Split('_')[2]) + 1).ToString()); state.Load(); state.IsLocked = false; state.Save(); } IsGameWon = true; IsPlaying = false; }
} // Use this for initialization public void SetCardDetails(int cardIndex) { SeasonIndex = cardIndex; NumberOfLevels = SeasonManager.NumberOfLevelsInSeasons[cardIndex - 1]; NumberOfLevelsText.text = string.Format("{0} LEVELS", NumberOfLevels.ToString()); SeasonNameText.text = string.Format("SEASON {0}", SeasonIndex.ToString()); for (int i = 1; i <= NumberOfLevels; i++) { LevelStatusSaveState state = new LevelStatusSaveState { LevelName = string.Format("level_{0}_{1}_{2}", cardIndex.ToString(), i.ToString(), "s") }; Debug.Log(state.LevelName); state.Load(); DiamondsCollected += state.IndexOfDiamondsCollected.Count; CoinsCollected += state.IndexOfCoinsCollected.Count; } CoinsCollectedText.text = string.Format("{0} COINS", CoinsCollected.ToString()); DiamondsCollectedText.text = string.Format("{0} DIAMONDS", DiamondsCollected.ToString()); }
public void Save() //saving each node to the file { nodes = new List <Node>(); int numberOfCoins = 0; int numberOfDiamonds = 0; for (int i = 0; i < noOfParts; i++) { Node tempNode = new Node(); switch (PartsTypes[i]) { case (PrefabType.Part01): tempNode.Type = PrefabType.Part01; tempNode.transform = Parts[i].transform; break; case (PrefabType.Part02): tempNode.Type = PrefabType.Part02; tempNode.transform = Parts[i].transform; break; case (PrefabType.Part03): tempNode.Type = PrefabType.Part03; tempNode.transform = Parts[i].transform; break; case (PrefabType.Part04): tempNode.Type = PrefabType.Part04; tempNode.transform = Parts[i].transform; break; case (PrefabType.Part05): tempNode.Type = PrefabType.Part05; tempNode.transform = Parts[i].transform; break; case PrefabType.Start: tempNode.Type = PrefabType.Start; tempNode.transform = Parts[i].transform; break; case PrefabType.End: tempNode.Type = PrefabType.End; tempNode.transform = Parts[i].transform; break; case PrefabType.KeyWall: tempNode.Type = PrefabType.KeyWall; tempNode.transform = Parts[i].transform; break; case PrefabType.Coins: numberOfCoins++; tempNode.Type = PrefabType.Coins; tempNode.transform = Parts[i].transform; break; case PrefabType.Spike: tempNode.Type = PrefabType.Spike; tempNode.transform = Parts[i].transform; break; case PrefabType.KeyPortal: break; case PrefabType.CheckPoint: tempNode.Type = PrefabType.CheckPoint; tempNode.transform = Parts[i].transform; break; case PrefabType.Guardian: tempNode.Type = PrefabType.Guardian; tempNode.transform = Parts[i].transform; break; case PrefabType.Hammer: tempNode.Type = PrefabType.Hammer; tempNode.transform = Parts[i].transform; break; case PrefabType.Goliath: tempNode.Type = PrefabType.Goliath; tempNode.transform = Parts[i].transform; break; case PrefabType.GoliathWalk: tempNode.Type = PrefabType.GoliathWalk; tempNode.transform = Parts[i].transform; break; case PrefabType.GoliathAttackSwitch: tempNode.Type = PrefabType.GoliathAttackSwitch; tempNode.transform = Parts[i].transform; break; case PrefabType.Chest: tempNode.Type = PrefabType.Chest; tempNode.transform = Parts[i].transform; var flag = false; TreasureManager.Load(); if (TreasureManager.TreasureListAll.Treasures.Count > 0) { foreach (var chest in TreasureManager.TreasureListAll.Treasures) { if (chest.LevelName == SaveManager.levelName) { flag = true; break; } } } if (!flag) { TreasureManager.Chest chest = new TreasureManager.Chest(); chest.LevelName = SaveManager.levelName; //TODO get the chest index from somewhere chest.ChestIndex = PlayerPrefs.GetInt("NumberOfChests") + 1; PlayerPrefs.SetInt("NumberOfChests", PlayerPrefs.GetInt("NumberOfChests") + 1); TreasureManager.AddChestToAllTreasures(chest); } break; case PrefabType.Diamonds: numberOfDiamonds++; tempNode.Type = PrefabType.Diamonds; tempNode.transform = Parts[i].transform; break; default: throw new ArgumentOutOfRangeException(); } nodes.Add(tempNode); } for (int i = 0; i < noOfParts; i++) { Destroy(Parts[i]); } state.Node = new List <SaveavleNode>(); for (int i = 0; i < noOfParts; i++) { state.Node.Add(new SaveavleNode()); state.Node[i].ConvertToSaveable(nodes[i].Type, nodes[i].transform); } state.LevelSize = SaveManager.levelSize; state.MaxTime = 0; state.MaxTries = 0; state.Coins = numberOfCoins; state.Diamonds = numberOfDiamonds; sm.Save(state); Load(); var ls = new LevelStatusSaveState { LevelName = string.Format("level_{0}_{1}_s", SaveManager.levelName.Split('_')[1], SaveManager.levelName.Split('_')[2]), BestTime = 0, BestTries = 0, IndexOfCoinsCollected = new List <int>(), IndexOfDiamondsCollected = new List <int>(), IsLocked = false, Stars = 0 }; ls.Save(); isSaving = false; }
public int Load() { PointsCollected = 0; LevelStatusSaveState StatusState = new LevelStatusSaveState(); StatusState.LevelName = string.Format("level_{0}_{1}_s", GameManager.CurrentLevel.Split('_')[1], GameManager.CurrentLevel.Split('_')[2]); StatusState.Load(); GameManager.IndexOfCoinsCollected = StatusState.IndexOfCoinsCollected; GameManager.IndexOfDiamondsCollected = StatusState.IndexOfDiamondsCollected; SaveManager.levelName = GameManager.CurrentLevel; for (int i = 0; i < Parts.Count; i++) { Destroy(Parts[i]); } state = sm.Load(); nodes = new System.Collections.Generic.List <Node>(); PartsTypes = new System.Collections.Generic.List <PrefabType>(); Parts = new System.Collections.Generic.List <GameObject>(); for (int i = 0; i < state.Node.Count; i++) { nodes.Add(state.Node[i].ConvertToNode()); } MazeSize = state.LevelSize; MazeOffset = MazeSize / 2; DownStep = MazeOffset / MazeSize; SaveManager.levelSize = state.LevelSize; var keyFlag = false; var guardianFlag = false; GameObject preKey = new GameObject(); GameObject tempObj = new GameObject(); int coinIndex = 0; int diamondIndex = 0; for (var i = 0; i < state.Node.Count; i++) { var startEndFlag = false; switch (nodes[i].Type) { case (PrefabType.Part01): tempObj = Instantiate(ListOfParts[0], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); PartsTypes.Add(PrefabType.Part01); break; case (PrefabType.Part02): tempObj = Instantiate(ListOfParts[1], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); PartsTypes.Add(PrefabType.Part02); break; case (PrefabType.Part03): tempObj = Instantiate(ListOfParts[2], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); PartsTypes.Add(PrefabType.Part03); break; case (PrefabType.Part04): tempObj = Instantiate(ListOfParts[3], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); PartsTypes.Add(PrefabType.Part04); break; case (PrefabType.Part05): tempObj = Instantiate(ListOfParts[4], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); PartsTypes.Add(PrefabType.Part05); break; case PrefabType.Start: Debug.Log("here"); startEndFlag = true; StartPosition = nodes[i].transform; CheckPoint.StartPointPosition = StartPosition.localPosition; CheckPoint.SetCheckPointTransfrom(StartPosition.localPosition); break; case PrefabType.End: tempObj = Instantiate(ListOfParts[5], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); EndPosition = nodes[i].transform; GameManager.EndState = tempObj; break; case PrefabType.KeyWall: keyFlag = true; tempObj = Instantiate(ListOfParts[6], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); preKey = tempObj; NoOfGates++; break; case PrefabType.Coins: coinIndex++; if (!StatusState.IndexOfCoinsCollected.Contains(coinIndex)) { tempObj = Instantiate(ListOfParts[7], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); tempObj.GetComponent <Points>().Index = coinIndex; } break; case PrefabType.Spike: tempObj = Instantiate(ListOfParts[8], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); tempObj.GetComponent <Spikes>().LocalTimerIndex = Spikes.CurrentFlagIndex++; Spikes.SpikeInitializeFlag = true; break; case PrefabType.KeyPortal: break; case PrefabType.CheckPoint: tempObj = Instantiate(ListOfParts[9], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); break; case PrefabType.Guardian: if (guardianFlag == false) { tempObj = Instantiate(ListOfParts[10], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); tempObj.GetComponent <Guardian>().GuardianPath .Add(nodes[i].transform.transform); // added initial position of the guardian } else { tempObj.GetComponent <Guardian>().GuardianPath.Add(nodes[i].transform.transform); } guardianFlag = true; break; case PrefabType.Hammer: tempObj = Instantiate(ListOfParts[11], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); break; case PrefabType.GoliathWalk: tempObj = Instantiate(ListOfParts[12], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); Goliath.PossiblePositions.Add(tempObj.transform); break; case PrefabType.Goliath: tempObj = Instantiate(ListOfParts[13], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); Goliath.InitialPosition = tempObj.transform.localPosition; break; case PrefabType.GoliathAttackSwitch: tempObj = Instantiate(ListOfParts[14], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); GoliathAttackSwitch.SwitchLists.Add(tempObj); break; case PrefabType.Chest: var flag = false; foreach (var chest in TreasureManager.TreasureListGot.Treasures) { if (chest.LevelName == GameManager.CurrentLevel) { Debug.Log("chest is already taken"); flag = true; break; } } if (!flag) { tempObj = Instantiate(ListOfParts[15], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); foreach (var chest in TreasureManager.TreasureListAll.Treasures) { if (chest.LevelName == GameManager.CurrentLevel) { Chest.CurrentChest = chest; break; } } } break; case PrefabType.Diamonds: diamondIndex++; if (!StatusState.IndexOfDiamondsCollected.Contains(diamondIndex)) { tempObj = Instantiate(ListOfParts[16], nodes[i].transform.position, nodes[i].transform.rotation, Maze.transform); tempObj.GetComponent <Diamond>().Index = diamondIndex; } break; default: break; } if (nodes[i].Type != PrefabType.Guardian) { guardianFlag = false; } if (nodes[i].Type != PrefabType.Spike || i == nodes.Count - 1) { if (Spikes.SpikeInitializeFlag) { Spikes.SpikeInitializeFlag = false; for (var j = 1; j < Spikes.CurrentFlagIndex + 1; j++) { Parts[Parts.Count - j].GetComponent <Spikes>().IndexLimit = Spikes.CurrentFlagIndex + 1; } } Spikes.CurrentFlagIndex = 0; } if (startEndFlag) { continue; } tempObj.GetComponent <Renderer>().material = ListOfMaterials[0]; Parts.Add(tempObj); if (keyFlag && nodes[i].Type != PrefabType.KeyWall) { keyFlag = false; preKey.GetComponentInChildren <Key>().Lock = Parts[Parts.Count - 1]; Parts[Parts.Count - 1].GetComponent <Renderer>().material = ListOfMaterials[NoOfGates]; foreach (Transform child in Parts[Parts.Count - 2].transform) { child.GetComponent <Renderer>().material = ListOfMaterials[NoOfGates]; } } } noOfParts = state.Node.Count; maze_body.transform.localScale = new Vector3(SaveManager.levelSize, SaveManager.levelSize, SaveManager.levelSize); mainCamera.orthographicSize = SaveManager.levelSize + 7; transform.position = StartPosition.localPosition; transform.eulerAngles = Vector3.zero; destination = transform.position; return(1); }