Пример #1
0
        private PlayerRoundProfile GenerateNewProfile(Player player, PositionEnum heroPosition)
        {
            var profile = new PlayerRoundProfile()
            {
                Name     = player.Name,
                Position = player.Position,
                IsAlive  = true,
                IsAllIn  = false,
                IsHero   = player.Position == heroPosition
            };

            if (!profile.IsHero)
            {
                profile.InPositionAgainstHero = profile.Position > heroPosition;
            }

            var range = new PlayerRange();

            range.Init(PlayerRangeGridStatusEnum.Included);

            profile.PlayerRange  = range;
            profile.PreflopRange = range;

            return(profile);
        }
Пример #2
0
        private PlayerRange GetUtg3BetRange()
        {
            var range = new PlayerRange();

            string[] grids = new string[]
            {
                //done
                "1            ",
                " 1           ",
                "             ",
                "             ",
                "             ",
                "             ",
                "             ",
                "             ",
                "             ",
                "             ",
                "             ",
                "             ",
                "             ",
            };
            range.Init(grids);

            return(range);
        }
Пример #3
0
        public void Deserialize(Stream input, Endian endian)
        {
            this.Unknown2 = input.ReadValueF32(endian);
            this.Unknown3 = input.ReadValueF32(endian);
            this.Unknown4 = input.ReadValueF32(endian);

            if (this.Unknown2.Equals(0.0f) == false ||
                this.Unknown3.Equals(0.0f) == false ||
                this.Unknown4.Equals(0.0f) == false)
            {
                throw new FormatException();
            }

            this.Unknown5     = input.ReadValueS64(endian);
            this.Creator      = input.ReadString(endian);
            this.Unknown7     = input.ReadValueS64(endian);
            this.Author       = input.ReadString(endian);
            this.Name         = input.ReadString(endian);
            this.MapId        = MapId.Deserialize(input, endian);
            this.VersionId    = Helpers.ReadMungedGuid(input, endian);
            this.TimeModified = (DateTime)Helpers.ReadTime(input, endian);
            this.TimeCreated  = (DateTime)Helpers.ReadTime(input, endian);
            this.MapSize      = input.ReadValueEnum <MapSize>(endian);
            this.PlayerRange  = input.ReadValueEnum <PlayerRange>(endian);
            this.Unknown16    = input.ReadValueU32(endian);
            this.Unknown17    = input.ReadValueU8();
        }
Пример #4
0
        private PlayerRange GetSbOpenRaiseCalledRange()
        {
            var range = new PlayerRange();

            string[] grids = new string[]
            {
                //done
                " 11111       ",
                "1 1111       ",
                "11111        ",
                "11111        ",
                "111 11       ",
                "     11      ",
                "      11     ",
                "       11    ",
                "        1    ",
                "             ",
                "             ",
                "             ",
                "             ",
            };
            range.Init(grids);

            return(range);
        }
Пример #5
0
        public void LogPlayerRange(PlayerRange range, string description = null)
        {
            StringBuilder sb = new StringBuilder();

            if (string.IsNullOrWhiteSpace(description))
            {
                sb.AppendLine(description);
            }
            sb.AppendLine($"Range begins==========");
            foreach (var grid in range.Grids)
            {
                sb.AppendLine($"{grid.Grid.ToStringFull()},RankStatus={grid.PlayerRangeGridStatus.RankWiseStatus}");
                switch (grid.Grid.Category)
                {
                case GridCategoryEnum.Suited:
                    sb.AppendLine($"Suited:{grid.PlayerRangeGridStatus.SuitedStatus.ToString()}");
                    break;

                case GridCategoryEnum.Offsuit:
                    sb.AppendLine($"Offsuit:{grid.PlayerRangeGridStatus.OffsuitStatus.ToString()}");
                    break;

                case GridCategoryEnum.Paired:
                    sb.AppendLine($"Paired:{grid.PlayerRangeGridStatus.PairedStatus.ToString()}");
                    break;
                }
            }
            sb.AppendLine("Range ends==========");
            Log(sb.ToString());
        }
Пример #6
0
        public double CalculateEquity(HoldingHoles heroHoles, PlayerRange villainRange)
        {
            var pkStage  = new PkStage(_fiveCardsEnumerator.Enumerate, Utils.EnumerateAvailableHoles);
            var pkResult = pkStage.Pk(heroHoles, villainRange.CloneToPkRange());

            return((double)pkResult.HeroWinScenariosCount /
                   (pkResult.HeroWinScenariosCount + pkResult.VillainWinScenariosCount + pkResult.TiedScenariosCount));
        }
Пример #7
0
 public void LogSqueezing(PlayerRange previousRange, PlayerRange positionRange, PlayerRange intersectedRange,
                          Move lastMove)
 {
     Log($"Squeezing range for {lastMove.Player.Name}, stage={lastMove.Stage}," +
         $" lastMove={lastMove.Decision.DecisionType}," +
         $" chips={lastMove.Decision.ChipsAdded}.");
     LogPlayerRange(previousRange, $"Before squeezing... lastMove={lastMove.Decision.DecisionType}, stage=Preflop");
     LogPlayerRange(positionRange, $"Based on position={lastMove.Player.Position}, lastMove={lastMove.Decision.DecisionType}");
     LogPlayerRange(intersectedRange, $"Intersected...");
 }
 /// <summary>
 /// 根據Board和Move是否match將一些Grid從PlayerRange中去掉
 /// </summary>
 /// <param name="preflopRange"></param>
 /// <param name="tester"></param>
 /// <param name="playerProfile"></param>
 public void EliminateGrids(PlayerRange preflopRange, Func <RangeGrid, BoardRangeGridStatusEnum> tester, PlayerRoundProfile playerProfile)
 {
     foreach (var playerRangeGrid in preflopRange.GetAliveGrids())
     {
         var outcome = tester(playerRangeGrid.Grid);
         if (!MoveMatchesOutcome(outcome, playerProfile))
         {
             playerRangeGrid.PlayerRangeGridStatus.RankWiseStatus = PlayerRangeGridStatusEnum.Excluded;
             //todo support suit
         }
     }
 }
Пример #9
0
        private PlayerRange SqueezeOnRaise(PlayerRange previousRange, Move lastMove, int bigBlindSize)
        {
            double raiseRatio = (double)lastMove.Decision.ChipsAdded / bigBlindSize;

            var raiseStage = GetRaiseStageBasedOnRaiseRatio(raiseRatio);

            var newRange         = _preflopRangeConsultant.GetRaiseRange(raiseStage, lastMove.Player.Position);
            var intersectedRange = previousRange.Intersect(newRange);

            Logger.Instance.LogSqueezing(previousRange, newRange, intersectedRange, lastMove);

            return(intersectedRange);
        }
        public double CalculateEquityAgainstARange(HoldingHoles heroHoles, PlayerRange villainPlayerRange, BoardStatus boardStatus)
        {
            var villainGrids = villainPlayerRange.GetAliveGrids();

            int    numOfCombos = 0;
            double equitySum   = 0;

            foreach (var villainGrid in villainGrids)
            {
                foreach (var villainHoles in villainGrid.Grid.EnumerateAllCombos())
                {
                    var handEquity = CalculateEquityAgainstGrid(heroHoles, villainHoles, boardStatus);
                    equitySum   += handEquity * villainGrid.Grid.PossibleCount;
                    numOfCombos += villainGrid.Grid.PossibleCount;
                }
            }

            return(equitySum / numOfCombos);
        }
Пример #11
0
        public BoardSpectrum MakeBoardSpectrumOfGrids(Board board)
        {
            var boardCards = new List <Card>()
            {
                board.Flop1, board.Flop2, board.Flop3
            };

            if (board.Turn != null)
            {
                boardCards.Add(board.Turn);
            }

            if (board.River != null)
            {
                boardCards.Add(board.River);
            }

            Dictionary <BoardHandTypeEnum, List <PlayerRangeGrid> > grids = new Dictionary <BoardHandTypeEnum, List <PlayerRangeGrid> >();

            var range = new PlayerRange();

            foreach (var rangeGrid in range.Grids)
            {
                var handType = GetHandTypeForGrid(boardCards, rangeGrid);
                if (!grids.ContainsKey(handType))
                {
                    grids.Add(handType, new List <PlayerRangeGrid>());
                }
                grids[handType].Add(rangeGrid);
            }

            var list = new List <BoardSpectrumGridUnit>();

            foreach (var entry in grids)
            {
                list.Add(new BoardSpectrumGridUnit(entry.Key, entry.Value));
            }

            list.Sort();

            return(new BoardSpectrum(list));
        }
Пример #12
0
        public PlayerRange Squeeze(PlayerRange previousRange, Move lastMove, int bigBlindSize)
        {
            switch (lastMove.Decision.DecisionType)
            {
            case DecisionType.AllIn:
            case DecisionType.AllInRaise:
            case DecisionType.Raise:
            case DecisionType.Reraise:
                return(SqueezeOnRaise(previousRange, lastMove, bigBlindSize));

            case DecisionType.Ante:
                return(previousRange);

            case DecisionType.Call:
                return(SqueezeOnCall(previousRange, lastMove, bigBlindSize));

            default:
                throw new InvalidOperationException($"{lastMove.Decision.DecisionType} should not show in Preflop Squeeze");
            }
        }
Пример #13
0
        public PlayerRange Squeeze(PlayerRange previousRange, Move lastMove, int bigBlindSize, TurnBoard turnBoard, HoldingHoles heroHoles)
        {
            Logger.Instance.Log($"Squeezing {lastMove.Player.Name}'s range based on his {lastMove.Decision.DecisionType} with {lastMove.Decision.ChipsAdded} chips");
            switch (lastMove.Decision.DecisionType)
            {
            case DecisionType.AllIn:
            case DecisionType.AllInRaise:
            case DecisionType.Raise:
            case DecisionType.Reraise:
                return(SqueezeOnRaise(previousRange, lastMove, bigBlindSize, turnBoard, heroHoles));

            case DecisionType.Call:
                return(SqueezeOnCall(previousRange, lastMove, bigBlindSize, turnBoard, heroHoles));

            case DecisionType.Check:
                return(SqueezeOnCheck(previousRange, lastMove, bigBlindSize, turnBoard, heroHoles));

            default:
                throw new InvalidOperationException($"{lastMove.Decision.DecisionType} should not show in Turn Squeeze");
            }
        }
Пример #14
0
        private PlayerRange GenerateOpenRaisedRange(PositionEnum position)
        {
            int[,] grids;
            switch (position)
            {
            case PositionEnum.UnderTheGun:
                grids = GenerateOpenRaiseForUtgTight();
                break;

            case PositionEnum.MiddlePositioin:
                grids = GenerateOpenRaiseForMpTight();
                break;

            case PositionEnum.CuttingOff:
                grids = GenerateOpenRaiseForCoTight();
                break;

            case PositionEnum.Button:
                grids = GenerateOpenRaiseForBtnTight();
                break;

            case PositionEnum.SmallBlind:
                grids = GenerateOpenRaiseForSbTight();
                break;

            case PositionEnum.BigBlind:
                grids = GenerateOpenRaiseForBbTight();
                break;

            default:
                throw new InvalidOperationException();
            }

            var range = new PlayerRange();

            range.Init(grids);

            return(range);
        }
Пример #15
0
        private PlayerRange GenerateBigBlindInitialRange()
        {
            var range = new PlayerRange();

            int[,] grids = new int[, ]
            {
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
            };
            range.Init(grids);

            return(range);
        }
Пример #16
0
        private PlayerRange GenerateCuttingOffInitialRange()
        {
            var range = new PlayerRange();

            int[,] grids = new int[, ]
            {
                { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 },
                { 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 },
                { 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 },
                { 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 },
                { 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 },
                { 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
            };
            range.Init(grids);

            return(range);
        }
Пример #17
0
        private PlayerRange GenerateMiddlePositionInitialRange()
        {
            var range = new PlayerRange();

            int[,] grids = new int[, ]
            {
                { 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1 },
                { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
                { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
                { 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
            };
            range.Init(grids);

            return(range);
        }
Пример #18
0
        private PlayerRoundProfile GenerateNewProfile(Player player, PositionEnum heroPosition)
        {
            var profile = new PlayerRoundProfile()
            {
                Name         = player.Name,
                Position     = player.Position,
                PlayerStatus = PlayerStatusEnum.Unpolled,
                IsHero       = player.Position == heroPosition
            };

            if (!profile.IsHero)
            {
                profile.InPositionAgainstHero = profile.Position > heroPosition;
            }

            var range = new PlayerRange();

            range.Init(PlayerRangeGridStatusEnum.Neutral);

            profile.PlayerRange  = range;
            profile.PreflopRange = range;

            return(profile);
        }
Пример #19
0
        public double CalculateEquityAgainstARange(HoldingHoles heroHoles, PlayerRange villainPlayerRange, BoardSpectrum boardSpectrum)
        {
            var heroEquityAgainstVillainRange = boardSpectrum.GetEquity(heroHoles);

            return(heroEquityAgainstVillainRange);
        }
Пример #20
0
 private PlayerRange SqueezeOnCheck(PlayerRange previousRange, Move lastMove, int bigBlindSize, FlopBoard flopBoard, HoldingHoles heroHoles)
 {
     return(_playerRangeSqueezer.Squeeze(previousRange, grid => TestGrid(flopBoard, grid), TestOutcomeOnCheck, GetCards(flopBoard, heroHoles)));
 }
Пример #21
0
        private PlayerRange Squeeze(PlayerRange previousRange, TurnBoard turnBoard, Func <GridHitNewRoundResultEnum, Tuple <bool, PlayerRangeGridStatusEnum> > tester)
        {
            var newRange = previousRange.Clone();

            Logger.Instance.Log($"Before squeezing:\r\n{newRange.ToString()}");

            foreach (var playerRangeGrid in newRange.GetAliveGrids())
            {
                GridStatusHittingTurn result = TestGrid(turnBoard, playerRangeGrid.Grid);
                Logger.Instance.Log($"{playerRangeGrid.Grid.ToString()} tested against the flop, result is {result.RankWiseStatus}");
                Tuple <bool, PlayerRangeGridStatusEnum> testResult = tester.Invoke(result.RankWiseStatus);
                if (testResult.Item1)
                {
                    playerRangeGrid.PlayerRangeGridStatus.RankWiseStatus = testResult.Item2;
                }
                switch (result.Category)
                {
                case GridCategoryEnum.Suited:
                    testResult = tester.Invoke(result.SuitedStatus.HeartStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.HeartStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.SuitedStatus.SpadeStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.SpadeStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.SuitedStatus.DiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.DiamondStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.SuitedStatus.ClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.ClubStatus = testResult.Item2;
                    }
                    break;

                case GridCategoryEnum.Paired:
                    testResult = tester.Invoke(result.PairedStatus.HeartSpadeStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.HeartSpadeStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.PairedStatus.HeartDiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.HeartDiamondStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.PairedStatus.HeartClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.HeartClubStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.PairedStatus.SpadeDiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.SpadeDiamondStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.PairedStatus.SpadeClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.SpadeClubStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.PairedStatus.DiamondClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.DiamondClubStatus = testResult.Item2;
                    }
                    break;

                case GridCategoryEnum.Offsuit:
                    testResult = tester.Invoke(result.OffsuitStatus.HeartSpadeStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.HeartSpadeStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.HeartDiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.HeartDiamondStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.HeartClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.HeartClubStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.SpadeDiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.SpadeDiamondStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.SpadeClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.SpadeClubStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.DiamondClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.DiamondClubStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.SpadeHeartStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.SpadeHeartStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.DiamondHeartStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.DiamondHeartStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.ClubHeartStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.ClubHeartStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.DiamondSpadeStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.DiamondSpadeStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.ClubSpadeStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.ClubSpadeStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.ClubDiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.ClubDiamondStatus = testResult.Item2;
                    }
                    break;
                }
            }

            Logger.Instance.Log($"After squeezing:\r\n{newRange.ToString()}");

            return(newRange);
        }
Пример #22
0
 private PlayerRange SqueezeOnCall(PlayerRange previousRange, Move lastMove, int bigBlindSize, TurnBoard turnBoard, HoldingHoles heroHoles)
 {
     return(_playerRangeSqueezer.Squeeze(previousRange, grid => TestGrid(turnBoard, grid), TestOutcomeOnCall, GetCards(turnBoard, heroHoles)));
 }
Пример #23
0
    void FixedUpdate()
    {
        //giro de galaxia
        Vector3    vt          = new Vector3(Mathf.Clamp(rbPlayer.position.y / 2f, -1f, 1f), Mathf.Clamp((rbPlayer.position.x / 2f), -2 - 5f, 2.5f), 0f);
        Quaternion deltaGalaxy = Quaternion.Euler(vt);

        rbGalaxy.MoveRotation(deltaGalaxy);

        Vector3     playerPos = rbPlayer.position;
        PlayerRange pr        = player.GetComponent <scrPlayerControll>().playerRange;

        rbGalaxy.position = new Vector3(rbGalaxy.position.x, rbGalaxy.position.y, playerPos.z);

        galaxyDust.transform.position = initialGalaxyDust + playerPos;

        traBoundary.position = initialBoundary + playerPos;

        //new Vector3(galaxyDust.transform.position.x, galaxyDust.transform.position.y, initialGalaxyDust.z + playerPos.z);

        #region Arrows
        //left
        if ((playerPos.x < (-pr.minRange.x + 0.01f)) && (playerPos.x > (-pr.minRange.x - 0.01f)))
        {
            if (!arrow.arrowLeft.activeInHierarchy)
            {
                arrow.arrowLeft.SetActive(true);
            }
        }
        else
        {
            if (arrow.arrowLeft.activeInHierarchy)
            {
                arrow.arrowLeft.SetActive(false);
            }
        }
        //right
        if ((playerPos.x < (pr.maxRange.x + 0.01f)) && (playerPos.x > (pr.maxRange.x - 0.01f)))
        {
            if (!arrow.arrowRight.activeInHierarchy)
            {
                arrow.arrowRight.SetActive(true);
            }
        }
        else
        {
            if (arrow.arrowRight.activeInHierarchy)
            {
                arrow.arrowRight.SetActive(false);
            }
        }
        //DOWN
        if ((playerPos.y < (-pr.minRange.y + 0.01f)) && (playerPos.y > (-pr.minRange.y - 0.01f)))
        {
            if (!arrow.arrowDown.activeInHierarchy)
            {
                arrow.arrowDown.SetActive(true);
            }
        }
        else
        {
            if (arrow.arrowDown.activeInHierarchy)
            {
                arrow.arrowDown.SetActive(false);
            }
        }
        //UP
        if ((playerPos.y < (pr.maxRange.y + 0.01f)) && (playerPos.y > (pr.maxRange.y - 0.01f)))
        {
            if (!arrow.arrowUp.activeInHierarchy)
            {
                arrow.arrowUp.SetActive(true);
            }
        }
        else
        {
            if (arrow.arrowUp.activeInHierarchy)
            {
                arrow.arrowUp.SetActive(false);
            }
        }
        #endregion



//        //movimiento de los crosshair con el player
//        //crossHairA
//        Vector2 viewPortPosA = mainCamera.WorldToViewportPoint(crossHairRefA.GetComponent<Transform>().position);
//        Vector2 screenPosA = new Vector2(
//                                 ((viewPortPosA.x * recCrossHair.sizeDelta.x) - (recCrossHair.sizeDelta.x * 0.5f)),
//                                 ((viewPortPosA.y * recCrossHair.sizeDelta.y) - (recCrossHair.sizeDelta.y * 0.5f)));
//        recCrossHairA.anchoredPosition = screenPosA;
//
//        //crossHairA
//        Vector2 viewPortPosB = mainCamera.WorldToViewportPoint(crossHairRefB.GetComponent<Transform>().position);
//        Vector2 screenPosB = new Vector2(
//            ((viewPortPosB.x * recCrossHair.sizeDelta.x) - (recCrossHair.sizeDelta.x * 0.5f)),
//            ((viewPortPosB.y * recCrossHair.sizeDelta.y) - (recCrossHair.sizeDelta.y * 0.5f)));
//        recCrossHairB.anchoredPosition = screenPosB;
    }
Пример #24
0
 void Start()
 {
     playerRange = GetComponentInChildren <PlayerRange>();
 }
Пример #25
0
 public BoardSpectrum FilterAgainstRange(BoardSpectrum boardSpectrum, PlayerRange playerRange)
 {
     throw new NotImplementedException();
 }
Пример #26
0
        public PlayerRange Squeeze <T>(PlayerRange previousRange, Func <RangeGrid, SuitTieredGridStatus <T> > gridTester,
                                       Func <T, Tuple <bool, PlayerRangeGridStatusEnum> > excluder, List <Card> conflictCards)
        {
            var newRange = previousRange.Clone();

            Logger.Instance.Log($"Before squeezing:\r\n{newRange.ToString()}");

            foreach (var playerRangeGrid in newRange.GetAliveGrids())
            {
                playerRangeGrid.Grid.EliminateConflicts(conflictCards);
                SuitTieredGridStatus <T> result = gridTester(playerRangeGrid.Grid);
                Tuple <bool, PlayerRangeGridStatusEnum> excludeResult = excluder.Invoke(result.RankWiseStatus);
                if (excludeResult.Item1)
                {
                    playerRangeGrid.PlayerRangeGridStatus.RankWiseStatus = excludeResult.Item2;
                }

                switch (result.Category)
                {
                case GridCategoryEnum.Suited:
                    excludeResult = excluder.Invoke(result.SuitedStatus.HeartStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.HeartStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.SuitedStatus.SpadeStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.SpadeStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.SuitedStatus.DiamondStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.DiamondStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.SuitedStatus.ClubStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.ClubStatus = excludeResult.Item2;
                    }
                    break;

                case GridCategoryEnum.Paired:
                    excludeResult = excluder.Invoke(result.PairedStatus.HeartSpadeStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.HeartSpadeStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.PairedStatus.HeartDiamondStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.HeartDiamondStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.PairedStatus.HeartClubStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.HeartClubStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.PairedStatus.SpadeDiamondStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.SpadeDiamondStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.PairedStatus.SpadeClubStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.SpadeClubStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.PairedStatus.DiamondClubStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.DiamondClubStatus = excludeResult.Item2;
                    }
                    break;

                case GridCategoryEnum.Offsuit:
                    excludeResult = excluder.Invoke(result.OffsuitStatus.HeartSpadeStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.HeartSpadeStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.HeartDiamondStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.HeartDiamondStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.HeartClubStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.HeartClubStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.SpadeDiamondStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.SpadeDiamondStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.SpadeClubStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.SpadeClubStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.DiamondClubStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.DiamondClubStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.SpadeHeartStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.SpadeHeartStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.DiamondHeartStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.DiamondHeartStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.ClubHeartStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.ClubHeartStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.DiamondSpadeStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.DiamondSpadeStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.ClubSpadeStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.ClubSpadeStatus = excludeResult.Item2;
                    }
                    excludeResult = excluder.Invoke(result.OffsuitStatus.ClubDiamondStatus);
                    if (excludeResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.ClubDiamondStatus = excludeResult.Item2;
                    }
                    break;
                }

                Logger.Instance.Log($"grid={playerRangeGrid.Grid}, result={result.ToString()}, status={playerRangeGrid.PlayerRangeGridStatus.ToString()}.");
            }

            Logger.Instance.Log($"After squeezing:\r\n{newRange.ToString()}");

            return(newRange);
        }
Пример #27
0
 private PlayerRange SqueezeOnRaise(PlayerRange previousRange, Move lastMove, int bigBlindSize, RiverBoard riverBoard, HoldingHoles heroHoles)
 {
     return(_playerRangeSqueezer.Squeeze(previousRange, grid => TestGrid(riverBoard, grid), TestOutcomeOnRaise, GetCards(riverBoard, heroHoles)));
 }