Inheritance: MonoBehaviour
Exemplo n.º 1
0
        public void Should_RemoveDraggableItem()
        {
            var service = new DragDropService(null);

            dynamic isDelegateCalled = new { };

            service.RegisterDropzone(1, new DropzoneOptions()
            {
            });

            var draggable = new DraggableItem(service)
            {
                Id         = 1,
                DropzoneId = 1,
                Tag        = new { Test = "OnDropTagTest" },
                OnDrop     = (d, i) => isDelegateCalled = d
            };

            service.RegisterDraggableForDropzone(draggable);

            Assert.IsTrue(service.HasDropzoneDraggables(1));

            service.RemoveDraggableItem(draggable);

            Assert.IsFalse(service.HasDropzoneDraggables(1));
        }
Exemplo n.º 2
0
        public void Should_ClearActiveItemUponDropInSameDropzone()
        {
            var service = new DragDropService(null);

            service.RegisterDropzone(1, new DropzoneOptions()
            {
            });

            service.RegisterDropzone(2, new DropzoneOptions()
            {
            });

            var draggable1 = new DraggableItem(service)
            {
                Id         = 1,
                DropzoneId = 2,
            };

            var draggable2 = new DraggableItem(service)
            {
                Id         = 2,
                DropzoneId = 2,
            };

            service.ActiveItem = draggable1;

            service.DropActiveItem(2);

            Assert.IsTrue(service.ActiveItem == null);
        }
Exemplo n.º 3
0
        public void Should_AllowSwappingInSameDropzone_And_MaxItems()
        {
            var service = new DragDropService(null);

            service.RegisterDropzone(1, new DropzoneOptions()
            {
                MaxItems = 2
            });

            var draggable1 = new DraggableItem(service)
            {
                Id = 1, DropzoneId = 1
            };
            var draggable2 = new DraggableItem(service)
            {
                Id = 2, DropzoneId = 1
            };


            service.RegisterDraggableForDropzone(draggable1);
            service.RegisterDraggableForDropzone(draggable2);

            Assert.AreEqual(0, draggable1.OrderPosition);
            Assert.AreEqual(1, draggable2.OrderPosition);


            service.ActiveItem = draggable1;
            service.SwapOrInsert(2);

            Assert.AreEqual(0, draggable2.OrderPosition);
            Assert.AreEqual(1, draggable1.OrderPosition);
        }
Exemplo n.º 4
0
        public void Should_DropActiveItemAndCallOnDrop_SameDropzones()
        {
            var service = new DragDropService(null);

            dynamic isDelegateCalled = new { };

            service.RegisterDropzone(1, new DropzoneOptions()
            {
            });

            var draggable = new DraggableItem(service)
            {
                Id         = 1,
                DropzoneId = 1,
                Tag        = new { Test = "OnDropTagTest" },
                OnDrop     = (d, i) => isDelegateCalled = d
            };

            service.RegisterDraggableForDropzone(draggable);

            service.ActiveItem = draggable;

            service.DropActiveItem(1);

            Assert.AreEqual("OnDropTagTest", isDelegateCalled.Test);
        }
        public void Should_Limit_Dropzone_To_MaxItems()
        {
            var service = new DragDropService(null);

            service.RegisterDropzone(1, new DropzoneOptions()
            {
            });
            service.RegisterDropzone(2, new DropzoneOptions()
            {
                MaxItems = 1
            });

            var draggable1 = new DraggableItem(service)
            {
                Id = 1, DropzoneId = 1
            };
            var draggable2 = new DraggableItem(service)
            {
                Id = 2, DropzoneId = 1
            };

            service.RegisterDraggableForDropzone(draggable1);
            service.RegisterDraggableForDropzone(draggable2);

            service.ActiveItem = draggable1;
            service.DropActiveItem(2);

            service.ActiveItem = draggable2;
            service.DropActiveItem(2);

            var result = service.GetDraggablesForDropzone(2).Single();

            Assert.AreEqual(draggable1.Id, result.Id);
        }
Exemplo n.º 6
0
        bool DraggableItem.IDragDropListener.OnPrepareToDragItem(DraggableItem item)
        {
            var dragged = GetItemViewsHolderIfVisible(item.RT);

            if (dragged == null)
            {
                return(false);
            }

            int index          = dragged.ItemIndex;
            var modelOfDragged = Data[index];

            Debug.Log("Dragging with id " + modelOfDragged.id + ", ItemIndex " + index);

            // Modifying the list manually, because RemoveItemWithViewsHolder will do a Remove itself
            Data.List.RemoveAt(index);

            RemoveItemWithViewsHolder(dragged, true, false);
            UpdateScaleOfVisibleItems(dragged);

            // Insert back an empty slot in its place, with the same size
            var emptyModel = new EmptyModel();

            _DragManager.EnterState_PreparingForDrag(dragged, modelOfDragged, emptyModel);

            InsertPlaceholderAtNewIndex(index);

            return(true);
        }
        public void Should_Execute_AcceptFuncOfDropzone_AcceptTest()
        {
            var service = new DragDropService(null);

            service.RegisterDropzone(1, new DropzoneOptions()
            {
            });

            service.RegisterDropzone(2, new DropzoneOptions()
            {
                Accepts = (d) => d.Name == "Testme"
            });

            var draggable1 = new DraggableItem(service)
            {
                Id = 1, DropzoneId = 1, Tag = new { Name = "Testme" }
            };

            service.RegisterDraggableForDropzone(draggable1);

            service.ActiveItem = draggable1;
            service.DropActiveItem(2);

            var result = service.GetDraggablesForDropzone(2);

            Assert.AreEqual(1, result.Count);
        }
Exemplo n.º 8
0
        /**
         *  Return the item in this slot as the
         *  draggable item.
         *
         **/
        public override DraggableItem Drag()
        {
            DraggableItem tmp = item.GetComponent <DraggableItem>();

            items[position] = null;
            return(tmp);
        }
        public void Should_GetDropzoneByName()
        {
            var service = new DragDropService(null);

            service.RegisterDropzone(1, new DropzoneOptions()
            {
                Name = "Dropzone1"
            });

            service.RegisterDropzone(2, new DropzoneOptions()
            {
                Name = "Dropzone2"
            });

            var draggable1 = new DraggableItem(service)
            {
                Id = 1, DropzoneId = 1
            };

            service.RegisterDraggableForDropzone(draggable1);

            service.ActiveItem = draggable1;
            service.DropActiveItem(2);

            var result = service.GetDraggablesForDropzone("Dropzone2");

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(result[0].Id, 1);
        }
        public void Should_ReturnFalse_HasDropzoneDraggables()
        {
            var service = new DragDropService(null);

            service.RegisterDropzone(1, new DropzoneOptions()
            {
                Name = "Dropzone1"
            });

            service.RegisterDropzone(2, new DropzoneOptions()
            {
                Name = "Dropzone2"
            });

            var draggable1 = new DraggableItem(service)
            {
                Id = 1, DropzoneId = 1
            };

            service.RegisterDraggableForDropzone(draggable1);

            service.ActiveItem = draggable1;
            service.DropActiveItem(2);

            var result = service.HasDropzoneDraggables("Dropzone1");

            Assert.AreEqual(false, result);
        }
        public void Should_ReturnFalse_HasDropzoneDraggables_GivenInvalidName()
        {
            var service = new DragDropService(null);

            service.RegisterDropzone(1, new DropzoneOptions()
            {
                Name = "Dropzone1"
            });

            service.RegisterDropzone(2, new DropzoneOptions()
            {
                Name = "Dropzone2"
            });

            var draggable1 = new DraggableItem(service)
            {
                Id = 1, DropzoneId = 1
            };

            service.RegisterDraggableForDropzone(draggable1);

            service.ActiveItem = draggable1;
            service.DropActiveItem(2);

            Assert.ThrowsException <ArgumentException>(() => service.HasDropzoneDraggables("Dropzone3"));
        }
        public void Should_DropActiveItem()
        {
            var service = new DragDropService(null);

            service.RegisterDropzone(1, new DropzoneOptions()
            {
            });
            service.RegisterDropzone(2, new DropzoneOptions()
            {
            });

            var draggable = new DraggableItem(service)
            {
                Id = 1, DropzoneId = 1
            };

            service.RegisterDraggableForDropzone(draggable);

            service.ActiveItem = draggable;

            service.DropActiveItem(2);

            var result = service.GetDraggablesForDropzone(2).Single();

            Assert.AreEqual(draggable.Id, result.Id);
        }
        public void Should_DropActiveItemAndCallOnDrop()
        {
            var service = new DragDropService(null);

            dynamic isDelegateCalled = new { };

            service.RegisterDropzone(1, new DropzoneOptions()
            {
            });
            service.RegisterDropzone(2, new DropzoneOptions()
            {
            });

            var draggable = new DraggableItem(service)
            {
                Id         = 1,
                DropzoneId = 1,
                Tag        = new { Test = "OnDropTagTest" },
                OnDrop     = (d) => isDelegateCalled = d
            };

            service.RegisterDraggableForDropzone(draggable);

            service.ActiveItem = draggable;

            service.DropActiveItem(2);

            var result = service.GetDraggablesForDropzone(2).Single();

            Assert.AreEqual(draggable.Id, result.Id);

            Assert.AreEqual("OnDropTagTest", isDelegateCalled.Test);
        }
Exemplo n.º 14
0
        /**
         *  Draw the specific inventory item
         **/
        public static void Render(Rect position, GUIContent guiContent, GUIStyle guiStyle, DraggableHandler handler)
        {
            GUI.Box(position, guiContent, guiStyle);

            //	if the position of the current mouse event is within the rendering window
            if (position.Contains(UnityEngine.Event.current.mousePosition))
            {
                //	trigger either Hover event
                if (draggedItem.item == null)
                {
                    handler.Hover();
                }
                else
                {
                    handler.Hover(draggedItem.item);
                }

                //	holding the item that will be dragged
                //	(if any)
                DraggableItem item = null;

                //	if a drag is initiated, notify the handler
                if (UnityEngine.Event.current.type == EventType.MouseDrag && draggedItem.item == null)
                {
                    item = handler.Drag();
                    UnityEngine.Event.current.Use();
                }

                //	if a mouse up event happens, notify the handler
                //	whether or not there is an item being dragged
                if (UnityEngine.Event.current.type == EventType.MouseUp)
                {
                    if (draggedItem.item == null)
                    {
                        item = handler.Click();
                    }
                    else
                    {
                        //	remove the dragged item if the handler returns true
                        item = handler.ItemDropped(draggedItem.item);
                        if (item != null)
                        {
                            item.Pickup();
                            draggedItem.item = item;
                        }
                        else
                        {
                            draggedItem.item = null;
                        }
                    }
                    UnityEngine.Event.current.Use();
                }
                if (item != null)
                {
                    item.Pickup();
                    draggedItem.item = item;
                }
            }
        }
Exemplo n.º 15
0
        private void PhaseChangedSlot(object[] parameters)
        {
            DraggableItem item    = (DraggableItem)parameters[0];
            EventMapping  mapping = (EventMapping)item.Data;

            //Debug.Log(string.Format("PhaseChangedSlot: {0}", mapping));
            EventMappingDescriptor.ProcessPhases(Adapter, null, mapping, mapping.Enabled);
        }
Exemplo n.º 16
0
 void PutItemIntoSlot(DraggableItem item)
 {
     if (item != null)
     {
         //Debug.Log($"{item.name} dropped on {name}");
         //logic is inside Item class (in order to simplify loading)
         item.AttachToItemSlot(this);
     }
 }
Exemplo n.º 17
0
        public override void CollectViews()
        {
            base.CollectViews();

            draggableComponent = root.GetComponent <DraggableItem>();
            root.GetComponentAtPath("ScalableViews", out scalableViews);
            scalableViews.GetComponentAtPath("TitlePanel/TitleText", out titleText);
            scalableViews.GetComponentAtPath("Background", out background);
        }
Exemplo n.º 18
0
 /**
  *  On MouseUp, we check to see if there's currently an item
  *  being dragged. If there is, we drop it into this slot.
  *
  **/
 public override bool ItemDropped(DraggableItem item)
 {
     if (item.GetComponent <InventoryItem>() != null)
     {
         inventory[inventoryPosition.x, inventoryPosition.y] = item.gameObject;
         return(true);
     }
     return(false);
 }
    /// <summary>
    /// Place item in itemDropTarget (reparent, reposition)
    /// </summary>
    /// <param name="item"></param>
    public void PlaceItem(DraggableItem item)
    {
        var newItemPosition = this.transform.position;

        newItemPosition.x      += placementOffsetX;
        newItemPosition.y      += placementOffsetY;
        item.transform.position = newItemPosition;
        onItemPlaced.Invoke();
    }
Exemplo n.º 20
0
    public void OnDrop(PointerEventData eventData)
    {
        DraggableItem item = eventData.pointerDrag.GetComponent <DraggableItem>();

        if (item != null)
        {
            item.original_slot = this.transform;
        }
    }
Exemplo n.º 21
0
        /**
         *  When an item is dropped on the slot, verify that it's
         *  an ActionItem and place it in items[]
         **/
        public override bool ItemDropped(DraggableItem item)
        {
            ActionItem actionItem = item.GetComponent <ActionItem>();

            if (actionItem != null)
            {
                items[position] = actionItem;
                return(true);
            }
            return(false);
        }
Exemplo n.º 22
0
    public static void UpdateInventory()
    {
        bool reload = false;

        foreach (GameObject invItem in Globals._Inventory.GetComponent <Inventory>().items)
        {
            bool            found = false;
            DraggableItem   di    = invItem.GetComponent <DraggableItem>();
            Data.Items.Item item  = di.item_dat;

            foreach (Data.Characters.Inventory.Inventory.ItemData dat in Globals.InventoryItemsNew)
            {
                if (dat.Item.Name == item.Name)
                {
                    found = true;
                }
            }
            if (!found)
            {
                reload = true;
            }
        }

        foreach (Data.Characters.Inventory.Inventory.ItemData dat in Globals.InventoryItemsNew)
        {
            bool found1 = false;
            foreach (GameObject invItem in Globals._Inventory.GetComponent <Inventory>().items)
            {
                if (dat.Item.Name == invItem.GetComponent <DraggableItem>().item_dat.Name)
                {
                    found1 = true;
                }
            }
            if (!found1)
            {
                reload = true;
            }
        }

        if (reload)
        {
            Globals._Inventory.GetComponent <Inventory>().items.Clear();
            foreach (Data.Characters.Inventory.Inventory.ItemData dat in Globals.InventoryItemsNew)
            {
                GameObject newItem = GameObject.Instantiate(GameObject.Find("DragMe"));
                newItem.AddComponent <DraggableItem>();
                newItem.GetComponent <DraggableItem>().item_name = dat.Item.Name;
                newItem.GetComponent <DraggableItem>().item_dat  = dat.Item;
                Globals._Inventory.GetComponent <Inventory>().addItem(newItem);
            }
            Globals.InventoryItems = Globals.InventoryItemsNew;
        }
    }
Exemplo n.º 23
0
        /**
         *	If an item is dropped on this slot, check if it is an EquipmentItem
         *	AND it is the proper EquipmentType
         *	if so, equip it and return the previously equipped item (to be dragged)
         *
         *	Otherwise, return null
         *
         **/
        public override DraggableItem ItemDropped(DraggableItem item)
        {
            EquipmentItem equipmentItem = item.GetComponent <EquipmentItem>();

            if (equipmentItem != null && equipmentItem.equipmentType == equipmentType)
            {
                EquipmentItem tmpEquipmentItem = equipment.Unequip(equipmentType);
                equipment.Equip(equipmentType, item.GetComponent <EquipmentItem>());
                return(tmpEquipmentItem);
            }
            return(item);
        }
Exemplo n.º 24
0
    public void OnPointerExit(PointerEventData eventData)
    {
        if (eventData.pointerDrag == null)
        {
            return;
        }

        DraggableItem item = eventData.pointerDrag.GetComponent <DraggableItem>();

        if (item != null && item.placeholder_parent == this.transform)
        {
            item.placeholder_parent = item.original_slot;
        }
    }
Exemplo n.º 25
0
        /**
         *  When an item is dropped on this slot, we'll check to
         *  see if that item is an EquipmentItem and if it matches
         *  this slot's type.
         *
         *  Currently does not swap out equipment of different types.
         *
         **/
        public override bool ItemDropped(DraggableItem item)
        {
            EquipmentItem equipmentItem = item.GetComponent <EquipmentItem>();

            if (equipmentItem != null && equipmentItem.equipmentType == equipmentType)
            {
                if (equipment.IsSlotFree(equipmentType))
                {
                    equipment.Equip(equipmentType, equipmentItem);
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 26
0
    void SpawnObj()
    {
        GameObject instance = Instantiate(Resources.Load("ListItem", typeof(GameObject))) as GameObject;

        instance.transform.SetParent(transform, false);
        instance.transform.SetAsFirstSibling();
        DraggableItem draggableItemComponent = instance.GetComponent <DraggableItem>();

        if (draggableItemComponent != null)
        {
            draggableItemComponent.m_onEndDragItem += onListItemDragEnded;
            draggableItemComponent.SetImage(m_itemSprites[Random.Range(0, m_itemSprites.Length)]);
        }
    }
Exemplo n.º 27
0
    public void OnPointerEnter(PointerEventData eventData)
    {
        if (eventData.pointerDrag == null)
        {
            return;
        }

        DraggableItem item = eventData.pointerDrag.GetComponent <DraggableItem>();

        if (item != null)
        {
            item.placeholder_parent = this.transform;
        }
    }
Exemplo n.º 28
0
        public void Should_CheckAllowDrag_False()
        {
            var service = new DragDropService(null);

            var draggable1 = new DraggableItem(service)
            {
                Id         = 1,
                DropzoneId = 1,
                Tag        = new { Test = false },
                AllowDrag  = (d) => d.Tag.Test
            };

            var isDragable = service.IsDraggable(draggable1);

            Assert.AreEqual(false, isDragable);
        }
Exemplo n.º 29
0
        public void Should_RemoveAllItemFromDropzone()
        {
            var service = new DragDropService(null);

            DraggableItem isDelegateCalled = null;

            service.RegisterDropzone(1, new DropzoneOptions()
            {
                Name = "Testzone"
            });

            var draggable = new DraggableItem(service)
            {
                Id         = 1,
                DropzoneId = 1,
                Tag        = new { Test = "OnDropTagTest" },
                OnDrop     = (d) => isDelegateCalled = d
            };

            var draggable1 = new DraggableItem(service)
            {
                Id         = 1,
                DropzoneId = 1,
                Tag        = new { Test = "OnDropTagTest" },
                OnDrop     = (d) => isDelegateCalled = d
            };

            var draggable2 = new DraggableItem(service)
            {
                Id         = 1,
                DropzoneId = 1,
                Tag        = new { Test = "OnDropTagTest" },
                OnDrop     = (d) => isDelegateCalled = d
            };

            service.RegisterDraggableForDropzone(draggable);
            service.RegisterDraggableForDropzone(draggable1);
            service.RegisterDraggableForDropzone(draggable2);

            Assert.IsTrue(service.HasDropzoneDraggables(1));

            service.ClearDropzone("Testzone");

            Assert.IsFalse(service.HasDropzoneDraggables(1));
        }
Exemplo n.º 30
0
        bool TryGrabOrphanedItemVH(PointerEventData eventData, DraggableItem orphanedItemWithBundle)
        {
            bool isPointInViewport;
            var  closestVH = GetClosestVHAtScreenPoint(eventData, out isPointInViewport);

            if (!isPointInViewport)
            {
                return(false);
            }

            orphanedItemWithBundle.dragDropListener = this;

            int atIndex = 0;

            if (closestVH == null)             // no items present, but the point is in viewport => add it to the list
            {
                atIndex = 0;
            }
            else
            {
                atIndex = closestVH.ItemIndex;
            }

            var vh    = orphanedItemWithBundle.OrphanedBundle.views as MyViewsHolder;
            var model = orphanedItemWithBundle.OrphanedBundle.model as MyModel;

            Debug.Log("Dropped with id " + model.id + ", ItemIndex " + vh.ItemIndex + ", droppedAtItemIndex " + atIndex);

            // Modifying the list manually, because InsertItemWithViewsHolder will do an Insert itself
            Data.List.Insert(atIndex, model);

            float itemSizeToUse = vh.root.rect.height;             // for vertical ScrollViews, "size" = height

            InsertItemWithViewsHolder(vh, atIndex, false);

            // The adapter will use _Params.DefaultItemSize to set the item's size, but we want it to keep the same size.
            // The alternative way of doing it (a bit faster, but negligeable) is to store <itemSizeToUse> somewhere and
            // pass it in CollectItemsSizes for <atIndex>. CollectItemsSizes() is always called during count changes, including during InsertItemWithViewsHolder()
            RequestChangeItemSizeAndUpdateLayout(atIndex, itemSizeToUse, false, true);

            //// Restore the scale of all items;
            //UpdateScaleOfVisibleItems(null);

            return(true);
        }