Пример #1
0
        public async Task Move(string roomName, Position moveTo)
        {
            await Task.Run(async() =>
            {
                if (GameController.currentGames.ContainsKey(roomName))
                {
                    Game current        = GameController.currentGames[roomName];
                    bool isPossibleMove = current.PlayerMove(players[Context.ConnectionId], moveTo);

                    if (isPossibleMove)
                    {
                        await Clients.Group(roomName).SendAsync("WaitForMove", moveTo, current.LastMark);

                        if (!current.isGameOver(moveTo))
                        {
                            Position lastmove = moveTo;
                            while (current.isRobotNext(lastmove))
                            {
                                Position robotMove = current.MoveRobot();

                                await Clients.Group(roomName).SendAsync("WaitForMove", robotMove, current.LastMark);

                                if (current.isGameOver(robotMove))
                                {
                                    UserDAOService dao = new UserDAOService();
                                    GameController.currentGames[roomName].UpdateScores("Robot");
                                    foreach (var key in GameController.currentGames[roomName].GetKeysOfPlayers())
                                    {
                                        await Clients.Client(players.First(p => p.Value == key).Key).SendAsync("Message", "Az új pontod: "
                                                                                                               + dao.FindUserByName(key).Score,
                                                                                                               "error");
                                    }
                                    GameController.currentGames.Remove(roomName);
                                    await Clients.Group(roomName).SendAsync("GameEnded", "Robot");
                                    return;
                                }

                                lastmove = robotMove;
                            }
                        }
                        else // A játéknak vége van
                        {
                            UserDAOService dao = new UserDAOService();
                            GameController.currentGames[roomName].UpdateScores(players[Context.ConnectionId]);
                            await Clients.Caller.SendAsync("Message", "Az új pontod: " + dao.FindUserByName(players[Context.ConnectionId]).Score, "success");
                            foreach (var key in GameController.currentGames[roomName].GetKeysOfPlayers())
                            {
                                if (key != players[Context.ConnectionId])
                                {
                                    await Clients.Client(players.First(p => p.Value == key).Key).SendAsync("Message", "Az új pontod: "
                                                                                                           + dao.FindUserByName(key).Score,
                                                                                                           "error");
                                }
                            }

                            GameController.currentGames.Remove(roomName);
                            await Clients.Group(roomName).SendAsync("GameEnded", players[Context.ConnectionId]);
                        }
                    }
                }
            });
        }
Пример #2
0
        public void del(string roomName)
        {
            var dao = new UserDAOService();

            dao.Delete(dao.FindUserByName(roomName));
        }