made map switching possible

This commit is contained in:
2025-12-12 13:48:42 +01:00
parent de42dd6bd6
commit 7e8a27a671
5 changed files with 31 additions and 17 deletions

View File

@@ -38,7 +38,7 @@ public class GamePanel extends JPanel implements Runnable {
// WORLD SETTINGS
public final int maxWorldCol = 50;
public final int maxWorldRow = 50;
public final Map currentMap = Map.OVERWORLD;
public Map currentMap = Map.OVERWORLD;
//FPS
final int FPS = 60;

View File

@@ -47,6 +47,10 @@ public class AssetSetter {
panel.npc[Map.OVERWORLD.getIndex()][0] = new OldManNPC(panel);
panel.npc[Map.OVERWORLD.getIndex()][0].worldX = panel.tileSize*21;
panel.npc[Map.OVERWORLD.getIndex()][0].worldY = panel.tileSize*21;
panel.npc[Map.HUT.getIndex()][0] = new OldManNPC(panel);
panel.npc[Map.HUT.getIndex()][0].worldX = panel.tileSize*12;
panel.npc[Map.HUT.getIndex()][0].worldY = panel.tileSize*7;
}
public void setMonster() {

View File

@@ -49,23 +49,27 @@ public class EventHandler {
if(distance > panel.tileSize) canTouchEvent = true;
if(!canTouchEvent) return;
if(hit(27,16, Direction.RIGHT)) damagePit(GameState.DIALOGUE);
if(hit(23,12, null)) healingPool(GameState.DIALOGUE);
if(hit(Map.OVERWORLD, 27,16, Direction.RIGHT)) damagePit(GameState.DIALOGUE);
else if(hit(Map.OVERWORLD, 23,12, null)) healingPool(GameState.DIALOGUE);
// HUT
else if(hit(Map.OVERWORLD, 10, 39, null)) changeMap(Map.HUT, 12, 13);
else if(hit(Map.HUT, 12, 13, null)) changeMap(Map.OVERWORLD, 10, 39);
}
/**
* @param reqDirection Set to null if no direction is required
*/
public boolean hit(int eventCol, int eventRow, Direction reqDirection) {
public boolean hit(Map map, int eventCol, int eventRow, Direction reqDirection) {
boolean hit = false;
panel.player.solidArea.x = panel.player.worldX + panel.player.solidArea.x;
panel.player.solidArea.y = panel.player.worldY + panel.player.solidArea.y;
eventRect[panel.currentMap.getIndex()][eventCol][eventRow].x = eventCol*panel.tileSize + eventRect[panel.currentMap.getIndex()][eventCol][eventRow].x;
eventRect[panel.currentMap.getIndex()][eventCol][eventRow].y = eventRow*panel.tileSize + eventRect[panel.currentMap.getIndex()][eventCol][eventRow].y;
eventRect[map.getIndex()][eventCol][eventRow].x = eventCol*panel.tileSize + eventRect[map.getIndex()][eventCol][eventRow].x;
eventRect[map.getIndex()][eventCol][eventRow].y = eventRow*panel.tileSize + eventRect[map.getIndex()][eventCol][eventRow].y;
if(
panel.player.solidArea.intersects(eventRect[panel.currentMap.getIndex()][eventCol][eventRow]) &&
panel.player.solidArea.intersects(eventRect[map.getIndex()][eventCol][eventRow]) &&
(reqDirection == null || panel.player.direction == reqDirection) &&
!eventRect[panel.currentMap.getIndex()][eventCol][eventRow].eventDone
!eventRect[map.getIndex()][eventCol][eventRow].eventDone
) {
hit = true;
prevEventX = panel.player.worldX;
@@ -73,8 +77,8 @@ public class EventHandler {
}
panel.player.solidArea.x = panel.player.solidAreaDefaultX;
panel.player.solidArea.y = panel.player.solidAreaDefaultY;
eventRect[panel.currentMap.getIndex()][eventCol][eventRow].x = eventRect[panel.currentMap.getIndex()][eventCol][eventRow].eventRectDefaultX;
eventRect[panel.currentMap.getIndex()][eventCol][eventRow].y = eventRect[panel.currentMap.getIndex()][eventCol][eventRow].eventRectDefaultY;
eventRect[map.getIndex()][eventCol][eventRow].x = eventRect[map.getIndex()][eventCol][eventRow].eventRectDefaultX;
eventRect[map.getIndex()][eventCol][eventRow].y = eventRect[map.getIndex()][eventCol][eventRow].eventRectDefaultY;
return hit;
}
@@ -85,7 +89,6 @@ public class EventHandler {
panel.player.life -= 1;
canTouchEvent = false;
}
public void healingPool(GameState gameState) {
if(!panel.keyH.spacePressed) return;
panel.gameState = gameState;
@@ -96,6 +99,15 @@ public class EventHandler {
canTouchEvent = false;
panel.assetSetter.setMonster();
}
public void changeMap(Map map, int col, int row) {
panel.currentMap = map;
panel.player.worldX = panel.tileSize*col;
panel.player.worldY = panel.tileSize*row;
prevEventX = panel.player.worldX;
prevEventY = panel.player.worldY;
canTouchEvent = false;
panel.playSE(13);
}
static private class EventRect extends Rectangle {
int eventRectDefaultX, eventRectDefaultY;

View File

@@ -33,6 +33,7 @@ public class Sound {
load(10, "assets/sounds/burning.wav");
load(11, "assets/sounds/cuttree.wav");
load(12, "assets/sounds/gameover.wav");
load(13, "assets/sounds/stairs.wav");
}
@Deprecated
@@ -46,6 +47,7 @@ public class Sound {
}
}
// MANAGER
private void load(int index, String path) {
try {
AudioInputStream ais = AudioSystem.getAudioInputStream(new File(path));
@@ -55,11 +57,9 @@ public class Sound {
Boot.logger.log(Level.SEVERE, "Could not load Sound File: " + soundURL[index], e);
}
}
public void stop() {
clip.stop();
}
public void checkVolume() {
switch(volumeScale) {
case 0 -> volume = -80f;

View File

@@ -293,10 +293,8 @@ public class Player extends Entity {
// SETTING THINGS UP
public void setDefaultValues() {
// worldX = panel.tileSize * 23;
// worldY = panel.tileSize * 21;
worldX = panel.tileSize * 12;
worldY = panel.tileSize * 13;
worldX = panel.tileSize * 23;
worldY = panel.tileSize * 21;
speed = 4;
direction = Direction.DOWN;