コード例 #1
0
        public void OnMatchUploaded(object sender, OnMatchDoneArgs args)
        {
            var r = new List <string>();

            lock (_lock)
            {
                using (var ps = PowerShell.Create())
                {
                    var destination = Path.Combine(_ocrDir, Path.GetFileName(args.Match.ImageFilePath));
                    System.IO.File.Copy(args.Match.ImageFilePath, destination);
                    var script = System.IO.File.ReadAllText(@"C:\Users\leonardo.kobus\Desktop\lobby\processImages.ps1");
                    ps.AddScript(script);
                    var result = ps.Invoke();
                    using (var reader = new StreamReader(@"C:\Users\leonardo.kobus\Desktop\lobby\result\matches.csv"))
                    {
                        reader.ReadLine();
                        while (!reader.EndOfStream)
                        {
                            r.Add(reader.ReadLine());
                        }
                        args.MatchInfo = r;
                    }
                    System.IO.File.Delete(destination);
                }
            }
            OnMatchProcessed?.Invoke(this, args);
        }
コード例 #2
0
 public void OnMatchResolved(object sender, OnMatchDoneArgs args)
 {
     if (args.Match.Status == MatchStatusEnum.CONCLUDED)
     {
         if (!args.IsOCRUpdate)
         {
             _playerResultsRepository.DeleteByMatchId(args.Match.Id);
         }
         args.Match.PlayersTeamLooser.ForEach(p => _playerResultsRepository.Upsert(PlayerResults.Factory.CreatLost(p, args.Match.Id).Instance));
         args.Match.PlayersTeamWinner.ForEach(p => _playerResultsRepository.Upsert(PlayerResults.Factory.CreateWin(p, args.Match.Id).Instance));
     }
 }
コード例 #3
0
ファイル: MatchService.cs プロジェクト: lkobus/DissidiaLeague
        public void OnMatchProcessed(object sender, OnMatchDoneArgs args)
        {
            var result = args.Match;

            var matches = GroupMatchesByDate(args.MatchInfo);

            matches.GroupBy(p => p.Key)
            .ToList()
            .Where(p => !string.IsNullOrEmpty(p.Key))
            .ToList()
            .ForEach(match =>
            {
                var m = match.FirstOrDefault();
                if (args.Match.IsMatchDateEmpty)
                {
                    result = Factory.From(result)
                             .WithDate(
                        DateTime.ParseExact(match.Key, "yyyy:MM:dd HH:mm:ss", CultureInfo.InvariantCulture))
                             .Instance;
                }
                m.Value.ForEach(player =>
                {
                    var values = player.Split(';');
                    int points = 0;
                    int.TryParse(values[2], out points);
                    var character   = values[3];
                    var currentChar = CharEnum.ToList().FirstOrDefault(c => c.Valor.ToUpper() == character.ToUpper());
                    if (currentChar == null)
                    {
                        currentChar = CharEnum.UNDEFINED;
                    }
                    var p = new PlayerInfo(currentChar, values[1], points);
                    if (values[0] == "Derrota")
                    {
                        result.PlayersTeamLooser.Add(p);
                    }
                    else
                    {
                        result.PlayersTeamWinner.Add(p);
                    }
                });
            });
            _matchRepository.Upsert(result);
            OnMatchResolved?.Invoke(this, args);
        }
コード例 #4
0
ファイル: MatchService.cs プロジェクト: lkobus/DissidiaLeague
 public async Task RegisterMatchAsync(Stream stream, MatchTypeEnum type, DateTime date)
 {
     await Task.Factory.StartNew(() =>
     {
         try
         {
             var match = Match.Factory.NewMatch(type)
                         .WithDate(date);
             var imageFile = SaveImageInStorage(stream, match.Instance.Id);
             _matchRepository.Upsert(match.WithImage(imageFile).Instance);
             var matchArgs = new OnMatchDoneArgs(match.Instance, type);
             OnMatchUploaded?.Invoke(this, matchArgs);
         }
         catch (Exception oi)
         {
             var i = "";
         }
     });
 }
コード例 #5
0
        public void OnMatchResolved(object sender, OnMatchDoneArgs args)
        {
            if (args.Match.Type == MatchTypeEnum.TEAM)
            {
                var results = _teamPontuationRepository.GetTeamsPontuationsIdsFromMatchId(args.Match.Id);
                if (results.Count > 0)
                {
                    results.ForEach(r => _teamPontuationRepository.Delete(r));
                }

                var teamWinnersMembers = args.Match.PlayersTeamWinner.Select(p => p.Name).ToList();
                var teamLoosersMembers = args.Match.PlayersTeamLooser.Select(p => p.Name).ToList();

                var teamWinner = TeamPontuation.Factory.CreateTeamWon(teamWinnersMembers,
                                                                      args.Match.PlayersTeamWinner.Sum(p => p.Points), args.Match.Id, args.Match.TeamA);

                var teamLooser = TeamPontuation.Factory.CreateTeamLooser(teamLoosersMembers,
                                                                         args.Match.PlayersTeamWinner.Sum(p => p.Points), args.Match.Id, args.Match.TeamB);

                _teamPontuationRepository.Upsert(teamWinner.Instance);
                _teamPontuationRepository.Upsert(teamLooser.Instance);
            }
        }
コード例 #6
0
 public void OnMatchResolved(object sender, OnMatchDoneArgs args)
 {
     _changeRepository.Upsert(Factory.CreateChange(args.UserId, UserChangeEnum.MATCH_UPDATE).Instance);
 }