diff --git a/src/de/miaurizius/jgame2d/core/GamePanel.java b/src/de/miaurizius/jgame2d/core/GamePanel.java index 9234eb8..d9b5937 100644 --- a/src/de/miaurizius/jgame2d/core/GamePanel.java +++ b/src/de/miaurizius/jgame2d/core/GamePanel.java @@ -78,6 +78,8 @@ public class GamePanel extends JPanel implements Runnable { // GAME STATE public GameState gameState; + public Map.Area currentArea; + public Map.Area nextArea; public GamePanel() throws IOException { this.setPreferredSize(new Dimension(screenWidth, screenHeight)); @@ -252,6 +254,7 @@ public class GamePanel extends JPanel implements Runnable { assetSetter.setITiles(); eManager.setup(); gameState = GameState.TITLE; + currentArea = Map.Area.OUTSIDE; tempScreen = new BufferedImage(screenWidth, screenHeight, BufferedImage.TYPE_INT_RGB); fg2 = (Graphics2D) tempScreen.getGraphics(); @@ -279,4 +282,15 @@ public class GamePanel extends JPanel implements Runnable { assetSetter.setITiles(); eManager.lighting.resetDay(); } + public void changeArea() { + if(nextArea != currentArea) { + stopMusic(); + if(nextArea == Map.Area.OUTSIDE) playMusic(0); + else if(nextArea == Map.Area.DUNGEON) playMusic(19); + else if(nextArea == Map.Area.INDOOR) playMusic(18); + } + currentArea = nextArea; + nextArea = null; +// assetSetter.setMonster(); + } } diff --git a/src/de/miaurizius/jgame2d/core/UI.java b/src/de/miaurizius/jgame2d/core/UI.java index e88ca04..802560d 100644 --- a/src/de/miaurizius/jgame2d/core/UI.java +++ b/src/de/miaurizius/jgame2d/core/UI.java @@ -414,6 +414,7 @@ public class UI { panel.player.worldY = panel.tileSize * panel.eventH.tempRow; panel.eventH.prevEventX = panel.player.worldX; panel.eventH.prevEventY = panel.player.worldY; + panel.changeArea(); } private void drawTradeScreen() { switch(tradeState) { diff --git a/src/de/miaurizius/jgame2d/core/enums/Map.java b/src/de/miaurizius/jgame2d/core/enums/Map.java index 1422bf4..9a319da 100644 --- a/src/de/miaurizius/jgame2d/core/enums/Map.java +++ b/src/de/miaurizius/jgame2d/core/enums/Map.java @@ -2,15 +2,19 @@ package de.miaurizius.jgame2d.core.enums; public enum Map { - OVERWORLD("worldmap", 0), - HUT("indoor01", 1); + OVERWORLD("worldmap", 0, Area.OUTSIDE), + HUT("indoor01", 1, Area.INDOOR), + DUNGEON_FIRST_FLOOR("dungeon01",2, Area.DUNGEON), + DUNGEON_SECOND_FLOOR("dungeon02", 3, Area.DUNGEON); private final String name; private final int index; + private final Area area; - Map(String name, int index) { + Map(String name, int index, Area area) { this.name = name; this.index = index; + this.area = area; } public String getName() { @@ -20,4 +24,15 @@ public enum Map { public int getIndex() { return index; } + + public Area getArea() { + return area; + } + + public enum Area { + INDOOR, + OUTSIDE, + DUNGEON + } + } \ No newline at end of file diff --git a/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java b/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java index e9ebb43..c20f2ce 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java +++ b/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java @@ -72,6 +72,12 @@ public class EventHandler { 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); + //DUNGEON + else if(hit(Map.OVERWORLD, 12,9, null)) changeMap(Map.DUNGEON_FIRST_FLOOR, 9, 41); //enter + else if(hit(Map.DUNGEON_FIRST_FLOOR, 9,41, null)) changeMap(Map.OVERWORLD, 12,9); //leave + else if(hit(Map.DUNGEON_FIRST_FLOOR, 8,7, null)) changeMap(Map.DUNGEON_SECOND_FLOOR, 26, 41); //enter b2 + else if(hit(Map.DUNGEON_SECOND_FLOOR, 26, 41, null)) changeMap(Map.DUNGEON_FIRST_FLOOR, 8, 7); //enter b1 + // ADVANCED SPEAKING else if(hit(Map.HUT, 12, 9, Direction.UP)) speak(panel.npc[Map.HUT.getIndex()][0]); } @@ -129,6 +135,7 @@ public class EventHandler { tempCol = col; tempRow = row; canTouchEvent = false; + panel.nextArea = map.getArea(); panel.playSE(13); } private void speak(Entity entity) { diff --git a/src/de/miaurizius/jgame2d/core/handlers/Sound.java b/src/de/miaurizius/jgame2d/core/handlers/Sound.java index 99b740f..4a7726d 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/Sound.java +++ b/src/de/miaurizius/jgame2d/core/handlers/Sound.java @@ -38,6 +38,8 @@ public class Sound { load(15, "assets/sounds/blocked.wav"); load(16, "assets/sounds/parry.wav"); load(17, "assets/sounds/speak.wav"); + load(18, "assets/sounds/Merchant.wav"); + load(19, "assets/sounds/Dungeon.wav"); } @Deprecated diff --git a/src/de/miaurizius/jgame2d/environment/Lighting.java b/src/de/miaurizius/jgame2d/environment/Lighting.java index 9f3667d..25f5478 100644 --- a/src/de/miaurizius/jgame2d/environment/Lighting.java +++ b/src/de/miaurizius/jgame2d/environment/Lighting.java @@ -1,6 +1,7 @@ package de.miaurizius.jgame2d.environment; import de.miaurizius.jgame2d.core.GamePanel; +import de.miaurizius.jgame2d.core.enums.Map; import java.awt.*; import java.awt.image.BufferedImage; @@ -19,8 +20,8 @@ public class Lighting { } public void draw(Graphics2D g2) { - g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, filterAlpha)); - g2.drawImage(darknessFilter, 0, 0, null); + if(panel.currentArea == Map.Area.OUTSIDE) g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, filterAlpha)); + if(panel.currentArea == Map.Area.OUTSIDE || panel.currentArea == Map.Area.DUNGEON) g2.drawImage(darknessFilter, 0, 0, null); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1F)); // DEBUG