Skip to content

Commit aec00c2

Browse files
committed
fix(GameMenu): fix the UI cursor not showing in the game menu
1 parent 113fab4 commit aec00c2

File tree

3 files changed

+30
-30
lines changed

3 files changed

+30
-30
lines changed

engine/src/main/java/org/destinationsol/ui/nui/NUIManager.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
import org.terasology.nui.events.NUIMouseButtonEvent;
5454
import org.terasology.nui.events.NUIMouseWheelEvent;
5555
import org.terasology.nui.skin.UISkin;
56-
import org.terasology.nui.util.RectUtility;
5756
import org.terasology.nui.widgets.UIButton;
5857
import org.terasology.nui.widgets.UIText;
5958

@@ -226,9 +225,13 @@ public void update(SolApplication solApplication) {
226225
for (MouseAction action : mouse.getInputQueue()) {
227226
if (action.getInput().getType() == InputType.MOUSE_BUTTON) {
228227
if (action.getState().isDown()) {
229-
canvas.processMouseClick((MouseInput) action.getInput(), action.getMousePosition(), action.getPointer());
228+
if (canvas.processMouseClick((MouseInput) action.getInput(), action.getMousePosition(), action.getPointer())) {
229+
continue;
230+
}
230231
} else {
231-
canvas.processMouseRelease((MouseInput) action.getInput(), action.getMousePosition(), action.getPointer());
232+
if (canvas.processMouseRelease((MouseInput) action.getInput(), action.getMousePosition(), action.getPointer())) {
233+
continue;
234+
}
232235
}
233236

234237
NUIMouseButtonEvent event = new NUIMouseButtonEvent((MouseInput) action.getInput(), action.getState(), action.getMousePosition());
@@ -433,10 +436,9 @@ public void setContext(Context context) {
433436
* @return true, if the mouse is currently over an interactive UI element, otherwise false
434437
*/
435438
public boolean isMouseOnUi() {
436-
// TODO: Find better way of doing this.
437439
Vector2i mousePosition = mouse.getPosition();
438440
for (Rectanglei interactionRegion : canvas.getInteractionRegions()) {
439-
if (!interactionRegion.equals(canvas.getRegion()) && interactionRegion.containsPoint(mousePosition)) {
441+
if (interactionRegion.containsPoint(mousePosition)) {
440442
return true;
441443
}
442444
}

engine/src/main/java/org/destinationsol/ui/nui/screens/InventoryScreen.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,14 @@ public void onAdded() {
176176
updateItemRows();
177177
}
178178

179+
/**
180+
* Returns the current {@link InventoryOperationsScreen operations screen} being applied to this screen.
181+
* @return the current operations screen
182+
*/
183+
public InventoryOperationsScreen getOperations() {
184+
return inventoryOperations;
185+
}
186+
179187
/**
180188
* Assigns the specified {@link InventoryOperationsScreen operations screen} to this screen.
181189
* @param operations the operations that can be performed

engine/src/main/java/org/destinationsol/ui/nui/screens/MainGameScreen.java

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,14 @@
2828
import org.destinationsol.game.ship.SolShip;
2929
import org.destinationsol.ui.SolInputManager;
3030
import org.destinationsol.ui.nui.NUIScreenLayer;
31-
import org.destinationsol.ui.nui.widgets.KeyActivatedButton;
3231
import org.destinationsol.ui.nui.widgets.UIWarnButton;
33-
import org.terasology.gestalt.assets.ResourceUrn;
3432
import org.terasology.input.ButtonState;
3533
import org.terasology.input.Keyboard;
3634
import org.terasology.nui.AbstractWidget;
37-
import org.terasology.nui.BaseInteractionListener;
38-
import org.terasology.nui.Canvas;
39-
import org.terasology.nui.InteractionListener;
4035
import org.terasology.nui.UIWidget;
41-
import org.terasology.nui.asset.UIElement;
4236
import org.terasology.nui.backends.libgdx.GDXInputUtil;
4337
import org.terasology.nui.events.NUIKeyEvent;
44-
import org.terasology.nui.events.NUIMouseClickEvent;
38+
import org.terasology.nui.events.NUIMouseButtonEvent;
4539

4640
import java.util.List;
4741

@@ -62,18 +56,6 @@ public class MainGameScreen extends NUIScreenLayer {
6256
@In
6357
private SolApplication solApplication;
6458

65-
private final InteractionListener interactionListener = new BaseInteractionListener() {
66-
@Override
67-
public boolean onMouseClick(NUIMouseClickEvent event) {
68-
NUIScreenLayer topScreen = nuiManager.getTopScreen();
69-
if (topScreen != MainGameScreen.this && !(topScreen instanceof UIShipControlsScreen)) {
70-
nuiManager.popScreen();
71-
return true;
72-
}
73-
return false;
74-
}
75-
};
76-
7759
@Override
7860
public void initialise() {
7961
consoleScreen = (ConsoleScreen) nuiManager.createScreen("engine:console");
@@ -174,12 +156,6 @@ public void update(float delta) {
174156
}
175157
}
176158

177-
@Override
178-
public void onDraw(Canvas canvas) {
179-
canvas.addInteractionRegion(interactionListener);
180-
super.onDraw(canvas);
181-
}
182-
183159
@Override
184160
protected boolean escapeCloses() {
185161
return false;
@@ -210,6 +186,18 @@ public boolean onKeyEvent(NUIKeyEvent event) {
210186
return super.onKeyEvent(event);
211187
}
212188

189+
@Override
190+
public void onMouseButtonEvent(NUIMouseButtonEvent event) {
191+
if (event.getState() == ButtonState.UP) {
192+
NUIScreenLayer topScreen = nuiManager.getTopScreen();
193+
if (!solApplication.getInputManager().isMouseOnUi() &&
194+
topScreen != MainGameScreen.this && !(topScreen instanceof UIShipControlsScreen)) {
195+
nuiManager.popScreen();
196+
event.consume();
197+
}
198+
}
199+
}
200+
213201
@Override
214202
public void onRemoved() {
215203
menuButton.unsubscribe(this::onMenuButtonClicked);
@@ -306,6 +294,8 @@ private void onMercsButtonClicked(UIWidget widget) {
306294
gameScreens.inventoryScreen.setOperations(gameScreens.inventoryScreen.getChooseMercenaryScreen());
307295
nuiManager.pushScreen(gameScreens.inventoryScreen);
308296
solApplication.getGame().getHero().getMercs().markAllAsSeen();
297+
} else {
298+
nuiManager.removeScreen(gameScreens.inventoryScreen);
309299
}
310300
}
311301
}

0 commit comments

Comments
 (0)