Esempio n. 1
0
        private void BeginDrag(UICatalogElement item, uint uid)
        {
            DragUID  = uid;
            DragItem = new UICatalogItem(true);
            DragItem.SetDisabled(false);
            DragItem.Info           = item;
            DragItem.Info.CalcPrice = item.CalcPrice;

            DragItem.Icon    = (item.Special?.Res != null) ? item.Special.Res.GetIcon(item.Special.ResID) : Catalog.GetObjIcon(item.Item.GUID);
            DragItem.Tooltip = (item.CalcPrice > 0) ? ("$" + item.CalcPrice.ToString()) : null;
            LastMouse        = true;

            Add(DragItem);

            BuildInventory();
            BuildOffer(MyOffer.ObjectOffer, OfferCatalog);
        }
Esempio n. 2
0
        public override void Update(UpdateState state)
        {
            var mouseDown = state.MouseState.LeftButton == ButtonState.Pressed;

            if (QueryPanel.Parent != this)
            {
                Remove(QueryPanel);
                Add(QueryPanel);
            }

            for (int i = 0; i < NotifyRects.Count; i++)
            {
                var rect = NotifyRects[i];
                var time = rect.Item2 - 1f / (FSOEnvironment.RefreshRate * 4);
                if (time < 0)
                {
                    NotifyRects.RemoveAt(i--);
                }
                else
                {
                    NotifyRects[i] = new Tuple <Rectangle, float>(rect.Item1, time);
                }
            }

            if (TimeSinceType > 0)
            {
                TimeSinceType--;
            }
            else
            {
                var str = MyOffer.MoneyOffer.ToString();
                if (AmountEntry.CurrentText != str)
                {
                    _InternalChange         = true;
                    AmountEntry.CurrentText = str;
                    _InternalChange         = false;
                }
            }

            base.Update(state);
            bool refreshInventory = false;

            //are we currently moving an inventory item?
            if (DragItem != null)
            {
                DragItem.Position = GlobalPoint(state.MouseState.Position.ToVector2() - new Vector2(22, 22));
                if (!mouseDown)
                {
                    //try place the item down
                    var inventoryRect = LocalRect(Catalog.Position.X, Catalog.Position.Y, (Catalog.PageSize / 2) * 45, 80);
                    var myOfferRect   = LocalRect(OfferCatalog.Position.X, OfferCatalog.Position.Y, (OfferCatalog.PageSize / 2) * 45, 80);

                    if (inventoryRect.Contains(state.MouseState.Position))
                    {
                        //remove from my offer, if it's present
                        var index = Array.FindIndex(MyOffer.ObjectOffer, x => x != null && (x.PID == DragUID || (x.GUID < 3 && x.GUID == DragUID)));
                        if (index != -1)
                        {
                            MyOffer.ObjectOffer[index] = null;
                            Send("trade_offer", "i0|" + index);
                        }
                    }
                    else if (myOfferRect.Contains(state.MouseState.Position))
                    {
                        //add to my offer, it it isn't present.
                        var index = Array.FindIndex(MyOffer.ObjectOffer, x => x != null && x.PID == DragUID);
                        if (index == -1)
                        {
                            var targ = Math.Min(4, (state.MouseState.Position.X - myOfferRect.X) / 45);
                            if (DragUID == 1 || DragUID == 2)
                            {
                                MyOffer.ObjectOffer[targ] =
                                    new VMEODSecureTradeObject(DragUID, 0, null);
                                Send("trade_offer", "p" + ((DragUID == 2)?"o":"n") + targ);
                            }
                            else
                            {
                                var obj = LastInventory.First(x => x.ObjectPID == DragUID);

                                MyOffer.ObjectOffer[targ] =
                                    new VMEODSecureTradeObject(obj.GUID, obj.ObjectPID, null);
                                Send("trade_offer", "i" + obj.ObjectPID + "|" + targ);
                            }
                        }
                    }

                    //do nothing, stop dragging
                    Remove(DragItem);
                    DragUID  = 0;
                    DragItem = null;
                    BuildOffer(MyOffer.ObjectOffer, OfferCatalog);
                    refreshInventory = true;
                }
            }

            var inventory = LotController.vm.MyInventory;

            if (LastInventory != null)
            {
                if (LastInventory.Count != inventory.Count)
                {
                    refreshInventory = true;
                }
                else
                {
                    for (int i = 0; i < inventory.Count; i++)
                    {
                        if (LastInventory[i] != inventory[i])
                        {
                            refreshInventory = true;
                            break;
                        }
                    }
                }
            }
            else
            {
                refreshInventory = true;
            }
            if (refreshInventory)
            {
                BuildInventory();
            }

            LastMouse = mouseDown;
        }