Apply BASE engine refactor

This commit is contained in:
2022-08-22 22:59:41 +02:00
parent 1253139bfe
commit 933608b753
29 changed files with 99 additions and 99 deletions

View File

@@ -0,0 +1,83 @@
package com.bartlomiejpluta.demo.entity;
import lombok.*;
import org.slf4j.*;
import org.joml.Vector2i;
import com.bartlomiejpluta.base.api.context.*;
import com.bartlomiejpluta.base.api.character.Character;
import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.lib.animation.AnimationRunner;
import com.bartlomiejpluta.demo.world.weapon.Weapon;
public abstract class Creature extends NamedCharacter {
private static final Logger log = LoggerFactory.getLogger(Creature.class);
protected int attackCooldown = 0;
@Getter
protected boolean alive = true;
@Getter
protected boolean immortal = false;
@Getter
protected int maxHp;
@Getter
protected int hp;
@Getter
@Setter
private Weapon weapon;
@Getter
private NamedCharacter lastAttacker;
public Creature(@NonNull Character entity) {
super(entity);
}
public void attack() {
if(weapon == null) {
return;
}
if(attackCooldown >= weapon.getCooldown()) {
if(weapon.attack(this)) {
attackCooldown = 0;
}
}
}
public void hit(NamedCharacter source, int dmg) {
this.lastAttacker = source;
if(immortal) {
return;
}
hp -= dmg;
}
@Override
public void update(float dt) {
super.update(dt);
if(weapon != null && attackCooldown < weapon.getCooldown()) {
attackCooldown += (int) (dt * 1000f);
}
if(hp <= 0 && alive && getLayer() != null) {
alive = false;
die();
}
}
protected void die() {
}
public abstract String getName();
}