diff --git a/assets/interactive_tiles/destructiblewall.png b/assets/interactive_tiles/destructiblewall.png new file mode 100644 index 0000000..7b01dd5 Binary files /dev/null and b/assets/interactive_tiles/destructiblewall.png differ diff --git a/assets/interactive_tiles/drytree.png b/assets/interactive_tiles/drytree.png new file mode 100644 index 0000000..ec4649b Binary files /dev/null and b/assets/interactive_tiles/drytree.png differ diff --git a/assets/interactive_tiles/metalplate.png b/assets/interactive_tiles/metalplate.png new file mode 100644 index 0000000..c60dfa5 Binary files /dev/null and b/assets/interactive_tiles/metalplate.png differ diff --git a/assets/interactive_tiles/trunk.png b/assets/interactive_tiles/trunk.png new file mode 100644 index 0000000..ba9d5f9 Binary files /dev/null and b/assets/interactive_tiles/trunk.png differ 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() { + } +}