use of org.terasology.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();
}
}
}
}
use of org.terasology.rendering.nui.UIScreenLayer in project Terasology by MovingBlocks.
the class NUIManagerInternal method invalidate.
@Override
public void invalidate() {
assetManager.getLoadedAssets(UIElement.class).forEach(UIElement::dispose);
boolean hudVisible = isHUDVisible();
if (hudVisible) {
setHUDVisible(false);
}
Deque<ResourceUrn> reverseUrns = new LinkedList<>();
Map<UIScreenLayer, ResourceUrn> inverseLookup = screenLookup.inverse();
for (UIScreenLayer screen : screens) {
screen.onClosed();
reverseUrns.addFirst(inverseLookup.get(screen));
}
screens.clear();
screenLookup.clear();
reverseUrns.forEach(this::pushScreen);
if (hudVisible) {
setHUDVisible(true);
}
}
use of org.terasology.rendering.nui.UIScreenLayer in project Terasology by MovingBlocks.
the class NUIManagerInternal method pushScreen.
@Override
public void pushScreen(UIScreenLayer screen) {
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);
}
}
use of org.terasology.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);
}
}
use of org.terasology.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()));
}
Aggregations