Пример #1
0
    private GameInfo Test_Game()
    {
        GameInfo game = new GameInfo();

        //game.AddPlayer(new PlayerInfo("Steve", 20));
        game.AddPlayer(new PlayerInfo("Dave", 20));
        game.AddPlayer(new PlayerInfo("Craig", 20));
        game.AddPlayer(new PlayerInfo("Nyugen", 20));
        game.AddPlayer(new PlayerInfo("Yesk", 20));

        return(game);
    }
Пример #2
0
        public void HandleJoinGame(Player p, int gameID)  //before response
        {
            GameInfo g = gameList[gameID];

            g.AddPlayer(p);
            gameList[gameID] = g;
        }
Пример #3
0
        public void HandleCreateGame(Player host, int minPlayer, int maxPlayer, string name, int gameID)//before response
        {
            //int gameID = -1;//TODO Send RequestGameID to gameServer to get valid ID
            GameInfo g = new GameInfo(gameID, host, minPlayer, maxPlayer, name);

            g.AddPlayer(host); // need at least one player in the game always
            gameList[gameID] = g;
        }
Пример #4
0
        public GameInfo Create([FromBody] PlayerInfo playerInfo)
        {
            string name       = string.Empty;
            int    maxPlayers = 0;
            int    rounds     = 0;
            string gameId;

            lock (createLockObject)
            {
                ++gameIdSequence;
                gameId = gameIdSequence.ToString();
            }

            foreach (KeyValuePair <string, string> parameter in Request.GetQueryNameValuePairs())
            {
                switch (parameter.Key)
                {
                case "name":
                    name = parameter.Value;
                    break;

                case "maxPlayers":
                    maxPlayers = int.Parse(parameter.Value);
                    break;

                case "rounds":
                    rounds = int.Parse(parameter.Value);
                    break;

                default:
                    break;
                }
            }

            GameInfo createdGameContext = new GameInfo(rounds)
            {
                Id = gameId, MaxPlayers = maxPlayers, Name = name
            };
            int playerIndex = -1;

            createdGameContext.AddPlayer(playerInfo, ref playerIndex);
            gamesRepository.AddGame(createdGameContext);
            return(createdGameContext);
        }
Пример #5
0
        public static void Start(Update u, string[] args)
        {
            if (u.Message.Chat.Type == ChatType.Private && u.Message.From != null)
            {
                using (var db = new WWContext())
                {
                    var p = GetDBPlayer(u.Message.From.Id, db);
                    if (p == null)
                    {
                        var usr = u.Message.From;
                        p = new Player
                        {
                            UserName   = usr.Username,
                            Name       = (usr.FirstName + " " + usr.LastName).Trim(),
                            TelegramId = usr.Id,
                            Language   = "English"
                        };
                        db.Players.Add(p);
                        db.SaveChanges();
                        p = GetDBPlayer(u.Message.From.Id, db);
                    }

                    p.HasPM = true;

                    db.SaveChanges();

                    if (string.IsNullOrEmpty(args[1]))
                    {
                        var msg = $"Hi there! I'm @{Bot.Me.Username}, and I moderate games of Werewolf." +
                                  $"\nFor role information, use /rolelist." +
                                  $"\nIf you want to set your default language, use /setlang.";
                        Bot.Send(msg, u.Message.Chat.Id);
                        return;
                    }

                    if (args[1] == "donatetg")
                    {
                        GetDonationInfo(m: u.Message);
                        return;
                    }

                    //okay, they are joining a game.
                    string           nodeid = "";
                    string           gameid = "";
                    Node             node   = null;
                    GameInfo         game   = null;
                    ChatMemberStatus status = ChatMemberStatus.Creator;
                    try
                    {
                        nodeid = args[1].Substring(0, 32);
                        gameid = args[1].Substring(32);

                        //try to get the guid of the game they want to join
                        Guid g, n;
                        if (!(Guid.TryParse(nodeid, out n) && Guid.TryParse(gameid, out g)))
                        {
                            return;
                        }

                        //first get the node where to search for the game

                        for (var i = 0; i < 3; i++)
                        {
                            node = Bot.Nodes.ToList().FirstOrDefault(x => x.ClientId == n);
                            if (node != null)
                            {
                                break;
                            }
                        }

                        if (node == null)
                        {
                            //log it
                            //Bot.Send($"{u.Message.From.Id} (@{u.Message.From.Username ?? ""}) didn't find node with guid {n.ToString()} while attempting to play in {g.ToString()}", -1001098399855);
                            return;
                        }

                        //we have the node, get the game

                        for (var i = 0; i < 5; i++)
                        {
                            game = node.Games.ToList().FirstOrDefault(x => x.Guid == g);
                            if (game != null)
                            {
                                break;
                            }
                        }

                        if (game == null)
                        {
                            //log it
                            //Bot.Send($"{u.Message.From.Id} (@{u.Message.From.Username ?? ""}) found node with guid {n.ToString()} but not the game {g.ToString()}", -1001098399855);
                            return;
                        }

                        //ok we got the game, now join
                        //make sure they are member
                        status = Bot.Api.GetChatMemberAsync(game.GroupId, u.Message.From.Id).Result.Status;
                        if (status == ChatMemberStatus.Left || status == ChatMemberStatus.Kicked)
                        {
                            Bot.Send(
                                GetLocaleString("NotMember", GetLanguage(u.Message.From.Id), game.ChatGroup.ToBold()),
                                u.Message.Chat.Id);
                            return;
                        }

                        game.AddPlayer(u);
                        return;
                    }
                    catch (AggregateException e)
                    {
                        var ex = e.InnerExceptions[0];
                        while (ex.InnerException != null)
                        {
                            ex = ex.InnerException;
                        }

                        Send(ex.Message, u.Message.Chat.Id);
                        Send($"Error in START:\n" +
                             $"{u.Message.Text}\n" +
                             $"Node: {nodeid}\n" +
                             $"Game: {gameid}\n" +
                             $"Found Node: {node?.ClientId}\n" +
                             $"Found Game: {game?.Guid}\n" +
                             $"Chat Member Status: {status}\n" +
                             $"{ex.Message}\n{ex.StackTrace}",
                             Settings.ErrorGroup);
                    }
                    catch (Exception ex)
                    {
                        while (ex.InnerException != null)
                        {
                            ex = ex.InnerException;
                        }

                        Send(ex.Message, u.Message.Chat.Id);
                        Send($"Error in START:\n" +
                             $"{u.Message.Text}\n" +
                             $"Node: {nodeid}\n" +
                             $"Game: {gameid}\n" +
                             $"Found Node: {node?.ClientId}\n" +
                             $"Found Game: {game?.Guid}\n" +
                             $"Chat Member Status: {status}\n" +
                             $"{ex.Message}\n{ex.StackTrace}",
                             Settings.ErrorGroup);
                    }
                }
            }
        }