diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java
index b54bead932f38f903a7f829cf88b5c1a60d73088..e96f3af48e3936fb31ccb99ecfac36a8b67d6774 100644 (file)
import ru.deadsoftware.cavedroid.game.mobs.Player;
import ru.deadsoftware.cavedroid.game.objects.TouchButton;
import ru.deadsoftware.cavedroid.game.render.IGameRenderer;
import ru.deadsoftware.cavedroid.game.mobs.Player;
import ru.deadsoftware.cavedroid.game.objects.TouchButton;
import ru.deadsoftware.cavedroid.game.render.IGameRenderer;
+import ru.deadsoftware.cavedroid.game.windows.GameWindowsManager;
import ru.deadsoftware.cavedroid.misc.Assets;
import ru.deadsoftware.cavedroid.misc.Renderer;
import ru.deadsoftware.cavedroid.misc.Assets;
import ru.deadsoftware.cavedroid.misc.Renderer;
@GameScope
public class GameRenderer extends Renderer {
@GameScope
public class GameRenderer extends Renderer {
+ private static final TouchButton nullButton = new TouchButton(null, -1, true);
+
private final MainConfig mMainConfig;
private final MobsController mMobsController;
private final List<IGameRenderer> mRenderers;
private final MainConfig mMainConfig;
private final MobsController mMobsController;
private final List<IGameRenderer> mRenderers;
private final KeyboardInputActionMapper mKeyboardInputActionMapper;
private final Set<IGameInputHandler<MouseInputAction>> mMouseInputHandlers;
private final Set<IGameInputHandler<KeyboardInputAction>> mKeyboardInputHandlers;
private final KeyboardInputActionMapper mKeyboardInputActionMapper;
private final Set<IGameInputHandler<MouseInputAction>> mMouseInputHandlers;
private final Set<IGameInputHandler<KeyboardInputAction>> mKeyboardInputHandlers;
+ private final GameWindowsManager mGameWindowsManager;
@Inject
GameRenderer(MainConfig mainConfig,
@Inject
GameRenderer(MainConfig mainConfig,
MouseInputActionMapper mouseInputActionMapper,
KeyboardInputActionMapper keyboardInputActionMapper,
Set<IGameInputHandler<MouseInputAction>> mouseInputHandlers,
MouseInputActionMapper mouseInputActionMapper,
KeyboardInputActionMapper keyboardInputActionMapper,
Set<IGameInputHandler<MouseInputAction>> mouseInputHandlers,
- Set<IGameInputHandler<KeyboardInputAction>> keyboardInputHandlers) {
+ Set<IGameInputHandler<KeyboardInputAction>> keyboardInputHandlers,
+ GameWindowsManager gameWindowsManager) {
super(mainConfig.getWidth(), mainConfig.getHeight());
mMainConfig = mainConfig;
super(mainConfig.getWidth(), mainConfig.getHeight());
mMainConfig = mainConfig;
mKeyboardInputActionMapper = keyboardInputActionMapper;
mMouseInputHandlers = mouseInputHandlers;
mKeyboardInputHandlers = keyboardInputHandlers;
mKeyboardInputActionMapper = keyboardInputActionMapper;
mMouseInputHandlers = mouseInputHandlers;
mKeyboardInputHandlers = keyboardInputHandlers;
+ mGameWindowsManager = gameWindowsManager;
Gdx.gl.glClearColor(0f, .6f, .6f, 1f);
}
Gdx.gl.glClearColor(0f, .6f, .6f, 1f);
}
+ private float mTouchDownX, mTouchDownY;
+
private void updateCameraPosition() {
Player player = mMobsController.getPlayer();
setCamPos(player.getX() + player.getWidth() / 2 - getWidth() / 2,
private void updateCameraPosition() {
Player player = mMobsController.getPlayer();
setCamPos(player.getX() + player.getWidth() / 2 - getWidth() / 2,
float touchY = transformScreenY(screenY);
if (mMainConfig.isTouch()) {
float touchY = transformScreenY(screenY);
if (mMainConfig.isTouch()) {
- @CheckForNull TouchButton touchedKey = getTouchedKey(touchX, touchY);
- if (touchedKey != null && touchedKey.isMouse()) {
+ TouchButton touchedKey = getTouchedKey(touchX, touchY);
+ if (touchedKey.isMouse()) {
return onMouseActionEvent(screenX, screenY, touchedKey.getCode(), true);
return onMouseActionEvent(screenX, screenY, touchedKey.getCode(), true);
- } else if (touchedKey != null) {
+ } else {
return keyUp(touchedKey.getCode());
}
}
return keyUp(touchedKey.getCode());
}
}
return onMouseActionEvent(screenX, screenY, button, true);
}
return onMouseActionEvent(screenX, screenY, button, true);
}
- @CheckForNull
private TouchButton getTouchedKey(float touchX, float touchY) {
private TouchButton getTouchedKey(float touchX, float touchY) {
+ if (mGameWindowsManager.getCurrentWindowType() != GameUiWindow.NONE) {
+ return nullButton;
+ }
for (ObjectMap.Entry<String, TouchButton> entry : Assets.guiMap) {
TouchButton button = entry.value;
if (button.getRect().contains(touchX, touchY)) {
return button;
}
}
for (ObjectMap.Entry<String, TouchButton> entry : Assets.guiMap) {
TouchButton button = entry.value;
if (button.getRect().contains(touchX, touchY)) {
return button;
}
}
- return null;
+ return nullButton;
}
@Override
}
@Override
float touchX = transformScreenX(screenX);
float touchY = transformScreenY(screenY);
float touchX = transformScreenX(screenX);
float touchY = transformScreenY(screenY);
+ mTouchDownX = touchX;
+ mTouchDownY = touchY;
+
if (mMainConfig.isTouch()) {
if (mMainConfig.isTouch()) {
- @CheckForNull TouchButton touchedKey = getTouchedKey(touchX, touchY);
- if (touchedKey != null && touchedKey.isMouse()) {
+ TouchButton touchedKey = getTouchedKey(touchX, touchY);
+ if (touchedKey.isMouse()) {
return onMouseActionEvent(screenX, screenY, touchedKey.getCode(), false);
return onMouseActionEvent(screenX, screenY, touchedKey.getCode(), false);
- } else if (touchedKey != null) {
+ } else {
return keyDown(touchedKey.getCode());
}
}
return keyDown(touchedKey.getCode());
}
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
+ float touchX = transformScreenX(screenX);
+ float touchY = transformScreenY(screenY);
+
+ if (Math.abs(touchX - mTouchDownX) < 16 && Math.abs(touchY - mTouchDownY) < 16) {
+ return false;
+ }
+
@CheckForNull MouseInputAction action =
mMouseInputActionMapper.mapDragged(screenX, screenY, getCameraViewport());
return handleMouseAction(action);
@CheckForNull MouseInputAction action =
mMouseInputActionMapper.mapDragged(screenX, screenY, getCameraViewport());
return handleMouseAction(action);