Coins can be collected
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package main.entities;
|
||||
|
||||
import main.SheetLoader;
|
||||
import main.entities.player.Player;
|
||||
|
||||
public class Coin extends AnimatedEntity {
|
||||
|
||||
@@ -8,6 +9,11 @@ public class Coin extends AnimatedEntity {
|
||||
|
||||
public Coin() {
|
||||
loader.generateFigures(8, 8, new int[] { 8, 8, 1 });
|
||||
|
||||
loader.getFigur(0).animationsGeschwindigkeitSetzen(100);
|
||||
loader.getFigur(1).animationsGeschwindigkeitSetzen(100);
|
||||
loader.getFigur(2).animationsGeschwindigkeitSetzen(100);
|
||||
|
||||
actionFigur.neuerZustand(loader.getFigur(0), "gold");
|
||||
actionFigur.neuerZustand(loader.getFigur(1), "silver");
|
||||
actionFigur.neuerZustand(loader.getFigur(2), "bronze");
|
||||
@@ -18,10 +24,18 @@ public class Coin extends AnimatedEntity {
|
||||
width = 0.375f;
|
||||
height = 0.25f;
|
||||
spriteOffsetY = -0.1f;
|
||||
enablePushBack = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void update() {
|
||||
super.update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityCollision(Entity e) {
|
||||
if (e instanceof Player) {
|
||||
deleteEntity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ public abstract class Entity implements Ticker {
|
||||
protected float friction = 0.2f; // Entschleunigung des entities in gameunits pro frame.
|
||||
protected float width = 1f, height = 1f; // Breite und Höhe der Hitbox.
|
||||
private boolean deleteEntity; // Wenn true wird dieses Entity von der map gelöscht
|
||||
protected boolean enablePushBack = true; // Ob das Entity von anderen Entities weggedrückt werden kann.
|
||||
|
||||
// Das ist die Ticker-Methode von ea; wird jeden frame ausgeführt (frameloop)
|
||||
@Override
|
||||
@@ -85,14 +86,28 @@ public abstract class Entity implements Ticker {
|
||||
float dist = dist(e);
|
||||
float sizes = esize / 2 + size / 2;
|
||||
if (dist < sizes) {
|
||||
if (enablePushBack && e.enablePushBack) {
|
||||
float overlap = dist - sizes;
|
||||
posX += (overlap * (e.posX - posX));
|
||||
posY += (overlap * (e.posY - posY));
|
||||
float xDist = e.posX - posX;
|
||||
float yDist = e.posY - posY;
|
||||
if (xDist == 0f) {
|
||||
xDist = (float) (Math.random() - 0.5f) * 0.01f;
|
||||
}
|
||||
if (yDist == 0f) {
|
||||
yDist = (float) (Math.random() - 0.5f) * 0.01f;
|
||||
}
|
||||
posX += (overlap * xDist);
|
||||
posY += (overlap * yDist);
|
||||
}
|
||||
onEntityCollision(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onEntityCollision(Entity e) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gehört mit zur collision detection. Hier werden kollisionen aufgelöst.
|
||||
*/
|
||||
@@ -144,7 +159,7 @@ public abstract class Entity implements Ticker {
|
||||
Vektor v = new Vektor(e.posX - posX, e.posY - posY);
|
||||
;
|
||||
if (v.x == 0 && v.y == 0) {
|
||||
return new Vektor(0.0000001f, 0.0000001f);
|
||||
return new Vektor(0.001f, 0.001f);
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import main.Main;
|
||||
import main.Tile;
|
||||
import main.entities.AnimatedEntity;
|
||||
import main.entities.Entity;
|
||||
import main.entities.LivingEntity;
|
||||
import main.entities.player.Player;
|
||||
|
||||
/**
|
||||
@@ -49,8 +48,8 @@ public abstract class Map extends Knoten implements Ticker {
|
||||
for (int i = 0; i < entities.size(); i++) {
|
||||
Entity e = entities.get(i);
|
||||
if (e.isReadyToDelete()) {
|
||||
if (e instanceof LivingEntity) {
|
||||
entfernen(((LivingEntity) e).actionFigur);
|
||||
if (e instanceof AnimatedEntity) {
|
||||
entfernen(((AnimatedEntity) e).actionFigur);
|
||||
}
|
||||
Main.instance.manager.abmelden(e);
|
||||
entities.remove(e);
|
||||
|
||||
@@ -18,7 +18,10 @@ public class TestWorld extends World {
|
||||
getCurrentMap().addAnimatedEntity(s);
|
||||
}
|
||||
|
||||
getCurrentMap().addAnimatedEntity(new Coin());
|
||||
for (int i = 0; i < 15; i++) {
|
||||
Coin c = new Coin();
|
||||
c.setPosX(i * 0.5f + 4);
|
||||
getCurrentMap().addAnimatedEntity(c);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user