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()); }
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); }
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"); } }