added collision for monsters (and made test world-setup)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user