Esempio n. 1
0
 public void SetSelected(int index)
 {
     if (index >= 0 && index < itemDatas.Count)
     {
         curItem = itemDatas[index];
     }
 }
Esempio n. 2
0
    private void updateItems()
    {
        if (itemDatas == null)
        {
            return;
        }
        //Rect rect = new Rect(displayRect.x - displayRect.width*(buffer - 1)/2,displayRect.y + displayRect.height*(buffer - 1)/2, displayRect.width*buffer, displayRect.height*buffer);
        Rect rect = new Rect(displayRect.x - displayRect.width * (buffer - 1) / 2, displayRect.y + displayRect.height * (buffer - 1) / 2, displayRect.width * buffer, displayRect.height * buffer);

        for (int i = 0; i < itemDatas.Count; i++)
        {
            ItemRect item = itemDatas[i];
            if (isIntersect(item.rect, rect))
            {
                if (!item.isVisable)
                {
                    item.isVisable = true;
                    item.item      = itemPool.getIdleTarget <BaseItemView>();
                    item.item.transform.localPosition = new Vector3(item.rect.x, item.rect.y, 0);
                    item.item.SetData(item.data);
                }
                else
                {
                    float f = getIntersectSize(item.rect, displayRect);
                    //f = Mathf.Min(1, f + 0.3f);
                    item.item.transform.localPosition = new Vector3(item.rect.x - (1 - f) * item.rect.width / 2, item.rect.y, 0);


                    //item.item.transform.localScale = f * Vector3.one;
                    if (f < 1)
                    {
                        item.item.transform.SetSiblingIndex(0);
                    }
                    else
                    {
                        item.item.transform.SetSiblingIndex(100);
                    }
                }
            }
            else
            {
                if (item.isVisable)
                {
                    item.isVisable = false;
                    if (item.item != null)
                    {
                        item.item.gameObject.SetActive(false);
                        item.item = null;
                    }
                }
            }
        }
    }
Esempio n. 3
0
 public void ShowInteractionRangeTilesAt(ItemRect useRect)
 {
     HideInteractionRangeTiles();
     for (int x = useRect.position.x; x < useRect.position.x + useRect.width && x < slots.GetLength(0); x++)
     {
         for (int y = useRect.position.y; y < useRect.position.y + useRect.height && y < slots.GetLength(1); y++)
         {
             var interactionRangeTile = SimplePool.Spawn(interactionRangeTilePrefab, new Vector3Int(x, y, 0), Quaternion.identity);
             currentInteractionRangeTiles.Add(interactionRangeTile);
         }
     }
 }
Esempio n. 4
0
    public void SetData(List <SubListData> datas)
    {
        if (datas == null)
        {
            return;
        }

        itemPool.resetAllTarget();
        namePool.resetAllTarget();
        displayRect.x = 0;
        displayRect.y = 0;
        itemDatas     = new List <ItemRect>();

        float y = 0;

        for (int i = 0; i < datas.Count; i++)
        {
            SubListData subList = datas[i];
            if (!string.IsNullOrEmpty(subList.name))
            {
                ItemRect nameItem = new ItemRect();
                nameItem.rect      = new Rect(0, y, listNameTemplate.rect.width, listNameTemplate.rect.height);
                nameItem.data      = subList.name;
                nameItem.isVisable = false;
                nameItem.type      = ItemRect.Type.Name;
                itemDatas.Add(nameItem);
                y -= listNameTemplate.rect.height + spacing;
            }

            for (int j = 0; j < subList.list.Count; j++)
            {
                ItemRect item = new ItemRect();
                item.rect      = new Rect(0, y, itemTemplate.rect.width, itemTemplate.rect.height);
                item.data      = subList.list[j];
                item.type      = ItemRect.Type.Item;
                item.isVisable = false;
                itemDatas.Add(item);
                y -= itemTemplate.rect.height + spacing;
            }
        }

        scrollRect.vertical   = true;
        scrollRect.horizontal = false;
        content.anchorMin     = new Vector2(0, 1);
        content.anchorMax     = new Vector2(1, 1);
        content.sizeDelta     = new Vector2(0, -y);
        scrollRect.verticalNormalizedPosition = 1;
    }
Esempio n. 5
0
    private ItemRect GetNearestItem()
    {
        if (itemDatas == null || itemDatas.Count == 0)
        {
            return(null);
        }

        Vector2 target = center.anchoredPosition;
        int     head   = 0;
        int     end    = itemDatas.Count - 1;

        Vector2 half = direction == Direction.Horizontal ? new Vector2(itemDatas[head].rect.width / 2, 0) : new Vector2(0, -itemDatas[head].rect.height / 2);

        while (head != end)
        {
            float q = (displayRect.position + target).sqrMagnitude;
            if (end - head == 1)
            {
                float a = q - (itemDatas[head].rect.position + half).sqrMagnitude;
                float b = (itemDatas[end].rect.position + half).sqrMagnitude - q;

                if (a > b)
                {
                    head = end;
                }
                else
                {
                    end = head;
                }
            }
            else
            {
                int      index = Mathf.RoundToInt((end - head) / 2) + head;
                ItemRect item  = itemDatas[index];
                if ((item.rect.position + half).sqrMagnitude < q)
                {
                    head = index;
                }
                else
                {
                    end = index;
                }
            }
            //Debug.Log(string.Format("head:{0}  end:{1}",head,end));
        }
        return(itemDatas[head]);
    }
Esempio n. 6
0
    public void SetData(IList datas)
    {
        itemPool.resetAllTarget();

        if (datas == null)
        {
            return;
        }

        displayRect.x = 0;
        displayRect.y = 0;
        itemDatas     = new List <ItemRect>();
        Vector2 offset = Vector2.zero;

        for (int i = 0; i < datas.Count; i++)
        {
            if (direction == Direction.Vertical)
            {
                offset = new Vector2(i % col, i / col);
            }
            else
            {
                offset = new Vector2(i / row, i % row);
            }


            ItemRect item = new ItemRect();
            item.rect      = new Rect(offset.x * (itemTemplate.rect.width + spacing.x) + spacing.x, -offset.y * (itemTemplate.rect.height + spacing.y) - spacing.y, itemTemplate.rect.width, itemTemplate.rect.height);
            item.data      = datas[i];
            item.isVisable = false;
            itemDatas.Add(item);
        }


        content.sizeDelta = new Vector2((offset.x + 1) * (itemTemplate.rect.width + spacing.x), (offset.y + 1) * (itemTemplate.rect.height + spacing.y));
        if (direction == Direction.Vertical)
        {
            scrollRect.verticalNormalizedPosition = 1;
        }
        else
        {
            scrollRect.horizontalNormalizedPosition = 1;
        }
        updateItems();
    }
Esempio n. 7
0
    private void updateItems()
    {
        if (itemDatas == null)
        {
            return;
        }

        Rect rect = displayRect;

        for (int i = 0; i < itemDatas.Count; i++)
        {
            ItemRect item = itemDatas[i];
            if (isIntersect(item.rect, rect))
            {
                if (!item.isVisable)
                {
                    if (item.type == ItemRect.Type.Name)
                    {
                        item.item = namePool.getIdleTarget <BaseItemView>();
                    }
                    else
                    {
                        item.item = itemPool.getIdleTarget <BaseItemView>();
                    }
                    item.isVisable = true;
                    (item.item.transform as RectTransform).anchoredPosition = new Vector2(item.rect.x, item.rect.y);
                    item.item.SetData(item.data);
                }
            }
            else
            {
                if (item.isVisable)
                {
                    item.isVisable = false;
                    if (item.item != null)
                    {
                        item.item.gameObject.SetActive(false);
                        item.item = null;
                    }
                }
            }
        }
    }
Esempio n. 8
0
    public List <T> AtRect <T>(ItemRect itemRect) where T : EntityBase
    {
        List <T> foundEntities = new List <T>();

        for (int x = itemRect.position.x; x < itemRect.position.x + itemRect.width && x < slots.GetLength(0); x++)
        {
            for (int y = itemRect.position.y; y < itemRect.position.y + itemRect.height && y < slots.GetLength(1); y++)
            {
                T slotEntity = slots[x, y] as T;

                if (slotEntity != null && foundEntities.Contains(slotEntity) == false)
                {
                    foundEntities.Add(slotEntity);
                }
            }
        }

        return(foundEntities);
    }
Esempio n. 9
0
    public void SetData(IList datas)
    {
        itemPool.resetAllTarget();
        if (datas == null || datas.Count == 0)
        {
            itemDatas = new List <ItemRect>();
            return;
        }


        Vector2 offset = Vector2.zero;

        //加开头空余空间
        offset    = new Vector2(center.anchoredPosition.x - itemTemplate.rect.width / 2, center.anchoredPosition.y + itemTemplate.rect.height / 2);
        itemDatas = new List <ItemRect>();
        for (int j = 0; j < datas.Count; j++)
        {
            ItemRect item = new ItemRect();
            item.rect      = direction == Direction.Horizontal ? new Rect(offset.x, 0, itemTemplate.rect.width, itemTemplate.rect.height) : new Rect(0, offset.y, itemTemplate.rect.width, itemTemplate.rect.height);
            item.data      = datas[j];
            item.isVisable = false;
            itemDatas.Add(item);
            offset += new Vector2(itemTemplate.rect.width + spacing, -(itemTemplate.rect.height + spacing));
        }
        //加末尾空余空间
        offset += new Vector2((center.parent as RectTransform).rect.width - center.anchoredPosition.x - itemTemplate.rect.width / 2, -((center.parent as RectTransform).rect.height + center.anchoredPosition.y - itemTemplate.rect.height / 2));

        content.sizeDelta = direction == Direction.Horizontal?new Vector2(offset.x, itemTemplate.rect.height) :new Vector2(itemTemplate.rect.width, -offset.y);

        //content.anchoredPosition = Vector2.zero;

        updateItems();
        if (_curItem == null)
        {
            curItem = itemDatas[0];
        }
        else
        {
            curItem = _curItem;
        }
    }
Esempio n. 10
0
    private void updateItems()
    {
        if (itemDatas == null)
        {
            return;
        }

        Rect rect = displayRect;

        for (int i = 0; i < itemDatas.Count; i++)
        {
            ItemRect item = itemDatas[i];
            if (isIntersect(item.rect, rect))
            {
                if (!item.isVisable)
                {
                    item.item      = itemPool.getIdleTarget <BaseItemView>();
                    item.isVisable = true;
                    (item.item.transform as RectTransform).pivot            = new Vector2(0, 1);
                    (item.item.transform as RectTransform).anchoredPosition = item.rect.position;
                    GameUtils.SetPivot(item.item.transform as RectTransform, new Vector2(0.5f, 0.5f));
                    item.item.SetData(item.data);
                }
            }
            else
            {
                if (item.isVisable)
                {
                    item.isVisable = false;
                    if (item.item != null)
                    {
                        item.item.gameObject.SetActive(false);
                        item.item = null;
                    }
                }
            }
        }
    }
Esempio n. 11
0
    private void OnDragEndHandle(BaseEventData e)
    {
        ItemRect item = GetNearestItem();

        curItem = item;
    }
Esempio n. 12
0
    public void setDatas(IList datas)
    {
        itemPool.resetAllTarget();
        if (datas == null)
        {
            return;
        }

        displayRect.x = 0;
        displayRect.y = 0;
        itemDatas     = new List <ItemRect>();
        if (direction == Direction.Horizontal)
        {
            for (int i = 0; i < datas.Count; i++)
            {
                ItemRect item = new ItemRect();
                float    x    = i / row;
                float    y    = i % row;

                Debug.Log(x.ToString() + "|" + y.ToString());

                item.rect      = new Rect(x * (itemTemplate.rect.width + spacing) + spacing, -y * (itemTemplate.rect.height + spacing), itemTemplate.rect.width, itemTemplate.rect.height);
                item.data      = datas[i];
                item.isVisable = false;
                itemDatas.Add(item);
            }
            scrollRect.horizontal = true;
            scrollRect.vertical   = false;
            allPage                  = itemDatas.Count / (row * col) + 1;
            content.anchorMin        = new Vector2(0, 0);
            content.anchorMax        = new Vector2(0, 1);
            content.anchoredPosition = new Vector2(0, 0);
            content.sizeDelta        = new Vector2(allPage * displayRect.width, 0);
            scrollRect.horizontalNormalizedPosition = 0;
        }
        else
        {
            for (int i = 0; i < datas.Count; i++)
            {
                ItemRect item = new ItemRect();
                float    x    = i % col;
                float    y    = i / col;

                //Debug.Log(x.ToString() + "|" + y.ToString());

                item.rect      = new Rect(x * (itemTemplate.rect.width + spacing), -y * (itemTemplate.rect.height + spacing) - spacing, itemTemplate.rect.width, itemTemplate.rect.height);
                item.data      = datas[i];
                item.isVisable = false;
                itemDatas.Add(item);
            }

            scrollRect.vertical   = true;
            scrollRect.horizontal = false;
            allPage = itemDatas.Count / (row * col) + 1;
            ////content.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, content);
            content.anchorMin = new Vector2(0, 1);
            content.anchorMax = new Vector2(1, 1);
            //content.anchoredPosition = new Vector2(0,0);
            content.sizeDelta = new Vector2(0, allPage * displayRect.height);
            scrollRect.verticalNormalizedPosition = 1;
        }

        updateItems();
    }