Пример #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());
        }
Пример #2
0
 public override State OnPathFindFail()
 {
     logger.Log("MoveItemJob, WalkToTargetState, OnPathFindFail " + GetFailReason().ToString());
     logger.Log("Dropping my item");
     TerminateMachine();
     DroppedItemManager.PutItem(actor.Position, item);
     MoveItemRequestPool.Instance.ReturnRequest(request);
     return(StateMachine.NoTransition());
 }