/// <summary>
        /// It updates an existing player data. Two players are the same if they have same name.
        /// It throws exeption if the player data doesn't exist.
        /// </summary>
        /// <param name="playerData"></param>
        public void Update(DataStoragePlayerData playerData)
        {
            if (!File.Exists(_savePath))
            {
                throw new InvalidOperationException("playersData file not found");
            }

            List <DataStoragePlayerData> playersData = Load();

            if (!playersData.Any(pd => pd.Details["Name"] == playerData.Details["Name"]))
            {
                throw new InvalidOperationException("specified playerData not found");
            }

            for (int i = 0; i < playersData.Count; i++)
            {
                if (playersData[i].Details["Name"] == playerData.Details["Name"])
                {
                    playersData[i] = playerData;
                }
            }

            FileStream fileStream = new FileStream(_savePath, FileMode.Create);

            _formatter.Serialize(fileStream, playersData);
            fileStream.Close();
        }
        void savePlayerData(List <PlayerDetail> inputValues)
        {
            FormPlayerData formPlayerData = new FormPlayerData {
                Details = inputValues, Score = ScoreReporter.Report()
            };
            DataStoragePlayerData playerData = new DataStoragePlayerData(formPlayerData);

            _dataStorage.Save(playerData);
        }
        /// <summary>
        /// It appends a player data to the list of player data which was saved previously.
        /// If no list is available, a new one is created.
        /// </summary>
        /// <param name="playerData"></param>
        public void Save(DataStoragePlayerData playerData)
        {
            List <DataStoragePlayerData> playersData = File.Exists(_savePath) ? Load() : new List <DataStoragePlayerData>();

            playersData.Add(playerData);

            FileStream fileStream = new FileStream(_savePath, FileMode.Create);

            _formatter.Serialize(fileStream, playersData);
            fileStream.Close();
        }