Exemple #1
0
        public override void ItemBackToRootSlot()
        {
            Container   from  = overSeer.from.container;
            Item2DModel model = overSeer.rootModel;
            Item        item  = model.referenceItem;

            List <InventorySlot> slots = from.slotsList;

            for (int i = 0; i < slots.Count; i++)
            {
                slots[i].AssignItem(item);
            }

            RectTransform rect = slots[0].GetComponent <RectTransform>();

            model.transform.SetParent(from.grid.dragParent);
            model.transform.position = rect.TransformPoint(rect.rect.center);

            grid.RecalculateCellPosition(model.transform as RectTransform, from.size);

            overSeer.isDrag = false;

            from.AddCurrentItem(item);

            overSeer.isDrag = false;
            (overSeer.from.container as StorageContainer).ReloadHightLight();
        }
        public virtual void DeleteModel(Item item)
        {
            Item2DModel model = FindModelByItem(item);

            RemoveModelItem(model);
            Help.HelpFunctions.TransformSeer.DestroyObject(model.gameObject);
        }
Exemple #3
0
        public override void ItemBackToRootSlot()
        {
            Container   from  = overSeer.from.container;
            Item2DModel model = overSeer.rootModel;
            Item        item  = model.referenceItem;

            from.AddItemOnPosition(item, overSeer.rootSlot);

            from.AddCurrentItem(item);

            overSeer.isDrag = false;
            (overSeer.from.container as StorageContainer).ReloadHightLight();
        }
        protected Item2DModel FindModelByItem(Item item)
        {
            Item2DModel model = null;

            for (int i = 0; i < currentModels.Count; i++)
            {
                if (currentModels[i].reference == item.GetId())
                {
                    model = currentModels[i];
                    break;
                }
            }
            return(model);
        }
        protected int AddItemXY(Item item, Vector2 size, bool enableModel, bool interactModel)
        {
            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    InventorySlot slot = slotsArray[x, y];

                    List <InventorySlot> neighbors = TakeSlotsForLanding(slot, size);

                    if (neighbors.Count > 0)
                    {
                        for (int i = 0; i < neighbors.Count; i++)  //добавление

                        {
                            neighbors[i].HighlightColor = view.baseColor;
                            neighbors[i].AssignItem(item);

                            if (i == 0)
                            {
                                Item2DModel newModel = grid.CreateModelByItem(item);
                                AddModelItem(newModel);

                                if (enableModel)
                                {
                                    newModel.ShowModel();
                                }
                                else
                                {
                                    newModel.HideModel();
                                }

                                newModel.Interactable(interactModel);

                                overSeer.buffer = newModel.transform as RectTransform;

                                AddItemOnPosition(item, neighbors[i], false);
                                grid.RecalculateCellProportion(overSeer.buffer, size);
                            }
                        }
                        neighbors.Clear();

                        AddCurrentItem(item);
                        return(1);
                    }
                }
            }
            return(0);
        }
Exemple #6
0
        protected override void OnDrop(PointerEventData eventData)
        {
            if (!overSeer.isDrag)
            {
                return;
            }
            Inventory   whereNow = overSeer.whereNow;
            Inventory   from     = overSeer.from;
            Item2DModel model    = overSeer.rootModel;
            Item        item     = model.referenceItem;

            if (!whereNow.IsEmpty)  //если занято, нельзя дропнуть
            {
                from.container.ItemBackToRootSlot();
                return;
            }

            List <StorageTypes> storageTypes = whereNow.storageTypes;

            if (storageTypes.Count == 0)
            {
                ItemPlaceOnSlotSolid(from.container, whereNow.container, item, model);
                return;
            }
            else
            {
                for (int i = 0; i < storageTypes.Count; i++)
                {
                    if (item.CompareType(storageTypes[i].ToString()))  //смогли найти место для дропа
                    {
                        ItemPlaceOnSlotSolid(from.container, whereNow.container, item, model);
                        inventory.onItemDrop?.Invoke(item, inventory);
                        return;
                    }
                }
                from.container.ItemBackToRootSlot();
                return;
            }
        }
Exemple #7
0
        /// <summary>
        /// Добавляет айтем на все слоты в контейнер.
        /// </summary>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <param name="item"></param>
        /// <param name="model"></param>
        /// <param name="recalculatePos"></param>
        private void ItemPlaceOnSlotSolid(Container from, Container to, Item item, Item2DModel model, bool recalculatePos = true)
        {
            List <InventorySlot> slots = to.slotsList;

            for (int i = 0; i < slots.Count; i++)
            {
                slots[i].AssignItem(item);
            }
            to.AddCurrentItem(item);

            from.RemoveModelItem(model);

            /*if (recalculatePos) {
             *  grid.ResetCell(model.transform as RectTransform, slots[0].position);
             *  grid.RecalculateCellProportion(model.transform as RectTransform, size);
             *
             *  grid.RecalculateCellPosition(model.transform as RectTransform, size);
             * }*/

            grid.ResetCell(model.transform as RectTransform, slots[0].position);
            grid.RecalculateCellProportion(model.transform as RectTransform, to.size);

            RectTransform rect = slots[0].GetComponent <RectTransform>();

            model.transform.SetParent(to.grid.dragParent);
            model.transform.position = rect.TransformPoint(rect.rect.center);
            grid.RecalculateCellPosition(model.transform as RectTransform, to.size);

            to.AddModelItem(model);



            overSeer.isDrag = false;

            ReloadHightLight();
        }
        /// <summary>
        /// Создаёт объект для просмотра предмета, его картинку.
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public Item2DModel CreateModelByItem(Item item)
        {
            GameObject obj = Instantiate(modelPrefab);

            obj.name = item.name;

            Item2DModel model = obj.GetComponent <Item2DModel>();

            model.Icon.sprite         = item.itemIcon;
            model.Icon.preserveAspect = true;
            model.Hightlight.gameObject.SetActive(false);
            model.referenceItem = item;

            RectTransform rect = obj.transform as RectTransform;

            rect.SetParent(dragParent);


            rect.sizeDelta  = cellSize;
            rect.localScale = Vector3.one;
            rect.rotation   = Quaternion.Euler(item.IconOrientation.x, item.IconOrientation.y, item.IconOrientation.z);

            return(model);
        }
        /// <summary>
        /// Дропает айтем на определёную позицию в определённом контейнере.
        /// </summary>
        /// <param name="from">откуда взяли</param>
        /// <param name="to">куда положили</param>
        /// <param name="item"></param>
        /// <param name="model"></param>
        protected virtual void ItemPlaceOnSlot(Container from, Container to, Item item, Item2DModel model)
        {
            grid.ResetCell(overSeer.buffer, overSeer.lastSlot.position);
            grid.RecalculateCellProportion(overSeer.buffer, item.GetSize());

            to.AddItemOnPosition(item, overSeer.lastSlot);

            to.AddCurrentItem(item);

            overSeer.from.container.RemoveModelItem(model);
            model.transform.SetParent(to.grid.dragParent);
            to.AddModelItem(model);

            overSeer.isDrag = false;
        }
Exemple #10
0
 public void RemoveModelItem(Item2DModel model)
 {
     currentModels.Remove(model);
 }
Exemple #11
0
 public void AddModelItem(Item2DModel model)
 {
     currentModels.Add(model);
 }
Exemple #12
0
 protected override void ItemPlaceOnSlot(Container from, Container to, Item item, Item2DModel model)
 {
     base.ItemPlaceOnSlot(from, to, item, model);
     ReloadHightLight();
 }