public void HudPlainStatBoxViewModelToolCanBeSerializedDeserializedWithProtobuf()
        {
            var hudLayoutToolExpected = new HudLayoutPlainBoxTool
            {
                Stats = new ReactiveList <StatInfo>
                {
                    new StatInfo {
                        Stat = Stat.VPIP
                    },
                    new StatInfo {
                        Stat = Stat.PFR
                    },
                    new StatInfo {
                        Stat = Stat.S3Bet
                    },
                    new StatInfo {
                        Stat = Stat.ColdCall
                    }
                }
            };

            var hudElement = new HudElementViewModel
            {
                Seat = 1,
            };

            var hudToolViewModelExpected = hudLayoutToolExpected.CreateViewModel(hudElement) as HudPlainStatBoxViewModel;

            hudToolViewModelExpected.Width             = 100;
            hudToolViewModelExpected.Height            = 150;
            hudToolViewModelExpected.Position          = new System.Windows.Point(10, 10);
            hudToolViewModelExpected.Opacity           = 50;
            hudToolViewModelExpected.IsNoteIconEnabled = true;

            Assert.IsNotNull(hudToolViewModelExpected);

            var hudToolViewModelActual = SerializerHelper.GetSerializedDeserializedObject(hudToolViewModelExpected);

            Assert.That(hudToolViewModelActual.Id, Is.EqualTo(hudToolViewModelExpected.Id));
            Assert.That(hudToolViewModelActual.ToolType, Is.EqualTo(hudToolViewModelExpected.ToolType));
            Assert.That(hudToolViewModelActual.Stats.Count, Is.EqualTo(hudToolViewModelExpected.Stats.Count));
            Assert.That(hudToolViewModelActual.Width, Is.EqualTo(hudToolViewModelExpected.Width));
            Assert.That(hudToolViewModelActual.Height, Is.EqualTo(hudToolViewModelExpected.Height));
            Assert.That(hudToolViewModelActual.Position, Is.EqualTo(hudToolViewModelExpected.Position));
            Assert.That(hudToolViewModelActual.Opacity, Is.EqualTo(hudToolViewModelExpected.Opacity));
            Assert.That(hudToolViewModelActual.IsNoteIconEnabled, Is.EqualTo(hudToolViewModelExpected.IsNoteIconEnabled));
        }
        public void HudLayoutPlainBoxToolCanBeSerializedDeserializedWithProtobuf()
        {
            var hudLayoutToolExpected = new HudLayoutPlainBoxTool
            {
                Stats = new ReactiveList <StatInfo>
                {
                    new StatInfo {
                        Stat = Stat.VPIP
                    }
                }
            };

            var hudLayoutToolActual = SerializerHelper.GetSerializedDeserializedObject(hudLayoutToolExpected);

            Assert.That(hudLayoutToolActual.Id, Is.EqualTo(hudLayoutToolExpected.Id));
            Assert.That(hudLayoutToolActual.Stats.Count, Is.EqualTo(hudLayoutToolExpected.Stats.Count));
            Assert.That(hudLayoutToolActual.Stats.FirstOrDefault().Stat, Is.EqualTo(hudLayoutToolExpected.Stats.FirstOrDefault().Stat));
        }
예제 #3
0
        /// <summary>
        /// Creates plain stat box view model
        /// </summary>
        /// <param name="creationInfo"><see cref="HudToolCreationInfo"/></param>
        /// <returns>Plain stat box view model</returns>
        private HudBaseToolViewModel CreatePlainStatBoxTool(HudToolCreationInfo creationInfo)
        {
            Check.Require(creationInfo.Layout != null, "Layout isn't defined. Plain stat box has not been created.");

            var layoutTool = new HudLayoutPlainBoxTool
            {
                Stats       = new ReactiveList <StatInfo>(),
                UIPositions = GetHudUIPositions(EnumTableType.HU, EnumTableType.HU, creationInfo.Position)
            };

            layoutTool.UIPositions.ForEach(x =>
            {
                x.Width  = HudDefaultSettings.PlainStatBoxWidth;
                x.Height = HudDefaultSettings.PlainStatBoxHeight;
            });

            var toolViewModel = layoutTool.CreateViewModel(creationInfo.HudElement);

            toolViewModel.InitializePositions();

            creationInfo.Layout.LayoutTools.Add(layoutTool);

            return(toolViewModel);
        }
        /// <summary>
        /// Creates <see cref="HudLayoutInfoV2"/> for tests, all tools must be included
        /// </summary>
        /// <returns><see cref="HudLayoutInfoV2"/></returns>
        private static HudLayoutInfoV2 CreateHudLayoutInfo()
        {
            var hudLayoutInfo = new HudLayoutInfoV2
            {
                TableType = EnumTableType.HU,
                Name      = "TestLayout",
                Filter    = new HudLayoutFilter
                {
                    DataFreshness = 30,
                    TableTypes    = new[] { (int)EnumTableType.HU, (int)EnumTableType.Six }
                },
                TrackMeterPositions = new List <HudPositionsInfo>
                {
                    new HudPositionsInfo
                    {
                        GameType     = EnumGameType.MTTHoldem,
                        PokerSite    = EnumPokerSites.Bodog,
                        HudPositions = new List <HudPositionInfo>
                        {
                            new HudPositionInfo
                            {
                                Position = new System.Windows.Point(1, 15)
                            }
                        }
                    }
                }
            };

            var plainBoxTool = new HudLayoutPlainBoxTool
            {
                Positions = new List <HudPositionsInfo>
                {
                    new HudPositionsInfo
                    {
                        GameType     = EnumGameType.CashHoldem,
                        HudPositions = new List <HudPositionInfo>
                        {
                            new HudPositionInfo
                            {
                                Position = new System.Windows.Point(1, 1),
                                Seat     = 1,
                                Width    = 2
                            }
                        },
                        PokerSite = EnumPokerSites.Bodog
                    }
                },
                Stats = new ReactiveList <StatInfo>
                {
                    new StatInfo
                    {
                        Stat = Stat.VPIP
                    }
                }
            };

            var textboxTool = new HudLayoutTextBoxTool
            {
                Text = "Test"
            };

            var fourStatBoxTool = new HudLayoutFourStatsBoxTool
            {
                Positions = new List <HudPositionsInfo>
                {
                    new HudPositionsInfo
                    {
                        GameType     = EnumGameType.CashHoldem,
                        HudPositions = new List <HudPositionInfo>
                        {
                            new HudPositionInfo
                            {
                                Position = new System.Windows.Point(1, 1),
                                Seat     = 1,
                                Width    = 2
                            }
                        },
                        PokerSite = EnumPokerSites.Bodog
                    }
                },
                Stats = new ReactiveList <StatInfo>
                {
                    new StatInfo
                    {
                        Stat = Stat.VPIP
                    }
                }
            };

            var tiltMeterTool      = new HudLayoutTiltMeterTool();
            var playerIconTool     = new HudLayoutPlayerIconTool();
            var graphTool          = new HudLayoutGraphTool();
            var gaugeIndicatorTool = new HudLayoutGaugeIndicator();
            var bumperStickers     = new HudLayoutBumperStickersTool();
            var heatMap            = new HudLayoutHeatMapTool();

            hudLayoutInfo.LayoutTools = new List <HudLayoutTool> {
                plainBoxTool, textboxTool, fourStatBoxTool, tiltMeterTool, playerIconTool, graphTool, gaugeIndicatorTool, bumperStickers, heatMap
            };

            return(hudLayoutInfo);
        }
예제 #5
0
        private void MigratePlainLayout(HudLayoutInfo layout, HudLayoutInfoV2 layoutInfoV2)
        {
            var hudLayoutPlainBoxTool = new HudLayoutPlainBoxTool();

            hudLayoutPlainBoxTool.UIPositions = (from seat in Enumerable.Range(1, (int)layout.TableType)
                                                 let uiPosition = layout.UiPositionsInfo.FirstOrDefault(x => x.Seat == seat)
                                                                  let x = uiPosition != null ? uiPosition.Position.X + uiPositionShiftX : 0
                                                                          let y = uiPosition != null ? uiPosition.Position.Y : 0
                                                                                  select new HudPositionInfo
            {
                Seat = seat,
                Position = new Point(x, y),
                Width = uiPosition != null ? uiPosition.Width : HudDefaultSettings.PlainStatBoxWidth,
                Height = HudDefaultSettings.PlainStatBoxHeight,
            }).ToList();

            var clonedStats = layout.HudStats.Select(x => x.Clone()).ToList();

            // insert line breaks
            if (clonedStats.Count > 4 && clonedStats.All(x => !(x is StatInfoBreak)))
            {
                var clonedStatsWithBreaks = new List <StatInfo>();

                for (var i = 0; i < clonedStats.Count; i++)
                {
                    if (i > 0 && i % 4 == 0)
                    {
                        clonedStatsWithBreaks.Add(new StatInfoBreak());
                    }

                    clonedStatsWithBreaks.Add(clonedStats[i]);
                }

                clonedStats = clonedStatsWithBreaks;
            }

            hudLayoutPlainBoxTool.Stats = new ReactiveList <StatInfo>(clonedStats);

            hudLayoutPlainBoxTool.Positions = (from hudPositionsInfo in layout.HudPositionsInfo
                                               select new HudPositionsInfo
            {
                GameType = hudPositionsInfo.GameType,
                PokerSite = hudPositionsInfo.PokerSite,
                HudPositions = (from hudPosition in hudPositionsInfo.HudPositions
                                let offset = GetOffset(hudPositionsInfo.PokerSite, hudPositionsInfo.GameType, layout.TableType, hudPosition.Seat)
                                             select new HudPositionInfo
                {
                    Seat = hudPosition.Seat,
                    Position = new Point(hudPosition.Position.X + offset.X, hudPosition.Position.Y + offset.Y)
                }).ToList()
            }).ToList();

            var hudLayoutBumperStickersTool = new HudLayoutBumperStickersTool
            {
                UIPositions = (from position in hudLayoutPlainBoxTool.UIPositions
                               select new HudPositionInfo
                {
                    Seat = position.Seat,
                    Position = new Point(position.Position.X, position.Position.Y - HudDefaultSettings.BumperStickersHeight),
                    Width = HudDefaultSettings.BumperStickersWidth,
                    Height = HudDefaultSettings.BumperStickersHeight
                }).ToList(),
                Positions = (from positionsInfo in hudLayoutPlainBoxTool.Positions
                             select new HudPositionsInfo
                {
                    PokerSite = positionsInfo.PokerSite,
                    GameType = positionsInfo.GameType,
                    HudPositions = (from position in positionsInfo.HudPositions
                                    select new HudPositionInfo
                    {
                        Seat = position.Seat,
                        Position = new Point(position.Position.X, position.Position.Y - HudDefaultSettings.BumperStickersHeight)
                    }).ToList()
                }).ToList()
            };


            layoutInfoV2.LayoutTools = new List <HudLayoutTool> {
                hudLayoutPlainBoxTool, hudLayoutBumperStickersTool
            };

            MigratePopups(layout, layoutInfoV2);
        }
예제 #6
0
        private void MigrateRichLayout(HudLayoutInfo layout, HudLayoutInfoV2 layoutInfoV2)
        {
            // 4-stat box
            var hudLayout4StatBoxTool = new HudLayoutFourStatsBoxTool
            {
                IsVertical  = layout.HudViewType != HudViewType.Horizontal,
                UIPositions = (from seat in Enumerable.Range(1, (int)layout.TableType)
                               let uiPosition = layout.UiPositionsInfo.FirstOrDefault(x => x.Seat == seat)
                                                let shiftX = layout.HudViewType != HudViewType.Horizontal && IsRightOriented((int)layout.TableType, seat) ? ui4StatBoxVerticalShiftX : 0
                                                             let shiftY = layout.HudViewType == HudViewType.Horizontal ? ui4StatBoxHorizontalShiftY : 0
                                                                          let x = uiPosition != null ? uiPosition.Position.X + shiftX : 0
                                                                                  let y = uiPosition != null ? uiPosition.Position.Y + shiftY : 0
                                                                                          let width = layout.HudViewType != HudViewType.Horizontal ? HudDefaultSettings.FourStatVerticalBoxWidth : HudDefaultSettings.FourStatBoxWidth
                                                                                                      let height = layout.HudViewType != HudViewType.Horizontal ? HudDefaultSettings.FourStatVerticalBoxHeight : HudDefaultSettings.FourStatBoxHeight
                                                                                                                   select new HudPositionInfo
                {
                    Seat = seat,
                    Position = new Point(x, y + uiExtraShiftY),
                    Width = width,
                    Height = height,
                }).ToList(),
                Stats = new ReactiveList <StatInfo>(layout.HudStats
                                                    .Where(x => x.Stat != Stat.PlayerInfoIcon && x.Stat != Stat.LineBreak)
                                                    .Take(4)
                                                    .Select(x => x.Clone())),
                Positions = (from hudPositionsInfo in layout.HudPositionsInfo
                             select new HudPositionsInfo
                {
                    GameType = hudPositionsInfo.GameType,
                    PokerSite = hudPositionsInfo.PokerSite,
                    HudPositions = (from hudPosition in hudPositionsInfo.HudPositions
                                    let shiftX = layout.HudViewType != HudViewType.Horizontal && IsRightOriented((int)layout.TableType, hudPosition.Seat) ? ui4StatBoxVerticalShiftX : 0
                                                 let shiftY = layout.HudViewType == HudViewType.Horizontal ? ui4StatBoxHorizontalShiftY : 0
                                                              let offset = GetOffset(hudPositionsInfo.PokerSite, hudPositionsInfo.GameType, layout.TableType, hudPosition.Seat)
                                                                           select new HudPositionInfo
                    {
                        Seat = hudPosition.Seat,
                        Position = new Point(hudPosition.Position.X + offset.X + shiftX, hudPosition.Position.Y + offset.Y + shiftY)
                    }).ToList()
                }).ToList()
            };

            // add line breaks to vertical component
            var plainBoxStats = layout.HudStats
                                .Where(x => !hudLayout4StatBoxTool.Stats.Any(p => p.Stat == x.Stat))
                                .Select(x => x.Clone()).ToList();

            if (layout.HudViewType == HudViewType.Vertical_1)
            {
                var plainBoxStatsTemp = plainBoxStats.Where(x => x.Stat != Stat.LineBreak).ToList();
                plainBoxStats = new List <StatInfo>();

                for (var i = 0; i < plainBoxStatsTemp.Count; i++)
                {
                    plainBoxStats.Add(plainBoxStatsTemp[i]);

                    if (i != plainBoxStatsTemp.Count - 1)
                    {
                        plainBoxStats.Add(new StatInfoBreak());
                    }
                }
            }

            // plain box
            var hudLayoutPlainBoxTool = new HudLayoutPlainBoxTool
            {
                UIPositions = (from seat in Enumerable.Range(1, (int)layout.TableType)
                               let uiPosition = layout.UiPositionsInfo.FirstOrDefault(x => x.Seat == seat)
                                                let shiftX = layout.HudViewType == HudViewType.Vertical_1 ?
                                                             (IsRightOriented((int)layout.TableType, seat) ? uiPlainBoxVertical1RightOrientedShiftX : uiPlainBoxVertical1ShiftX) : 0
                                                             let shiftY = layout.HudViewType == HudViewType.Vertical_1 ? uiPlainBoxVerticalShiftY : uiPlainBoxShiftY + ui4StatBoxHorizontalShiftY
                                                                          let x = uiPosition != null ? uiPosition.Position.X + shiftX : 0
                                                                                  let y = uiPosition != null ? uiPosition.Position.Y + shiftY : 0
                                                                                          let width = layout.HudViewType == HudViewType.Vertical_1 ? uiPlainBoxVerticalWidth : HudDefaultSettings.FourStatBoxWidth
                                                                                                      let height = HudDefaultSettings.PlainStatBoxHeight
                                                                                                                   select new HudPositionInfo
                {
                    Seat = seat,
                    Position = new Point(x, y + uiExtraShiftY),
                    Width = width,
                    Height = height
                }).ToList(),

                Stats = new ReactiveList <StatInfo>(plainBoxStats),

                Positions = (from hudPositionsInfo in layout.HudPositionsInfo
                             select new HudPositionsInfo
                {
                    GameType = hudPositionsInfo.GameType,
                    PokerSite = hudPositionsInfo.PokerSite,
                    HudPositions = (from hudPosition in hudPositionsInfo.HudPositions
                                    let shiftX = layout.HudViewType == HudViewType.Vertical_1 ?
                                                 (IsRightOriented((int)layout.TableType, hudPosition.Seat) ? uiPlainBoxVertical1RightOrientedShiftX : uiPlainBoxVertical1ShiftX) : 0
                                                 let shiftY = layout.HudViewType == HudViewType.Vertical_1 ? uiPlainBoxVerticalShiftY : uiPlainBoxShiftY + ui4StatBoxHorizontalShiftY
                                                              let offset = GetOffset(hudPositionsInfo.PokerSite, hudPositionsInfo.GameType, layout.TableType, hudPosition.Seat)
                                                                           select new HudPositionInfo
                    {
                        Seat = hudPosition.Seat,
                        Position = new Point(hudPosition.Position.X + offset.X + shiftX, hudPosition.Position.Y + offset.Y + shiftY)
                    }).ToList()
                }).ToList()
            };

            // tilt meter
            var hudLayoutTiltMeterTool = new HudLayoutTiltMeterTool
            {
                UIPositions = (from seat in Enumerable.Range(1, (int)layout.TableType)
                               let uiPosition = layout.UiPositionsInfo.FirstOrDefault(x => x.Seat == seat)
                                                let shiftX = IsRightOriented((int)layout.TableType, seat) ? uiTiltMeterRightOrientedShiftX : 0
                                                             let shiftY = uiTiltMeterShiftY
                                                                          let x = uiPosition != null ? uiPosition.Position.X + shiftX : 0
                                                                                  let y = uiPosition != null ? uiPosition.Position.Y + shiftY : 0
                                                                                          let width = HudDefaultSettings.TiltMeterWidth
                                                                                                      let height = HudDefaultSettings.TiltMeterHeight
                                                                                                                   select new HudPositionInfo
                {
                    Seat = seat,
                    Position = new Point(x, y + uiExtraShiftY),
                    Width = width,
                    Height = height
                }).ToList(),

                Positions = (from hudPositionsInfo in layout.HudPositionsInfo
                             select new HudPositionsInfo
                {
                    GameType = hudPositionsInfo.GameType,
                    PokerSite = hudPositionsInfo.PokerSite,
                    HudPositions = (from hudPosition in hudPositionsInfo.HudPositions
                                    let shiftX = IsRightOriented((int)layout.TableType, hudPosition.Seat) ? uiTiltMeterRightOrientedShiftX : 0
                                                 let shiftY = uiTiltMeterShiftY
                                                              let offset = GetOffset(hudPositionsInfo.PokerSite, hudPositionsInfo.GameType, layout.TableType, hudPosition.Seat)
                                                                           select new HudPositionInfo
                    {
                        Seat = hudPosition.Seat,
                        Position = new Point(hudPosition.Position.X + offset.X + shiftX, hudPosition.Position.Y + offset.Y + shiftY)
                    }).ToList()
                }).ToList()
            };

            // player icon
            var hudLayoutPlayerIconTool = new HudLayoutPlayerIconTool
            {
                UIPositions = (from seat in Enumerable.Range(1, (int)layout.TableType)
                               let uiPosition = layout.UiPositionsInfo.FirstOrDefault(x => x.Seat == seat)
                                                let shiftX = IsRightOriented((int)layout.TableType, seat) ? uiPlayerIconRightOrientedShiftX : uiPlayerIconShiftX
                                                             let shiftY = uiPlayerIconShiftY
                                                                          let x = uiPosition != null ? uiPosition.Position.X + shiftX : 0
                                                                                  let y = uiPosition != null ? uiPosition.Position.Y + shiftY : 0
                                                                                          let width = HudDefaultSettings.PlayerIconWidth
                                                                                                      let height = HudDefaultSettings.PlayerIconHeight
                                                                                                                   select new HudPositionInfo
                {
                    Seat = seat,
                    Position = new Point(x, y + uiExtraShiftY),
                    Width = width,
                    Height = height
                }).ToList(),

                Positions = (from hudPositionsInfo in layout.HudPositionsInfo
                             select new HudPositionsInfo
                {
                    GameType = hudPositionsInfo.GameType,
                    PokerSite = hudPositionsInfo.PokerSite,
                    HudPositions = (from hudPosition in hudPositionsInfo.HudPositions
                                    let shiftX = IsRightOriented((int)layout.TableType, hudPosition.Seat) ? uiPlayerIconRightOrientedShiftX : uiPlayerIconShiftX
                                                 let shiftY = uiPlayerIconShiftY
                                                              let offset = GetOffset(hudPositionsInfo.PokerSite, hudPositionsInfo.GameType, layout.TableType, hudPosition.Seat)
                                                                           select new HudPositionInfo
                    {
                        Seat = hudPosition.Seat,
                        Position = new Point(hudPosition.Position.X + offset.X + shiftX, hudPosition.Position.Y + offset.Y + shiftY)
                    }).ToList()
                }).ToList()
            };

            var hudLayoutGraphTool = new HudLayoutGraphTool
            {
                ParentId = hudLayoutPlayerIconTool.Id,
                Stats    = new ReactiveList <StatInfo> {
                    CreateStatInfo(Stat.NetWon)
                }
            };

            // bumper stickers
            var hudLayoutBumperStickersTool = new HudLayoutBumperStickersTool
            {
                UIPositions = (from seat in Enumerable.Range(1, (int)layout.TableType)
                               let uiPosition = layout.UiPositionsInfo.FirstOrDefault(x => x.Seat == seat)
                                                let shiftX = layout.HudViewType == HudViewType.Vertical_1 ?
                                                             (IsRightOriented((int)layout.TableType, seat) ? uiPlainBoxVertical1RightOrientedShiftX : uiPlainBoxVertical1ShiftX) : 0
                                                             let shiftY = layout.HudViewType == HudViewType.Vertical_1 ? uiPlainBoxVerticalShiftY : uiPlainBoxShiftY + ui4StatBoxHorizontalShiftY
                                                                          let x = uiPosition != null ? uiPosition.Position.X + shiftX : 0
                                                                                  let y = (uiPosition != null ? uiPosition.Position.Y + shiftY : 0) + uiBumperStickerShiftY
                                                                                          let width = HudDefaultSettings.BumperStickersWidth
                                                                                                      let height = HudDefaultSettings.BumperStickersHeight
                                                                                                                   select new HudPositionInfo
                {
                    Seat = seat,
                    Position = new Point(x, y + uiExtraShiftY),
                    Width = width,
                    Height = height
                }).ToList(),

                Positions = (from hudPositionsInfo in layout.HudPositionsInfo
                             select new HudPositionsInfo
                {
                    GameType = hudPositionsInfo.GameType,
                    PokerSite = hudPositionsInfo.PokerSite,
                    HudPositions = (from hudPosition in hudPositionsInfo.HudPositions
                                    let shiftX = layout.HudViewType == HudViewType.Vertical_1 ?
                                                 (IsRightOriented((int)layout.TableType, hudPosition.Seat) ? uiPlainBoxVertical1RightOrientedShiftX : uiPlainBoxVertical1ShiftX) : 0
                                                 let shiftY = layout.HudViewType == HudViewType.Vertical_1 ? uiPlainBoxVerticalShiftY : uiPlainBoxShiftY + ui4StatBoxHorizontalShiftY
                                                              let offset = GetOffset(hudPositionsInfo.PokerSite, hudPositionsInfo.GameType, layout.TableType, hudPosition.Seat)
                                                                           select new HudPositionInfo
                    {
                        Seat = hudPosition.Seat,
                        Position = new Point(hudPosition.Position.X + offset.X + shiftX, hudPosition.Position.Y + offset.Y + shiftY + uiBumperStickerShiftY)
                    }).ToList()
                }).ToList()
            };

            layoutInfoV2.LayoutTools = new List <HudLayoutTool> {
                hudLayout4StatBoxTool, hudLayoutPlainBoxTool, hudLayoutTiltMeterTool, hudLayoutPlayerIconTool, hudLayoutGraphTool, hudLayoutBumperStickersTool
            };

            MigratePopups(layout, layoutInfoV2);
        }