public static string Serialize(Models.GameProgress gameProgress) { Csv csv = new Csv (); csv.Append (gameProgress.Slot); for (int world=0; world < Constants.WorldCount; world++) { for (int level=0; level < Constants.WorldLevelCount; level++) { Models.SolvedLevel solvedLevel = gameProgress.GetSolvedLevel (world, level); if (solvedLevel == null) { break; // Levels must be solved in order } else { csv.Append (solvedLevel.WorldNumber); csv.Append (solvedLevel.LevelNumber); csv.Append (solvedLevel.Moves); csv.Append (solvedLevel.Stars); } } } return csv.ToString (); }
/// <summary> /// Generates a string representation of the specified LockGrid: see Deserialize. /// </summary> /// <param name="lockGrid">Lock grid.</param> public static string Serialize(Models.LockGrid lockGrid) { Csv csv = new Csv (); // Serialize the lock grid properties csv.Append (lockGrid.RowCount); csv.Append (lockGrid.ColCount); csv.Append (lockGrid.ButtonCount); csv.Append (lockGrid.MaxMovesFor2Stars); csv.Append (lockGrid.MaxMovesFor3Stars); // Serialize the locks and their buttons for (int row=0; row<lockGrid.RowCount; row++) { for (int col=0; col<lockGrid.ColCount; col++) { Models.Lock currentLock = lockGrid.Locks [row, col]; // Serialize the lock properties //csv.Append (currentLock.UnlockedPosition); csv.Append (currentLock.CurrentPosition); // Serialize the buttons for (int buttonIndex=0; buttonIndex<currentLock.ButtonCount; buttonIndex++) { Models.LockButton button = currentLock.Buttons [buttonIndex]; csv.Append (button.IsOn); csv.Append (button.LinkedButton.ContainingLockGridRow); csv.Append (button.LinkedButton.ContaingLockGridCol); csv.Append (button.LinkedButton.ContainingLockIndex); } } } return csv.ToString (); }