public void SubmitBid(Bid bid) { if (bid.BidAmount > bid.PurchasingTeam.Balance - TeamBids[bid.PurchasingTeam].Sum(b => b.BidAmount)) { return; // Team can't afford it (including existing potentially successful bids) } if (bid.PurchasingTeam.Players.Any(p => p.Number == bid.PlayerNumber)) { return; // That number is already taken } if (TeamBids[bid.PurchasingTeam].Any(b => b.PlayerNumber == bid.PlayerNumber)) { return; // One team putting in two bids for the same team number } if (!Bids.ContainsKey(bid.Player.Index)) { Bids[bid.Player.Index] = new List <Bid>(); } if (Bids[bid.Player.Index].Any(b => b.PurchasingTeam == bid.PurchasingTeam)) { return; // Already put in one bid, ignore subsequent bids for this week } Bids[bid.Player.Index].Add(bid); }
private void OrderBookUpdateHandler(OrderBookFullUpdateData data) { if (!TrackedSymbol.Equals(data.Symbol)) { return; } LastTradePrice = data.LastTradePrice; LastTradeQuantity = data.LastTradeQuantity; SpotPrice = data.MarkPrice; foreach (Tuple <decimal, decimal> ask in data.AskUpdates) { if (ask.Item2 == 0) { if (Asks.ContainsKey(ask.Item1)) { Asks.TryRemove(ask.Item1, out _); } } else { Asks[ask.Item1] = ask.Item2; } } foreach (Tuple <decimal, decimal> bid in data.BidUpdates) { if (bid.Item2 == 0) { if (Bids.ContainsKey(bid.Item1)) { Bids.TryRemove(bid.Item1, out _); } } else { Bids[bid.Item1] = bid.Item2; } } LastTrades = data.Trades; LastFullUpdateTimestamp = data.LastFullTimestamp; OrderBookUpdatedList?.Invoke(data.BidUpdates, data.AskUpdates); OrderBookUpdated?.Invoke(this); }
public long GetBetForPlayer(int position) { return(Bids.ContainsKey(position) ? Bids[position].Bet : 0); }