Apply BASE engine improvemenst #2

This commit is contained in:
2022-08-22 17:58:23 +02:00
parent d51a425b28
commit 1253139bfe
10 changed files with 52 additions and 31 deletions

Binary file not shown.

View File

@@ -3,17 +3,14 @@ package com.bartlomiejpluta.demo.entity;
import lombok.*; import lombok.*;
import org.slf4j.*; import org.slf4j.*;
import org.joml.Vector2i; import org.joml.Vector2i;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.*;
import com.bartlomiejpluta.base.api.entity.Entity; import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.lib.animation.AnimationRunner; import com.bartlomiejpluta.base.lib.animation.AnimationRunner;
import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.world.weapon.Weapon; import com.bartlomiejpluta.demo.world.weapon.Weapon;
public abstract class Character extends NamedEntity { public abstract class Character extends NamedEntity {
private static final Logger log = LoggerFactory.getLogger(Character.class); private static final Logger log = LoggerFactory.getLogger(Character.class);
protected final Context context;
protected final DemoRunner runner;
protected int attackCooldown = 0; protected int attackCooldown = 0;
@@ -36,10 +33,8 @@ public abstract class Character extends NamedEntity {
@Getter @Getter
private NamedEntity lastAttacker; private NamedEntity lastAttacker;
public Character(@NonNull Context context, @NonNull Entity entity) { public Character(@NonNull Entity entity) {
super(entity); super(entity);
this.context = context;
this.runner = (DemoRunner) context.getGameRunner();
} }
public void attack() { public void attack() {

View File

@@ -2,7 +2,7 @@ package com.bartlomiejpluta.demo.entity;
import lombok.*; import lombok.*;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.*;
import com.bartlomiejpluta.base.api.entity.Entity; import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.api.ai.AI; import com.bartlomiejpluta.base.api.ai.AI;
import com.bartlomiejpluta.base.api.ai.NPC; import com.bartlomiejpluta.base.api.ai.NPC;
@@ -33,8 +33,12 @@ public class Enemy extends Character implements NPC {
@Getter @Getter
private final String name; private final String name;
public Enemy(@NonNull Context context, @NonNull DB.model.EnemyModel template) { public Enemy(@NonNull String id) {
super(context, context.createEntity(template.getEntset())); this(DB.dao.enemy.find(id));
}
public Enemy(@NonNull DB.model.EnemyModel template) {
super(ContextHolder.INSTANCE.getContext().createEntity(template.getEntset()));
this.template = template; this.template = template;
name = template.getName(); name = template.getName();
maxHp = DiceRoller.of(template.getHp()).roll(); maxHp = DiceRoller.of(template.getHp()).roll();
@@ -47,11 +51,11 @@ public class Enemy extends Character implements NPC {
var rangedWeaponTemplate = template.getRangedWeapon(); var rangedWeaponTemplate = template.getRangedWeapon();
if(meleeWeaponTemplate != null) { if(meleeWeaponTemplate != null) {
this.meleeWeapon = new MeleeWeapon(context, DB.dao.melee_weapon.find(meleeWeaponTemplate)); this.meleeWeapon = new MeleeWeapon(meleeWeaponTemplate);
} }
if(rangedWeaponTemplate != null) { if(rangedWeaponTemplate != null) {
this.rangedWeapon = new RangedWeapon(context, DB.dao.ranged_weapon.find(rangedWeaponTemplate)); this.rangedWeapon = new RangedWeapon(rangedWeaponTemplate);
} }
this.dieAnimation = new SimpleAnimationRunner(template.getDieAnimation()); this.dieAnimation = new SimpleAnimationRunner(template.getDieAnimation());

View File

@@ -2,26 +2,33 @@ package com.bartlomiejpluta.demo.entity;
import lombok.*; import lombok.*;
import com.bartlomiejpluta.base.api.entity.Entity; import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.*;
import com.bartlomiejpluta.base.api.move.*; import com.bartlomiejpluta.base.api.move.*;
import com.bartlomiejpluta.base.lib.entity.EntityDelegate; import com.bartlomiejpluta.base.lib.entity.EntityDelegate;
import com.bartlomiejpluta.base.util.path.*; import com.bartlomiejpluta.base.util.path.*;
import com.bartlomiejpluta.demo.entity.Character; import com.bartlomiejpluta.demo.entity.Character;
public class MapObject extends EntityDelegate { public class MapObject extends NamedEntity {
private final PathExecutor<MapObject> pathExecutor = new PathExecutor<>(this); private final PathExecutor<MapObject> pathExecutor = new PathExecutor<>(this);
private final Context context;
private final DB.model.MapObjectModel template; private final DB.model.MapObjectModel template;
private final Short frame; private final Short frame;
private final String interactSound; private final String interactSound;
@Getter
private final String name;
private boolean interacting = false; private boolean interacting = false;
public MapObject(@NonNull Context context, @NonNull DB.model.MapObjectModel template) { public MapObject(@NonNull String id) {
super(context.createEntity(template.getEntset())); this(DB.dao.map_object.find(id));
this.context = context; }
public MapObject(@NonNull DB.model.MapObjectModel template) {
super(ContextHolder.INSTANCE.getContext().createEntity(template.getEntset()));
this.template = template; this.template = template;
this.frame = template.getFrame(); this.frame = template.getFrame();
this.name = template.getName();
this.interactSound = template.getInteractSound(); this.interactSound = template.getInteractSound();
setBlocking(true); setBlocking(true);

View File

@@ -1,12 +1,19 @@
package com.bartlomiejpluta.demo.entity; package com.bartlomiejpluta.demo.entity;
import com.bartlomiejpluta.base.api.context.*;
import com.bartlomiejpluta.base.api.entity.Entity; import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.lib.entity.EntityDelegate; import com.bartlomiejpluta.base.lib.entity.EntityDelegate;
import com.bartlomiejpluta.demo.runner.DemoRunner;
public abstract class NamedEntity extends EntityDelegate { public abstract class NamedEntity extends EntityDelegate {
protected final Context context;
protected final DemoRunner runner;
public NamedEntity(Entity entity) { public NamedEntity(Entity entity) {
super(entity); super(entity);
this.context = ContextHolder.INSTANCE.getContext();
this.runner = (DemoRunner) context.getGameRunner();
} }
public abstract String getName(); public abstract String getName();

View File

@@ -8,8 +8,8 @@ import com.bartlomiejpluta.demo.entity.MapObject;
public class Player extends Character { public class Player extends Character {
public Player(@NonNull Context context, @NonNull Entity entity) { public Player(@NonNull Entity entity) {
super(context, entity); super(entity);
this.hp = 500; this.hp = 500;
this.maxHp = 500; this.maxHp = 500;
} }

View File

@@ -94,18 +94,18 @@ public abstract class BaseMapHandler implements MapHandler {
} }
public Enemy enemy(@NonNull String id) { public Enemy enemy(@NonNull String id) {
return new Enemy(context, DB.dao.enemy.find(id)); return new Enemy(id);
} }
public Enemy enemy(int x, int y, @NonNull String id) { public Enemy enemy(int x, int y, @NonNull String id) {
var enemy = new Enemy(context, DB.dao.enemy.find(id)); var enemy = new Enemy(id);
enemy.setCoordinates(x, y); enemy.setCoordinates(x, y);
mainLayer.addEntity(enemy); mainLayer.addEntity(enemy);
return enemy; return enemy;
} }
public MapObject object(int x, int y, @NonNull String id) { public MapObject object(int x, int y, @NonNull String id) {
var object = new MapObject(context, DB.dao.map_object.find(id)); var object = new MapObject(id);
object.setCoordinates(x, y); object.setCoordinates(x, y);
mainLayer.addEntity(object); mainLayer.addEntity(object);
return object; return object;

View File

@@ -70,7 +70,7 @@ public class DemoRunner implements GameRunner {
} }
private void initPlayer() { private void initPlayer() {
this.player = new Player(context, context.createEntity(A.entsets.luna.uid)); this.player = new Player(context.createEntity(A.entsets.luna.uid));
} }
private void resetPlayer() { private void resetPlayer() {
@@ -80,7 +80,7 @@ public class DemoRunner implements GameRunner {
this.player.setAnimationSpeed(0.005f); this.player.setAnimationSpeed(0.005f);
this.player.setBlocking(true); this.player.setBlocking(true);
this.player.setCoordinates(0, 11); this.player.setCoordinates(0, 11);
this.player.setWeapon(new RangedWeapon(context, DB.dao.ranged_weapon.find("wooden_bow"))); this.player.setWeapon(new RangedWeapon("wooden_bow"));
} }
public void newGame() { public void newGame() {

View File

@@ -4,7 +4,7 @@ import java.util.Random;
import lombok.*; import lombok.*;
import org.joml.Vector2i; import org.joml.Vector2i;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.*;
import com.bartlomiejpluta.base.lib.animation.*; import com.bartlomiejpluta.base.lib.animation.*;
import com.bartlomiejpluta.base.util.random.DiceRoller; import com.bartlomiejpluta.base.util.random.DiceRoller;
@@ -25,8 +25,12 @@ public class MeleeWeapon implements Weapon {
@Getter @Getter
private int cooldown; private int cooldown;
public MeleeWeapon(@NonNull Context context, @NonNull DB.model.MeleeWeaponModel template) { public MeleeWeapon(@NonNull String id) {
this.context = context; this(DB.dao.melee_weapon.find(id));
}
public MeleeWeapon(@NonNull DB.model.MeleeWeaponModel template) {
this.context = ContextHolder.INSTANCE.getContext();
this.name = template.getName(); this.name = template.getName();
this.roller = DiceRoller.of(template.getDamage()); this.roller = DiceRoller.of(template.getDamage());
this.cooldown = template.getCooldown(); this.cooldown = template.getCooldown();

View File

@@ -3,7 +3,7 @@ package com.bartlomiejpluta.demo.world.weapon;
import java.util.Random; import java.util.Random;
import lombok.*; import lombok.*;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.*;
import com.bartlomiejpluta.base.api.entity.Entity; import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.api.animation.Animation; import com.bartlomiejpluta.base.api.animation.Animation;
import com.bartlomiejpluta.base.api.move.*; import com.bartlomiejpluta.base.api.move.*;
@@ -33,8 +33,12 @@ public class RangedWeapon implements Weapon {
@Getter @Getter
private int cooldown; private int cooldown;
public RangedWeapon(@NonNull Context context, @NonNull DB.model.RangedWeaponModel template) { public RangedWeapon(@NonNull String id) {
this.context = context; this(DB.dao.ranged_weapon.find(id));
}
public RangedWeapon(@NonNull DB.model.RangedWeaponModel template) {
this.context = ContextHolder.INSTANCE.getContext();
this.name = template.getName(); this.name = template.getName();
this.dmgRoller = DiceRoller.of(template.getDamage()); this.dmgRoller = DiceRoller.of(template.getDamage());
this.rangeRoller = DiceRoller.of(template.getRange()); this.rangeRoller = DiceRoller.of(template.getRange());