Esempio n. 1
0
        public override State OnReachedTarget()
        {
            GridActor[] actors = GridActorMap.GetGridActors(this.request.PositionToMoveTo);
            foreach (GridActor actor in actors)
            {
                if (actor.Guid.Equals(this.request.TargetGuid))
                {
                    logger.Log("Found my target GridActor, giving it my item");

                    InventoryComponent inventory = actor.GetComponent <InventoryComponent>();
                    if (inventory)
                    {
                        inventory.AddItem(item);
                        MoveItemRequestPool.Instance.FinishRequest(request);
                    }
                    else
                    {
                        MoveItemRequestPool.Instance.CancelRequest(request);
                        logger.Log("My target GridActor did not have an inventory", LogLevel.Error);
                    }
                    TerminateMachine();
                    return(StateMachine.NoTransition());
                }
            }
            logger.Log("Did not find my target GridActor at the target, dropping my item");
            DroppedItemManager.PutItem(this.request.PositionToMoveTo, item);
            return(OnPathFindFail());
        }
Esempio n. 2
0
    public static Item GetItem(Vector3Int pos, Type typeToFind)
    {
        GridActor[] actors = GridActorMap.GetGridActors(pos);
        foreach (GridActor actor in actors)
        {
            InventoryComponent comp = actor.GetComponent <InventoryComponent>();
            if (comp && comp.HasItem(typeToFind))
            {
                return(comp.GetItem(typeToFind));
            }
        }

        return(null);
    }
Esempio n. 3
0
    public static void PutItem(Vector3Int pos, Item itemToAdd)
    {
        if (itemToAdd == null)
        {
            return;
        }
        Debug.Log("GridMap, Adding item to " + pos);
        GridActor[]          actors   = GridActorMap.GetGridActors(pos);
        DroppedItemComponent itemCont = null;

        foreach (GridActor actor in actors)
        {
            DroppedItemComponent tmpCont = actor.GetComponent <DroppedItemComponent>();
            if (tmpCont != null)
            {
                itemCont = tmpCont;
                break;
            }
        }
        if (itemCont == null)
        {
            itemCont = DroppedItemComponent.InstantiateNew(pos);

            Debug.Log("GridMap, Spawned new DroppedItemComponent");
        }

        InventoryComponent inv = itemCont.gameObject.GetComponent <InventoryComponent>();

        if (inv)
        {
            inv.AddItem(itemToAdd);
        }
        else
        {
            Debug.LogWarning("GridMap, No inventory to drop item in");
        }
    }