From 285b18b4cc4a32fa5b6afe59e18e4d192a759a16 Mon Sep 17 00:00:00 2001 From: Maurice Date: Mon, 8 Dec 2025 05:02:36 +0100 Subject: [PATCH] play sound and change presence of tile if interacted with --- .../jgame2d/core/handlers/Sound.java | 1 + src/de/miaurizius/jgame2d/entity/Player.java | 3 ++- .../jgame2d/tile/interactive/DryTreeTI.java | 8 ++++++ .../tile/interactive/InteractiveTile.java | 7 +++++ .../jgame2d/tile/interactive/TrunkIT.java | 26 +++++++++++++++++++ 5 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/de/miaurizius/jgame2d/tile/interactive/TrunkIT.java diff --git a/src/de/miaurizius/jgame2d/core/handlers/Sound.java b/src/de/miaurizius/jgame2d/core/handlers/Sound.java index deecf87..7cadbe3 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/Sound.java +++ b/src/de/miaurizius/jgame2d/core/handlers/Sound.java @@ -27,6 +27,7 @@ public class Sound { load(8, "assets/sounds/levelup.wav"); load(9, "assets/sounds/cursor.wav"); load(10, "assets/sounds/burning.wav"); + load(11, "assets/sounds/cuttree.wav"); } @Deprecated diff --git a/src/de/miaurizius/jgame2d/entity/Player.java b/src/de/miaurizius/jgame2d/entity/Player.java index 8ac72c2..694cc1f 100644 --- a/src/de/miaurizius/jgame2d/entity/Player.java +++ b/src/de/miaurizius/jgame2d/entity/Player.java @@ -222,7 +222,8 @@ public class Player extends Entity { public void interactTile(int index) { if(index == 999 || !panel.iTile[index].destructible) return; if(!panel.iTile[index].meetItemReq(this)) return; - panel.iTile[index] = null; + panel.iTile[index].playSE(); + panel.iTile[index] = panel.iTile[index].getDestroyedForm(); } public void interactNPC(int index) { diff --git a/src/de/miaurizius/jgame2d/tile/interactive/DryTreeTI.java b/src/de/miaurizius/jgame2d/tile/interactive/DryTreeTI.java index 6d9c659..51f1d46 100644 --- a/src/de/miaurizius/jgame2d/tile/interactive/DryTreeTI.java +++ b/src/de/miaurizius/jgame2d/tile/interactive/DryTreeTI.java @@ -21,4 +21,12 @@ public class DryTreeTI extends InteractiveTile{ public boolean meetItemReq(Entity entity) { return entity.currentWeapon.weaponType == EntityType.WeaponType.AXE; } + + public void playSE() { + panel.playSE(11); + } + + public InteractiveTile getDestroyedForm() { + return new TrunkIT(panel, worldX/panel.tileSize, worldY/panel.tileSize); + } } diff --git a/src/de/miaurizius/jgame2d/tile/interactive/InteractiveTile.java b/src/de/miaurizius/jgame2d/tile/interactive/InteractiveTile.java index 56fa7ed..a92ba33 100644 --- a/src/de/miaurizius/jgame2d/tile/interactive/InteractiveTile.java +++ b/src/de/miaurizius/jgame2d/tile/interactive/InteractiveTile.java @@ -16,6 +16,13 @@ public class InteractiveTile extends Entity { public void update() { } + + public void playSE() {} + + public InteractiveTile getDestroyedForm() { + return null; + } + public boolean meetItemReq(Entity entity) { return false; } diff --git a/src/de/miaurizius/jgame2d/tile/interactive/TrunkIT.java b/src/de/miaurizius/jgame2d/tile/interactive/TrunkIT.java new file mode 100644 index 0000000..a388485 --- /dev/null +++ b/src/de/miaurizius/jgame2d/tile/interactive/TrunkIT.java @@ -0,0 +1,26 @@ +package de.miaurizius.jgame2d.tile.interactive; + +import de.miaurizius.jgame2d.core.GamePanel; + +public class TrunkIT extends InteractiveTile { + + GamePanel panel; + + public TrunkIT(GamePanel panel, int col, int row) { + super(panel, col, row); + this.panel = panel; + + this.worldX = panel.tileSize * col; + this.worldY = panel.tileSize * row; + + down1 = initEntitySprites("/interactive_tiles/trunk"); + + solidArea.x = 0; + solidArea.y = 0; + solidArea.width = 0; + solidArea.height = 0; + solidAreaDefaultX = 0; + solidAreaDefaultY = 0; + } + +}