private static IdiotsKupon[] GetIdiotsKupons(IdiotKuponsProvider idiotsProvider, Kupon[] kupons, ref long start) { IdiotsKupon[] idiotsKupons = null; while (idiotsKupons == null) { try { idiotsKupons = idiotsProvider.GetKupons(); } catch { var res = MessageBox.Show("Не удалось загрузить идиотские купоны. Попробовать еще раз?\r\nДа - еще одна попытка.\r\nНет - пропустить загрузку и продолжить работу без учета идиотских купонов.", "Ошибка", MessageBoxButton.YesNo, MessageBoxImage.Error); if (res == MessageBoxResult.No) { return(null); } } } if (idiotsKupons.Sum(x => x.Count) >= kupons.Length) { MessageBox.Show("Слишком много идиотских купонов и слишком мало обычных, попробуйте увеличить число купонов. Сейчас расчет произойдет без учета идиотских купонов.", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Warning); return(null); } foreach (var idiot in idiotsKupons) { for (int i = 0; i < idiot.Count; i++) { kupons[start] = new Kupon { Cells = idiot.Cells }; start++; } } return(idiotsKupons); }
private Kupon[] GetKupons(Kupon[][] superKupons, double[][][] kefs, IdiotKuponsProvider idiotsProvider, out bool needSupers, out double[][][] idiotKefs, out int idiotKuponsCount) { idiotKefs = null; idiotKuponsCount = 0; var kupons = new Kupon[_kuponsCount]; var supers = superKupons.SelectMany(i => i).ToArray(); foreach (var super in supers) { super.MoneyWin = 0; } supers.CopyTo(kupons, 0); long start = supers.Length; needSupers = supers.Length > 0; if (idiotsProvider != null) { IdiotsKupon[] idiotsKupons = GetIdiotsKupons(idiotsProvider, kupons, ref start); if (idiotsKupons != null) { idiotKefs = kefs = ChangeKefsForIdiots(kefs, idiotsKupons, out idiotKuponsCount); } } for (var i = start; i < _kuponsCount; i++) { kupons[i] = new Kupon { Cells = GetRndArray(kefs, 1) }; } return(kupons); }