public PlayViewModel(DiceSite Site) { _site = Site; Bets = new ObservableCollection <Bet>(); BetHighCommand = new Command(async() => await _site.PlaceBet(true, BetAmount, BetChance)); BetLowCommand = new Command(async() => await _site.PlaceBet(false, BetAmount, BetChance)); MessagingCenter.Subscribe <DiceSite, decimal>(this, "updateBalance", (obj, val) => { OnPropertyChanged(nameof(Amount)); }); MessagingCenter.Subscribe <DiceSite, Bet>(this, "addBet", (obj, bet) => { Bets.Add(bet); }); MessagingCenter.Subscribe <DiceSite, string>(this, "updateStatus", (obj, message) => { Status = message; }); }
public async Task <int> Run(DiceSite Site) { var currentAmount = _settings.BaseBet; bool bettingHigh = true; if (_settings.BetOn == BetOnEnum.Low) { bettingHigh = false; } while (CanExecute(Site)) { if (!await Site.PlaceBet(bettingHigh, currentAmount, _settings.Chance)) { // perdita if (_settings.BetAction_OnLose == BetResultAction.ReturnToBase) { currentAmount = _settings.BaseBet; } if (_settings.BetAction_OnLose == BetResultAction.Increase) { currentAmount *= (_settings.IncreaseAmount_OnLose / 100m + 1); } if (_settings.BetAction_OnLose == BetResultAction.ChangeOdds) { _settings.BetOdds = _settings.NewOdd_OnLose; } } else { // vincita if (_settings.BetAction_OnWin == BetResultAction.ReturnToBase) { currentAmount = _settings.BaseBet; } if (_settings.BetAction_OnWin == BetResultAction.Increase) { currentAmount *= (_settings.IncreaseAmount_OnWin / 100m + 1); } if (_settings.BetAction_OnWin == BetResultAction.ChangeOdds) { _settings.BetOdds = _settings.NewOdd_OnWin; } } if (_settings.BetOn == BetOnEnum.Alternate) { bettingHigh = !bettingHigh; } Refresh?.Invoke(this, EventArgs.Empty); } ; return(await Task <int> .FromResult(Site.wins - Site.losses)); }