private Vector2 GetSizeEntityOneSlot(ISlotRootComponent slot)
        {
            var slotSize        = GetSizeSlot(slot);
            var sizeEntityImage = slotSize * RatioSizeEntityToSlot;

            return(sizeEntityImage);
        }
        private void PlaceTransformInOneSlot(IEntityRootComponent entity, ISlotRootComponent slot)
        {
            // prepare entity
            SetSizeEntityOneSlot(entity, slot);
            entity.Transform.SetParent(slot.Transform);

            // place
            entity.Transform.localPosition = new Vector3();
        }
        /// <summary>
        /// Only for GridInventory
        /// </summary>
        public void PlaceEntityTransform(IEntityRootComponent entity, ISlotRootComponent slot)
        {
            var isAreaEntityForInventory = DatabaseReadOnly.IsAreaEntityForInventory(entity, slot.Data.DataInventory);

            if (isAreaEntityForInventory)
            {
                PlaceTransformInArea(entity, slot);
            }
            else
            {
                PlaceTransformInOneSlot(entity, slot);
            }
        }
 private Vector2 GetSizeEntityArea(DataEntity dataEntity, ISlotRootComponent slot)
 {
     if (dataEntity.DataInventory.TypeInventory == DataInventory.TypeInventoryEnum.FreeSlots)
     {
         return(GetSizeEntityOneSlot(slot));
     }
     else
     // grid TypeInventory
     {
         var sizeSlot   = GetSizeSlot(slot);
         var sizeResult = sizeSlot * dataEntity.Dimensions;
         return(sizeResult);
     }
 }
 private Vector2 GetSlotPosition(ISlotRootComponent slotLeftTop)
 {
     if (slotLeftTop.Data.DataInventory.TypeInventory == DataInventory.TypeInventoryEnum.FreeSlots)
     {
         return(slotLeftTop.Transform.localPosition);
     }
     else
     {
         var inventoryComponent = slotLeftTop.InventoryComponent;
         var gridLayoutGroup    = inventoryComponent.GridLayoutGroup;
         UpdateGrid(gridLayoutGroup);
         var gridRect = inventoryComponent.RectTransform;
         var slotRect = slotLeftTop.RectTransform;
         return(GetChildLocalPosition(gridRect, slotRect));
     }
 }
Beispiel #6
0
        private void Awake()
        {
            _debugMode = Debug.DebugMode;

            if (_debugMode)
            {
                _slotComponent = GetComponent <ISlotRootComponent>();
                var dataSlot = _slotComponent.Data;
                _outline = GetComponent <Outline>();

                var textRow = transform.Cast <Transform>().First(tr => tr.name == TextRow);
                textRow.GetComponent <Text>().text = dataSlot.Row.ToString();
                textRow.gameObject.SetActive(true);

                var textColumn = transform.Cast <Transform>().First(tr => tr.name == TextColumn);
                textColumn.GetComponent <Text>().text = dataSlot.Column.ToString();
                textColumn.gameObject.SetActive(true);
            }
        }
        private void PlaceTransformInArea(IEntityRootComponent entity, ISlotRootComponent slotLeftTop)
        {
            // prepare entity
            var entityTransform = entity.Transform;

            entity.RectTransform.sizeDelta = GetSizeEntityArea(entity.Data, slotLeftTop) * RatioSizeEntityToSlot;

            var canvasTransform = slotLeftTop.InventoryComponent.CanvasInventory.transform;

            entityTransform.SetParent(canvasTransform);
            entityTransform.SetAsLastSibling();

            // place
            var positionSlot = GetSlotPosition(slotLeftTop);

            var delta          = GetDeltaEntityAreaCenterToLeftTop(entity);
            var resultPosition = positionSlot - delta;

            entityTransform.localPosition = resultPosition;
        }
        private Vector2 GetSizeSlot(ISlotRootComponent slotLeftTop)
        {
            var inventoryComponent = slotLeftTop.InventoryComponent;
            var typeInventory      = slotLeftTop.Data.DataInventory.TypeInventory;

            switch (typeInventory)
            {
            case DataInventory.TypeInventoryEnum.Grid:
            case DataInventory.TypeInventoryEnum.GridSupportMultislotEntity:
            {
                System.Diagnostics.Debug.Assert(inventoryComponent.GridLayoutGroup != null, "inventoryComponent.GridLayoutGroup != null");
                return(inventoryComponent.GridLayoutGroup.cellSize);
            }

            case DataInventory.TypeInventoryEnum.FreeSlots:
                var slotSize = slotLeftTop.RectTransform.sizeDelta;
                return(slotSize);

            default:
                throw new Exception();
            }
        }
 private void Awake()
 {
     SlotComponent = GetComponent <ISlotRootComponent>();
 }
        private void SetSizeEntityOneSlot(IEntityRootComponent entity, ISlotRootComponent slot)
        {
            var sizeEntityImage = GetSizeEntityOneSlot(slot);

            entity.RectTransform.sizeDelta = sizeEntityImage;
        }
 public bool TryGetSlotComponent(DataSlot dataSlot, out ISlotRootComponent componentResult) =>
 _bindSlots.TryGetComponent(dataSlot, out componentResult);