Exemple #1
0
    public static void AddPlayer(ulong steamid, int cid)
    {
        ServerManager.Singleton.AddPlayer(steamid, cid);

        int teamID;

        if (matchTeams[0].numOfPlayers >= MatchSettings.TeamSize)
        {
            teamID = 1;
        }
        else if (matchTeams[1].numOfPlayers >= MatchSettings.TeamSize)
        {
            teamID = 0;
        }
        else if (matchTeams[0].numOfPlayers > matchTeams[1].numOfPlayers)
        {
            teamID = 1;
        }
        else
        {
            teamID = 0;
        }

        MatchTeam team = matchTeams[teamID];

        team.playerIds.Add(steamid);

        ServerManager.Singleton.AssignPlayer(steamid, teamID, team.numOfPlayers);
        team.numOfPlayers++;
        team.teamSize++;
    }
Exemple #2
0
    public override void NetworkStart()
    {
        if (IsServer)
        {
            NetworkingManager.Singleton.OnClientConnectedCallback += OnClientConnected;

            // Initialize ai
            for (int tid = 0; tid < 2; tid++)
            {
                MatchTeam team = Match.matchTeams[tid];

                int aiToCreate = Match.MatchSettings.TeamSize - team.teamSize;

                for (int i = 0; i < aiToCreate; i++)
                {
                    GameObject go      = Instantiate(aiPrefab, Vector3.zero, Quaternion.identity);
                    AIPlayer   aiLogic = go.GetComponent <AIPlayer>();
                    Assert.IsNotNull(aiLogic, "aiPrefab in GameSetup does not have AIPlayer component");

                    Player p = go.GetComponent <Player>();
                    p.isAI   = true;
                    p.TeamID = tid;
                    p.slot   = Match.matchTeams[tid].numOfPlayers + i;

                    GameManager.AddAI(aiLogic);

                    go.GetComponent <NetworkedObject>().Spawn();
                }
            }
        }

        m_hasClientLoaded = true;
        print("creating player");
        InvokeServerRpc(PlayerLoaded, NetworkingManager.Singleton.LocalClientId);
    }
        private async Task CalculateLosingElos(MatchTeam winningTeam, IEnumerable <MatchTeam> losingTeams)
        {
            var winningTeamGuardians = await GetGuardiansForTeam(winningTeam);

            var winningTeamElo = CalculateTeamAverageElo(winningTeamGuardians);

            foreach (var team in losingTeams)
            {
                var guardians = await GetGuardiansForTeam(team);

                var teamElo = CalculateTeamAverageElo(guardians);

                var eloDifference           = (winningTeamElo - teamElo) / 400;
                var invertedExpectedOutcome = Math.Pow(10, eloDifference) + 1;
                var expectedOutcome         = 1 / invertedExpectedOutcome;

                foreach (var guardian in guardians)
                {
                    var guardianResult = team.GuardianMatchResults.FirstOrDefault(res => res.GuardianId == guardian.Id);
                    var newGuardianElo = _guardianEloRepository.CalculateGuardianElo(guardian, false,
                                                                                     guardianResult.Efficiency, expectedOutcome, 0, team.MatchId);
                    await _guardianEloRepository.UpdateGuardianElo(newGuardianElo);
                }
            }
        }
Exemple #4
0
        public async Task <ActionResult <MatchTeamDto> > CreateTeam([FromBody] MatchTeamOperationDto dto)
        {
            var match = await Context.Matches
                        .Where(o => o.Started == null)
                        .FirstOrDefaultAsync(o => o.Id == dto.MatchId);

            if (match == null)
            {
                return(BadRequest(new InvalidMatchException()));
            }

            var team = new MatchTeam()
            {
                MatchId = match.Id,
            };

            if (!string.IsNullOrEmpty(dto.Password))
            {
                team.SetPassword(dto.Password);
            }

            Context.Add(team);
            await Context.SaveChangesAsync();

            return(Ok(Mapper.Map <MatchTeamDto>(team)));
        }
Exemple #5
0
        private void CbAwayTeam_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            AwayTeam = (sender as ComboBox)?.SelectedItem as MatchTeam;
            LoadPanelWithPlayersAsync(AwayTeam, true);

            PnlAwayTeamGoalie.Children.Clear();
            PnlAwayTeamDefender.Children.Clear();
            PnlAwayTeamMidfield.Children.Clear();
            PnlAwayTeamForward.Children.Clear();
        }
Exemple #6
0
 public static MatchTeamDto AsDto(this MatchTeam team)
 {
     return(new MatchTeamDto
     {
         TeamId = team.TeamId,
         MatchId = team.MatchId,
         Score = team.Score,
         ClubName = team.Team.Club.Name,
         TeamName = team.Team.Name
     });
 }
Exemple #7
0
        public async Task <IActionResult> FormatRequestAndAddMatch([FromQuery] int numOfTeams, [FromQuery] int playersPerTeam)
        {
            var createMatchRequest = new CreateMatchRequest();

            createMatchRequest.MatchType = Enum.Parse <MatchType>(Request.Form["MatchType"]);

            var formKeys = Request.Form.Keys;

            Console.WriteLine($"Key count: {formKeys.Count()}");
            var teams = new List <MatchTeam>();

            for (var i = 0; i < 2; i++)
            {
                var team = new MatchTeam();
                team.Name      = Request.Form[$"Team[{i}].Name"];
                team.TeamScore = int.Parse(Request.Form[$"Team[{i}].TeamScore"]);

                var guardianCount = formKeys.Count(g => g.Contains($"Team[{i}]") && g.Contains("GuardianName"));
                Console.WriteLine($"Guardians on team: {guardianCount}");
                var guardianResults = new List <GuardianMatchResult>();
                for (var j = 0; j < guardianCount; j++)
                {
                    var results = new GuardianMatchResult
                    {
                        Kills        = int.Parse(Request.Form[$"Team[{i}].MatchResults[{j}].Kills"]),
                        Assists      = int.Parse(Request.Form[$"Team[{i}].MatchResults[{j}].Assists"]),
                        Deaths       = int.Parse(Request.Form[$"Team[{i}].MatchResults[{j}].Deaths"]),
                        GuardianName = Request.Form[$"Team[{i}].MatchResults[{j}].GuardianName"]
                    };

                    Console.WriteLine($"Guardian results processed successfully: {results.GuardianName}");
                    if (results.Deaths == 0)
                    {
                        results.Efficiency = results.Kills + results.Assists;
                    }
                    else
                    {
                        results.Efficiency = (double)(results.Kills + results.Assists) / results.Deaths;
                    }
                    Console.WriteLine($"Calculated Eff = {results.Efficiency:F4}");
                    guardianResults.Add(results);
                }

                team.GuardianMatchResults = guardianResults;
                teams.Add(team);
            }

            createMatchRequest.Teams = teams;

            await _matchService.CreateMatch(createMatchRequest.ToMatch(), createMatchRequest.Teams);

            return(RedirectToAction("Index"));
        }
        private async Task <IEnumerable <Guardian> > GetGuardiansForTeam(MatchTeam team)
        {
            var guardians = new List <Guardian>();

            foreach (var result in team.GuardianMatchResults)
            {
                var guardian = await _guardianRepository.GetGuardian(result.GuardianId);

                guardians.Add(guardian);
            }

            return(guardians);
        }
Exemple #9
0
        public async Task AddMatchTeam(MatchTeamDto dto)
        {
            var match = await this.FindSingleMatchAsync(dto.MatchId);

            if (match.Teams.Any(t => t.TeamId == dto.TeamId))
            {
                return;
            }
            var mt = new MatchTeam
            {
                MatchId = dto.MatchId,
                TeamId  = dto.TeamId,
                Score   = 0
            };

            await this._context.MatchTeams.AddAsync(mt);

            await this._context.SaveChangesAsync();
        }
        private async Task CalculateWinningElo(MatchTeam team, IEnumerable <MatchTeam> losingTeams)
        {
            var winningGuardians = await GetGuardiansForTeam(team);

            var teamElo = CalculateTeamAverageElo(winningGuardians);

            var losingTeamElos = new List <double>();

            foreach (var losingTeam in losingTeams)
            {
                var guardiansForTeam = await GetGuardiansForTeam(losingTeam);

                var losingTeamElo = CalculateTeamAverageElo(guardiansForTeam);

                losingTeamElos.Add(losingTeamElo);
            }

            var averageLosingTeamElo = losingTeamElos.Average();

            var eloDifference           = (averageLosingTeamElo - teamElo) / 400;
            var invertedExpectedOutcome = Math.Pow(10, eloDifference) + 1;
            var expectedOutcome         = 1 / invertedExpectedOutcome;

            foreach (var guardian in winningGuardians)
            {
                var guardianResult = team.GuardianMatchResults.FirstOrDefault(res => res.GuardianId == guardian.Id);
                var newGuardianElo = _guardianEloRepository.CalculateGuardianElo(guardian, true,
                                                                                 guardianResult.Efficiency, expectedOutcome, 1, team.MatchId);
                await _guardianEloRepository.UpdateGuardianElo(newGuardianElo);

                if (newGuardianElo.NewElo >= 2100)
                {
                    await _guardianRepository.UpdateGuardianEloModifier(guardian.Id, EloModifier.HighRankingGuardian);
                }
            }
        }
        private MatchTeam ConvertRiotParticipantsToDbTeam(IEnumerable <ParticipantIdentity> riotParticipantIdentities, IEnumerable <Participant> riotParticipants, TeamStats riotTeamStats)
        {
            var team = new MatchTeam
            {
                BaronKills      = riotTeamStats.BaronKills,
                DragonKills     = riotTeamStats.DragonKills,
                InhibitorKills  = riotTeamStats.InhibitorKills,
                RiftHeraldKills = riotTeamStats.RiftHeraldKills,
                TeamId          = riotTeamStats.TeamId
            };

            foreach (var participant in riotParticipants)
            {
                try
                {
                    var participantIdentity = riotParticipantIdentities.FirstOrDefault(x => x.ParticipantId == participant.ParticipantId).Player;

                    team.Players.Add
                    (
                        new MatchPlayer()
                    {
                        AccountId     = participantIdentity.AccountId,
                        SummonerId    = participantIdentity.SummonerId,
                        SummonerName  = participantIdentity.SummonerName,
                        ProfileIconId = participantIdentity.ProfileIcon,
                        TeamId        = participant.TeamId,
                        ParticipantId = participant.ParticipantId,
                        HighestAcheivedTierLastSeason = participant.HighestAchievedSeasonTier.ToString(),
                        Kills              = participant.Stats.Kills,
                        Deaths             = participant.Stats.Deaths,
                        Assists            = participant.Stats.Assists,
                        TotalMinionsKilled = participant.Stats.TotalMinionsKilled,
                        ChampionId         = participant.ChampionId,
                        ChampionLevel      = participant.Stats.ChampLevel,

                        //Item ids
                        TrinketId = participant.Stats.Item6,
                        Item1Id   = participant.Stats.Item0,
                        Item2Id   = participant.Stats.Item1,
                        Item3Id   = participant.Stats.Item2,
                        Item4Id   = participant.Stats.Item3,
                        Item5Id   = participant.Stats.Item4,
                        Item6Id   = participant.Stats.Item5,

                        //Rune ids
                        PrimaryRuneStyleId         = participant.Stats.PerkPrimaryStyle,
                        PrimaryRuneSubStyleOneId   = participant.Stats.Perk0,
                        PrimaryRuneSubStyleTwoId   = participant.Stats.Perk1,
                        PrimaryRuneSubStyleThreeId = participant.Stats.Perk2,
                        PrimaryRuneSubStyleFourId  = participant.Stats.Perk3,

                        SecondaryRuneStyleId       = participant.Stats.PerkSubStyle,
                        SecondaryRuneSubStyleOneId = participant.Stats.Perk4,
                        SecondaryRuneSubStyleTwoId = participant.Stats.Perk5,

                        //Summoners spell ids
                        SummonerSpellOneId = participant.Spell1Id,
                        SummonerSpellTwoId = participant.Spell2Id,

                        //Gold
                        GoldEarned = participant.Stats.GoldEarned,
                        GoldSpent  = participant.Stats.GoldSpent,

                        //Vision
                        VisionScore             = participant.Stats.VisionScore,
                        WardsPlaced             = participant.Stats.WardsPlaced,
                        VisionWardsBoughtInGame = participant.Stats.VisionWardsBoughtInGame,
                        SightWardsBoughtInGame  = participant.Stats.SightWardsBoughtInGame,

                        //Damage dealt/taken
                        TotalDamageTaken            = participant.Stats.TotalDamageTaken,
                        TotalDamageDealt            = participant.Stats.TotalDamageDealt,
                        TotalDamageDealtToChampions = participant.Stats.TotalDamageDealtToChampions,

                        TrueDamageTaken            = participant.Stats.TrueDamageTaken,
                        TrueDamageDealt            = participant.Stats.TrueDamageDealt,
                        TrueDamageDealtToChampions = participant.Stats.TrueDamageDealtToChampions,

                        MagicDamageTaken            = participant.Stats.MagicalDamageTaken,
                        MagicDamageDealt            = participant.Stats.MagicDamageDealt,
                        MagicDamageDealtToChampions = participant.Stats.MagicDamageDealtToChampions,

                        PhysicalDamageTaken            = participant.Stats.PhysicalDamageTaken,
                        PhysicalDamageDealt            = participant.Stats.PhysicalDamageDealt,
                        PhysicalDamageDealtToChampions = participant.Stats.PhysicalDamageDealtToChampions,

                        LargestCriticalStrike = participant.Stats.LargestCriticalStrike,

                        //objectives
                        FirstTowerAssist     = participant.Stats.FirstTowerAssist,
                        FirstTowerKill       = participant.Stats.FirstTowerKill,
                        TurretKills          = participant.Stats.TurretKills,
                        DamageDealtToTurrets = participant.Stats.DamageDealtToTurrets,

                        FirstInhibitorAssist = participant.Stats.FirstInhibitorAssist,
                        FirstInhibitorKill   = participant.Stats.FirstInhibitorKill,
                        InhibitorKills       = participant.Stats.InhibitorKills,

                        DamageDealtToObjectives = participant.Stats.DamageDealtToObjectives,
                        ObjectivePlayerScore    = participant.Stats.ObjectivePlayerScore,

                        //Kills
                        FirstBloodAssist = participant.Stats.FirstBloodAssist,
                        FirstBloodKill   = participant.Stats.FirstBloodKill,

                        LargestMultiKill    = participant.Stats.LargestMultiKill,
                        LargestKillingSpree = participant.Stats.LargestKillingSpree,
                        PentaKills          = participant.Stats.PentaKills,
                        QuadraKills         = participant.Stats.QuadraKills,
                        KillingSprees       = participant.Stats.KillingSprees,
                        DoubleKills         = participant.Stats.DoubleKills,

                        //Farming
                        NeutralMinionsKilled            = participant.Stats.NeutralMinionsKilled,
                        NeutralMinionsKilledEnemyJungle = participant.Stats.NeutralMinionsKilledEnemyJungle,
                        NeutralMinionsKilledTeamJungle  = participant.Stats.NeutralMinionsKilledTeamJungle,

                        //Misc info
                        TimeCCingOthers            = participant.Stats.TimeCCingOthers,
                        TotalTimeCrowdControlDealt = participant.Stats.TotalTimeCrowdControlDealt,

                        TotalHeal        = participant.Stats.TotalHeal,
                        TotalUnitsHealed = participant.Stats.TotalUnitsHealed,

                        TotalScoreRank = participant.Stats.TotalScoreRank
                    }
                    );
                }
                catch (Exception)
                {
                }
            }

            return(team);
        }
Exemple #12
0
        static void Main(string[] args)
        {
            using (var conn2 = new SQLite.SQLiteConnection("..//..//..//Smarkets.SqliteScoreApp.Teams.sqlite"))
            {
                var teams   = conn2.Table <Smarkets.Entity.Temp.Team>().ToList();
                var results = conn2.Table <Smarkets.Entity.Temp.Result>().ToList();

                foreach (var result in results)
                {
                    var mt = new MatchTeam
                    {
                        TeamId     = result.Team1Id,
                        Key        = (byte)Football.Enum.MatchTeamType.Home,
                        Statistics = new System.Collections.Generic.List <TeamStat>
                        {
                            new TeamStat
                            {
                                Key   = (byte)Football.Enum.TeamStatType.FullTimeGoal,
                                Value = result.Team1FullTimeScore,
                            }
                            ,
                            new TeamStat
                            {
                                Key   = (byte)Football.Enum.TeamStatType.HalfTimeGoal,
                                Value = result.Team1HalfTimeScore,
                            }
                        }
                    };

                    var mt2 = new MatchTeam
                    {
                        TeamId     = result.Team2Id,
                        Key        = (byte)Football.Enum.MatchTeamType.Away,
                        Statistics = new System.Collections.Generic.List <TeamStat>
                        {
                            new TeamStat
                            {
                                Key   = (byte)Football.Enum.TeamStatType.FullTimeGoal,
                                Value = result.Team2FullTimeScore,
                            }
                            ,
                            new TeamStat
                            {
                                Key   = (byte)Football.Enum.TeamStatType.HalfTimeGoal,
                                Value = result.Team2HalfTimeScore,
                            }
                        }
                    };

                    var match = new Match
                    {
                        Id     = result.Id,
                        Status = (byte)UtilityEnum.ProcessState.Terminated,
                        Teams  = new System.Collections.Generic.List <MatchTeam>
                        {
                            mt, mt2
                        }
                    };
                }
                ;
            }
        }
        public void AddMatchAndRanks(Match match, List <Team> teams)
        {
            var winningTeam  = match.Result.Winner;
            var tierPoints   = CalcTierPoints(match, teams);
            var impactPoints = CalcImpactPoints(match, tierPoints);

            var setDiff = Math.Abs(match.Result.SetsCountTeam1 - match.Result.SetsCountTeam2);
            var gemDiff = 0;

            match.Result.Sets.ForEach(x => gemDiff += (x.TeamOneGems - x.TeamTwoGems));
            gemDiff = Math.Abs(gemDiff);
            if (winningTeam == Winner.TeamOne && gemDiff < 0)
            {
                gemDiff = gemDiff * -1;
            }
            if (winningTeam == Winner.TeamTwo && gemDiff > 0)
            {
                gemDiff = gemDiff * -1;
            }

            var changePoints = new List <decimal>();

            changePoints.Add(impactPoints[0] + impactPoints[0] * (gemDiff * Constants.GemMultiplier * setDiff * Constants.SetMultiplier));
            changePoints.Add(impactPoints[1] + impactPoints[1] * (gemDiff * Constants.GemMultiplier * setDiff * Constants.SetMultiplier));
            changePoints.Add(impactPoints[2] + impactPoints[2] * (gemDiff * Constants.GemMultiplier * setDiff * Constants.SetMultiplier));
            changePoints.Add(impactPoints[3] + impactPoints[3] * (gemDiff * Constants.GemMultiplier * setDiff * Constants.SetMultiplier));


            if (winningTeam == Winner.TeamOne)
            {
                changePoints[2] = changePoints[2] * -1;
                changePoints[3] = changePoints[3] * -1;
            }
            else
            {
                changePoints[0] = changePoints[0] * -1;
                changePoints[1] = changePoints[1] * -1;
            }
            var dej = _context.Bros.Where(b => b.Name == teams.First().Bros.First().Name).FirstOrDefault();

            _context.Bros.Where(b => b.Name == teams.First().Bros.First().Name).FirstOrDefault().Ranks.Add(new Rank {
                Ranking = teams.First().Bros.First().Ranks.LastOrDefault().Ranking + changePoints[0]
            });
            _context.Bros.Where(b => b.Name == teams.First().Bros.Last().Name).FirstOrDefault().Ranks.Add(new Rank {
                Ranking = teams.First().Bros.Last().Ranks.LastOrDefault().Ranking + changePoints[1]
            });
            _context.Bros.Where(b => b.Name == teams.Last().Bros.First().Name).FirstOrDefault().Ranks.Add(new Rank {
                Ranking = teams.Last().Bros.First().Ranks.LastOrDefault().Ranking + changePoints[2]
            });
            _context.Bros.Where(b => b.Name == teams.Last().Bros.Last().Name).FirstOrDefault().Ranks.Add(new Rank {
                Ranking = teams.Last().Bros.Last().Ranks.LastOrDefault().Ranking + changePoints[3]
            });
            _context.SaveChanges();
            var matchDb    = _context.Add(match).Entity;
            var matchTeam1 = new MatchTeam
            {
                TeamId  = teams[0].TeamId,
                MatchId = matchDb.MatchId
            };
            var matchTeam2 = new MatchTeam
            {
                TeamId  = teams[1].TeamId,
                MatchId = matchDb.MatchId
            };

            _context.Add(matchTeam1);
            _context.Add(matchTeam2);
            _context.SaveChanges();
        }
Exemple #14
0
        private async Task UpdateMatch(Competition competition, Model.FIFA.Match fifaMatch)
        {
            var homeTeam = await GetOrCreateTeam(fifaMatch.Home);

            var awayTeam = await GetOrCreateTeam(fifaMatch.Away);

            var localizedNames = fifaMatch.StageName.Select(n => new LocalizedName {
                Locale = n.Locale, Value = n.Description
            });
            var group = fifaMatch.GroupName.Select(n => new LocalizedName {
                Locale = n.Locale, Value = n.Description
            });
            var mutation   = Model.Mutations.CREATE_MATCH;
            var savedMatch = competition.Matches.Items.FirstOrDefault(i => i.Id == fifaMatch.IdMatch);

            if (savedMatch != null)
            {
                savedMatch.LocalizedNames = savedMatch.LocalizedNames ?? new List <LocalizedName>();
                localizedNames            = savedMatch.LocalizedNames
                                            .Concat(localizedNames)
                                            .Distinct(_localizedNameComparer);
                group = savedMatch.Group
                        .Concat(group)
                        .Distinct(_localizedNameComparer);
                mutation = Model.Mutations.UPDATE_MATCH;
            }

            var matchResponses = await _awsJsInterop.GraphQlAsync <Model.MatchResponses>(mutation, new
            {
                input = new
                {
                    id = fifaMatch.IdMatch,
                    group,
                    number             = fifaMatch.MatchNumber,
                    matchCompetitionId = competition.Id,
                    beginAt            = fifaMatch.Date,
                    placeHolderHome    = homeTeam?.Name ?? fifaMatch.PlaceHolderA,
                    placeHolderAway    = awayTeam?.Name ?? fifaMatch.PlaceHolderB,
                    localizedNames
                }
            });

            var match = matchResponses.CreateMatch ?? matchResponses.UpdateMatch;

            if (savedMatch != null)
            {
                savedMatch.BeginAt         = match.BeginAt;
                savedMatch.Group           = match.Group;
                savedMatch.LocalizedNames  = match.LocalizedNames;
                savedMatch.MatchTeams      = match.MatchTeams;
                savedMatch.Number          = match.Number;
                savedMatch.PlaceHolderAway = match.PlaceHolderAway;
                savedMatch.PlaceHolderHome = match.PlaceHolderHome;
            }
            else
            {
                var matchList = (IList <FootballChampionship.Model.Match>)competition.Matches.Items;
                matchList.Add(match);
            }

            var matchTeams = match.MatchTeams.Items;

            MatchTeam homeMatchTeam = null;

            if (homeTeam != null)
            {
                homeMatchTeam = matchTeams.FirstOrDefault(mt => mt.Team.Id == homeTeam.Id);
                if (homeMatchTeam == null)
                {
                    var homeMatchTeamResponse = await _awsJsInterop.GraphQlAsync <MatchTeamResponses>(Model.Mutations.CREATE_MATCH_TEAM, new
                    {
                        input = new
                        {
                            id               = Guid.NewGuid(),
                            isHome           = true,
                            matchTeamTeamId  = homeTeam.Id,
                            matchTeamMatchId = fifaMatch.IdMatch
                        }
                    });

                    homeMatchTeam = homeMatchTeamResponse.CreateMatchTeam;
                }

                homeMatchTeam.Team = homeTeam;
            }

            MatchTeam awayMatchTeam = null;

            if (awayTeam != null)
            {
                awayMatchTeam = matchTeams.FirstOrDefault(mt => mt.Team.Id == awayTeam.Id);
                if (awayMatchTeam == null)
                {
                    var awayMatchTeamResponse = await _awsJsInterop.GraphQlAsync <MatchTeamResponses>(Model.Mutations.CREATE_MATCH_TEAM, new
                    {
                        input = new
                        {
                            id               = Guid.NewGuid(),
                            isHome           = false,
                            matchTeamTeamId  = awayTeam.Id,
                            matchTeamMatchId = fifaMatch.IdMatch
                        }
                    });

                    awayMatchTeam = awayMatchTeamResponse.CreateMatchTeam;
                }
                awayMatchTeam.Team = awayTeam;
            }

            match.MatchTeams.Items = new List <MatchTeam>
            {
                homeMatchTeam,
                awayMatchTeam
            };

            MatchUpdated?.Invoke(match);
        }