Пример #1
0
        private void OnParentingRequestEvent(ParentingRequest parentingRequest)
        {
            var entityTo = parentingRequest.EntityTo;
            var mover    = parentingRequest.Mover;

            if (entityTo != null && !entityTo.HasState <InventoryState>())
            {
                Debug.LogError("Target exists but does not have an inventory.");
            }

            if (mover != null && (entityTo == null || entityTo.GetState <InventoryState>().Child == null))
            {
                var moverHierarchy = mover.GetState <InventoryState>();

                if (mover.GetState <InventoryState>().Parent != null)
                {
                    var fromInventoryState = mover.GetState <InventoryState>().Parent.GetState <InventoryState>();
                    fromInventoryState.RemoveChild();
                }

                if (entityTo != null)
                {
                    entityTo.GetState <InventoryState>().SetChild(mover);
                }

                moverHierarchy.SetParent(entityTo);

                EventSystem.ParentingRequestSucceeded.Invoke(parentingRequest);
            }
        }
Пример #2
0
        private void OnInventoryEvent(ParentingRequest parentingRequest)
        {
            if (parentingRequest.EntityTo != null)
            {
                if (parentingRequest.EntityTo.HasState <VisibleSlotState>())
                {
                    MoveChildIntoVisibleSlot(parentingRequest.EntityTo, parentingRequest.Mover.GameObject);
                }
                else
                {
                    MoveChildOutOfView(parentingRequest.Mover.GameObject);
                }
            }

            if (parentingRequest.EntityTo == null)
            {
                parentingRequest.Mover.GameObject.transform.parent = entitiesRootTransform;
            }
        }