package org.terasology.componentSystem.action; import org.terasology.components.InventoryComponent; import org.terasology.components.LocalPlayerComponent; import org.terasology.components.actions.AccessInventoryActionComponent; import org.terasology.entitySystem.EntityRef; import org.terasology.entitySystem.EventHandlerSystem; import org.terasology.entitySystem.ReceiveEvent; import org.terasology.entitySystem.RegisterComponentSystem; import org.terasology.events.ActivateEvent; import org.terasology.events.OpenInventoryEvent; import org.terasology.logic.manager.GUIManager; import org.terasology.rendering.gui.menus.UIContainerScreen; /** * @author Immortius <immortius@gmail.com> */ @RegisterComponentSystem(authorativeOnly = true) public class AccessInventoryAction implements EventHandlerSystem { private UIContainerScreen containerScreen; public void initialise() { containerScreen = GUIManager.getInstance().addWindow(new UIContainerScreen(), "container"); } @Override public void shutdown() { } @ReceiveEvent(components = {AccessInventoryActionComponent.class}) public void onActivate(ActivateEvent event, EntityRef entity) { event.getInstigator().send(new OpenInventoryEvent(entity)); } @ReceiveEvent(components = {LocalPlayerComponent.class, InventoryComponent.class}) public void onOpenContainer(OpenInventoryEvent event, EntityRef entity) { if (event.getContainer().hasComponent(InventoryComponent.class)) { containerScreen.openContainer(event.getContainer(), entity); GUIManager.getInstance().setFocusedWindow(containerScreen); } } }