Create enemies system

This commit is contained in:
2022-08-17 17:44:09 +02:00
parent bbf0109080
commit 620970fb10
9 changed files with 103 additions and 4 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -2,7 +2,8 @@
BASE Demo*com.bartlomiejpluta.demo.runner.DemoRunner`
$f845355e-b9ad-4884-a217-dd3a4c18a3fa(f845355e-b9ad-4884-a217-dd3a4c18a3fa.datForrest Temple"d
$d314b030-f865-432e-a356-3845f8aac7bc(d314b030-f865-432e-a356-3845f8aac7bc.pngForrest Temple ](2Z
$815a5c5c-4979-42f5-a42a-ccbbff9a97e5(815a5c5c-4979-42f5-a42a-ccbbff9a97e5.pngLuna (:`
$815a5c5c-4979-42f5-a42a-ccbbff9a97e5(815a5c5c-4979-42f5-a42a-ccbbff9a97e5.pngLuna (2Z
$cb4c89a7-a421-49ea-8c58-571e9b215d37(cb4c89a7-a421-49ea-8c58-571e9b215d37.pngDeku (:`
$2261c04f-b02e-4486-b388-8a0fa41622e9(2261c04f-b02e-4486-b388-8a0fa41622e9.ttfRoboto RegularB\
$ab9d40b4-eb28-45d7-bff2-9432a05eb41a(ab9d40b4-eb28-45d7-bff2-9432a05eb41a.xml
Start MenuB[

View File

@@ -0,0 +1,35 @@
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"))
.speed(result.getFloat("speed"))
.animationSpeed(result.getFloat("animation_speed"))
.blocking(result.getBoolean("blocking"))
.meleeWeapon(result.getString("melee_weapon"))
.build();
enemies.put(result.getString("id"), enemy);
}
});
}
public EnemyModel get(String id) {
return enemies.get(id);
}
}

View File

@@ -0,0 +1,15 @@
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 float speed;
private final float animationSpeed;
private final boolean blocking;
private final String meleeWeapon;
}

View File

@@ -0,0 +1,37 @@
package com.bartlomiejpluta.demo.entity;
import lombok.*;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.api.ai.AI;
import com.bartlomiejpluta.base.api.ai.NPC;
import com.bartlomiejpluta.base.lib.ai.NoopAI;
import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.database.model.EnemyModel;
import com.bartlomiejpluta.demo.world.weapon.MeleeWeapon;
public class Enemy extends Character implements NPC {
private final EnemyModel template;
public Enemy(@NonNull Context context, @NonNull EnemyModel template) {
super(context, context.createEntity(template.getEntitySet()));
this.template = template;
setSpeed(template.getSpeed());
setAnimationSpeed(template.getAnimationSpeed());
setBlocking(template.isBlocking());
setWeapon(new MeleeWeapon(((DemoRunner) context.getGameRunner()).getMeleeWeaponDAO().get(template.getMeleeWeapon())));
}
@Override
public AI getStrategy() {
return NoopAI.INSTANCE;
}
@Override
public String toString() {
return template.getName() + "@" + hashCode();
}
}

View File

@@ -1,5 +1,7 @@
package com.bartlomiejpluta.demo.map;
import lombok.*;
import com.bartlomiejpluta.base.api.map.handler.MapHandler;
import com.bartlomiejpluta.base.api.map.model.GameMap;
import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
@@ -12,8 +14,7 @@ import com.bartlomiejpluta.base.api.input.*;
import com.bartlomiejpluta.base.lib.camera.*;
import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.entity.Player;
import com.bartlomiejpluta.demo.entity.Character;
import com.bartlomiejpluta.demo.entity.*;
public abstract class BaseMapHandler implements MapHandler {
protected Screen screen;
@@ -73,4 +74,10 @@ public abstract class BaseMapHandler implements MapHandler {
public void update(Context context, GameMap map, float dt) {
cameraController.update();
}
public void enemy(int x, int y, @NonNull String id) {
var enemy = new Enemy(context, runner.getEnemyDAO().get(id));
enemy.setCoordinates(x, y);
mainLayer.addEntity(enemy);
}
}

View File

@@ -13,7 +13,7 @@ import com.bartlomiejpluta.base.api.runner.GameRunner;
import com.bartlomiejpluta.demo.map.ForrestTempleHandler;
import com.bartlomiejpluta.demo.entity.Player;
import com.bartlomiejpluta.demo.menu.MenuManager;
import com.bartlomiejpluta.demo.database.dao.MeleeWeaponDAO;
import com.bartlomiejpluta.demo.database.dao.*;
import com.bartlomiejpluta.demo.world.weapon.MeleeWeapon;
@@ -26,6 +26,9 @@ public class DemoRunner implements GameRunner {
@Getter
private MeleeWeaponDAO meleeWeaponDAO = new MeleeWeaponDAO();
@Getter
private EnemyDAO enemyDAO = new EnemyDAO();
@Getter
private Player player;
@@ -57,6 +60,7 @@ public class DemoRunner implements GameRunner {
private void initDAOs() {
meleeWeaponDAO.init(context);
enemyDAO.init(context);
}
private void initMenu() {