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