Search in sources :

Example 1 with AbstractMoveItemRequest

use of org.terasology.logic.inventory.events.AbstractMoveItemRequest in project Terasology by MovingBlocks.

the class InventoryClientSystem method inventoryChangeAcknowledge.

@ReceiveEvent(components = { InventoryComponent.class })
public void inventoryChangeAcknowledge(InventoryChangeAcknowledgedRequest event, EntityRef entity) {
    // TODO: This does not ever get triggered because the event is sent to the client,  not the character.
    // If it did get triggered,  it causes a mess of question mark items.
    AbstractMoveItemRequest removedRequest = pendingMoves.remove(event.getChangeId());
    if (removedRequest != null) {
        destroyClientTempEntities(removedRequest);
    }
    recalculatePredictedState();
}
Also used : AbstractMoveItemRequest(org.terasology.logic.inventory.events.AbstractMoveItemRequest) ReceiveEvent(org.terasology.entitySystem.event.ReceiveEvent)

Example 2 with AbstractMoveItemRequest

use of org.terasology.logic.inventory.events.AbstractMoveItemRequest in project Terasology by MovingBlocks.

the class InventoryClientSystem method recalculatePredictedState.

private void recalculatePredictedState() {
    for (AbstractMoveItemRequest request : pendingMoves.values()) {
        // pending request is acknowledged by the server
        if (request instanceof MoveItemRequest) {
            MoveItemRequest r = (MoveItemRequest) request;
            destroyClientTempEntities(r);
            Collection<EntityRef> newClientTempEntities = new HashSet<>();
            moveItemFillClientTempEntities(request.getFromInventory(), r.getInstigator(), r.getFromSlot(), r.getToInventory(), r.getToSlot(), newClientTempEntities);
            r.setClientSideTempEntities(newClientTempEntities);
        } else if (request instanceof MoveItemAmountRequest) {
            MoveItemAmountRequest r = (MoveItemAmountRequest) request;
            destroyClientTempEntities(r);
            Collection<EntityRef> newClientTempEntities = new HashSet<>();
            moveItemAmountFillClientTempEntities(r.getFromInventory(), r.getInstigator(), r.getFromSlot(), r.getToInventory(), r.getToSlot(), r.getAmount(), newClientTempEntities);
            r.setClientSideTempEntities(newClientTempEntities);
        } else if (request instanceof MoveItemToSlotsRequest) {
            MoveItemToSlotsRequest r = (MoveItemToSlotsRequest) request;
            destroyClientTempEntities(r);
            Collection<EntityRef> newClientTempEntities = new HashSet<>();
            moveItemToSlotsFillClientTempEntities(r.getInstigator(), r.getFromInventory(), r.getFromSlot(), r.getToInventory(), r.getToSlots(), newClientTempEntities);
            r.setClientSideTempEntities(newClientTempEntities);
        }
    }
}
Also used : AbstractMoveItemRequest(org.terasology.logic.inventory.events.AbstractMoveItemRequest) MoveItemRequest(org.terasology.logic.inventory.events.MoveItemRequest) MoveItemToSlotsRequest(org.terasology.logic.inventory.events.MoveItemToSlotsRequest) MoveItemAmountRequest(org.terasology.logic.inventory.events.MoveItemAmountRequest) AbstractMoveItemRequest(org.terasology.logic.inventory.events.AbstractMoveItemRequest) Collection(java.util.Collection) EntityRef(org.terasology.entitySystem.entity.EntityRef) HashSet(java.util.HashSet)

Aggregations

AbstractMoveItemRequest (org.terasology.logic.inventory.events.AbstractMoveItemRequest)2 Collection (java.util.Collection)1 HashSet (java.util.HashSet)1 EntityRef (org.terasology.entitySystem.entity.EntityRef)1 ReceiveEvent (org.terasology.entitySystem.event.ReceiveEvent)1 MoveItemAmountRequest (org.terasology.logic.inventory.events.MoveItemAmountRequest)1 MoveItemRequest (org.terasology.logic.inventory.events.MoveItemRequest)1 MoveItemToSlotsRequest (org.terasology.logic.inventory.events.MoveItemToSlotsRequest)1