/// <summary>
    /// Gets the previous session data.
    /// </summary>
    /// <returns>The previous session data.</returns>
    public PreviousSessionData GetPreviousSessionData()
    {
        string oldProgrss = PlayerPrefs.GetString("GameProgress" + GameController.gameMode.ToString(), string.Empty);

        if (oldProgrss != string.Empty)
        {
            PreviousSessionData data = new PreviousSessionData();
            XDocument           xDoc = XDocument.Parse(oldProgrss.ToString());

            if (xDoc != null)
            {
                #region game mode
                data.currentMode = (GameMode)Enum.Parse(typeof(GameMode), xDoc.Root.Element("ModeName").Value);
                #endregion

                #region block grid
                XElement blockDataElement = xDoc.Root.Element("BlockData");
                if (blockDataElement != null)
                {
                    var allRows = blockDataElement.Elements("Row");
                    foreach (XElement ele in allRows)
                    {
                        data.blockGridInfo.Add(ele.Value);
                    }
                }

                #endregion

                #region placing blocks
                data.shapeInfo = xDoc.Root.Element("ShapeInfo").Value;
                #endregion

                #region score
                data.score = xDoc.Root.Element("Score").Value.TryParseInt();

                #endregion

                #region total rescue done
                data.totalRescueDone = xDoc.Root.Element("TotalRescueDone").Value.TryParseInt();
                #endregion

                #region total free rescue done
                data.totalFreeRescueDone = xDoc.Root.Element("TotalFreeRescueDone").Value.TryParseInt();
                #endregion

                #region placed bombs
                if (GameController.gameMode == GameMode.BLAST || GameController.gameMode == GameMode.CHALLENGE)
                {
                    XElement placedBombElement = xDoc.Root.Element("PlacedBombs");
                    if (placedBombElement != null)
                    {
                        var allPlacedBombs = placedBombElement.Elements("Bomb");

                        foreach (XElement ele in allPlacedBombs)
                        {
                            data.placedBombInfo.Add(ConverToPlacedBombInfo(ele));
                        }
                    }
                }
                #endregion

                #region remaining time
                if (GameController.gameMode == GameMode.TIMED || GameController.gameMode == GameMode.CHALLENGE)
                {
                    data.remainingTime = xDoc.Root.Element("RemainingTime").Value.TryParseInt(60);
                }
                #endregion

                #region total rescue done
                data.movesCount = xDoc.Root.Element("MovesCount").Value.TryParseInt();
                #endregion

                return(data);
            }
        }
        return(null);
    }
Exemple #2
0
 void Start()
 {
     ///checks if level needs to start from previos session or start new session.
     previousSessionData = GetComponent <GameProgressManager> ().GetPreviousSessionData();
 }