protected virtual void OnTradeOfferChecked(TradeOfferEventArgs e) { var handler = TradeOfferChecked; if (handler != null) { handler(this, e); } }
protected virtual void OnTradeOfferDeclined(TradeOfferEventArgs e) { TradeOfferStatusEventHandler handler = TradeOfferDeclined; if (handler != null) { handler(this, e); } }
private void CheckPendingTradeOffers() { while (ShouldCheckPendingTradeOffers) { var tradeOffers = GetTradeOffers(); foreach (var tradeOffer in tradeOffers) { if (tradeOffer.IsOurOffer && OurPendingTradeOffers.Contains(tradeOffer.Id)) { if (tradeOffer.State != TradeOfferState.Active) { var args = new TradeOfferEventArgs(); args.TradeOffer = tradeOffer; // check if trade offer has been accepted/declined, or items unavailable (manually validate) if (tradeOffer.State == TradeOfferState.Accepted) { // fire event OnTradeOfferAccepted(args); // remove from list OurPendingTradeOffers.Remove(tradeOffer.Id); } else if (tradeOffer.State != TradeOfferState.Active && tradeOffer.State != TradeOfferState.Accepted) { if (tradeOffer.State == TradeOfferState.Invalid || tradeOffer.State == TradeOfferState.InvalidItems) { // invalid, handle manually } else { // fire event OnTradeOfferDeclined(args); // remove from list OurPendingTradeOffers.Remove(tradeOffer.Id); } } } } else if (!tradeOffer.IsOurOffer && !ReceivedPendingTradeOffers.Contains(tradeOffer.Id)) { var args = new TradeOfferEventArgs(); args.TradeOffer = tradeOffer; if (tradeOffer.State == TradeOfferState.Active) { ReceivedPendingTradeOffers.Add(tradeOffer.Id); OnTradeOfferReceived(args); } else { ReceivedPendingTradeOffers.Remove(tradeOffer.Id); } } } System.Threading.Thread.Sleep(2000); } }
protected virtual void OnTradeOfferNoData(TradeOfferEventArgs e) { if (!_handledTradeOffers.Contains(e.TradeOffer.Id)) { var handler = TradeOfferNoData; if (handler != null) { handler(this, e); } _handledTradeOffers.Add(e.TradeOffer.Id); } }
protected virtual void OnTradeOfferInEscrow(TradeOfferEventArgs e) { if (!_inEscrowTradeOffers.Contains(e.TradeOffer.Id)) { var handler = TradeOfferInEscrow; if (handler != null) { handler(this, e); } _inEscrowTradeOffers.Add(e.TradeOffer.Id); } }
protected virtual void OnTradeOfferNeedsConfirmation(TradeOfferEventArgs e) { if (!_awaitingConfirmationTradeOffers.Contains(e.TradeOffer.Id)) { var handler = TradeOfferNeedsConfirmation; if (handler != null) { handler(this, e); } _awaitingConfirmationTradeOffers.Add(e.TradeOffer.Id); } }
private void CheckPendingTradeOffers() { new Thread(() => { while (_shouldCheckPendingTradeOffers) { var tradeOffers = GetTradeOffers(true); foreach (var tradeOffer in tradeOffers) { if (tradeOffer.IsOurOffer) { lock (_ourPendingTradeOffersLock) { if (OurPendingTradeOffers.Contains(tradeOffer.Id)) { continue; } } AddPendingTradeOfferToList(tradeOffer.Id); } else { var args = new TradeOfferEventArgs(tradeOffer); if (tradeOffer.State == TradeOfferState.Active) { if (tradeOffer.ConfirmationMethod != TradeOfferConfirmationMethod.Invalid) { OnTradeOfferNeedsConfirmation(args); } else { OnTradeOfferReceived(args); } } } } Thread.Sleep(_tradeOfferRefreshRate); } }).Start(); while (_shouldCheckPendingTradeOffers) { var checkingThreads = new List <Thread>(); List <ulong> ourPendingTradeOffers; lock (_ourPendingTradeOffersLock) { ourPendingTradeOffers = OurPendingTradeOffers.ToList(); } foreach (var thread in ourPendingTradeOffers.Select(tradeOfferId => new Thread(() => { var pendingTradeOffer = GetTradeOffer(tradeOfferId); if (pendingTradeOffer.Offer == null) { // Steam's GetTradeOffer/v1 API only gives data for the last 1000 received and 500 sent trade offers, so sometimes this happens pendingTradeOffer.Offer = new TradeOffer { Id = tradeOfferId }; OnTradeOfferNoData(new TradeOfferEventArgs(pendingTradeOffer.Offer)); } else { var args = new TradeOfferEventArgs(pendingTradeOffer.Offer); if (pendingTradeOffer.Offer.State == TradeOfferState.Active) { // fire this so that trade can be cancelled in UserHandler if the bot owner wishes (e.g. if pending too long) OnTradeOfferChecked(args); } else { // check if trade offer has been accepted/declined, or items unavailable (manually validate) if (pendingTradeOffer.Offer.State == TradeOfferState.Accepted) { // fire event OnTradeOfferAccepted(args); // remove from list RemovePendingTradeOfferFromList(pendingTradeOffer.Offer.Id); } else { if (pendingTradeOffer.Offer.State == TradeOfferState.NeedsConfirmation) { // fire event OnTradeOfferNeedsConfirmation(args); } else if (pendingTradeOffer.Offer.State == TradeOfferState.Invalid || pendingTradeOffer.Offer.State == TradeOfferState.InvalidItems) { OnTradeOfferInvalid(args); RemovePendingTradeOfferFromList(pendingTradeOffer.Offer.Id); } else if (pendingTradeOffer.Offer.State == TradeOfferState.InEscrow) { OnTradeOfferInEscrow(args); } else { if (pendingTradeOffer.Offer.State == TradeOfferState.Canceled) { OnTradeOfferCanceled(args); } else { OnTradeOfferDeclined(args); } RemovePendingTradeOfferFromList(pendingTradeOffer.Offer.Id); } } } } }))) { checkingThreads.Add(thread); thread.Start(); } foreach (var thread in checkingThreads) { thread.Join(); } Thread.Sleep(_tradeOfferRefreshRate); } }
protected virtual void OnTradeOfferReceived(TradeOfferEventArgs e) { TradeOfferStatusEventHandler handler = TradeOfferReceived; if (handler != null) { handler(this, e); } }