Exemple #1
0
        public void ConfirmCreateGame()
        {
            CloseDropDowns();

            m_roomMaxPlayers    = int.Parse(m_createGameWindow.transform.FindChild("Max Players").GetComponent <InputField>().text.ToString());
            m_roomLevelRangeMax = int.Parse(m_createGameWindow.transform.FindChild("Box 2").GetComponent <InputField>().text.ToString());
            m_roomLevelRangeMin = int.Parse(m_createGameWindow.transform.FindChild("Box 1").GetComponent <InputField>().text.ToString());

            CreateMatchRequest options = new CreateMatchRequest();

            options.size            = (uint)m_roomMaxPlayers;
            options.advertise       = true;
            options.password        = "";
            options.matchAttributes = new Dictionary <string, long>()
            {
                { "minLevel", m_roomLevelRangeMin }, { "maxLevel", m_roomLevelRangeMax }
            };

            CreateNewRoom(m_createGameWindow.transform.FindChild("Room Name").GetComponent <InputField>().text, options);
        }
        public static async Task<HttpResponseMessage> Create(int firstBoxer, int secondBoxer, string address, DateTime time, string description)
        {
            var request = new CreateMatchRequest()
            {
                FirstBoxer = firstBoxer,
                SecondBoxer = secondBoxer,
                Address = address,
                Date = time,
                Description = description
            };

            using (var client = new HttpClient())
            {
                var uri = UriHelper.GetUri("matches");
                var content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
                client.DefaultRequestHeaders.Add(Headers.AdminAuthenticationHeader, AuthHelper.AdminKey);

                return await client.PostAsync(uri, content);
            }
        }
        public void createRoom()
        {
            if (manager.matchMaker == null)
            {
                manager.StartMatchMaker();
                manager.matchMaker.SetProgramAppID((AppID)1093751);
            }
            if (playerName.text != "")
            {
                CreateMatchRequest create = new CreateMatchRequest();
                create.name      = playerName.text;
                create.size      = 4;
                create.advertise = true;
                create.password  = "";

                manager.matchMaker.CreateMatch(create, OnMatchCreate);
            }
            else
            {
                noPlayerName.enabled = true;
            }
        }
        public async Task <MatchModel> CreateMatch(CreateMatchCommand command)
        {
            Player winner = await playersApiClient.GetPlayer(command.WinnerId);

            Player loser = await playersApiClient.GetPlayer(command.LoserId);

            PlayersRatings ratings = await ratingApiClient.CalculatePlayersRatings(RatingMapper.Map(winner, loser));

            UpdatePlayerRequest updateWinnerRequest = new UpdatePlayerRequest(winner.Id, winner.Name, ratings.WinnerRating.Rating, ratings.WinnerRating.Deviation, ratings.WinnerRating.Volatility);

            winner = await playersApiClient.UpdatePlayer(updateWinnerRequest);

            UpdatePlayerRequest updateLoserRequest = new UpdatePlayerRequest(loser.Id, loser.Name, ratings.LoserRating.Rating, ratings.LoserRating.Deviation, ratings.LoserRating.Volatility);

            loser = await playersApiClient.UpdatePlayer(updateLoserRequest);

            CreateMatchRequest createMatchRequest = new CreateMatchRequest(winner.Id, loser.Id, command.Score);
            Match match = await matchesApiClient.CreateMatch(createMatchRequest);

            return(MatchMapper.Map(match, new List <Player> {
                winner, loser
            }));
        }
Exemple #5
0
    void OnGUI()
    {
        // You would normally not join a match you created yourself but this is possible here for demonstration purposes.
        if (GUILayout.Button("Create Room"))
        {
            CreateMatchRequest create = new CreateMatchRequest();
            create.name      = "NewRoom";
            create.size      = 4;
            create.advertise = true;
            create.password  = "";

            networkMatch.CreateMatch(create, OnMatchCreate);
        }

        if (GUILayout.Button("List rooms"))
        {
            networkMatch.ListMatches(0, 20, "", OnMatchList);
        }

        if (matchList.Count > 0)
        {
            GUILayout.Label("Current rooms");
        }
        else
        {
            GUILayout.Label("No rooms");
        }
        Debug.Log(matchList.Count);
        foreach (var match in matchList)
        {
            if (GUILayout.Button(match.name))
            {
                networkMatch.JoinMatch(match.networkId, "", OnMatchJoined);
            }
        }
    }
Exemple #6
0
        void CreateNewRoom(string aName, CreateMatchRequest aOptions)
        {
            List <MatchDesc> rooms      = BombersNetworkManager.singleton.matches;
            bool             roomExists = false;
            string           roomName   = aName;

            if (aName == "")
            {
                roomName = GameObject.Find("BrainCloudStats").GetComponent <BrainCloudStats>().m_playerName + "'s Room";
            }

            if (rooms != null)
            {
                for (int i = 0; i < rooms.Count; i++)
                {
                    if (rooms[i].name == aName)
                    {
                        roomExists = true;
                    }
                }
            }
            if (roomExists)
            {
                GameObject.Find("DialogDisplay").GetComponent <DialogDisplay>().DisplayDialog("There's already a room named " + aName + "!");
                return;
            }

            int playerLevel = GameObject.Find("BrainCloudStats").GetComponent <BrainCloudStats>().GetStats()[0].m_statValue;

            if (m_roomLevelRangeMin < 0)
            {
                m_roomLevelRangeMin = 0;
            }
            else if (m_roomLevelRangeMin > playerLevel)
            {
                m_roomLevelRangeMin = playerLevel;
            }

            if (m_roomLevelRangeMax > 50)
            {
                m_roomLevelRangeMax = 50;
            }

            if (m_roomLevelRangeMax < m_roomLevelRangeMin)
            {
                m_roomLevelRangeMax = m_roomLevelRangeMin;
            }

            if (aOptions.size > 8)
            {
                aOptions.size = 8;
            }
            else if (aOptions.size < 2)
            {
                aOptions.size = 2;
            }

            GameObject.Find("Version Text").transform.SetParent(null);
            GameObject.Find("FullScreen").transform.SetParent(null);

            CreateMatchRequest options = new CreateMatchRequest();

            options.name            = aName;
            options.size            = aOptions.size;
            options.advertise       = true;
            options.password        = "";
            options.matchAttributes = new Dictionary <string, long>();
            options.matchAttributes.Add("minLevel", m_roomLevelRangeMin);
            options.matchAttributes.Add("maxLevel", m_roomLevelRangeMax);
            options.matchAttributes.Add("StartGameTime", 600);
            options.matchAttributes.Add("IsPlaying", 0);
            options.matchAttributes.Add("MapLayout", m_presetListSelection);
            options.matchAttributes.Add("MapSize", m_sizeListSelection);
            BrainCloudWrapper.GetBC().EntityService.UpdateSingleton("gameName", "{\"gameName\": \"" + roomName + "\"}", null, -1, null, null, null);
            GameObject.Find("BrainCloudStats").GetComponent <BrainCloudStats>().ReadStatistics();
            m_state = eMatchmakingState.GAME_STATE_CREATE_NEW_ROOM;
            Dictionary <string, string> matchOptions = new Dictionary <string, string>();

            matchOptions.Add("gameTime", 600.ToString());
            matchOptions.Add("isPlaying", 0.ToString());
            matchOptions.Add("mapLayout", m_presetListSelection.ToString());
            matchOptions.Add("mapSize", m_sizeListSelection.ToString());
            matchOptions.Add("gameName", roomName);
            matchOptions.Add("maxPlayers", aOptions.size.ToString());
            matchOptions.Add("lightPosition", 0.ToString());

            BombersNetworkManager.m_matchOptions = matchOptions;
            BombersNetworkManager.singleton.matchMaker.CreateMatch(options, OnMatchCreate);
        }
        public async Task <int> CreateMatchAsync(
            CreateMatchRequest request,
            CancellationToken cancellationToken = default)
        {
            try
            {
                if (request == null)
                {
                    throw new ArgumentNullException(nameof(request));
                }

                if (request.Date == null)
                {
                    throw new ArgumentException("Date cannot be null.");
                }

                if (request.Date > DateTime.Now)
                {
                    throw new ArgumentException("Cannot register a match that is not yet played.");
                }

                if (request.HomeTeamId == request.AwayTeamId)
                {
                    throw new ArgumentException("Cannot register match between the same team.");
                }

                bool homeTeamsExist = await _context.Teams
                                      .AnyAsync(t => t.Id == request.HomeTeamId);

                bool awayTeamsExist = await _context.Teams
                                      .AnyAsync(t => t.Id == request.AwayTeamId);

                if (!homeTeamsExist || !awayTeamsExist)
                {
                    throw new ArgumentException("Either one of the teams does not exist in the database.");
                }

                int?winnerID = request.AwayTeamScore > request.HomeTeamScore
                                                ? request.AwayTeamId
                                                : request.AwayTeamScore < request.HomeTeamScore
                                                        ? request.HomeTeamId
                                                        : (int?)null;

                var entity = new Entities.Match
                {
                    Date          = request.Date,
                    AwayTeamId    = request.AwayTeamId,
                    AwayTeamScore = request.AwayTeamScore,
                    HomeTeamId    = request.HomeTeamId,
                    HomeTeamScore = request.HomeTeamScore,
                    WinnerId      = winnerID
                };

                _context.Matches.Add(entity);

                await _context.SaveChangesAsync(cancellationToken);

                // Update team rankings
                if (winnerID.HasValue)
                {
                    await UpdateTeamRankings(winnerID.Value, 3);
                }
                else
                {
                    await UpdateTeamRankings(entity.AwayTeamId, 1);
                    await UpdateTeamRankings(entity.HomeTeamId, 1);
                }

                return(entity.Id);
            }
            catch (ServiceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error creating match.");
                throw Conversion.ConvertException(ex);
            }
        }
 public void Post([FromBody] CreateMatchRequest request)
 {
     _services.CreateMatch(request);
 }
        public async Task <CreateMatchResponse> CreateMatch(string idFirstTeam, string idSecondTeam, string dateTimeMatch)
        {
            var request = new CreateMatchRequest(idFirstTeam, idSecondTeam, dateTimeMatch);

            return(await _matchActor.Ask <CreateMatchResponse>(request));
        }
Exemple #10
0
    public void HostGame()
    {
        if (!LobbyNet.isNetworkActive)
        {
            bool lan = GameObject.Find("LanToggle").GetComponent <Toggle>().isOn;

            string matchName  = "Default";
            int    minplayers = 2;
            int    maxplayers = 4;
            int    port       = 7777;

            if (GameObject.Find("MatchNameInput").transform.Find("Text").GetComponent <Text>().text.Length != 0)
            {
                matchName = GameObject.Find("MatchNameInput").transform.Find("Text").GetComponent <Text>().text;
            }

            if (GameObject.Find("MaxPlayersInput").transform.Find("Text").GetComponent <Text>().text.Length != 0)
            {
                int input;                                                                                                     //Max players variable
                int.TryParse(GameObject.Find("MaxPlayersInput").transform.Find("Text").GetComponent <Text>().text, out input); //Parse contents into integer

                if (input >= 2 && input <= 16)                                                                                 //If entered amount of players is within acceptable ranges
                {
                    maxplayers = input;                                                                                        //Set max players
                }
                else
                {
                    Debug.Log("INVALID PlAYER AMOUNT ENTERED");
                    return;
                }
            }

            if (GameObject.Find("MinPlayersInput").transform.Find("Text").GetComponent <Text>().text.Length != 0)
            {
                int input;                                                                                                     //Min players variable;
                int.TryParse(GameObject.Find("MinPlayersInput").transform.Find("Text").GetComponent <Text>().text, out input); //Parse contents into integer

                if (input > 0 && input <= 16)
                {
                    if (input <= maxplayers)
                    {
                        minplayers = input;
                    }
                    else
                    {
                        Debug.Log("Minimum players cannot be higher than maximum players!");
                        return;
                    }
                }
                else
                {
                    Debug.Log("INVALID PLAYER AMOUNT ENTERED");
                    return;
                }
            }

            if (GameObject.Find("HostPortInput").transform.Find("Text").GetComponent <Text>().text.Length != 0)
            {
                int input;                                                                                                   //Port variable
                int.TryParse(GameObject.Find("HostPortInput").transform.Find("Text").GetComponent <Text>().text, out input); //Parse contents into integer

                if (input > 0 && input <= 65535)                                                                             //If entered port is within acceptable ranges
                {
                    port = input;                                                                                            //Set port
                }
                else
                {
                    Debug.Log("INVALID PORT ENTERED");
                    return;
                }
            }
            LobbyNet.networkPort = port;

            LobbyNet.maxPlayers = maxplayers + 1;

            LobbyNet.minPlayers = minplayers;

            if (!lan)
            {
                if (LobbyNet.matchMaker == null)
                {
                    LobbyNet.StartMatchMaker();
                }

                NetworkMatch       match = LobbyNet.matchMaker;
                CreateMatchRequest req   = new CreateMatchRequest();
                req.name      = matchName;
                req.size      = (uint)maxplayers + 1;
                req.advertise = true;

                if (GameObject.Find("PasswordInput").transform.Find("Text").GetComponent <Text>().text.Length != 0)
                {
                    req.password = GameObject.Find("PasswordInput").transform.Find("Text").GetComponent <Text>().text;
                }
                else
                {
                    req.password = "";
                }

                match.CreateMatch(req, LobbyNet.OnMatchCreate);
            }
            else
            {
                LobbyNet.name = matchName;
                LobbyNet.StartHost();
            }
        }
    }
Exemple #11
0
        public async Task <string> Post(CreateMatchRequest request)
        {
            var match = request.ToMatch();

            return(await _matchService.CreateMatch(match, request.Teams));
        }