private static IActorTask TakeAllFromContainerTask(IActor actor, IStaticObject container)
        {
            var inventoryTransfer = new PropTransfer(actor.Person.GetModule <IInventoryModule>(),
                                                     container.GetModule <IPropContainer>().Content.CalcActualItems(),
                                                     System.Array.Empty <IProp>());

            var containerTransfer = new PropTransfer(container.GetModule <IPropContainer>().Content,
                                                     System.Array.Empty <IProp>(),
                                                     container.GetModule <IPropContainer>().Content.CalcActualItems());

            return(new TransferPropsTask(actor, new[] { inventoryTransfer, containerTransfer }));
        }
        protected override void ExecuteTacticCommand()
        {
            var inventoryTransfer = new PropTransfer(TransferMachine.Inventory.PropStore,
                                                     TransferMachine.Inventory.PropAdded,
                                                     TransferMachine.Inventory.PropRemoved);

            var containerTransfer = new PropTransfer(TransferMachine.Container.PropStore,
                                                     TransferMachine.Container.PropAdded,
                                                     TransferMachine.Container.PropRemoved);

            var intention = new Intention <TransferPropsTask>(a => new TransferPropsTask(a, new[] { inventoryTransfer, containerTransfer }));

            PlayerState.TaskSource.Intent(intention);
        }
Exemple #3
0
        protected override void ExecuteTacticCommand()
        {
            var inventoryTransfer = new PropTransfer(TransferMachine.Inventory.PropStore,
                                                     TransferMachine.Inventory.PropAdded,
                                                     TransferMachine.Inventory.PropRemoved);

            var containerTransfer = new PropTransfer(TransferMachine.Container.PropStore,
                                                     TransferMachine.Container.PropAdded,
                                                     TransferMachine.Container.PropRemoved);

            var taskContext = new ActorTaskContext(_player.SectorNode.Sector);

            var intention = new Intention <TransferPropsTask>(actor =>
                                                              new TransferPropsTask(actor, taskContext, new[] { inventoryTransfer, containerTransfer }));

            PlayerState.TaskSource.Intent(intention, PlayerState.ActiveActor.Actor);
        }
        protected override void ExecuteTacticCommand()
        {
            if (TransferMachine is null)
            {
                throw new InvalidOperationException();
            }

            var sector = _player.SectorNode.Sector;

            if (sector is null)
            {
                throw new InvalidOperationException();
            }

            var inventoryTransfer = new PropTransfer(TransferMachine.Inventory.PropStore,
                                                     TransferMachine.Inventory.PropAdded,
                                                     TransferMachine.Inventory.PropRemoved);

            var containerTransfer = new PropTransfer(TransferMachine.Container.PropStore,
                                                     TransferMachine.Container.PropAdded,
                                                     TransferMachine.Container.PropRemoved);

            var taskContext = new ActorTaskContext(sector);

            var intention = new Intention <TransferPropsTask>(actor =>
                                                              new TransferPropsTask(actor, taskContext, new[] { inventoryTransfer, containerTransfer }));
            var actor = PlayerState.ActiveActor?.Actor;

            if (actor is null)
            {
                throw new InvalidOperationException();
            }

            var taskSource = PlayerState.TaskSource;

            if (taskSource is null)
            {
                throw new InvalidOperationException();
            }

            taskSource.Intent(intention, actor);
        }