public void Save(SavedGameDto game)
 {
     //if (File.Exists(FileXml.OriginalString))
     //{
     //	File.Delete(FileXml.OriginalString);
     //}
     using (var file = File.Create(Path.GetFileName(FileSaveXml.LocalPath)))
         serializer.Serialize(file, ConvertFromDto(game));
 }
        public void Load()
        {
            SavedGame = ReposGame.Load();

            SetIsGameSaved(SavedGame != null);
        }
        protected static SavedGameXML ConvertFromDto(SavedGameDto game)
        {
            if (game == null)
            {
                return(null);
            }

            //if (!(game.Types?.Count >= 3))
            if (!(game.Types != null && game.Types.Count >= 3))
            {
                throw new ArgumentOutOfRangeException(nameof(game) + "." + nameof(game.Types), "Не может быть меньше трёх");
            }

            List <CellTypeXML> types = game.Types
                                       .Select(dto => new CellTypeXML()
            {
                Id = dto.Id, Value = dto.Type
            })
                                       .ToList();

            var tps = types.ToDictionary(tp => tp.Value, tp => tp.Id);

            List <CellXML> cells = new List <CellXML>();

            if (game.Cells != null)
            {
                foreach (CellDto cell in game.Cells.Where(cll => cll?.CellType != null && cll.CellType != CellTypeDto.Empty))
                {
                    cells.Add(new CellXML()
                    {
                        Id = cell.Id, Row = cell.Row, Column = cell.Column, TypeId = tps[cell.CellType.Type]
                    });
                }
            }
            int turnId = -1;

            foreach (UserDto user in game.Users)
            {
                if (user.IsTurn)
                {
                    turnId = user.Id;
                    break;
                }
            }

            if (!(game.Users?.Count > 0))
            {
                throw new ArgumentOutOfRangeException(nameof(game) + "." + nameof(game.Users), "Не может быть меньше одного");
            }

            List <UserXML> users = game.Users
                                   .Select(dto => new UserXML()
            {
                Id = dto.Id, Name = dto.UserName, ImageIndex = dto.ImageIndex, Turn = dto.Turn, TypeId = tps[dto.CellType.Type]
            })
                                   .ToList();

            return(new SavedGameXML()
            {
                Users = users,
                Cells = cells,
                CellTypes = types,
                CurrentUser = new CurrentUserXML()
                {
                    UserId = turnId
                },
                Game = new GameSettings()
                {
                    Rows = game.RowsCount,
                    Columns = game.ColumnsCount,
                    LengthToWin = game.LengthLineForWin
                }
            });
        }