private void ShowPredefinedRangesView(object obj) { PreDefinedRangesRequest.Raise(new PreDefinedRangesNotifcation() { Title = "Pre-Defined Ranges" }, returned => { if (returned != null && returned.ItemsList != null) { Reset(null); foreach (var s in returned.ItemsList) { var current = PreflopSelectorItems.FirstOrDefault(x => x.Caption.Equals(s)); if (current != null && current.IsEnabled) { current.IsSelected = true; current.HandUpdateAndRefresh(); } } UpdateSlider(); } }); }
private decimal GetSpecificRangePercentage(EquitySelectionMode equitySelectionMode) { var totalCombos = PreflopSelectorItems .Where(x => x.EquitySelectionMode.HasValue) .Sum(x => x.Combos); var rangeCombos = 0; switch (equitySelectionMode) { case DriveHUD.ViewModels.EquitySelectionMode.FoldCheck: rangeCombos = FoldCheckCombos; break; case DriveHUD.ViewModels.EquitySelectionMode.Bluff: rangeCombos = BluffCombos; break; case DriveHUD.ViewModels.EquitySelectionMode.Call: rangeCombos = CallCombos; break; case DriveHUD.ViewModels.EquitySelectionMode.ValueBet: rangeCombos = ValueBetCombos; break; } return(rangeCombos == totalCombos || totalCombos == 0 ? (decimal)rangeCombos / TotalPossibleCombos : (decimal)rangeCombos / totalCombos); }
private void OnAltClick(object obj) { if (!(obj is EquityRangeSelectorItemViewModel item)) { return; } int firstCardIndex = RanksLength - (int)item.FisrtCard - 1; TemporaryPreflopSelectorItems = new List <RangeSelectorItemViewModel>(); int i = item.ItemType.Equals(RangeSelectorItemType.Pair) ? 0 : firstCardIndex + 1; for (; i < RanksLength; i++) { switch (item.ItemType) { case RangeSelectorItemType.Suited: TemporaryPreflopSelectorItems.Add(PreflopSelectorItems.ElementAt(firstCardIndex * RanksLength + i)); break; case RangeSelectorItemType.OffSuited: TemporaryPreflopSelectorItems.Add(PreflopSelectorItems.ElementAt(i * RanksLength + firstCardIndex)); break; case RangeSelectorItemType.Pair: TemporaryPreflopSelectorItems.Add(PreflopSelectorItems.ElementAt(i * RanksLength + i)); break; } if (TemporaryPreflopSelectorItems.LastOrDefault() != null) { if (TemporaryPreflopSelectorItems.LastOrDefault() == item) { break; } } } TemporaryPreflopSelectorItems.ForEach(x => { x.IsSelected = true; x.HandUpdateAndRefresh(); }); SelectedItem = item; SelectedItem.IsMainInSequence = true; SuitsForCaption = string.Join(",", this.TemporaryPreflopSelectorItems.Select(x => x.Caption)); UpdateSlider(); }
private void Reset(object obj) { foreach (var item in PreflopSelectorItems.Where(x => x.IsSelected)) { item.IsSelected = false; } if (SelectedItem != null) { SelectedItem.IsMainInSequence = false; SelectedItem = null; } UpdateSlider(); }
private void OnAutoRange(object obj) { if (source == null || !(_notification.CardsContainer is PlayerModel playerModel)) { return; } var heroAutoRange = source.GetHeroAutoRange(playerModel.PlayerName); if (heroAutoRange == null) { return; } var mergeResult = (from range in PreflopSelectorItems join heroRange in heroAutoRange on range.Caption equals heroRange.Caption select new { Existing = range, Auto = heroRange }).ToArray(); PreflopSelectorItems.ChangeTrackingEnabled = false; PreflopSelectorItems.ForEach(x => { x.IsSelected = false; }); foreach (var mergeItem in mergeResult) { mergeItem.Existing.IsSelected = true; mergeItem.Existing.SetEquitySelectionMode(mergeItem.Auto.EquitySelectionMode); var handSuitsMergeResult = (from existingHandSuit in mergeItem.Existing.HandSuitsModelList join autoHandSuit in mergeItem.Auto.HandSuitsModelList on existingHandSuit.HandSuit equals autoHandSuit.HandSuit select new { Existing = existingHandSuit, Auto = autoHandSuit }).ToArray(); handSuitsMergeResult.ForEach(x => { x.Existing.SelectionMode = x.Auto.SelectionMode; }); mergeItem.Existing.HandUpdate(); } PreflopSelectorItems.ChangeTrackingEnabled = true; UpdateSlider(); CombosRaisePropertyChanged(); }
private void SelectAllPairs(object obj) { for (int i = 0; i < RanksLength; i++) { var item = PreflopSelectorItems.ElementAt(i * RanksLength + i); if (!item.IsEnabled) { continue; } item.IsSelected = true; item.HandUpdateAndRefresh(); } SelectedItem = new EquityRangeSelectorItemViewModel(); UpdateSlider(); }
private void OnCtrlClick(object obj) { if (!(obj is EquityRangeSelectorItemViewModel item)) { return; } int firstCardIndex = RanksLength - (int)item.FisrtCard - 1; int secondCardIndex = RanksLength - (int)item.SecondCard - 1; TemporaryPreflopSelectorItems = new List <RangeSelectorItemViewModel>(); for (int i = 0; i < RanksLength; i++) { if (item.ItemType.Equals(RangeSelectorItemType.Suited)) { TemporaryPreflopSelectorItems.Add(PreflopSelectorItems.ElementAt(i * RanksLength + secondCardIndex)); TemporaryPreflopSelectorItems.Add(PreflopSelectorItems.ElementAt(firstCardIndex * RanksLength + i)); } else { TemporaryPreflopSelectorItems.Add(PreflopSelectorItems.ElementAt(i * RanksLength + firstCardIndex)); TemporaryPreflopSelectorItems.Add(PreflopSelectorItems.ElementAt(secondCardIndex * RanksLength + i)); } } TemporaryPreflopSelectorItems.ForEach(x => { x.IsSelected = true; x.HandUpdateAndRefresh(); }); SelectedItem = item; SelectedItem.IsMainInSequence = true; HandSuitsViewModel.SetAllVisible(SelectedItem.HandSuitsModelList); SuitsForCaption = string.Join(",", TemporaryPreflopSelectorItems.Select(x => x.Caption)); UpdateSlider(); }
private void UpdateSlider() { _isSliderManualMove = false; var combos = PreflopSelectorItems.Where(x => !x.IsMainInSequence).Sum(model => model.HandSuitsModelList.Count(x => x.IsVisible && x.IsSelected)); var mainSequnceItem = PreflopSelectorItems.FirstOrDefault(x => x.IsMainInSequence); if (mainSequnceItem != null) { combos += mainSequnceItem.Combos; } double prct = Math.Round((double)combos * 100 / TotalPossibleCombos, 1); SliderValue = (int)prct * 10; SelectedPercentage = prct; _isSliderManualMove = true; RefreshHandsStatistic(); }
private void RefreshHandsStatistic() { var rangeItems = PreflopSelectorItems.Where(x => x.IsSelected).ToArray(); var totalCombos = rangeItems.Sum(x => x.Combos); var ranges = rangeItems.Select(x => x.Caption).ToList(); var combosByHandType = source.GetCombosByHandType(ranges); foreach (var handStatistic in HandStatistics) { if (combosByHandType.ContainsKey(handStatistic.HandType)) { handStatistic.Combos = combosByHandType[handStatistic.HandType]; } else { handStatistic.Combos = 0; } } HandStatistics.ForEach(x => x.TotalCombos = totalCombos); }
private void InitializePreflopSelectorItems() { var rankValues = Enum.GetValues(typeof(RangeCardRank)) .Cast <RangeCardRank>() .Where(x => x != RangeCardRank.None) .Reverse() .ToArray(); for (var i = 0; i < rankValues.Length; i++) { var startS = false; for (var j = 0; j < rankValues.Length; j++) { var card1 = i < j?rankValues.ElementAt(i) : rankValues.ElementAt(j); var card2 = i < j?rankValues.ElementAt(j) : rankValues.ElementAt(i); if (startS) { PreflopSelectorItems.Add(new EquityRangeSelectorItemViewModel(card1, card2, RangeSelectorItemType.Suited)); } else { if (!card1.Equals(card2)) { PreflopSelectorItems.Add(new EquityRangeSelectorItemViewModel(card1, card2, RangeSelectorItemType.OffSuited)); } else { PreflopSelectorItems.Add(new EquityRangeSelectorItemViewModel(card1, card2, RangeSelectorItemType.Pair)); startS = true; } } } } }
private void Save(object obj) { if (SelectedItem != null && SelectedItem.IsMainInSequence) { //update suites SelectedItem = new EquityRangeSelectorItemViewModel(); } _notification.CardsContainer.Ranges = new List <EquityRangeSelectorItemViewModel>(PreflopSelectorItems.Where(x => x.IsSelected)); _notification.Confirmed = true; FinishInteraction(); }