diff --git a/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java b/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java index e3aba58..5799616 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java +++ b/src/de/miaurizius/jgame2d/core/handlers/AssetSetter.java @@ -18,19 +18,31 @@ public class AssetSetter { } public void setNPC() { +// panel.npc[0] = new OldManNPC(panel); +// panel.npc[0].worldX = panel.tileSize*21; +// panel.npc[0].worldY = panel.tileSize*21; + panel.npc[0] = new OldManNPC(panel); - panel.npc[0].worldX = panel.tileSize*21; - panel.npc[0].worldY = panel.tileSize*21; + panel.npc[0].worldX = panel.tileSize*9; + panel.npc[0].worldY = panel.tileSize*10; } public void setMonster() { +// panel.monster[0] = new GreenSlimeMON(panel); +// panel.monster[0].worldX = panel.tileSize*23; +// panel.monster[0].worldY = panel.tileSize*36; +// +// panel.monster[1] = new GreenSlimeMON(panel); +// panel.monster[1].worldX = panel.tileSize*23; +// panel.monster[1].worldY = panel.tileSize*37; + panel.monster[0] = new GreenSlimeMON(panel); - panel.monster[0].worldX = panel.tileSize*23; - panel.monster[0].worldY = panel.tileSize*36; + panel.monster[0].worldX = panel.tileSize*11; + panel.monster[0].worldY = panel.tileSize*10; panel.monster[1] = new GreenSlimeMON(panel); - panel.monster[1].worldX = panel.tileSize*23; - panel.monster[1].worldY = panel.tileSize*37; + panel.monster[1].worldX = panel.tileSize*11; + panel.monster[1].worldY = panel.tileSize*11; } } diff --git a/src/de/miaurizius/jgame2d/core/handlers/CollisionHandler.java b/src/de/miaurizius/jgame2d/core/handlers/CollisionHandler.java index aad0fef..fcd2d20 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/CollisionHandler.java +++ b/src/de/miaurizius/jgame2d/core/handlers/CollisionHandler.java @@ -66,36 +66,13 @@ public class CollisionHandler { obj.solidArea.x += obj.worldX; obj.solidArea.y += obj.worldY; - switch (entity.direction) { - case UP: - entity.solidArea.y -= entity.speed; - if (entity.solidArea.intersects(obj.solidArea)) { - if (obj.collision) entity.collisionOn = true; - if (player) index = c; - } - break; - case DOWN: - entity.solidArea.y += entity.speed; - if (entity.solidArea.intersects(obj.solidArea)) { - if (obj.collision) entity.collisionOn = true; - if (player) index = c; - } - break; - case LEFT: - entity.solidArea.x -= entity.speed; - if (entity.solidArea.intersects(obj.solidArea)) { - if (obj.collision) entity.collisionOn = true; - if (player) index = c; - } - break; - case RIGHT: - entity.solidArea.x += entity.speed; - if (entity.solidArea.intersects(obj.solidArea)) { - if (obj.collision) entity.collisionOn = true; - if (player) index = c; - } - break; + parseSolidArea(entity); + + if (entity.solidArea.intersects(obj.solidArea)) { + if (obj.collision) entity.collisionOn = true; + if (player) index = c; } + entity.solidArea.x = entity.solidAreaDefaultX; entity.solidArea.y = entity.solidAreaDefaultY; obj.solidArea.x = obj.solidAreaDefaultX; @@ -120,36 +97,13 @@ public class CollisionHandler { e.solidArea.x += e.worldX; e.solidArea.y += e.worldY; - switch (entity.direction) { - case UP: - entity.solidArea.y -= entity.speed; - if (entity.solidArea.intersects(e.solidArea)) { - entity.collisionOn = true; - index = c; - } - break; - case DOWN: - entity.solidArea.y += entity.speed; - if (entity.solidArea.intersects(e.solidArea)) { - entity.collisionOn = true; - index = c; - } - break; - case LEFT: - entity.solidArea.x -= entity.speed; - if (entity.solidArea.intersects(e.solidArea)) { - entity.collisionOn = true; - index = c; - } - break; - case RIGHT: - entity.solidArea.x += entity.speed; - if (entity.solidArea.intersects(e.solidArea)) { - entity.collisionOn = true; - index = c; - } - break; + parseSolidArea(entity); + + if (entity.solidArea.intersects(e.solidArea) && e != entity) { + entity.collisionOn = true; + index = c; } + entity.solidArea.x = entity.solidAreaDefaultX; entity.solidArea.y = entity.solidAreaDefaultY; e.solidArea.x = e.solidAreaDefaultX; @@ -166,28 +120,23 @@ public class CollisionHandler { panel.player.solidArea.x += panel.player.worldX; panel.player.solidArea.y += panel.player.worldY; - switch (entity.direction) { - case UP: - entity.solidArea.y -= entity.speed; - if (entity.solidArea.intersects(panel.player.solidArea)) entity.collisionOn = true; - break; - case DOWN: - entity.solidArea.y += entity.speed; - if (entity.solidArea.intersects(panel.player.solidArea)) entity.collisionOn = true; - break; - case LEFT: - entity.solidArea.x -= entity.speed; - if (entity.solidArea.intersects(panel.player.solidArea)) entity.collisionOn = true; - break; - case RIGHT: - entity.solidArea.x += entity.speed; - if (entity.solidArea.intersects(panel.player.solidArea)) entity.collisionOn = true; - break; - } + parseSolidArea(entity); + + if (entity.solidArea.intersects(panel.player.solidArea)) entity.collisionOn = true; + entity.solidArea.x = entity.solidAreaDefaultX; entity.solidArea.y = entity.solidAreaDefaultY; panel.player.solidArea.x = panel.player.solidAreaDefaultX; panel.player.solidArea.y = panel.player.solidAreaDefaultY; } + private void parseSolidArea(Entity entity) { + switch (entity.direction) { + case UP -> entity.solidArea.y -= entity.speed; + case DOWN -> entity.solidArea.y += entity.speed; + case LEFT -> entity.solidArea.x -= entity.speed; + case RIGHT -> entity.solidArea.x += entity.speed; + } + } + } diff --git a/src/de/miaurizius/jgame2d/entity/Entity.java b/src/de/miaurizius/jgame2d/entity/Entity.java index 49d31cd..6313409 100644 --- a/src/de/miaurizius/jgame2d/entity/Entity.java +++ b/src/de/miaurizius/jgame2d/entity/Entity.java @@ -59,6 +59,8 @@ public class Entity { collisionOn = false; panel.collisionH.checkTile(this); panel.collisionH.checkObject(this, false); + panel.collisionH.checkEntity(this, panel.npc); + panel.collisionH.checkEntity(this, panel.monster); panel.collisionH.checkPlayer(this); if(!collisionOn) { diff --git a/src/de/miaurizius/jgame2d/entity/Player.java b/src/de/miaurizius/jgame2d/entity/Player.java index 4a565ca..44137d2 100644 --- a/src/de/miaurizius/jgame2d/entity/Player.java +++ b/src/de/miaurizius/jgame2d/entity/Player.java @@ -34,8 +34,10 @@ public class Player extends Entity { } public void setDefaultValues() { - worldX = panel.tileSize * 23; - worldY = panel.tileSize * 21; +// worldX = panel.tileSize * 23; +// worldY = panel.tileSize * 21; + worldX = panel.tileSize * 10; + worldY = panel.tileSize * 13; speed = 4; direction = Direction.DOWN; @@ -75,6 +77,9 @@ public class Player extends Entity { int npcIndex = panel.collisionH.checkEntity(this, panel.npc); interactNPC(npcIndex); + // CHECK MONSTER COLLISION + int monsterIndex = panel.collisionH.checkEntity(this, panel.monster); + // CHECK EVENT panel.eventH.checkEvent();