diff --git a/src/de/miaurizius/jgame2d/core/GamePanel.java b/src/de/miaurizius/jgame2d/core/GamePanel.java index 56e3d32..e6d3206 100644 --- a/src/de/miaurizius/jgame2d/core/GamePanel.java +++ b/src/de/miaurizius/jgame2d/core/GamePanel.java @@ -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; diff --git a/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java b/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java index 5ec5395..a3cc9d2 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java +++ b/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java @@ -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() { diff --git a/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java b/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java index 9dbaac9..96651a1 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java +++ b/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java @@ -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; diff --git a/src/de/miaurizius/jgame2d/core/handlers/Sound.java b/src/de/miaurizius/jgame2d/core/handlers/Sound.java index 18bdac6..7f7cbfd 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/Sound.java +++ b/src/de/miaurizius/jgame2d/core/handlers/Sound.java @@ -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; diff --git a/src/de/miaurizius/jgame2d/entity/Player.java b/src/de/miaurizius/jgame2d/entity/Player.java index 3d4eeab..7888659 100644 --- a/src/de/miaurizius/jgame2d/entity/Player.java +++ b/src/de/miaurizius/jgame2d/entity/Player.java @@ -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;