Erste Schadensverrechnung bei Kollision.
This commit is contained in:
parent
c772ec9b8f
commit
a1545b9c30
@ -5,8 +5,10 @@ import java.util.LinkedList;
|
|||||||
|
|
||||||
import de.teamteamteam.spacescooter.screen.Screen;
|
import de.teamteamteam.spacescooter.screen.Screen;
|
||||||
|
|
||||||
public abstract class CollidableEntity extends Entity implements Collidable{
|
public abstract class CollidableEntity extends LivingEntity implements Collidable{
|
||||||
|
|
||||||
|
private int collisionDamage;
|
||||||
|
|
||||||
public CollidableEntity(int x, int y) {
|
public CollidableEntity(int x, int y) {
|
||||||
super(x, y);
|
super(x, y);
|
||||||
}
|
}
|
||||||
@ -27,4 +29,32 @@ public abstract class CollidableEntity extends Entity implements Collidable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle collisions based on what we collide with.
|
||||||
|
*/
|
||||||
|
public void collideWith(Collidable entity) {
|
||||||
|
if(entity instanceof Shot) {
|
||||||
|
Shot s = (Shot) entity;
|
||||||
|
this.takeDamage(s.getDamageValue());
|
||||||
|
}
|
||||||
|
if(entity instanceof Enemy) {
|
||||||
|
//We take the collision damage from the enemy
|
||||||
|
Enemy enemy = (Enemy) entity;
|
||||||
|
this.takeDamage(enemy.getCollisionDamage());
|
||||||
|
}
|
||||||
|
if(entity instanceof Player) {
|
||||||
|
//We take the collision damage from the enemy
|
||||||
|
Player player = (Player) entity;
|
||||||
|
this.takeDamage(player.getCollisionDamage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setCollisionDamage(int d) {
|
||||||
|
this.collisionDamage = d;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCollisionDamage() {
|
||||||
|
return this.collisionDamage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,14 +20,6 @@ public abstract class Enemy extends ShootingEntity {
|
|||||||
if(willShoot == true)
|
if(willShoot == true)
|
||||||
this.shoot();
|
this.shoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void collideWith(Collidable e) {
|
|
||||||
if(e instanceof Shot) {
|
|
||||||
Shot s = (Shot) e;
|
|
||||||
//TODO: Expand with shield logic and stuff.
|
|
||||||
this.healthPoints -= s.getDamageValue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ public class EnemyOne extends Enemy {
|
|||||||
this.setImage(EnemyOne.img);
|
this.setImage(EnemyOne.img);
|
||||||
this.setShootSpeed(2);
|
this.setShootSpeed(2);
|
||||||
this.setShootDelay(42);
|
this.setShootDelay(42);
|
||||||
this.setShootSpawn(0, 32);
|
this.setShootSpawn(-17, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,15 +1,43 @@
|
|||||||
package de.teamteamteam.spacescooter.entity;
|
package de.teamteamteam.spacescooter.entity;
|
||||||
|
|
||||||
public abstract class LivingEntity extends CollidableEntity {
|
import de.teamteamteam.spacescooter.screen.Screen;
|
||||||
|
|
||||||
|
public abstract class LivingEntity extends Entity {
|
||||||
|
|
||||||
public LivingEntity(int x, int y) {
|
public LivingEntity(int x, int y) {
|
||||||
super(x, y);
|
super(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int healthPoints;
|
private int healthPoints;
|
||||||
protected int shieldPoints;
|
private int shieldPoints;
|
||||||
|
|
||||||
public boolean isAlive() {
|
public boolean isAlive() {
|
||||||
return healthPoints > 0;
|
return healthPoints > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void takeDamage(int damage) {
|
||||||
|
//TODO: shield and health logic
|
||||||
|
this.healthPoints -= damage;
|
||||||
|
if(this.isAlive() == false) {
|
||||||
|
System.out.println(this + " ist gestorben. RIP");
|
||||||
|
Screen.currentScreen.removeEntity(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHealthPoints(int hp) {
|
||||||
|
this.healthPoints = hp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHealthPoints() {
|
||||||
|
return this.healthPoints;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShieldPoints(int sp) {
|
||||||
|
this.shieldPoints = sp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getShieldPoints() {
|
||||||
|
return this.shieldPoints;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ public class Player extends ShootingEntity {
|
|||||||
super(x, y);
|
super(x, y);
|
||||||
this.setImage(Player.img);
|
this.setImage(Player.img);
|
||||||
this.setShootDelay(40);
|
this.setShootDelay(40);
|
||||||
this.setShootSpawn(32, 16);
|
this.setShootSpawn(50, 16);
|
||||||
this.setShootDirection(Shot.RIGHT);
|
this.setShootDirection(Shot.RIGHT);
|
||||||
this.setShootSpeed(2);
|
this.setShootSpeed(2);
|
||||||
}
|
}
|
||||||
@ -50,14 +50,4 @@ public class Player extends ShootingEntity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void collideWith(Collidable entity) {
|
|
||||||
if(entity instanceof Shot) {
|
|
||||||
System.out.println("Player Kollision mit Schuss!");
|
|
||||||
}
|
|
||||||
if(entity instanceof Enemy) {
|
|
||||||
System.out.println("Player Kollision mit Feind!");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package de.teamteamteam.spacescooter.entity;
|
|||||||
|
|
||||||
import de.teamteamteam.spacescooter.screen.Screen;
|
import de.teamteamteam.spacescooter.screen.Screen;
|
||||||
|
|
||||||
public abstract class ShootingEntity extends LivingEntity {
|
public abstract class ShootingEntity extends CollidableEntity {
|
||||||
|
|
||||||
private int shootDelay;
|
private int shootDelay;
|
||||||
private int currentShootDelay;
|
private int currentShootDelay;
|
||||||
|
@ -26,7 +26,7 @@ public class GameScreen extends Screen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void paint(Graphics g) {
|
protected void paint(Graphics g) {
|
||||||
LinkedList<Entity> list = new LinkedList<Entity>(this.entities);
|
LinkedList<Entity> list = this.getEntities();
|
||||||
Iterator<Entity> i = list.iterator();
|
Iterator<Entity> i = list.iterator();
|
||||||
while (i.hasNext()) {
|
while (i.hasNext()) {
|
||||||
i.next().paint(g);
|
i.next().paint(g);
|
||||||
@ -35,7 +35,7 @@ public class GameScreen extends Screen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void update() {
|
protected void update() {
|
||||||
LinkedList<Entity> list = new LinkedList<Entity>(this.entities);
|
LinkedList<Entity> list = this.getEntities();
|
||||||
Iterator<Entity> i = list.iterator();
|
Iterator<Entity> i = list.iterator();
|
||||||
while (i.hasNext()) {
|
while (i.hasNext()) {
|
||||||
i.next().update();
|
i.next().update();
|
||||||
|
@ -24,12 +24,12 @@ public abstract class Screen {
|
|||||||
this.entities.add(e);
|
this.entities.add(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void removeEntity(Entity e) {
|
public void removeEntity(Entity e) {
|
||||||
this.entities.remove(e);
|
this.entities.remove(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LinkedList<Entity> getEntities() {
|
public LinkedList<Entity> getEntities() {
|
||||||
return this.entities;
|
return new LinkedList<Entity>(this.entities);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void paint(Graphics g);
|
protected abstract void paint(Graphics g);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user