fix: Moving while terminal too small
This commit is contained in:
@@ -120,9 +120,12 @@ public class FullRoomDrawHandler extends AbstractEventHandler<FullRoomDraw> {
|
||||
} else {
|
||||
eventManager.emitEvent(new RerenderScreen(partsToRerender.toArray(RerenderScreen.ScreenPart[]::new)));
|
||||
}
|
||||
|
||||
gameState.setTerminalTooSmall(false);
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
// Screen too small to fit the room
|
||||
eventManager.emitEvent(new TerminalTooSmallEvent());
|
||||
gameState.setTerminalTooSmall(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,6 +37,10 @@ public class MouseActionEventHandler extends AbstractEventHandler<MouseAction> {
|
||||
return;
|
||||
}
|
||||
|
||||
if (gameState.isTerminalTooSmall()) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getActionType()) {
|
||||
case MOVE -> eventManager.emitEvent(new MouseMoveEvent(event));
|
||||
case CLICK_RELEASE -> {
|
||||
|
||||
@@ -52,6 +52,10 @@ public class PlayerMoveEventHandler extends AbstractEventHandler<PlayerMoveEvent
|
||||
|
||||
@Override
|
||||
public void handle(PlayerMoveEvent event) {
|
||||
if (gameState.isTerminalTooSmall()) {
|
||||
return;
|
||||
}
|
||||
|
||||
KeyStroke keyStroke = event.getKeyStroke();
|
||||
Player player = gameState.getPlayer();
|
||||
RoomCords playerCords = player.getPlayerCords();
|
||||
@@ -70,6 +74,7 @@ public class PlayerMoveEventHandler extends AbstractEventHandler<PlayerMoveEvent
|
||||
return;
|
||||
}
|
||||
playerCords.updateCordsWithColliders(currentRoom.getColliders(), player.getPlayerCords().getX(), playerCords.getY() - moveStep);
|
||||
player.setPlayerRotation(Player.PlayerRotation.BACK);
|
||||
}
|
||||
case 'a' -> {
|
||||
if (originalPlayerX <= 30) {
|
||||
@@ -79,6 +84,7 @@ public class PlayerMoveEventHandler extends AbstractEventHandler<PlayerMoveEvent
|
||||
return;
|
||||
}
|
||||
playerCords.updateCordsWithColliders(currentRoom.getColliders(), player.getPlayerCords().getX() - moveStep, playerCords.getY());
|
||||
player.setPlayerRotation(Player.PlayerRotation.LEFT);
|
||||
}
|
||||
case 's' -> {
|
||||
if (originalPlayerY >= 110) {
|
||||
@@ -88,6 +94,7 @@ public class PlayerMoveEventHandler extends AbstractEventHandler<PlayerMoveEvent
|
||||
return;
|
||||
}
|
||||
playerCords.updateCordsWithColliders(currentRoom.getColliders(), player.getPlayerCords().getX(), playerCords.getY() + moveStep);
|
||||
player.setPlayerRotation(Player.PlayerRotation.FRONT);
|
||||
}
|
||||
case 'd' -> {
|
||||
if (originalPlayerX >= 155) {
|
||||
@@ -97,6 +104,7 @@ public class PlayerMoveEventHandler extends AbstractEventHandler<PlayerMoveEvent
|
||||
return;
|
||||
}
|
||||
playerCords.updateCordsWithColliders(currentRoom.getColliders(), player.getPlayerCords().getX() + moveStep, playerCords.getY());
|
||||
player.setPlayerRotation(Player.PlayerRotation.RIGHT);
|
||||
}
|
||||
}
|
||||
int newPlayerX = playerCords.getX();
|
||||
|
||||
@@ -16,6 +16,7 @@ public class GameState {
|
||||
@Getter
|
||||
@Setter
|
||||
private GameRoom currentRoom;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private Player player;
|
||||
@@ -27,6 +28,10 @@ public class GameState {
|
||||
@Getter
|
||||
private Screen screen;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean terminalTooSmall = false;
|
||||
|
||||
public void setScreen(Screen screen) {
|
||||
if (screen != null) {
|
||||
dependencyManager.inject(screen);
|
||||
|
||||
Reference in New Issue
Block a user