Beispiel #1
0
        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());
                    }
                }
            }
        }
Beispiel #2
0
        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();
                    }
                }
            }
        }
Beispiel #3
0
        public TradeUser(RoomUnitUser user)
        {
            this.OfferedItems = new ConcurrentDictionary <uint, InventoryItem>();

            this.RoomUser      = user;
            this.ConfirmStatus = TradeConfirmStatus.None;
        }
Beispiel #4
0
        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", "");
        }