Search in sources :

Example 1 with UIScreenLayer

use of org.terasology.engine.rendering.nui.UIScreenLayer in project Terasology by MovingBlocks.

the class NUIManagerInternal method update.

@Override
public void update(float delta) {
    canvas.processMousePosition(mouse.getPosition());
    // modifying a collection while iterating of it is typically not supported
    for (UIScreenLayer screen : new ArrayList<>(screens)) {
        screen.update(delta);
    }
    for (ControlWidget widget : overlays.values()) {
        widget.update(delta);
    }
    InputSystem inputSystem = context.get(InputSystem.class);
    inputSystem.getMouseDevice().setGrabbed(inputSystem.isCapturingMouse() && !(this.isReleasingMouse()));
}
Also used : ControlWidget(org.terasology.nui.ControlWidget) ArrayList(java.util.ArrayList) InputSystem(org.terasology.engine.input.InputSystem) UIScreenLayer(org.terasology.engine.rendering.nui.UIScreenLayer)

Example 2 with UIScreenLayer

use of org.terasology.engine.rendering.nui.UIScreenLayer in project Terasology by MovingBlocks.

the class NUIManagerInternal method pushScreen.

@Override
public void pushScreen(UIScreenLayer screen) {
    TabbingManager.setInitialized(false);
    if (!screen.isLowerLayerVisible()) {
        UIScreenLayer current = screens.peek();
        if (current != null) {
            current.onHide();
        }
    }
    screens.push(screen);
    screen.onOpened();
    String id = screen.getId();
    if (ResourceUrn.isValid(id)) {
        ResourceUrn uri = new ResourceUrn(id);
        screenLookup.put(uri, screen);
    }
}
Also used : UIScreenLayer(org.terasology.engine.rendering.nui.UIScreenLayer) ResourceUrn(org.terasology.gestalt.assets.ResourceUrn)

Example 3 with UIScreenLayer

use of org.terasology.engine.rendering.nui.UIScreenLayer in project Terasology by MovingBlocks.

the class NUIManagerInternal method closeScreen.

private void closeScreen(ResourceUrn screenUri, boolean sendEvents) {
    UIScreenLayer screen = screenLookup.remove(screenUri);
    if (screen != null) {
        screens.remove(screen);
        onCloseScreen(screen, screenUri, sendEvents);
    }
}
Also used : UIScreenLayer(org.terasology.engine.rendering.nui.UIScreenLayer)

Example 4 with UIScreenLayer

use of org.terasology.engine.rendering.nui.UIScreenLayer in project Terasology by MovingBlocks.

the class NUIManagerInternal method render.

@Override
public void render() {
    canvas.preRender();
    Deque<UIScreenLayer> screensToRender = Queues.newArrayDeque();
    for (UIScreenLayer layer : screens) {
        screensToRender.push(layer);
        if (!layer.isLowerLayerVisible()) {
            break;
        }
    }
    for (UIScreenLayer screen : screensToRender) {
        canvas.drawWidget(screen, canvas.getRegion());
    }
    for (ControlWidget overlay : overlays.values()) {
        canvas.drawWidget(overlay);
    }
    canvas.postRender();
}
Also used : ControlWidget(org.terasology.nui.ControlWidget) UIScreenLayer(org.terasology.engine.rendering.nui.UIScreenLayer)

Example 5 with UIScreenLayer

use of org.terasology.engine.rendering.nui.UIScreenLayer in project Terasology by MovingBlocks.

the class NUIManagerInternal method popScreen.

@Override
public void popScreen() {
    if (!screens.isEmpty()) {
        UIScreenLayer top = screens.peek();
        closeScreen(top);
        if (!top.isLowerLayerVisible()) {
            UIScreenLayer current = screens.peek();
            if (current != null) {
                current.onShow();
            }
        }
    }
}
Also used : UIScreenLayer(org.terasology.engine.rendering.nui.UIScreenLayer)

Aggregations

UIScreenLayer (org.terasology.engine.rendering.nui.UIScreenLayer)6 ResourceUrn (org.terasology.gestalt.assets.ResourceUrn)2 ControlWidget (org.terasology.nui.ControlWidget)2 ArrayList (java.util.ArrayList)1 LinkedList (java.util.LinkedList)1 InputSystem (org.terasology.engine.input.InputSystem)1 UIElement (org.terasology.nui.asset.UIElement)1