public void AcceptTrade(GameClient session) { if (this.Started && this.Status == TradeConfirmStatus.None) { TradeUser user = this.GetUser(session.GetHabbo().ID); if (user.ConfirmStatus == TradeConfirmStatus.None) { user.ConfirmStatus = TradeConfirmStatus.Accepted; if (this.BothAccepted) //we can progress { this.Status = TradeConfirmStatus.Confirming; foreach (TradeUser user_ in this.Traders) { user_.ConfirmStatus = TradeConfirmStatus.Confirming; } } this.SendToBoth(new TradeAcceptedComposerHandler(session.GetHabbo().ID, true)); if (this.Status == TradeConfirmStatus.Confirming) { this.SendToBoth(new TradeRequireConfirmComposerHandler()); } } } }
public void ConfirmAcceptTrade(GameClient session) { if (this.Started && this.Status == TradeConfirmStatus.Confirming) { TradeUser user = this.GetUser(session.GetHabbo().ID); if (user.ConfirmStatus == TradeConfirmStatus.Confirming) { user.ConfirmStatus = TradeConfirmStatus.Confirmed; if (this.BothConfirmed) { this.Status = TradeConfirmStatus.Confirmed; foreach (TradeUser trader in this.Traders) { trader.RoomUser.RemoveStatus("trd"); this.Room.Trades.TryRemove(trader.UserID, out Trade trash); } } this.SendToBoth(new TradeAcceptedComposerHandler(session.GetHabbo().ID, true)); if (this.Status == TradeConfirmStatus.Confirmed) { this.SendToBoth(new TradeWindowCloseComposerHandler()); new Task(new Action(this.TradeItems)).Start(); } } } }
public TradeUser(RoomUnitUser user) { this.OfferedItems = new ConcurrentDictionary <uint, InventoryItem>(); this.RoomUser = user; this.ConfirmStatus = TradeConfirmStatus.None; }
public Trade(Room room, RoomUnitUser user, RoomUnitUser target) { this.Room = room; this.Traders = new TradeUser[] { new TradeUser(user), new TradeUser(target) }; this.Started = false; this.Status = TradeConfirmStatus.None; user.AddStatus("trd", ""); target.AddStatus("trd", ""); }