X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;ds=inline;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2FGameRenderer.java;h=e063e09af073cb21899d389e6613f7fae6bdcf34;hb=0d6ab84418440a30f2de555cb30ce21af8dac12e;hp=36f6c75aadbe64eb4de8115db837ba7de59a8d35;hpb=b9841a5aa1ccc1c4d30b23854b14d8de346951fd;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java index 36f6c75..e063e09 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java @@ -8,8 +8,10 @@ import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.TimeUtils; +import org.jetbrains.annotations.Nullable; import ru.deadsoftware.cavedroid.MainConfig; -import ru.deadsoftware.cavedroid.game.input.IGameInputHandler; +import ru.deadsoftware.cavedroid.game.input.IKeyboardInputHandler; +import ru.deadsoftware.cavedroid.game.input.IMouseInputHandler; import ru.deadsoftware.cavedroid.game.input.Joystick; import ru.deadsoftware.cavedroid.game.input.action.KeyboardInputAction; import ru.deadsoftware.cavedroid.game.input.action.MouseInputAction; @@ -29,7 +31,6 @@ import ru.deadsoftware.cavedroid.misc.Renderer; import ru.deadsoftware.cavedroid.misc.utils.MeasureUnitsUtilsKt; import ru.deadsoftware.cavedroid.misc.utils.RenderingUtilsKt; -import javax.annotation.CheckForNull; import javax.inject.Inject; import java.util.ArrayList; import java.util.Comparator; @@ -51,8 +52,8 @@ public class GameRenderer extends Renderer { private final CursorMouseInputHandler mCursorMouseInputHandler; private final MouseInputActionMapper mMouseInputActionMapper; private final KeyboardInputActionMapper mKeyboardInputActionMapper; - private final Set> mMouseInputHandlers; - private final Set> mKeyboardInputHandlers; + private final Set mMouseInputHandlers; + private final Set mKeyboardInputHandlers; private final GameWindowsManager mGameWindowsManager; private final TooltipManager mTooltipManager; @@ -71,8 +72,8 @@ public class GameRenderer extends Renderer { CursorMouseInputHandler cursorMouseInputHandler, MouseInputActionMapper mouseInputActionMapper, KeyboardInputActionMapper keyboardInputActionMapper, - Set> mouseInputHandlers, - Set> keyboardInputHandlers, + Set mouseInputHandlers, + Set keyboardInputHandlers, GameWindowsManager gameWindowsManager, TooltipManager tooltipManager) { super(mainConfig.getWidth(), mainConfig.getHeight()); @@ -81,7 +82,12 @@ public class GameRenderer extends Renderer { mMobsController = mobsController; mGameWorld = gameWorld; mRenderers = new ArrayList<>(renderers); - mRenderers.sort(Comparator.comparingInt(IGameRenderer::getRenderLayer)); + kotlin.collections.CollectionsKt.sortWith(mRenderers, new Comparator() { + @Override + public int compare(IGameRenderer o1, IGameRenderer o2) { + return o1.getRenderLayer() - o2.getRenderLayer(); + } + }); mCursorMouseInputHandler = cursorMouseInputHandler; mMouseInputActionMapper = mouseInputActionMapper; mKeyboardInputActionMapper = keyboardInputActionMapper; @@ -109,7 +115,9 @@ public class GameRenderer extends Renderer { float camTargetX, camTargetY; - if (player.controlMode == Player.ControlMode.WALK) { + boolean followPlayer = player.controlMode == Player.ControlMode.WALK || !mMainConfig.isTouch(); + + if (followPlayer) { camTargetX = plTargetX + Math.min(player.getVelocity().x * 2, getWidth() / 2); camTargetY = plTargetY + player.getVelocity().y; } else { @@ -119,7 +127,7 @@ public class GameRenderer extends Renderer { Vector2 moveVector = new Vector2(camTargetX - camCenterX, camTargetY - camCenterY); - if (player.controlMode == Player.ControlMode.WALK && player.getVelocity().isZero()) { + if (followPlayer && player.getVelocity().isZero()) { mCameraDelayMs = TimeUtils.millis(); mCamCenterToPlayer.x = plTargetX - camCenterX; mCamCenterToPlayer.y = plTargetY - camCenterY; @@ -215,14 +223,14 @@ public class GameRenderer extends Renderer { } } - private boolean handleMouseAction(@CheckForNull MouseInputAction action) { + private boolean handleMouseAction(@Nullable MouseInputAction action) { if (action == null) { return false; } boolean anyProcessed = false; - for (IGameInputHandler handler : mMouseInputHandlers) { + for (IMouseInputHandler handler : mMouseInputHandlers) { final boolean conditions = handler.checkConditions(action); if (conditions) { anyProcessed = true; @@ -235,7 +243,7 @@ public class GameRenderer extends Renderer { } private boolean onMouseActionEvent(int mouseX, int mouseY, int button, boolean touchUp, int pointer) { - @CheckForNull MouseInputAction action = mMouseInputActionMapper + @Nullable MouseInputAction action = mMouseInputActionMapper .map((float) mouseX, (float) mouseY, getCameraViewport(), button, touchUp, pointer); return handleMouseAction(action); } @@ -314,20 +322,20 @@ public class GameRenderer extends Renderer { return false; } - @CheckForNull MouseInputAction action = + @Nullable MouseInputAction action = mMouseInputActionMapper.mapDragged(screenX, screenY, getCameraViewport(), pointer); return handleMouseAction(action); } @Override public boolean scrolled(float amountX, float amountY) { - @CheckForNull MouseInputAction action = mMouseInputActionMapper + @Nullable MouseInputAction action = mMouseInputActionMapper .mapScrolled(Gdx.input.getX(), Gdx.input.getY(), amountX, amountY, getCameraViewport()); return handleMouseAction(action); } private boolean handleKeyboardAction(int keycode, boolean isKeyDown) { - @CheckForNull final KeyboardInputAction action = mKeyboardInputActionMapper + @Nullable final KeyboardInputAction action = mKeyboardInputActionMapper .map(keycode, isKeyDown); if (action == null) { @@ -336,7 +344,7 @@ public class GameRenderer extends Renderer { boolean anyProcessed = false; - for (IGameInputHandler handler : mKeyboardInputHandlers) { + for (IKeyboardInputHandler handler : mKeyboardInputHandlers) { final boolean conditions = handler.checkConditions(action); if (conditions) { anyProcessed = true; @@ -372,7 +380,9 @@ public class GameRenderer extends Renderer { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); spriter.begin(); - mRenderers.forEach(iGameRenderer -> iGameRenderer.draw(spriter, shaper, getCameraViewport(), delta)); + for (IGameRenderer iGameRenderer : mRenderers) { + iGameRenderer.draw(spriter, shaper, getCameraViewport(), delta); + } handleMousePosition(); spriter.end();