Beispiel #1
0
        public override void Unload()
        {
            ItemHold.Clear();

            try
            {
                Plugin.OnDisconnected();
            }
            catch
            {
            }

            TargetManager.Reset();

            // special case for wmap. this allow us to save settings
            UIManager.GetGump <WorldMapGump>()
            ?.SaveSettings();

            ProfileManager.Current?.Save
            (
                UIManager.Gumps.OfType <Gump>()
                .Where(s => s.CanBeSaved)
                .Reverse()
                .ToList()
            );

            Macros.Save();
            InfoBars.Save();
            ProfileManager.UnLoadProfile();

            StaticFilters.CleanCaveTextures();
            StaticFilters.CleanTreeTextures();

            NetClient.Socket.Disconnected -= SocketOnDisconnected;
            NetClient.Socket.Disconnect();
            _lightRenderTarget?.Dispose();
            _world_render_target?.Dispose();

            CommandManager.UnRegisterAll();
            Weather.Reset();
            UIManager.Clear();
            World.Clear();
            UOChatManager.Clear();
            DelayedObjectClickManager.Clear();

            _useItemQueue?.Clear();
            _useItemQueue = null;
            Hotkeys       = null;
            Macros        = null;
            MessageManager.MessageReceived -= ChatOnMessageReceived;


            Settings.GlobalSettings.WindowSize        = new Point(Client.Game.Window.ClientBounds.Width, Client.Game.Window.ClientBounds.Height);
            Settings.GlobalSettings.IsWindowMaximized = Client.Game.IsWindowMaximized();
            Client.Game.SetWindowBorderless(false);

            base.Unload();
        }
Beispiel #2
0
        protected override void OnMouseUp(int x, int y, MouseButtonType button)
        {
            base.OnMouseUp(x, y, button);

            if (button == MouseButtonType.Left)
            {
                GameScene gs = Client.Game.GetScene <GameScene>();
                if (gs == null)
                {
                    return;
                }

                if (Item == null || Item.IsDestroyed)
                {
                    Dispose();
                }

                if (IsDisposed)
                {
                    return;
                }

                if (TargetManager.IsTargeting)
                {
                    _clickedCanDrag = false;

                    if (Mouse.IsDragging && CanPickup())
                    {
                        if (!ItemHold.Enabled || !gs.IsMouseOverUI)
                        {
                            return;
                        }

                        SelectedObject.Object = Item;

                        if (Item.ItemData.IsContainer)
                        {
                            gs.DropHeldItemToContainer(Item);
                        }
                        else if (ItemHold.Graphic == Item.Graphic && ItemHold.IsStackable)
                        {
                            gs.MergeHeldItem(Item);
                        }
                        else
                        {
                            if (SerialHelper.IsItem(Item.Container))
                            {
                                gs.DropHeldItemToContainer(World.Items.Get(Item.Container), X + (Mouse.Position.X - ScreenCoordinateX), Y + (Mouse.Position.Y - ScreenCoordinateY));
                            }
                        }

                        return;
                    }

                    switch (TargetManager.TargetingState)
                    {
                    case CursorTarget.Position:
                    case CursorTarget.Object:
                    case CursorTarget.Grab:
                    case CursorTarget.SetGrabBag:
                        SelectedObject.Object = Item;


                        if (Item != null)
                        {
                            TargetManager.Target(Item);
                            Mouse.LastLeftButtonClickTime = 0;
                        }

                        break;

                    case CursorTarget.SetTargetClientSide:
                        SelectedObject.Object = Item;

                        if (Item != null)
                        {
                            TargetManager.Target(Item);
                            Mouse.LastLeftButtonClickTime = 0;
                            UIManager.Add(new InspectorGump(Item));
                        }

                        break;

                    case CursorTarget.HueCommandTarget:
                        SelectedObject.Object = Item;

                        if (Item != null)
                        {
                            CommandManager.OnHueTarget(Item);
                        }

                        break;
                    }
                }
                else
                {
                    if (!ItemHold.Enabled || !gs.IsMouseOverUI)
                    {
                        //if (_clickedCanDrag)
                        //{
                        //    _clickedCanDrag = false;
                        //    _sendClickIfNotDClick = true;
                        //    _sClickTime = Time.Ticks + Mouse.MOUSE_DELAY_DOUBLE_CLICK;
                        //}
                        if (!DelayedObjectClickManager.IsEnabled)
                        {
                            DelayedObjectClickManager.Set(Item.Serial, Mouse.Position.X, Mouse.Position.Y, Time.Ticks + Mouse.MOUSE_DELAY_DOUBLE_CLICK);
                        }
                    }
                    else
                    {
                        SelectedObject.Object = Item;

                        if (Item.ItemData.IsContainer)
                        {
                            gs.DropHeldItemToContainer(Item);
                        }
                        else if (ItemHold.Graphic == Item.Graphic && ItemHold.IsStackable)
                        {
                            gs.MergeHeldItem(Item);
                        }
                        else
                        {
                            if (SerialHelper.IsItem(Item.Container))
                            {
                                gs.DropHeldItemToContainer(World.Items.Get(Item.Container), X + (Mouse.Position.X - ScreenCoordinateX), Y + (Mouse.Position.Y - ScreenCoordinateY));
                            }
                        }
                    }
                }

                _clickedCanDrag = false;
            }
        }
Beispiel #3
0
        protected override void OnMouseUp(int x, int y, MouseButtonType button)
        {
            if (button == MouseButtonType.Left)
            {
                if (UIManager.MouseOverControl?.RootParent == RootParent)
                {
                    GameScene gs = Client.Game.GetScene <GameScene>();
                    if (gs != null)
                    {
                        Item item = World.Items.Get(LocalSerial);
                        if (item != null)
                        {
                            if (TargetManager.IsTargeting)
                            {
                                if (Mouse.IsDragging && CanPickup())
                                {
                                    if (ItemHold.Enabled && gs.IsMouseOverUI)
                                    {
                                        if (item.ItemData.IsContainer)
                                        {
                                            gs.DropHeldItemToContainer(item);
                                        }
                                        else if (ItemHold.Graphic == item.Graphic && ItemHold.IsStackable)
                                        {
                                            gs.MergeHeldItem(item);
                                        }
                                        else
                                        {
                                            if (SerialHelper.IsItem(item.Container))
                                            {
                                                gs.DropHeldItemToContainer(World.Items.Get(item.Container), X + (Mouse.Position.X - ScreenCoordinateX), Y + (Mouse.Position.Y - ScreenCoordinateY));
                                            }
                                        }

                                        Mouse.CancelDoubleClick = true;

                                        return;
                                    }
                                }

                                switch (TargetManager.TargetingState)
                                {
                                case CursorTarget.Position:
                                case CursorTarget.Object:
                                case CursorTarget.Grab:
                                case CursorTarget.SetGrabBag:

                                    if (item != null)
                                    {
                                        var p = RootParent;

                                        if (p != null)
                                        {
                                            DelayedObjectClickManager.X = Mouse.Position.X - p.ScreenCoordinateX;
                                            DelayedObjectClickManager.Y = Mouse.Position.Y - p.ScreenCoordinateY;
                                        }

                                        TargetManager.Target(item);
                                        Mouse.LastLeftButtonClickTime = 0;
                                    }

                                    break;

                                case CursorTarget.SetTargetClientSide:

                                    if (item != null)
                                    {
                                        TargetManager.Target(item);
                                        Mouse.LastLeftButtonClickTime = 0;
                                        UIManager.Add(new InspectorGump(item));
                                    }

                                    break;

                                case CursorTarget.HueCommandTarget:

                                    if (item != null)
                                    {
                                        CommandManager.OnHueTarget(item);
                                    }

                                    break;
                                }

                                return;
                            }
                            else
                            {
                                Point offset = Mouse.LDroppedOffset;

                                if ((Math.Abs(offset.X) < Constants.MIN_PICKUP_DRAG_DISTANCE_PIXELS &&
                                     Math.Abs(offset.Y) < Constants.MIN_PICKUP_DRAG_DISTANCE_PIXELS) &&
                                    (!ItemHold.Enabled || !gs.IsMouseOverUI))
                                {
                                    if (!DelayedObjectClickManager.IsEnabled)
                                    {
                                        var p = RootParent;

                                        if (p != null)
                                        {
                                            var off = Mouse.LDroppedOffset;
                                            DelayedObjectClickManager.Set(LocalSerial,
                                                                          (Mouse.Position.X - off.X) - p.ScreenCoordinateX,
                                                                          (Mouse.Position.Y - off.Y) - p.ScreenCoordinateY,
                                                                          Time.Ticks + Mouse.MOUSE_DELAY_DOUBLE_CLICK);
                                        }

                                        return;
                                    }
                                }
                                else if (item != null)
                                {
                                    if (item.ItemData.IsContainer)
                                    {
                                        gs.DropHeldItemToContainer(item);
                                    }
                                    else if (ItemHold.Graphic == item.Graphic && ItemHold.IsStackable)
                                    {
                                        gs.MergeHeldItem(item);
                                    }
                                    else if (SerialHelper.IsItem(item.Container))
                                    {
                                        gs.DropHeldItemToContainer(World.Items.Get(item.Container), X + (Mouse.Position.X - ScreenCoordinateX), Y + (Mouse.Position.Y - ScreenCoordinateY));
                                    }
                                    else
                                    {
                                        base.OnMouseUp(x, y, button);
                                    }

                                    Mouse.CancelDoubleClick = true;

                                    return;
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                base.OnMouseUp(x, y, button);
            }
        }
Beispiel #4
0
            protected override void OnMouseUp(int x, int y, MouseButtonType button)
            {
                Mobile container = World.Mobiles.Get(_parentSerial);

                if (MouseIsOver)
                {
                    if (ItemHold.Enabled || LocalSerial == 0)
                    {
                        if (container != null)
                        {
                            GameScene scene = Client.Game.GetScene <GameScene>();
                            if (scene == null)
                            {
                                return;
                            }

                            if (_layer == Layer.Backpack)
                            {
                                Item equipment = container.FindItemByLayer(_layer);

                                if (equipment != null)
                                {
                                    if (_layer == Layer.Backpack)
                                    {
                                        scene.DropHeldItemToContainer(LocalSerial != World.Player.Serial ? container.Serial : equipment.Serial);
                                    }

                                    Mouse.CancelDoubleClick       = true;
                                    Mouse.LastLeftButtonClickTime = 0;
                                    return;
                                }
                            }
                            else if (ItemHold.ItemData.IsWearable)
                            {
                                Item equipment = container.FindItemByLayer(ItemHold.Layer);

                                if (equipment == null)
                                {
                                    scene.WearHeldItem(_parentSerial != World.Player ? container : World.Player);
                                    Mouse.CancelDoubleClick       = true;
                                    Mouse.LastLeftButtonClickTime = 0;
                                    return;
                                }
                            }
                            else
                            {
                                Item cont = container.FindItemByLayer(_layer);
                                if (cont != null && cont.ItemData.IsContainer)
                                {
                                    scene.DropHeldItemToContainer(cont);
                                    Mouse.CancelDoubleClick       = true;
                                    Mouse.LastLeftButtonClickTime = 0;
                                    return;
                                }
                            }
                        }
                        else
                        {
                            Client.Game.Scene.Audio.PlaySound(0x0051);
                        }
                    }
                }

                if (!ItemHold.Enabled && container != null)
                {
                    Item equipment = container.FindItemByLayer(_layer);

                    if (equipment != null)
                    {
                        if (TargetManager.IsTargeting)
                        {
                            TargetManager.Target(equipment.Serial);
                            Mouse.CancelDoubleClick       = true;
                            Mouse.LastLeftButtonClickTime = 0;
                        }
                        else
                        {
                            if (!DelayedObjectClickManager.IsEnabled)
                            {
                                DelayedObjectClickManager.Set(LocalSerial,
                                                              Mouse.Position.X - ScreenCoordinateX,
                                                              Mouse.Position.Y - ScreenCoordinateY,
                                                              Time.Ticks + Mouse.MOUSE_DELAY_DOUBLE_CLICK);
                            }
                        }
                    }
                }
            }
Beispiel #5
0
            protected override void OnMouseUp(int x, int y, MouseButtonType button)
            {
                if (!World.InGame || button != MouseButtonType.Left)
                {
                    base.OnMouseUp(x, y, button);
                    return;
                }

                Mobile container = World.Mobiles.Get(_parentSerial);

                if (MouseIsOver)
                {
                    if (ItemHold.Enabled /*|| LocalSerial == 0*/)
                    {
                        if (container != null)
                        {
                            GameScene scene = Client.Game.GetScene <GameScene>();
                            if (scene == null)
                            {
                                return;
                            }

                            if (_layer == Layer.Backpack)
                            {
                                Item equipment = container.FindItemByLayer(_layer);

                                if (equipment != null)
                                {
                                    if (_layer == Layer.Backpack)
                                    {
                                        scene.DropHeldItemToContainer(LocalSerial != World.Player.Serial ? container.Serial : equipment.Serial);
                                    }

                                    Mouse.CancelDoubleClick = true;
                                    Mouse.LDropPosition     = Mouse.Position;

                                    return;
                                }
                            }
                            else if (ItemHold.ItemData.IsWearable)
                            {
                                Item equipment = container.FindItemByLayer(ItemHold.Layer);

                                if (equipment == null)
                                {
                                    scene.WearHeldItem(_parentSerial != World.Player ? container : World.Player);
                                    Mouse.CancelDoubleClick = true;
                                    Mouse.LDropPosition     = Mouse.Position;
                                    return;
                                }
                            }
                            else
                            {
                                Item cont = container.FindItemByLayer(_layer);
                                if (cont != null && cont.ItemData.IsContainer)
                                {
                                    scene.DropHeldItemToContainer(cont);
                                    Mouse.CancelDoubleClick = true;
                                    Mouse.LDropPosition     = Mouse.Position;
                                    return;
                                }
                            }
                        }
                        else
                        {
                            Client.Game.Scene.Audio.PlaySound(0x0051);
                        }
                    }
                }

                if (!ItemHold.Enabled && container != null && UIManager.LastControlMouseDown(MouseButtonType.Left) == this)
                {
                    Item equipment = container.FindItemByLayer(_layer);

                    if (equipment != null)
                    {
                        if (TargetManager.IsTargeting)
                        {
                            TargetManager.Target(equipment.Serial);
                            Mouse.CancelDoubleClick       = true;
                            Mouse.LastLeftButtonClickTime = 0;

                            if (TargetManager.TargetingState == CursorTarget.SetTargetClientSide)
                            {
                                UIManager.Add(new InspectorGump(equipment));
                            }
                        }
                        else
                        {
                            if (!DelayedObjectClickManager.IsEnabled)
                            {
                                var off = Mouse.LDroppedOffset;
                                DelayedObjectClickManager.Set(LocalSerial,
                                                              (Mouse.Position.X - off.X) - ScreenCoordinateX,
                                                              (Mouse.Position.Y - off.Y) - ScreenCoordinateY,
                                                              Time.Ticks + Mouse.MOUSE_DELAY_DOUBLE_CLICK);
                            }
                        }
                    }
                }
            }