From 49c8b59d6825bfdfd37efd3ecb5575c89b010e25 Mon Sep 17 00:00:00 2001 From: Maurice Date: Mon, 8 Dec 2025 04:48:27 +0100 Subject: [PATCH] created destructible tiles --- assets/interactive_tiles/destructiblewall.png | Bin 0 -> 6324 bytes assets/interactive_tiles/drytree.png | Bin 0 -> 6434 bytes assets/interactive_tiles/metalplate.png | Bin 0 -> 539 bytes assets/interactive_tiles/trunk.png | Bin 0 -> 6119 bytes assets/maps/testmap2.map | 2 +- src/de/miaurizius/jgame2d/core/GamePanel.java | 5 +++++ .../jgame2d/core/handlers/AssetSetter.java | 12 ++++++++++++ src/de/miaurizius/jgame2d/entity/Player.java | 11 +++++++++++ .../jgame2d/tile/interactive/DryTreeTI.java | 18 ++++++++++++++++++ .../tile/interactive/InteractiveTile.java | 18 ++++++++++++++++++ 10 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 assets/interactive_tiles/destructiblewall.png create mode 100644 assets/interactive_tiles/drytree.png create mode 100644 assets/interactive_tiles/metalplate.png create mode 100644 assets/interactive_tiles/trunk.png create mode 100644 src/de/miaurizius/jgame2d/tile/interactive/DryTreeTI.java create mode 100644 src/de/miaurizius/jgame2d/tile/interactive/InteractiveTile.java diff --git a/assets/interactive_tiles/destructiblewall.png b/assets/interactive_tiles/destructiblewall.png new file mode 100644 index 0000000000000000000000000000000000000000..7b01dd53bff55c0c611284a121082f734115f01c GIT binary patch literal 6324 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 literal 0 HcmV?d00001 diff --git a/assets/interactive_tiles/trunk.png b/assets/interactive_tiles/trunk.png new file mode 100644 index 0000000000000000000000000000000000000000..ba9d5f9044f498aae9ee00f3dda3074211b4fe33 GIT binary patch literal 6119 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 Bu5kbW literal 0 HcmV?d00001 diff --git a/assets/maps/testmap2.map b/assets/maps/testmap2.map index 10ebac2..eddc6d7 100644 --- a/assets/maps/testmap2.map +++ b/assets/maps/testmap2.map @@ -10,7 +10,7 @@ 12 12 12 12 12 12 18 41 40 39 39 39 40 41 41 41 41 41 41 41 10 17 12 12 12 18 10 41 41 41 41 41 41 41 31 26 26 26 26 26 26 30 17 12 12 12 12 12 12 12 12 12 12 13 12 12 18 41 40 39 39 39 40 41 41 41 41 41 41 41 10 17 12 12 12 18 11 41 41 41 41 41 41 41 31 26 26 26 26 26 26 30 17 12 13 12 12 12 12 12 12 12 12 12 13 12 18 41 40 39 39 39 40 41 41 41 41 41 41 41 10 19 20 20 20 21 10 41 41 41 41 41 41 41 31 26 26 26 26 26 26 30 17 12 12 12 12 12 12 12 -12 12 12 12 12 12 18 41 40 40 39 40 40 41 41 41 41 41 41 41 11 10 35 33 36 10 10 41 41 41 41 41 41 41 37 28 28 29 26 27 28 38 17 13 12 12 12 12 12 12 +12 12 12 12 12 12 18 41 40 40 39 40 40 41 41 41 41 41 41 41 11 10 35 33 36 10 10 10 10 10 10 10 10 10 37 28 28 29 26 27 28 38 17 13 12 12 12 12 12 12 12 12 12 12 12 12 18 41 41 41 10 41 41 41 41 41 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 41 41 31 26 30 14 15 25 12 12 12 12 12 12 12 12 12 12 12 13 12 18 41 41 41 10 41 41 41 41 41 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 41 41 31 26 30 17 12 12 12 12 13 12 12 12 12 12 12 12 12 12 12 24 15 16 41 10 41 41 41 41 41 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 41 41 31 26 30 17 12 12 12 12 12 12 12 12 12 diff --git a/src/de/miaurizius/jgame2d/core/GamePanel.java b/src/de/miaurizius/jgame2d/core/GamePanel.java index ced9808..392e947 100644 --- a/src/de/miaurizius/jgame2d/core/GamePanel.java +++ b/src/de/miaurizius/jgame2d/core/GamePanel.java @@ -5,6 +5,7 @@ import de.miaurizius.jgame2d.core.handlers.*; import de.miaurizius.jgame2d.entity.Entity; import de.miaurizius.jgame2d.entity.Player; import de.miaurizius.jgame2d.tile.TileManager; +import de.miaurizius.jgame2d.tile.interactive.InteractiveTile; import javax.sound.sampled.Clip; import javax.swing.*; @@ -49,6 +50,7 @@ public class GamePanel extends JPanel implements Runnable { public Entity[] obj = new Entity[20]; public Entity[] npc = new Entity[10]; public Entity[] monster = new Entity[20]; + public InteractiveTile[] iTile = new InteractiveTile[50]; public ArrayList projectileList = new ArrayList<>(); ArrayList entityList = new ArrayList<>(); @@ -120,6 +122,7 @@ public class GamePanel extends JPanel implements Runnable { else projectileList.remove(i); } } + for(Entity entity : iTile) if(entity != null) entity.update(); break; case PAUSE: break; @@ -141,6 +144,7 @@ public class GamePanel extends JPanel implements Runnable { // GAME tileM.draw(graphics2d); + for(Entity entity : iTile) if(entity != null) entity.draw(graphics2d); // ENTITY RENDER SYSTEM entityList.add(player); @@ -196,6 +200,7 @@ public class GamePanel extends JPanel implements Runnable { assetSetter.setObject(); assetSetter.setNPC(); assetSetter.setMonster(); + assetSetter.setITiles(); gameState = GameState.TITLE; } diff --git a/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java b/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java index ab60089..9737e12 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java +++ b/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java @@ -4,6 +4,7 @@ import de.miaurizius.jgame2d.core.GamePanel; import de.miaurizius.jgame2d.entity.item.*; import de.miaurizius.jgame2d.entity.npc.OldManNPC; import de.miaurizius.jgame2d.entity.monster.GreenSlimeMON; +import de.miaurizius.jgame2d.tile.interactive.DryTreeTI; public class AssetSetter { @@ -74,4 +75,15 @@ public class AssetSetter { panel.monster[i].worldY = panel.tileSize*42; } + public void setITiles() { + int i = 0; + panel.iTile[i] = new DryTreeTI(panel,27,12);i++; + panel.iTile[i] = new DryTreeTI(panel,28,12);i++; + panel.iTile[i] = new DryTreeTI(panel,29,12);i++; + panel.iTile[i] = new DryTreeTI(panel,30,12);i++; + panel.iTile[i] = new DryTreeTI(panel,31,12);i++; + panel.iTile[i] = new DryTreeTI(panel,32,12);i++; + panel.iTile[i] = new DryTreeTI(panel,33,12);i++; + } + } diff --git a/src/de/miaurizius/jgame2d/entity/Player.java b/src/de/miaurizius/jgame2d/entity/Player.java index cfd556e..bc31019 100644 --- a/src/de/miaurizius/jgame2d/entity/Player.java +++ b/src/de/miaurizius/jgame2d/entity/Player.java @@ -8,6 +8,7 @@ import de.miaurizius.jgame2d.core.handlers.KeyHandler; import de.miaurizius.jgame2d.entity.item.ShieldWoodObj; import de.miaurizius.jgame2d.entity.item.SwordNormalObj; import de.miaurizius.jgame2d.entity.projectile.FireballObj; +import de.miaurizius.jgame2d.tile.interactive.InteractiveTile; import java.awt.*; import java.util.ArrayList; @@ -79,6 +80,9 @@ public class Player extends Entity { int monsterIndex = panel.collisionH.checkEntity(this, panel.monster); interactMonster(monsterIndex); + // CHECK INTERACTIVE TILE COLLISION + int iTileIndex = panel.collisionH.checkEntity(this, panel.iTile); + // CHECK EVENT panel.eventH.checkEvent(); @@ -181,6 +185,9 @@ public class Player extends Entity { int monsterIndex = panel.collisionH.checkEntity(this, panel.monster); damageMonster(monsterIndex, attack); + int iTileIndex = panel.collisionH.checkEntity(this, panel.iTile); + interactTile(iTileIndex); + worldX = currentWorldX; worldY = currentWorldY; solidArea.width = solidAreaWidth; @@ -213,6 +220,10 @@ public class Player extends Entity { checkLevelUp(); } } + public void interactTile(int index) { + if(index == 999 || !panel.iTile[index].destructible) return; + panel.iTile[index] = null; + } public void interactNPC(int index) { if(index == 999) return; diff --git a/src/de/miaurizius/jgame2d/tile/interactive/DryTreeTI.java b/src/de/miaurizius/jgame2d/tile/interactive/DryTreeTI.java new file mode 100644 index 0000000..330387c --- /dev/null +++ b/src/de/miaurizius/jgame2d/tile/interactive/DryTreeTI.java @@ -0,0 +1,18 @@ +package de.miaurizius.jgame2d.tile.interactive; + +import de.miaurizius.jgame2d.core.GamePanel; + +public class DryTreeTI extends InteractiveTile{ + + GamePanel panel; + + public DryTreeTI(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/drytree"); + destructible = true; + } +} diff --git a/src/de/miaurizius/jgame2d/tile/interactive/InteractiveTile.java b/src/de/miaurizius/jgame2d/tile/interactive/InteractiveTile.java new file mode 100644 index 0000000..4f6cf3f --- /dev/null +++ b/src/de/miaurizius/jgame2d/tile/interactive/InteractiveTile.java @@ -0,0 +1,18 @@ +package de.miaurizius.jgame2d.tile.interactive; + +import de.miaurizius.jgame2d.core.GamePanel; +import de.miaurizius.jgame2d.entity.Entity; + +public class InteractiveTile extends Entity { + + GamePanel panel; + public boolean destructible; + + public InteractiveTile(GamePanel panel, int col, int row) { + super(panel); + this.panel = panel; + } + + public void update() { + } +}