protected override void PublishImportedResults(DataImportedEventArgs args) { // do not update HUD when hand is imported for FF games if (args.GameInfo.GameFormat == GameFormat.FastFold) { args.DoNotUpdateHud = true; } base.PublishImportedResults(args); }
protected override void PublishImportedResults(DataImportedEventArgs args) { // we don't publish imported data for zoom if (args.GameInfo.GameFormat == GameFormat.Zoom) { args.DoNotUpdateHud = true; } base.PublishImportedResults(args); }
public void ProcessData(PokerStarsZoomDataObject catcherDataObject) { if (catcherDataObject == null || catcherDataObject.Handle == 0) { return; } try { PokerStarsZoomCacheData cachedObject; var isNew = false; if (!cachedData.ContainsKey(catcherDataObject.Handle)) { cachedObject = new PokerStarsZoomCacheData { Data = catcherDataObject }; cachedData.Add(catcherDataObject.Handle, cachedObject); isNew = true; } else { cachedObject = cachedData[catcherDataObject.Handle]; } cachedObject.LastModified = DateTime.Now; RemoveExpiredCache(); if (!isNew) { if (cachedObject.IsProcessed && ComparePlayers(cachedObject.Data, catcherDataObject)) { return; } cachedObject.Data = catcherDataObject; } LoadPlayers(catcherDataObject.Players.Select(x => x.Player)); var gameInfo = new GameInfo { Session = catcherDataObject.Handle.ToString(), WindowHandle = catcherDataObject.Handle, PokerSite = EnumPokerSites.PokerStars, GameType = catcherDataObject.GameType, TableType = catcherDataObject.TableType, GameFormat = catcherDataObject.GameFormat, GameNumber = catcherDataObject.HandNumber }; // Initialize cache gameInfo.ResetPlayersCacheInfo(); var players = new PlayerList(catcherDataObject.Players.Select(x => new Player(x.Player, 0, x.Seat) { PlayerId = playerNamePlayerIdMap.ContainsKey(x.Player) ? playerNamePlayerIdMap[x.Player] : 0 })); var heroPlayer = ProcessPlayers(gameInfo, players, catcherDataObject); if (heroPlayer == null || (gameInfo.GameFormat != GameFormat.Zoom && gameInfo.GameFormat != GameFormat.Cash)) { return; } var importedArgs = new DataImportedEventArgs(players, gameInfo, heroPlayer, 0); eventAggregator.GetEvent <DataImportedEvent>().Publish(importedArgs); cachedObject.IsProcessed = true; #if DEBUG Console.WriteLine($@"Data has been send to {catcherDataObject.TableName}, {catcherDataObject.Handle}, {catcherDataObject.TableName} {(int)catcherDataObject.TableType}-max, {string.Join(", ", players.Select(x => $"{x.PlayerName}[{x.PlayerId}]").ToArray())}"); #endif } catch (Exception ex) { LogProvider.Log.Error(this, "Stream data was in wrong format", ex); } }
protected virtual void ProcessFastFoldNoticeGameReset(FastFoldImportDto fastFoldImportDto) { var noticeGameSnapshot = fastFoldImportDto.HandBuilder.GetNoticeRoomSnapShot(fastFoldImportDto.Package); if (noticeGameSnapshot == null || fastFoldImportDto.NoticeResetGame.Players == null || !long.TryParse(fastFoldImportDto.NoticeResetGame.GameId, out long handId)) { LogProvider.Log.Error(Logger, $"Failed to get snapshot for {fastFoldImportDto.Package.UserId} of {fastFoldImportDto.Package.RoomId} (Fast Fold)."); return; } // load players from db var playersToAdd = fastFoldImportDto.NoticeResetGame.Players .Select(x => x.Playerid.ToString()) .Where(x => !fastFoldImportDto.PlayerNamePlayerIdMap.ContainsKey(x)) .ToArray(); if (playersToAdd.Length > 0) { using (var session = ModelEntities.OpenSession()) { var playerNamePlayerIdToAdd = session.Query <Players>() .Where(x => x.PokersiteId == (short)Site && playersToAdd.Contains(x.Playername)) .Select(x => new { x.Playername, x.PlayerId }) .ToArray(); playerNamePlayerIdToAdd.ForEach(x => fastFoldImportDto.PlayerNamePlayerIdMap.Add(x.Playername, x.PlayerId)); } } var fastFoldRoomId = fastFoldImportDto.HandBuilder .GetFastFoldRoomByUser(fastFoldImportDto.Package.UserId); if (fastFoldRoomId == 0) { fastFoldRoomId = fastFoldImportDto.Package.RoomId; } var gameInfo = new GameInfo { Session = $"{fastFoldRoomId}{fastFoldImportDto.Package.UserId}", WindowHandle = fastFoldImportDto.WindowHandle.ToInt32(), PokerSite = Site, GameType = Bovada.GameType.Holdem, TableType = (EnumTableType)noticeGameSnapshot.Params.PlayerCountMax, GameFormat = GameFormat.FastFold, GameNumber = handId }; // Initialize cache gameInfo.ResetPlayersCacheInfo(); var players = new PlayerList(fastFoldImportDto.NoticeResetGame.Players.Select(x => new Player(x.Playerid.ToString(), 0, x.Seatid + 1) { PlayerId = fastFoldImportDto.PlayerNamePlayerIdMap.ContainsKey(x.Playerid.ToString()) ? fastFoldImportDto.PlayerNamePlayerIdMap[x.Playerid.ToString()] : 0, PlayerNick = x.Name })); Player heroPlayer = null; foreach (var player in players) { if (player.PlayerId == 0) { continue; } var isHero = false; if (player.PlayerName.Equals(fastFoldImportDto.Package.UserId.ToString())) { heroPlayer = player; isHero = true; } var playerCollectionItem = new PlayerCollectionItem { PlayerId = player.PlayerId, Name = player.PlayerName, PokerSite = Site }; var playerCacheStatistic = fastFoldImportDto.ImporterSessionCacheService.GetPlayerStats(gameInfo.Session, playerCollectionItem, out bool exists); if (exists && playerCacheStatistic.IsHero) { heroPlayer = player; gameInfo.GameFormat = playerCacheStatistic.GameFormat; break; } else if (!exists && gameInfo.GameFormat == GameFormat.FastFold) { var playerCacheInfo = new PlayerStatsSessionCacheInfo { Session = gameInfo.Session, GameFormat = gameInfo.GameFormat, Player = playerCollectionItem, IsHero = isHero, Stats = new Playerstatistic { SessionCode = gameInfo.Session, PokergametypeId = (short)HandHistories.Objects.GameDescription.GameType.NoLimitHoldem } }; if (playerCacheInfo.Stats.PokergametypeId != 0) { gameInfo.AddToPlayersCacheInfo(playerCacheInfo); } } } PreparePlayerList(players, noticeGameSnapshot.Params.PlayerCountMax, heroPlayer != null ? heroPlayer.SeatNumber : 0); var importedArgs = new DataImportedEventArgs(players, gameInfo, heroPlayer, 0); eventAggregator.GetEvent <DataImportedEvent>().Publish(importedArgs); }
/// <summary> /// Import results in DB /// </summary> /// <param name="convertedResult"></param> private void ImportResult(ConvertedResult convertedResult) { // send data to file importer var dbImporter = ServiceLocator.Current.GetInstance <IFileImporter>(); var progress = new DHProgress(); IEnumerable <ParsingResult> parsingResult = null; LogProvider.Log.Info(this, $"Hand {convertedResult.HandNumber} processed. [{Identifier}]"); try { parsingResult = dbImporter.Import(convertedResult.ConvertedXml, progress, convertedResult.GameInfo); } catch (DHLicenseNotSupportedException) { LogProvider.Log.Error(this, $"Hand {convertedResult.HandNumber} has not been imported. License issue. [{Identifier}]"); var windowHwnd = new IntPtr(convertedResult.GameInfo.WindowHandle); if (windowHwnd != IntPtr.Zero && WinApi.IsWindow(windowHwnd)) { var preImportedArgs = new PreImportedDataEventArgs(convertedResult.GameInfo, CommonResourceManager.Instance.GetResourceString("Notifications_HudLayout_PreLoadingText_NoLicense")); eventAggregator.GetEvent <PreImportedDataEvent>().Publish(preImportedArgs); } return; } catch (Exception e) { LogProvider.Log.Error(this, string.Format("Hand {0} has not been imported. [{1}]", convertedResult.HandNumber, Identifier), e); } if (parsingResult == null) { return; } foreach (var result in parsingResult) { if (result.HandHistory == null) { continue; } if (result.IsDuplicate) { LogProvider.Log.Info(this, string.Format("Hand {0} has not been imported. Duplicate. [{1}]", result.HandHistory.Gamenumber, Identifier)); continue; } if (!result.WasImported) { LogProvider.Log.Info(this, string.Format("Hand {0} has not been imported. [{1}]", result.HandHistory.Gamenumber, Identifier)); continue; } LogProvider.Log.Info(this, string.Format("Hand {0} has been imported in {2}ms. [{1}]", result.HandHistory.Gamenumber, Identifier, result.Duration)); if (result.Source.GameDescription.TableTypeDescriptors.Contains(TableTypeDescription.FastFold)) { var preImportedArgs = new PreImportedDataEventArgs(convertedResult.GameInfo, CommonResourceManager.Instance.GetResourceString("Notifications_HudLayout_PreLoadingText_NotSupportedFastFold")); eventAggregator.GetEvent <PreImportedDataEvent>().Publish(preImportedArgs); return; } var dataImportedArgs = new DataImportedEventArgs(result.Source.Players, convertedResult.GameInfo, result.Source.Hero, result.Source.HandId); eventAggregator.GetEvent <DataImportedEvent>().Publish(dataImportedArgs); } }