Пример #1
0
        /// <summary>
        /// Start a drag&drop operation with the given IFileSearchResults
        /// </summary>
        /// <param name="searchResults"></param>
        /// <param name="overallItemAudioType"></param>
        /// <returns></returns>
        private DragDropEffects StartDragFileSearchResults(IEnumerable <IFileSearchResult> searchResults, AudioSearchResultType overallItemAudioType, AresTargetDirectoryProvider targetDirectoryProvider)
        {
            List <DraggedItem> draggedFiles = new List <DraggedItem>();

            foreach (IFileSearchResult fileSearchResult in searchResults)
            {
                // Create a new DraggedItem (dragged file/folder)
                DraggedItem draggedFile = new DraggedItem();

                // Set item & node type for the file
                draggedFile.ItemType = overallItemAudioType == AudioSearchResultType.MusicFile ? FileType.Music : FileType.Sound;
                draggedFile.NodeType = DraggedItemType.File;

                // Determine the relative path where the downloaded file will be placed
                string relativeDownloadPath = targetDirectoryProvider.GetFolderWithinLibrary(fileSearchResult);
                draggedFile.RelativePath = System.IO.Path.Combine(relativeDownloadPath, fileSearchResult.Filename);
                draggedFile.Title        = fileSearchResult.Title;
                draggedFiles.Add(draggedFile);
            }

            // Start a file/folder drag & drop operation for those files
            FileDragInfo info = new FileDragInfo();

            info.Source       = FileSource.Online;
            info.DraggedItems = draggedFiles;
            info.TagsFilter   = new TagsFilter();
            return(DoDragDrop(info, DragDropEffects.Copy));
        }
Пример #2
0
    public void EquipDraggedItem()
    {
        var settings = applicationSettings.GetRucksackItemSettings(DraggedItem.SettingsId);

        int slotIndex = 0;

        for (int i = 0; i < dataModel.RucksackData.Length; i++)
        {
            if (dataModel.RucksackData[i].ItemType == settings.ItemType)
            {
                slotIndex = i;
            }
        }

        var data = dataModel.RucksackData[slotIndex];

        if (data.ItemId != Constants.UnEquippedItemId)
        {
            UnEquip(data.ItemId);
        }

        dataModel.SetItem(settings.ItemType, DraggedItem.InstanceId);
        data.ItemId = DraggedItem.InstanceId;
        DraggedItem.SetEquipped(true);

        DraggedItem.transform.localPosition = Vector3.zero;
        DraggedItem.transform.localRotation = Quaternion.identity;

        DraggedItem = null;
    }
Пример #3
0
        private static void AddItemsToSet(Dictionary <String, DraggedItem> uniqueItems, DraggedItem item, HashSet <String> allowedItems, HashSet <String> unallowedItems,
                                          String musicDirectory, String soundDirectory, System.Threading.CancellationToken token)
        {
            String baseDir = item.ItemType == FileType.Music ? musicDirectory : soundDirectory;
            String path    = System.IO.Path.Combine(baseDir, item.RelativePath);

            if (item.NodeType == DraggedItemType.Directory)
            {
                if (System.IO.Directory.Exists(path))
                {
                    foreach (String file in FileSearch.GetFilesInDirectory(item.ItemType, path, true))
                    {
                        AddItemsToSet(uniqueItems, new DraggedItem {
                            NodeType = DraggedItemType.File, ItemType = item.ItemType, RelativePath = file.Substring(baseDir.Length + 1)
                        },
                                      allowedItems, unallowedItems, musicDirectory, soundDirectory, token);
                        token.ThrowIfCancellationRequested();
                    }
                }
            }
            else
            {
                if (allowedItems == null || allowedItems.Contains(item.RelativePath, StringComparer.InvariantCultureIgnoreCase))
                {
                    if (unallowedItems == null || !unallowedItems.Contains(item.RelativePath, StringComparer.InvariantCultureIgnoreCase))
                    {
                        String key = System.IO.Path.GetFullPath(path);
                        if (!uniqueItems.ContainsKey(path))
                        {
                            uniqueItems[key] = item;
                        }
                    }
                }
            }
        }
Пример #4
0
 /*
  * Dragging stopped (IEndDragHandler)
  */
 public void OnEndDrag(PointerEventData eventData)
 {
     if (_draggedItem != null)
     {
         _draggedItem.Drop(eventData.position);
         _draggedItem = null;
     }
 }
Пример #5
0
 public static void BeginDrag(Root GuiRoot, DraggedItem Item)
 {
     if (Item != null)
     {
         GuiRoot.ShowMinorPopup(Item);
         GuiRoot.Dragging = true;
     }
 }
Пример #6
0
 /*
  * Dragging stopped (IEndDragHandler)
  */
 public void OnEndDrag(PointerEventData eventData)
 {
     if (_draggedItem != null)
     {
         audioSource.PlayOneShot(dropSFX);
         _draggedItem.Drop(eventData.position);
         _draggedItem = null;
     }
 }
Пример #7
0
 /*
  * Dragging stopped (IEndDragHandler)
  */
 public void OnEndDrag(PointerEventData eventData)
 {
     if (_draggedItem != null)
     {
         _draggedItem.Drop(eventData.position);
         _draggedItem = null;
         // Play hold audio
         holdAudioSource.Stop();
     }
 }
Пример #8
0
 public void MakeFor(ItemType item, RectTransform parentPanel, DraggedItem draggedItemPrefab,
                     System.Func <bool> onTakeItem,
                     System.Action onReturnItem)
 {
     parent    = parentPanel;
     this.item = item;
     this.draggedItemPrefab = draggedItemPrefab;
     this.onReturnItem      = onReturnItem;
     this.onTakeItem        = onTakeItem;
 }
Пример #9
0
        private void FTree_DragOver(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.None;
            DraggedItem draggedItem = (DraggedItem)e.Data.GetData(typeof(DraggedItem));
            TreeNode    targetNode  = FTree.GetNodeAt(FTree.PointToClient(new Point(e.X, e.Y)));

            if (draggedItem.Obj is Parameter)
            {
                if (targetNode.Tag is ParameterCollection ||
                    (targetNode.Tag is Parameter &&
                     targetNode.Tag != draggedItem.Obj &&
                     !(targetNode.Tag as Parameter).HasParent(draggedItem.Obj as Parameter)))
                {
                    e.Effect = e.AllowedEffect;
                }
            }
        }
Пример #10
0
        private static IElement CreateFileElement(DraggedItem item, String musicDirectory, String soundDirectory)
        {
            IFileElement element = Ares.Data.DataModule.ElementFactory.CreateFileElement(item.RelativePath, item.ItemType == FileType.Music ? SoundFileType.Music : SoundFileType.SoundEffect);
            String       dir     = item.ItemType == FileType.Music ? musicDirectory : soundDirectory;
            String       path    = System.IO.Path.Combine(dir, item.RelativePath);

            Un4seen.Bass.AddOn.Tags.TAG_INFO tag = Un4seen.Bass.AddOn.Tags.BassTags.BASS_TAG_GetFromFile(path, true, true);
            if (!String.IsNullOrEmpty(tag?.title))
            {
                element.Title = tag.title;
            }
            else if (String.IsNullOrEmpty(item.Title))
            {
                element.Title = System.IO.Path.GetFileNameWithoutExtension(path);
            }
            else
            {
                element.Title = item.Title;
            }
            return(element);
        }
Пример #11
0
        /*
         * Dragging started (IBeginDragHandler)
         */
        public void OnBeginDrag(PointerEventData eventData)
        {
            _renderer.ClearSelection();

            if (_itemToDrag != null && _draggedItem == null)
            {
                var t             = _renderer.RectTransform.InverseTransformPoint(eventData.position);
                var localPosition = new Vector2(t.x, t.y);
                var offset        = _renderer.GetItemOffset(_itemToDrag) - localPosition;

                // Create a dragged item
                _draggedItem = new DraggedItem(
                    this,
                    _itemToDrag.Shape.Position,
                    _itemToDrag,
                    offset
                    );

                // Remove the item from inventory
                _inventory.Remove(_itemToDrag);
            }
        }
Пример #12
0
        private void FTree_DragDrop(object sender, DragEventArgs e)
        {
            DraggedItem draggedItem      = (DraggedItem)e.Data.GetData(typeof(DraggedItem));
            TreeNode    targetNode       = FTree.GetNodeAt(FTree.PointToClient(new Point(e.X, e.Y)));
            Parameter   draggedComponent = draggedItem.Obj as Parameter;
            Object      targetComponent  = targetNode.Tag;

            if (targetComponent is ParameterCollection)
            {
                ParameterCollection collection = targetComponent as ParameterCollection;
                if (collection.IndexOf(draggedComponent) != -1)
                {
                    collection.Remove(draggedComponent);
                    collection.Insert(0, draggedComponent);
                }
                else
                {
                    collection.Add(draggedComponent);
                }
            }
            else if (targetComponent is Parameter)
            {
                if ((targetComponent as Parameter).Parameters.IndexOf(draggedComponent) != -1)
                {
                    draggedComponent.ZOrder = 0;
                }
                else
                {
                    draggedComponent.Parent = targetComponent as Parameter;
                }
            }
            string draggedName = draggedComponent.FullName;

            FTree.SelectedNode = targetNode;
            // update all designer plugins (this one too)
            Designer.SetModified(null, "EditData");
            NavigateTo(Res.Get("Designer,ToolWindow,Dictionary,Parameters") + "." + draggedName);
        }
Пример #13
0
        /*
         * Dragging started (IBeginDragHandler)
         */
        public void OnBeginDrag(PointerEventData eventData)
        {
            _renderer.ClearSelection();

            if (_itemToDrag != null && _draggedItem == null)
            {
                var localPosition = ScreenToLocalPositionInRenderer(eventData.position);
                var itemOffest    = _renderer.GetItemOffset(_itemToDrag);
                var offset        = itemOffest - localPosition;

                // Create a dragged item
                _draggedItem = new DraggedItem(
                    _canvas,
                    this,
                    _itemToDrag.Shape.Position,
                    _itemToDrag,
                    offset
                    );

                // Remove the item from inventory
                _inventory.Remove(_itemToDrag);
            }
        }
Пример #14
0
 public void Start()
 {
     draggedItem = DraggedItem.GetInstance();
 }
Пример #15
0
 static Draggable()
 {
     draggedItem = DraggedItem.GetInstance();
 }
Пример #16
0
        public override void DrawItem(Rect position, int index)
        {
            SerializedProperty shoppingItem = this[index];

            int controlID = GUIUtility.GetControlID(FocusType.Passive);

            switch (Event.current.GetTypeForControl(controlID))
            {
            case EventType.MouseDown:
                Rect totalItemPosition = ReorderableListGUI.CurrentItemTotalPosition;
                //var width = totalItemPosition.width - widthBt * 8;
                //width /= 1.5f;
                //Rect draggableRect = new Rect(width + totalItemPosition.x, totalItemPosition.y, totalItemPosition.width - width - widthBt * 8,EditorGUIUtility.singleLineHeight);
                var draggableRect = new Rect(totalItemPosition.x, totalItemPosition.y, totalItemPosition.width * 0.1f, EditorGUIUtility.singleLineHeight);
                if (draggableRect.Contains(Event.current.mousePosition))
                {
                    // Select this list item.
                    s_SelectedList = this;
                    s_SelectedItem = shoppingItem;
                }

                // Calculate rectangle of draggable area of the list item.
                // This example excludes the grab handle at the left.
                //draggableRect.x = position.x;
                //draggableRect.width = position.width;

                if (Event.current.button == 0 && draggableRect.Contains(Event.current.mousePosition))
                {
                    // Select this list item.
                    s_SelectedList = this;
                    s_SelectedItem = shoppingItem;

                    // Lock onto this control whilst left mouse button is held so
                    // that we can start a drag-and-drop operation when user drags.
                    GUIUtility.hotControl = controlID;
                    s_MouseDownPosition   = Event.current.mousePosition;
                    Event.current.Use();
                }
                break;

            case EventType.MouseDrag:
                if (GUIUtility.hotControl == controlID)
                {
                    GUIUtility.hotControl = 0;

                    // Begin drag-and-drop operation when the user drags the mouse
                    // pointer across the threshold. This threshold helps to avoid
                    // inadvertently starting a drag-and-drop operation.
                    if (Vector2.Distance(s_MouseDownPosition, Event.current.mousePosition) >= MouseDragThresholdInPixels)
                    {
                        // Prepare data that will represent the item.
                        var item = new DraggedItem(this, index, shoppingItem);

                        // Start drag-and-drop operation with the Unity API.
                        DragAndDrop.PrepareStartDrag();
                        // Need to reset `objectReferences` and `paths` because `PrepareStartDrag`
                        // doesn't seem to reset these (at least, in Unity 4.x).
                        DragAndDrop.objectReferences = new Object[0];
                        DragAndDrop.paths            = new string[0];

                        DragAndDrop.SetGenericData(DraggedItem.TypeName, item);
                        var element = shoppingItem.FindPropertyRelative("prefab");
                        if (element.objectReferenceValue != null)
                        {
                            DragAndDrop.StartDrag(element.objectReferenceValue.name);
                        }
                    }

                    // Use this event so that the host window gets repainted with
                    // each mouse movement.
                    Event.current.Use();
                }
                break;

            case EventType.Repaint:
                //EditorStyles.label.Draw(position, shoppingItem.FindPropertyRelative("assetName").stringValue, false, false, false, false);
                break;
            }
            EditorGUI.PropertyField(position, this[index], true);
        }
Пример #17
0
        private void DrawMain()
        {
            try
            {
                if (isDragging)
                {
                    if (DraggedItem.Equipped)
                    {
                        DraggedItem.OnUnequip();
                        Inventory.Instance.ItemSlots[DraggedItemIndex].Equipped = false;
                    }
                    Inventory.Instance.DropItem(DraggedItemIndex);
                    DraggedItem      = null;
                    DraggedItemIndex = -1;
                    isDragging       = false;
                }
                targetPerkOffset  = wholeScreenRect.center;
                currentPerkOffset = targetPerkOffset;
                Vector2 center  = wholeScreenRect.center;
                Rect    MiddleR = new Rect(Vector2.zero, new Vector2(300 * screenScale, 300 * screenScale))
                {
                    center = center
                };

                GUI.Label(new Rect(10 * screenScale, 10 * screenScale, 300, 100), "Difficulty: " + DiffSel_Names[(int)ModSettings.difficulty], chgDiffLabelStyle);
                //drawing difficulty raise lower buttons
                if (difficultyCooldown <= 0 && !GameSetup.IsMpClient)
                {
                    if ((int)ModSettings.difficulty < (int)ModSettings.Difficulty.Hell && GUI.Button(new Rect(10 * screenScale, 90 * screenScale, 200 * screenScale, 40 * screenScale), "Raise Difficulty", chgDiffBtnStyle))
                    {
                        //raise difficulty
                        difficultyCooldown = 10 * 60;
                        ModSettings.difficulty++;
                        ModSettings.BroadCastSettingsToClients();
                    }
                    if (ModSettings.difficulty > (int)ModSettings.Difficulty.Easy && GUI.Button(new Rect(10 * screenScale, 130 * screenScale, 200 * screenScale, 40 * screenScale), "Lower Difficulty", chgDiffBtnStyle))
                    {
                        //lower difficulty
                        difficultyCooldown = 10 * 60;
                        ModSettings.difficulty--;
                        ModSettings.BroadCastSettingsToClients();
                    }
                    if (GUI.Button(new Rect(10 * screenScale, 170 * screenScale, 200 * screenScale, 40 * screenScale), "Change Options", chgDiffBtnStyle))
                    {
                        ModSettings.DifficultyChosen = false;
                        difficultyCooldown           = 10 * 60;
                    }
                }

                Rect  r1      = new Rect(wholeScreenRect.center, new Vector2(Screen.height / 2, Screen.height / 2));
                Rect  r2      = new Rect(r1);
                Rect  r3      = new Rect(r1);
                Rect  r4      = new Rect(r1);
                float minDist = 500f / 1500f;
                minDist *= r1.width;
                MenuButton(minDist, ref r1, OpenedMenuMode.Inventory, "Inventory", new Vector2(1, -1), ref buttonHighlightOpacity[0], -50 * screenScale, -50 * screenScale);
                r2.position = center - r1.size;
                MenuButton(minDist, ref r2, OpenedMenuMode.Spells, "Abilities", new Vector2(-1, 1), ref buttonHighlightOpacity[1], 50 * screenScale, 50 * screenScale);
                r3.position = center - new Vector2(0, r1.width);
                MenuButton(minDist, ref r3, OpenedMenuMode.Stats, "Guide & Stats", Vector2.one, ref buttonHighlightOpacity[2], -50 * screenScale, 50 * screenScale);
                r4.position = center - new Vector2(r1.width, 0);
                MenuButton(minDist, ref r4, OpenedMenuMode.Perks, "Mutations", -Vector2.one, ref buttonHighlightOpacity[3], 50 * screenScale, -50 * screenScale);
                GUI.Label(MiddleR, "Level \n" + ModdedPlayer.instance.level.ToString(), menuBtnStyle);

                if (GUI.Button(new Rect(Screen.width - 120 * screenScale, 40 * screenScale, 120 * screenScale, 40 * screenScale), HideHud ? "[ NO HUD ]" : "[ HUD ]", chgDiffLabelStyle))
                {
                    HideHud = !HideHud;
                }
                DisplayedPerkIDs = null;
                semiblackValue   = 0;
            }
            catch (Exception ex)
            {
                ModAPI.Log.Write(ex.ToString());
            }
        }
Пример #18
0
 static Slot()
 {
     draggedItem = DraggedItem.GetInstance();
 }