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); }
private PlayerRange GetUtg3BetRange() { var range = new PlayerRange(); string[] grids = new string[] { //done "1 ", " 1 ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", }; range.Init(grids); return(range); }
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(); }
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); }
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()); }
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)); }
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 } } }
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); }
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)); }
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"); } }
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"); } }
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); }
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); }
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); }
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); }
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); }
public double CalculateEquityAgainstARange(HoldingHoles heroHoles, PlayerRange villainPlayerRange, BoardSpectrum boardSpectrum) { var heroEquityAgainstVillainRange = boardSpectrum.GetEquity(heroHoles); return(heroEquityAgainstVillainRange); }
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))); }
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); }
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))); }
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; }
void Start() { playerRange = GetComponentInChildren <PlayerRange>(); }
public BoardSpectrum FilterAgainstRange(BoardSpectrum boardSpectrum, PlayerRange playerRange) { throw new NotImplementedException(); }
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); }
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))); }