Use autogenerated DAOs

This commit is contained in:
2022-08-18 18:56:47 +02:00
parent ffdc9e930a
commit bf04597af6
12 changed files with 29 additions and 184 deletions

View File

@@ -1,40 +0,0 @@
package com.bartlomiejpluta.demo.database.dao;
import java.sql.*;
import java.util.*;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.demo.database.model.EnemyModel;
public class EnemyDAO {
private final Map<String, EnemyModel> enemies = new HashMap<>();
public void init(Context context) {
context.withDatabase(db -> {
var result = db.prepareStatement("SELECT * FROM `enemy`").executeQuery();
while(result.next()) {
var enemy = EnemyModel.builder()
.id(result.getString("id"))
.name(result.getString("name"))
.entitySet(result.getString("entset"))
.deadEntitySet(result.getString("dead_entset"))
.hp(result.getString("hp"))
.speed(result.getFloat("speed"))
.animationSpeed(result.getFloat("animation_speed"))
.blocking(result.getBoolean("blocking"))
.meleeWeapon(result.getString("melee_weapon"))
.rangedWeapon(result.getString("ranged_weapon"))
.dieAnimation(result.getString("die_animation"))
.dieSound(result.getString("die_sound"))
.build();
enemies.put(result.getString("id"), enemy);
}
});
}
public EnemyModel get(String id) {
return enemies.get(id);
}
}

View File

@@ -1,34 +0,0 @@
package com.bartlomiejpluta.demo.database.dao;
import java.sql.*;
import java.util.*;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.demo.database.model.MeleeWeaponModel;
public class MeleeWeaponDAO {
private final Map<String, MeleeWeaponModel> items = new HashMap<>();
public void init(Context context) {
context.withDatabase(db -> {
var result = db.prepareStatement("SELECT * FROM `melee_weapon`").executeQuery();
while(result.next()) {
var weapon = MeleeWeaponModel.builder()
.id(result.getString("id"))
.name(result.getString("name"))
.damage(result.getString("damage"))
.cooldown(result.getInt("cooldown"))
.animation(result.getString("animation"))
.sound(result.getString("sound"))
.build();
items.put(result.getString("id"), weapon);
}
});
}
public MeleeWeaponModel get(String id) {
return items.get(id);
}
}

View File

@@ -1,39 +0,0 @@
package com.bartlomiejpluta.demo.database.dao;
import java.sql.*;
import java.util.*;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.demo.database.model.RangedWeaponModel;
public class RangedWeaponDAO {
private final Map<String, RangedWeaponModel> items = new HashMap<>();
public void init(Context context) {
context.withDatabase(db -> {
var result = db.prepareStatement("SELECT * FROM `ranged_weapon`").executeQuery();
while(result.next()) {
var weapon = RangedWeaponModel.builder()
.id(result.getString("id"))
.name(result.getString("name"))
.damage(result.getString("damage"))
.cooldown(result.getInt("cooldown"))
.animation(result.getString("animation"))
.sound(result.getString("sound"))
.range(result.getString("range"))
.punchAnimation(result.getString("punch_animation"))
.punchSound(result.getString("punch_sound"))
.missAnimation(result.getString("miss_animation"))
.missSound(result.getString("miss_sound"))
.build();
items.put(result.getString("id"), weapon);
}
});
}
public RangedWeaponModel get(String id) {
return items.get(id);
}
}

View File

@@ -1,20 +0,0 @@
package com.bartlomiejpluta.demo.database.model;
import lombok.*;
@Data
@Builder
public class EnemyModel {
private final String id;
private final String name;
private final String entitySet;
private final String deadEntitySet;
private final String hp;
private final float speed;
private final float animationSpeed;
private final boolean blocking;
private final String meleeWeapon;
private final String rangedWeapon;
private final String dieAnimation;
private final String dieSound;
}

View File

@@ -1,14 +0,0 @@
package com.bartlomiejpluta.demo.database.model;
import lombok.*;
@Data
@Builder
public class MeleeWeaponModel {
private final String id;
private final String name;
private final String damage;
private final int cooldown;
private final String animation;
private final String sound;
}

View File

@@ -1,19 +0,0 @@
package com.bartlomiejpluta.demo.database.model;
import lombok.*;
@Data
@Builder
public class RangedWeaponModel {
private final String id;
private final String name;
private final int cooldown;
private final String damage;
private final String animation;
private final String sound;
private final String range;
private final String punchAnimation;
private final String punchSound;
private final String missAnimation;
private final String missSound;
}

View File

@@ -13,7 +13,7 @@ import com.bartlomiejpluta.base.lib.animation.*;
import com.bartlomiejpluta.base.util.random.DiceRoller;
import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.database.model.EnemyModel;
import com.bartlomiejpluta.base.generated.db.model.EnemyModel;
import com.bartlomiejpluta.demo.world.weapon.*;
import com.bartlomiejpluta.demo.event.EnemyDiedEvent;
import com.bartlomiejpluta.demo.ai.*;
@@ -28,7 +28,7 @@ public class Enemy extends Character implements NPC {
private final String name;
public Enemy(@NonNull Context context, @NonNull EnemyModel template) {
super(context, context.createEntity(template.getEntitySet()));
super(context, context.createEntity(template.getEntset()));
this.template = template;
name = template.getName();
maxHp = DiceRoller.of(template.getHp()).roll();
@@ -41,9 +41,9 @@ public class Enemy extends Character implements NPC {
var rangedWeaponTemplate = template.getRangedWeapon();
if(meleeWeaponTemplate != null) {
setWeapon(new MeleeWeapon(context, runner.getMeleeWeaponDAO().get(meleeWeaponTemplate)));
setWeapon(new MeleeWeapon(context, runner.getMeleeWeaponDAO().find(meleeWeaponTemplate)));
} else if(rangedWeaponTemplate != null) {
setWeapon(new RangedWeapon(context, runner.getRangedWeaponDAO().get(rangedWeaponTemplate)));
setWeapon(new RangedWeapon(context, runner.getRangedWeaponDAO().find(rangedWeaponTemplate)));
}
this.dieAnimation = new SimpleAnimationRunner(template.getDieAnimation());
@@ -57,7 +57,7 @@ public class Enemy extends Character implements NPC {
@Override
public void die() {
super.die();
changeEntitySet(template.getDeadEntitySet());
changeEntitySet(template.getDeadEntset());
setScale(0.5f);
setBlocking(false);
setZIndex(-1);

View File

@@ -1,12 +1,12 @@
package com.bartlomiejpluta.demo.entity;
import lombok.*;
import org.slf4j.*;
import org.joml.Vector2i;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.demo.entity.MapObject;
public class Player extends Character {
private static final Logger log = LoggerFactory.getLogger(Player.class);
public Player(@NonNull Context context, @NonNull Entity entity) {
super(context, entity);
@@ -14,6 +14,15 @@ public class Player extends Character {
this.maxHp = 100;
}
public void interact() {
var coords = getCoordinates().add(getFaceDirection().vector, new Vector2i());
for(var entity : getLayer().getEntities()) {
if(entity.getCoordinates().equals(coords) && entity instanceof MapObject) {
((MapObject) entity).interact(this);
}
}
}
@Override
public void die() {
super.die();

View File

@@ -76,7 +76,7 @@ public abstract class BaseMapHandler implements MapHandler {
}
public Enemy enemy(int x, int y, @NonNull String id) {
var enemy = new Enemy(context, runner.getEnemyDAO().get(id));
var enemy = new Enemy(context, runner.getEnemyDAO().find(id));
enemy.setCoordinates(x, y);
mainLayer.addEntity(enemy);
return enemy;

View File

@@ -10,12 +10,14 @@ import com.bartlomiejpluta.base.api.input.Input;
import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.api.runner.GameRunner;
import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.util.profiler.FPSProfiler;
import com.bartlomiejpluta.base.generated.db.dao.*;
import com.bartlomiejpluta.demo.map.ForrestTempleHandler;
import com.bartlomiejpluta.demo.entity.Player;
import com.bartlomiejpluta.demo.menu.MenuManager;
import com.bartlomiejpluta.demo.database.dao.*;
import com.bartlomiejpluta.demo.world.weapon.*;
@@ -27,13 +29,13 @@ public class DemoRunner implements GameRunner {
private GUI hud;
@Getter
private MeleeWeaponDAO meleeWeaponDAO = new MeleeWeaponDAO();
private MeleeWeaponDAO meleeWeaponDAO;
@Getter
private RangedWeaponDAO rangedWeaponDAO = new RangedWeaponDAO();
private RangedWeaponDAO rangedWeaponDAO;
@Getter
private EnemyDAO enemyDAO = new EnemyDAO();
private EnemyDAO enemyDAO;
@Getter
private Player player;
@@ -68,9 +70,9 @@ public class DemoRunner implements GameRunner {
}
private void initDAOs() {
meleeWeaponDAO.init(context);
enemyDAO.init(context);
rangedWeaponDAO.init(context);
meleeWeaponDAO = new MeleeWeaponDAO(context);
enemyDAO = new EnemyDAO(context);
rangedWeaponDAO = new RangedWeaponDAO(context);
}
private void initMenu() {
@@ -95,7 +97,7 @@ public class DemoRunner implements GameRunner {
this.player.setAnimationSpeed(0.005f);
this.player.setBlocking(true);
this.player.setCoordinates(0, 11);
this.player.setWeapon(new RangedWeapon(context, rangedWeaponDAO.get("wooden_bow")));
this.player.setWeapon(new RangedWeapon(context, rangedWeaponDAO.find("wooden_bow")));
}
public void newGame() {

View File

@@ -8,7 +8,7 @@ import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.lib.animation.*;
import com.bartlomiejpluta.base.util.random.DiceRoller;
import com.bartlomiejpluta.demo.database.model.MeleeWeaponModel;
import com.bartlomiejpluta.base.generated.db.model.MeleeWeaponModel;
import com.bartlomiejpluta.demo.entity.Character;
import com.bartlomiejpluta.demo.event.HitEvent;

View File

@@ -10,7 +10,7 @@ import com.bartlomiejpluta.base.api.move.*;
import com.bartlomiejpluta.base.lib.animation.*;
import com.bartlomiejpluta.base.util.random.DiceRoller;
import com.bartlomiejpluta.demo.database.model.RangedWeaponModel;
import com.bartlomiejpluta.base.generated.db.model.RangedWeaponModel;
import com.bartlomiejpluta.demo.entity.Character;
import com.bartlomiejpluta.demo.event.HitEvent;