added collision for monsters (and made test world-setup)

This commit is contained in:
2025-11-29 00:08:42 +01:00
parent 71dc34b418
commit d07077a5f1
4 changed files with 52 additions and 84 deletions

View File

@@ -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;
}
}

View File

@@ -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;
}
}
}

View File

@@ -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) {

View File

@@ -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();