Use autogenerated DAOs
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user