private void Start(object sender, EventArgs e)
        {
            Map map = mapSettingsControl.GetMap();

            IList <AiPlayer> aiPlayers = aiPlayerSettingsControl.GetPlayers();

            IList <Player> players = new List <Player>();

            foreach (AiPlayer aiPlayer in aiPlayers)
            {
                players.Add(aiPlayer);
            }

            players.Add(myHumanPlayerControl.GetPlayer());

            foreach (Player player in humanPlayerSettingsControl.GetPlayers())
            {
                players.Add(player);
            }

            Game game = null;

            using (UtilsDbContext db = new UtilsDbContext())
            {
                IEnumerable <HotseatSavedGameInfo> savedGamesEnum = db.HotseatSavedGameInfos.ToList();
                HotseatSavedGameInfo lastGame = savedGamesEnum.LastOrDefault();
                int gameId = 1;
                if (lastGame != null)
                {
                    gameId = lastGame.Id + 1;
                }

                var factory = new GameFactory();
                game = factory.CreateGame(gameId, GameType.MultiplayerHotseat, map, players, fogOfWar: fogOfWarCheckBox.Checked);


                // TEST

                /*NetworkObjectWrapper wrapper = new NetworkObjectWrapper<Game>() {TypedValue = game};
                 * using (var ms = new MemoryStream())
                 * {
                 *  wrapper.Serialize(ms);
                 *
                 *  ms.Position = 0;
                 *
                 *  var obj = NetworkObjectWrapper.Deserialize(ms).Value;
                 * }*/
                // END TEST
            }

            OnGameStarted?.Invoke(game);
        }
        private async void Create(object sender, EventArgs e)
        {
            if (OnGameCreated == null)
            {
                return;
            }

            IList <AiPlayer> aiPlayers = aiPlayerSettingsControl.GetPlayers();
            await OnGameCreated.Invoke(myPlayerControl.GetPlayer(),
                                       aiPlayers,
                                       mapSettingsControl.MapName,
                                       aiPlayerSettingsControl.PlayersLimit - 1 - aiPlayers.Count);
        }
        private void Start(object sender, EventArgs e)
        {
            try
            {
                Map map = mapSettingsControl.GetMap();

                IList <AiPlayer> aiPlayers = aiPlayerSettingsControl.GetPlayers();

                IList <Player> players = new List <Player>();
                foreach (AiPlayer aiPlayer in aiPlayers)
                {
                    players.Add(aiPlayer);
                }

                players.Add(myHumanPlayerControl.GetPlayer());

                Game game = null;
                // generate id for the game
                using (UtilsDbContext db = new UtilsDbContext())
                {
                    IEnumerable <SingleplayerSavedGameInfo> savedGamesEnum =
                        db.SingleplayerSavedGameInfos.AsEnumerable();
                    SingleplayerSavedGameInfo lastGame = savedGamesEnum.LastOrDefault();
                    int gameId = 1;
                    if (lastGame != null)
                    {
                        gameId = lastGame.Id + 1;
                    }

                    var factory = new GameFactory();
                    game = factory.CreateGame(gameId, GameType.SinglePlayer, map, players, fogOfWar: fogOfWarCheckBox.Checked);
                }


                OnGameStarted?.Invoke(game);
            }
            catch (UnauthorizedAccessException)
            {
                MessageBox.Show(
                    "One or more components required to start the game are missing! Please, reinstall the game!",
                    "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }