Implement simple camp & hunt AI for enemies

This commit is contained in:
2022-08-17 23:45:41 +02:00
parent 8dcbf5a972
commit 1eda877a09
6 changed files with 48 additions and 2 deletions

View File

@@ -13,7 +13,7 @@ import com.bartlomiejpluta.base.lib.animation.*;
import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.database.model.EnemyModel;
import com.bartlomiejpluta.demo.world.weapon.MeleeWeapon;
import com.bartlomiejpluta.demo.world.weapon.*;
import com.bartlomiejpluta.demo.event.EnemyDiedEvent;
import com.bartlomiejpluta.demo.ai.*;
@@ -30,7 +30,16 @@ public class Enemy extends Character implements NPC {
setSpeed(template.getSpeed());
setAnimationSpeed(template.getAnimationSpeed());
setBlocking(template.isBlocking());
setWeapon(new MeleeWeapon(context, ((DemoRunner) context.getGameRunner()).getMeleeWeaponDAO().get(template.getMeleeWeapon())));
var runner = (DemoRunner) context.getGameRunner();
var meleeWeaponTemplate = template.getMeleeWeapon();
var rangedWeaponTemplate = template.getRangedWeapon();
if(meleeWeaponTemplate != null) {
setWeapon(new MeleeWeapon(context, runner.getMeleeWeaponDAO().get(meleeWeaponTemplate)));
} else if(rangedWeaponTemplate != null) {
setWeapon(new RangedWeapon(context, runner.getRangedWeaponDAO().get(rangedWeaponTemplate)));
}
this.dieAnimation = new SimpleAnimationRunner(template.getDieAnimation());
}
@@ -69,4 +78,12 @@ public class Enemy extends Character implements NPC {
return this;
}
public Enemy campAndHunt(Character target, int range) {
var ai = new SimpleSniperAI(this, target, range);
this.ai = ai;
return this;
}
}