private IEnumerator Lob() { var overrides = new LobOverrides { From = LobberOrigin }; yield return(StartCoroutine(OptionalLobber.LobCurrency(Currency, Amount, overrides))); _lobbing = false; OnReward?.Invoke(Currency, Amount); }
private IEnumerator _Lob(Currency currency, ulong amount, bool spend) { LobCount++; Debug.Log($"Begin Lob: {currency}"); // Lob to from/to combinations. var froms = CurrencyLobTarget.GetTargets(currency, LobTargetType.From, spend); var tos = CurrencyLobTarget.GetTargets(currency, LobTargetType.To, spend); var lobs = new List <Coroutine>(); var delayEnd = this.delayEnd; foreach (var from in froms) { foreach (var to in tos) { var overrides = new LobOverrides { From = from.transform, To = to.transform, OnManyComplete = () => to.onLobsCompleted?.Invoke() }; lobs.Add(StartCoroutine(_lobber.LobMany(amount, overrides))); delayEnd = delayEnd.AtLeast(to.delayEnd); } } if (_lobber.From != null && _lobber.To != null) { lobs.Add(StartCoroutine(_lobber.LobMany(amount))); } if (delayEnd > 0f) { yield return(new WaitForSeconds(delayEnd)); } foreach (var coroutine in lobs) { yield return(coroutine); } Debug.Log($"Finish Lob: {currency}"); LobCount--; }