Perform general code cleaning & refactoring

This commit is contained in:
2022-08-25 12:27:24 +02:00
parent 4f7c6c6dc3
commit 8946297bd9
28 changed files with 1056 additions and 1091 deletions

View File

@@ -1,13 +1,11 @@
package com.bartlomiejpluta.demo.ai; package com.bartlomiejpluta.demo.ai;
import lombok.*; import com.bartlomiejpluta.base.api.ai.AI;
import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
import com.bartlomiejpluta.base.api.ai.*; import com.bartlomiejpluta.base.lib.ai.RandomMovementAI;
import com.bartlomiejpluta.base.api.move.Direction; import com.bartlomiejpluta.base.lib.ai.RunawayAI;
import com.bartlomiejpluta.base.lib.ai.*;
import com.bartlomiejpluta.demo.entity.Enemy;
import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.entity.Creature;
import com.bartlomiejpluta.demo.entity.Enemy;
public class AnimalAI implements AI { public class AnimalAI implements AI {
private final Enemy animal; private final Enemy animal;
@@ -26,13 +24,13 @@ public class AnimalAI implements AI {
@Override @Override
public void nextActivity(ObjectLayer layer, float dt) { public void nextActivity(ObjectLayer layer, float dt) {
if(animal.isMoving()) { if (animal.isMoving()) {
return; return;
} }
var distance = animal.manhattanDistance(creature); var distance = animal.manhattanDistance(creature);
if(animal.getHp() < animal.getMaxHp() && distance < range) { if (animal.getHp() < animal.getMaxHp() && distance < range) {
runawayAI.nextActivity(layer, dt); runawayAI.nextActivity(layer, dt);
return; return;
} }

View File

@@ -1,23 +1,12 @@
package com.bartlomiejpluta.demo.ai; package com.bartlomiejpluta.demo.ai;
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.entity.Entity;
import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
import com.bartlomiejpluta.base.api.move.MoveEvent;
import com.bartlomiejpluta.base.lib.ai.KeepStraightDistanceAI; import com.bartlomiejpluta.base.lib.ai.KeepStraightDistanceAI;
import com.bartlomiejpluta.base.lib.ai.RandomMovementAI; import com.bartlomiejpluta.base.lib.ai.RandomMovementAI;
import com.bartlomiejpluta.base.util.path.MovementPath;
import com.bartlomiejpluta.base.util.path.PathExecutor;
import com.bartlomiejpluta.base.util.pathfinder.AstarPathFinder; import com.bartlomiejpluta.base.util.pathfinder.AstarPathFinder;
import com.bartlomiejpluta.base.util.pathfinder.PathFinder;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.joml.Vector2i;
import org.joml.Vector2ic;
import com.bartlomiejpluta.demo.entity.Enemy;
import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.entity.Creature;
import com.bartlomiejpluta.demo.entity.Enemy;
public class ArcherAI extends KeepStraightDistanceAI<Enemy, Creature> { public class ArcherAI extends KeepStraightDistanceAI<Enemy, Creature> {
private static final int ASTAR_MAX_NODES = 100; private static final int ASTAR_MAX_NODES = 100;

View File

@@ -1,13 +1,12 @@
package com.bartlomiejpluta.demo.ai; package com.bartlomiejpluta.demo.ai;
import com.bartlomiejpluta.base.api.ai.AI;
import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
import com.bartlomiejpluta.base.lib.ai.FollowObjectAI;
import com.bartlomiejpluta.base.util.pathfinder.*; import com.bartlomiejpluta.base.lib.ai.RandomMovementAI;
import com.bartlomiejpluta.base.api.ai.*; import com.bartlomiejpluta.base.util.pathfinder.AstarPathFinder;
import com.bartlomiejpluta.base.lib.ai.*;
import com.bartlomiejpluta.demo.entity.Enemy;
import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.entity.Creature;
import com.bartlomiejpluta.demo.entity.Enemy;
public class SimpleEnemyAI extends FollowObjectAI<Enemy, Creature> { public class SimpleEnemyAI extends FollowObjectAI<Enemy, Creature> {
private static final int ASTAR_MAX_NODES = 100; private static final int ASTAR_MAX_NODES = 100;

View File

@@ -1,12 +1,10 @@
package com.bartlomiejpluta.demo.ai; package com.bartlomiejpluta.demo.ai;
import lombok.*; import com.bartlomiejpluta.base.api.ai.AI;
import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
import com.bartlomiejpluta.base.api.ai.*;
import com.bartlomiejpluta.base.lib.ai.*;
import com.bartlomiejpluta.demo.entity.Enemy;
import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.entity.Creature;
import com.bartlomiejpluta.demo.entity.Enemy;
import lombok.AllArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
public class SimpleSniperAI implements AI { public class SimpleSniperAI implements AI {
@@ -18,7 +16,7 @@ public class SimpleSniperAI implements AI {
public void nextActivity(ObjectLayer layer, float dt) { public void nextActivity(ObjectLayer layer, float dt) {
var enemyCoords = enemy.getCoordinates(); var enemyCoords = enemy.getCoordinates();
var targetCoords = target.getCoordinates(); var targetCoords = target.getCoordinates();
if(enemy.manhattanDistance(target) <= range && (enemyCoords.x() == targetCoords.x() || enemyCoords.y() == targetCoords.y())) { if (enemy.manhattanDistance(target) <= range && (enemyCoords.x() == targetCoords.x() || enemyCoords.y() == targetCoords.y())) {
var direction = enemy.getDirectionTowards(target); var direction = enemy.getDirectionTowards(target);
enemy.setFaceDirection(direction); enemy.setFaceDirection(direction);
enemy.attack(); enemy.attack();

View File

@@ -1,14 +1,13 @@
package com.bartlomiejpluta.demo.ai; package com.bartlomiejpluta.demo.ai;
import lombok.*;
import com.bartlomiejpluta.base.api.ai.AI; import com.bartlomiejpluta.base.api.ai.AI;
import com.bartlomiejpluta.base.api.move.MoveEvent;
import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
import com.bartlomiejpluta.base.lib.ai.*; import com.bartlomiejpluta.base.api.move.MoveEvent;
import com.bartlomiejpluta.base.lib.ai.RunawayAI;
import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.entity.Creature;
import com.bartlomiejpluta.demo.entity.Enemy; import com.bartlomiejpluta.demo.entity.Enemy;
import com.bartlomiejpluta.demo.world.weapon.*; import com.bartlomiejpluta.demo.world.weapon.MeleeWeapon;
import lombok.NonNull;
public class WeaponBasedAI implements AI { public class WeaponBasedAI implements AI {
private static final int RANGE = 10; private static final int RANGE = 10;
@@ -41,9 +40,9 @@ public class WeaponBasedAI implements AI {
@Override @Override
public void nextActivity(ObjectLayer layer, float dt) { public void nextActivity(ObjectLayer layer, float dt) {
var lastAttacker = enemy.getLastAttacker(); var lastAttacker = enemy.getLastAttacker();
if(lastAttacker != null && lastAttacker instanceof Creature) { if (lastAttacker != null && lastAttacker instanceof Creature) {
var attacker = (Creature) lastAttacker; var attacker = (Creature) lastAttacker;
if(attacker.isAlive()) { if (attacker.isAlive()) {
runawayAI.setDanger(attacker); runawayAI.setDanger(attacker);
meleeAI.setTarget(attacker); meleeAI.setTarget(attacker);
archerAI.setTarget(attacker); archerAI.setTarget(attacker);
@@ -57,18 +56,18 @@ public class WeaponBasedAI implements AI {
var meleeWeapon = enemy.getMeleeWeapon(); var meleeWeapon = enemy.getMeleeWeapon();
var rangedWeapon = enemy.getRangedWeapon(); var rangedWeapon = enemy.getRangedWeapon();
if(meleeWeapon == null && rangedWeapon == null) { if (meleeWeapon == null && rangedWeapon == null) {
runawayAI.nextActivity(layer, dt); runawayAI.nextActivity(layer, dt);
return; return;
} }
if(rangedWeapon == null || enemy.manhattanDistance(target) == 1) { if (rangedWeapon == null || enemy.manhattanDistance(target) == 1) {
enemy.setWeapon(meleeWeapon); enemy.setWeapon(meleeWeapon);
meleeAI.nextActivity(layer, dt); meleeAI.nextActivity(layer, dt);
return; return;
} }
if(enemy.getWeapon() instanceof MeleeWeapon) { if (enemy.getWeapon() instanceof MeleeWeapon) {
meleeAI.nextActivity(layer, dt); meleeAI.nextActivity(layer, dt);
} }

View File

@@ -1,15 +1,12 @@
package com.bartlomiejpluta.demo.entity; package com.bartlomiejpluta.demo.entity;
import lombok.*;
import org.slf4j.*;
import org.joml.Vector2i;
import com.bartlomiejpluta.base.api.context.*;
import com.bartlomiejpluta.base.api.character.Character; import com.bartlomiejpluta.base.api.character.Character;
import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.lib.animation.AnimationRunner;
import com.bartlomiejpluta.demo.world.weapon.Weapon; import com.bartlomiejpluta.demo.world.weapon.Weapon;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class Creature extends NamedCharacter { public abstract class Creature extends NamedCharacter {
private static final Logger log = LoggerFactory.getLogger(Creature.class); private static final Logger log = LoggerFactory.getLogger(Creature.class);
@@ -40,12 +37,12 @@ public abstract class Creature extends NamedCharacter {
} }
public void attack() { public void attack() {
if(weapon == null) { if (weapon == null) {
return; return;
} }
if(attackCooldown >= weapon.getCooldown()) { if (attackCooldown >= weapon.getCooldown()) {
if(weapon.attack(this)) { if (weapon.attack(this)) {
attackCooldown = 0; attackCooldown = 0;
} }
} }
@@ -54,7 +51,7 @@ public abstract class Creature extends NamedCharacter {
public void hit(NamedCharacter source, int dmg) { public void hit(NamedCharacter source, int dmg) {
this.lastAttacker = source; this.lastAttacker = source;
if(immortal) { if (immortal) {
return; return;
} }
@@ -65,18 +62,18 @@ public abstract class Creature extends NamedCharacter {
public void update(float dt) { public void update(float dt) {
super.update(dt); super.update(dt);
if(weapon != null && attackCooldown < weapon.getCooldown()) { if (weapon != null && attackCooldown < weapon.getCooldown()) {
attackCooldown += (int) (dt * 1000f); attackCooldown += (int) (dt * 1000f);
} }
if(hp <= 0 && alive && getLayer() != null) { if (hp <= 0 && alive && getLayer() != null) {
alive = false; alive = false;
die(); die();
} }
} }
protected void die() { protected void die() {
if(isMoving()) { if (isMoving()) {
abortMove(); abortMove();
} }
} }

View File

@@ -1,39 +1,32 @@
package com.bartlomiejpluta.demo.entity; package com.bartlomiejpluta.demo.entity;
import lombok.*;
import com.bartlomiejpluta.base.api.context.*;
import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.api.character.Character;
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;
import com.bartlomiejpluta.base.api.move.*; import com.bartlomiejpluta.base.api.context.ContextHolder;
import com.bartlomiejpluta.base.api.move.MoveEvent;
import com.bartlomiejpluta.base.lib.ai.*; import com.bartlomiejpluta.base.lib.ai.NoopAI;
import com.bartlomiejpluta.base.lib.animation.*; import com.bartlomiejpluta.base.lib.animation.AnimationRunner;
import com.bartlomiejpluta.base.lib.animation.SimpleAnimationRunner;
import com.bartlomiejpluta.base.util.random.DiceRoller; import com.bartlomiejpluta.base.util.random.DiceRoller;
import com.bartlomiejpluta.base.util.path.*;
import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.world.weapon.*;
import com.bartlomiejpluta.demo.event.EnemyDiedEvent;
import com.bartlomiejpluta.demo.ai.*; import com.bartlomiejpluta.demo.ai.*;
import com.bartlomiejpluta.demo.ai.ArcherAI; import com.bartlomiejpluta.demo.event.EnemyDiedEvent;
import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.world.weapon.MeleeWeapon;
import com.bartlomiejpluta.demo.world.weapon.RangedWeapon;
import lombok.Getter;
import lombok.NonNull;
public class Enemy extends Creature implements NPC { public class Enemy extends Creature implements NPC {
private final DB.model.EnemyModel template; private final DB.model.EnemyModel template;
private AI ai = NoopAI.INSTANCE;
private final AnimationRunner dieAnimation; private final AnimationRunner dieAnimation;
@Getter
private MeleeWeapon meleeWeapon;
@Getter
private RangedWeapon rangedWeapon;
@Getter @Getter
private final String name; private final String name;
private AI ai = NoopAI.INSTANCE;
@Getter
private MeleeWeapon meleeWeapon;
@Getter
private RangedWeapon rangedWeapon;
public Enemy(@NonNull String id) { public Enemy(@NonNull String id) {
this(DB.dao.enemy.find(id)); this(DB.dao.enemy.find(id));
@@ -45,19 +38,19 @@ public class Enemy extends Creature implements NPC {
name = template.getName(); name = template.getName();
maxHp = DiceRoller.of(template.getHp()).roll(); maxHp = DiceRoller.of(template.getHp()).roll();
hp = maxHp; hp = maxHp;
var speed = DiceRoller.of(template.getSpeed()).roll()/10f; var speed = DiceRoller.of(template.getSpeed()).roll() / 10f;
setSpeed(speed); setSpeed(speed);
setAnimationSpeed(speed/2.0f); setAnimationSpeed(speed / 2.0f);
setBlocking(template.isBlocking()); setBlocking(template.isBlocking());
var runner = (DemoRunner) context.getGameRunner(); var runner = (DemoRunner) context.getGameRunner();
var meleeWeaponTemplate = template.getMeleeWeapon(); var meleeWeaponTemplate = template.getMeleeWeapon();
var rangedWeaponTemplate = template.getRangedWeapon(); var rangedWeaponTemplate = template.getRangedWeapon();
if(meleeWeaponTemplate != null) { if (meleeWeaponTemplate != null) {
this.meleeWeapon = new MeleeWeapon(meleeWeaponTemplate); this.meleeWeapon = new MeleeWeapon(meleeWeaponTemplate);
} }
if(rangedWeaponTemplate != null) { if (rangedWeaponTemplate != null) {
this.rangedWeapon = new RangedWeapon(rangedWeaponTemplate); this.rangedWeapon = new RangedWeapon(rangedWeaponTemplate);
} }

View File

@@ -1,10 +1,11 @@
package com.bartlomiejpluta.demo.entity; package com.bartlomiejpluta.demo.entity;
import lombok.*; import com.bartlomiejpluta.base.api.context.ContextHolder;
import com.bartlomiejpluta.base.api.entity.Entity; import com.bartlomiejpluta.base.api.move.Direction;
import com.bartlomiejpluta.base.api.context.*; import com.bartlomiejpluta.base.util.path.CharacterPath;
import com.bartlomiejpluta.base.api.move.*; import com.bartlomiejpluta.base.util.path.PathExecutor;
import com.bartlomiejpluta.base.util.path.*; import lombok.Getter;
import lombok.NonNull;
public class MapObject extends NamedCharacter { public class MapObject extends NamedCharacter {
private final PathExecutor<MapObject> pathExecutor = new PathExecutor<>(this); private final PathExecutor<MapObject> pathExecutor = new PathExecutor<>(this);
@@ -31,7 +32,7 @@ public class MapObject extends NamedCharacter {
setBlocking(true); setBlocking(true);
disableAnimation(); disableAnimation();
if(frame != null) { if (frame != null) {
setAnimationFrame(frame); setAnimationFrame(frame);
} }
@@ -61,7 +62,7 @@ public class MapObject extends NamedCharacter {
} }
private void startInteraction() { private void startInteraction() {
if(interactSound != null) { if (interactSound != null) {
context.playSound(interactSound); context.playSound(interactSound);
} }
} }
@@ -72,7 +73,7 @@ public class MapObject extends NamedCharacter {
@Override @Override
public void update(float dt) { public void update(float dt) {
if(interacting) { if (interacting) {
pathExecutor.execute(getLayer(), dt); pathExecutor.execute(getLayer(), dt);
} }
} }

View File

@@ -1,10 +1,9 @@
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.lib.character.CharacterDelegate;
import com.bartlomiejpluta.base.api.character.Character; import com.bartlomiejpluta.base.api.character.Character;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.context.ContextHolder;
import com.bartlomiejpluta.base.lib.character.CharacterDelegate;
import com.bartlomiejpluta.demo.runner.DemoRunner; import com.bartlomiejpluta.demo.runner.DemoRunner;
public abstract class NamedCharacter extends CharacterDelegate { public abstract class NamedCharacter extends CharacterDelegate {

View File

@@ -1,10 +1,8 @@
package com.bartlomiejpluta.demo.entity; package com.bartlomiejpluta.demo.entity;
import lombok.*;
import org.joml.Vector2i;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.api.character.Character; import com.bartlomiejpluta.base.api.character.Character;
import lombok.NonNull;
import org.joml.Vector2i;
public class Player extends Creature { public class Player extends Creature {
@@ -16,8 +14,8 @@ public class Player extends Creature {
public void interact() { public void interact() {
var coords = getCoordinates().add(getFaceDirection().vector, new Vector2i()); var coords = getCoordinates().add(getFaceDirection().vector, new Vector2i());
for(var entity : getLayer().getEntities()) { for (var entity : getLayer().getEntities()) {
if(entity.getCoordinates().equals(coords) && entity instanceof MapObject) { if (entity.getCoordinates().equals(coords) && entity instanceof MapObject) {
((MapObject) entity).interact(this); ((MapObject) entity).interact(this);
} }
} }

View File

@@ -1,10 +1,10 @@
package com.bartlomiejpluta.demo.event; package com.bartlomiejpluta.demo.event;
import lombok.*; import com.bartlomiejpluta.base.api.event.EventType;
import com.bartlomiejpluta.base.lib.event.BaseEvent;
import com.bartlomiejpluta.base.api.event.*;
import com.bartlomiejpluta.base.lib.event.*;
import com.bartlomiejpluta.demo.entity.Enemy; import com.bartlomiejpluta.demo.entity.Enemy;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter @Getter
@RequiredArgsConstructor @RequiredArgsConstructor

View File

@@ -1,10 +1,10 @@
package com.bartlomiejpluta.demo.event; package com.bartlomiejpluta.demo.event;
import lombok.*; import com.bartlomiejpluta.base.api.event.EventType;
import com.bartlomiejpluta.base.lib.event.BaseEvent;
import com.bartlomiejpluta.base.api.event.*;
import com.bartlomiejpluta.base.lib.event.*;
import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.entity.Creature;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter @Getter
@RequiredArgsConstructor @RequiredArgsConstructor

View File

@@ -1,22 +1,20 @@
package com.bartlomiejpluta.demo.gui; package com.bartlomiejpluta.demo.gui;
import lombok.*;
import com.bartlomiejpluta.base.api.gui.*;
import com.bartlomiejpluta.base.lib.gui.*;
import com.bartlomiejpluta.base.api.screen.*;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.input.*; import com.bartlomiejpluta.base.api.gui.Color;
import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.lib.gui.BaseComponent;
import lombok.Setter;
public class Bar extends BaseComponent { public class Bar extends BaseComponent {
private final Color stroke;
private final Color fill;
@Setter @Setter
private float value = 1.0f; private float value = 1.0f;
private float actualValue = 1.0f; private float actualValue = 1.0f;
private float speed = 0.05f; private final float speed = 0.05f;
private final Color stroke;
private final Color fill;
public Bar(Context context, GUI gui) { public Bar(Context context, GUI gui) {
super(context, gui); super(context, gui);

View File

@@ -1,14 +1,17 @@
package com.bartlomiejpluta.demo.gui; package com.bartlomiejpluta.demo.gui;
import lombok.*;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.gui.Color;
import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.api.input.Key;
import com.bartlomiejpluta.base.api.input.KeyAction;
import com.bartlomiejpluta.base.api.input.KeyEvent;
import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.api.input.*; import com.bartlomiejpluta.base.lib.gui.Label;
import com.bartlomiejpluta.base.api.gui.*; import lombok.Setter;
import com.bartlomiejpluta.base.lib.gui.*;
public class Button extends Label { public class Button extends Label {
private Color color; private final Color color;
@Setter @Setter
private Runnable action; private Runnable action;
@@ -27,7 +30,7 @@ public class Button extends Label {
} }
private void handleKeyEvent(KeyEvent event) { private void handleKeyEvent(KeyEvent event) {
if(event.getKey() == Key.KEY_ENTER && event.getAction() == KeyAction.PRESS && action != null) { if (event.getKey() == Key.KEY_ENTER && event.getAction() == KeyAction.PRESS && action != null) {
event.consume(); event.consume();
action.run(); action.run();
} }

View File

@@ -1,14 +1,16 @@
package com.bartlomiejpluta.demo.gui; package com.bartlomiejpluta.demo.gui;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.gui.Color;
import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.api.gui.Paint;
import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.api.gui.*; import com.bartlomiejpluta.base.lib.gui.BaseWindow;
import com.bartlomiejpluta.base.lib.gui.*;
public abstract class DecoratedWindow extends BaseWindow { public abstract class DecoratedWindow extends BaseWindow {
private Paint paint; private final Paint paint;
private Color inner; private final Color inner;
private Color outer; private final Color outer;
public DecoratedWindow(Context context, GUI gui) { public DecoratedWindow(Context context, GUI gui) {
super(context, gui); super(context, gui);

View File

@@ -1,9 +1,7 @@
package com.bartlomiejpluta.demo.gui; package com.bartlomiejpluta.demo.gui;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.api.gui.*;
import com.bartlomiejpluta.base.lib.gui.*;
public class EquipmentWindow extends DecoratedWindow { public class EquipmentWindow extends DecoratedWindow {

View File

@@ -1,10 +1,10 @@
package com.bartlomiejpluta.demo.gui; package com.bartlomiejpluta.demo.gui;
import lombok.*;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.api.gui.*; import com.bartlomiejpluta.base.api.gui.Inflatable;
import com.bartlomiejpluta.base.lib.gui.*; import com.bartlomiejpluta.base.api.gui.Ref;
import lombok.Getter;
public class GameMenuWindow extends DecoratedWindow implements Inflatable { public class GameMenuWindow extends DecoratedWindow implements Inflatable {

View File

@@ -1,10 +1,12 @@
package com.bartlomiejpluta.demo.gui; package com.bartlomiejpluta.demo.gui;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.gui.*; import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.api.input.*; import com.bartlomiejpluta.base.api.gui.Ref;
import com.bartlomiejpluta.base.api.screen.*; import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.lib.gui.*; import com.bartlomiejpluta.base.lib.gui.BorderLayout;
import com.bartlomiejpluta.base.lib.gui.IconView;
import com.bartlomiejpluta.base.lib.gui.Label;
import com.bartlomiejpluta.demo.entity.Player; import com.bartlomiejpluta.demo.entity.Player;
import com.bartlomiejpluta.demo.event.EnemyDiedEvent; import com.bartlomiejpluta.demo.event.EnemyDiedEvent;
import com.bartlomiejpluta.demo.event.HitEvent; import com.bartlomiejpluta.demo.event.HitEvent;
@@ -23,7 +25,7 @@ public class HUD extends BorderLayout {
private final DemoRunner runner; private final DemoRunner runner;
private final Player player; private final Player player;
private final Runtime runtime; private final Runtime runtime;
private LimitedQueue<String> logger = new LimitedQueue<>(MAX_LOG_SIZE); private final LimitedQueue<String> logger = new LimitedQueue<>(MAX_LOG_SIZE);
private float logVisibilityDuration = 0f; private float logVisibilityDuration = 0f;

View File

@@ -1,10 +1,10 @@
package com.bartlomiejpluta.demo.gui; package com.bartlomiejpluta.demo.gui;
import lombok.*;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.api.gui.*; import com.bartlomiejpluta.base.api.gui.Inflatable;
import com.bartlomiejpluta.base.lib.gui.*; import com.bartlomiejpluta.base.api.gui.Ref;
import lombok.Getter;
public class StartMenuWindow extends DecoratedWindow implements Inflatable { public class StartMenuWindow extends DecoratedWindow implements Inflatable {

View File

@@ -1,29 +1,25 @@
package com.bartlomiejpluta.demo.map; package com.bartlomiejpluta.demo.map;
import lombok.*; import com.bartlomiejpluta.base.api.camera.Camera;
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;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.icon.Icon;
import com.bartlomiejpluta.base.api.input.Input;
import com.bartlomiejpluta.base.api.input.Key;
import com.bartlomiejpluta.base.api.map.handler.MapHandler;
import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
import com.bartlomiejpluta.base.api.map.model.GameMap;
import com.bartlomiejpluta.base.api.move.Direction; import com.bartlomiejpluta.base.api.move.Direction;
import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.api.camera.Camera; import com.bartlomiejpluta.base.lib.camera.CameraController;
import com.bartlomiejpluta.base.api.input.*; import com.bartlomiejpluta.base.lib.camera.FollowingCameraController;
import com.bartlomiejpluta.base.api.icon.Icon; import com.bartlomiejpluta.base.util.world.CharacterSpawner;
import com.bartlomiejpluta.base.util.world.Warp;
import com.bartlomiejpluta.base.lib.camera.*; import com.bartlomiejpluta.demo.entity.Enemy;
import com.bartlomiejpluta.demo.entity.MapObject;
import com.bartlomiejpluta.base.util.world.*; import com.bartlomiejpluta.demo.entity.Player;
import com.bartlomiejpluta.demo.event.EnemyDiedEvent;
import com.bartlomiejpluta.demo.runner.DemoRunner; import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.entity.*; import lombok.NonNull;
import com.bartlomiejpluta.demo.event.*;
import com.bartlomiejpluta.demo.util.*;
import java.util.*;
import java.util.function.*;
public abstract class BaseMapHandler implements MapHandler { public abstract class BaseMapHandler implements MapHandler {
protected Screen screen; protected Screen screen;
@@ -50,40 +46,40 @@ public abstract class BaseMapHandler implements MapHandler {
@Override @Override
public void input(Input input) { public void input(Input input) {
if(context.isPaused()) { if (context.isPaused()) {
return; return;
} }
if(runner.openedWindows() > 0) { if (runner.openedWindows() > 0) {
return; return;
} }
if(input.isKeyPressed(Key.KEY_SPACE)) { if (input.isKeyPressed(Key.KEY_SPACE)) {
player.attack(); player.attack();
} }
if(input.isKeyPressed(Key.KEY_ENTER)) { if (input.isKeyPressed(Key.KEY_ENTER)) {
player.interact(); player.interact();
} }
if(input.isKeyPressed(Key.KEY_LEFT_CONTROL)) { if (input.isKeyPressed(Key.KEY_LEFT_CONTROL)) {
if(input.isKeyPressed(Key.KEY_DOWN)) { if (input.isKeyPressed(Key.KEY_DOWN)) {
player.setFaceDirection(Direction.DOWN); player.setFaceDirection(Direction.DOWN);
} else if(input.isKeyPressed(Key.KEY_UP)) { } else if (input.isKeyPressed(Key.KEY_UP)) {
player.setFaceDirection(Direction.UP); player.setFaceDirection(Direction.UP);
} else if(input.isKeyPressed(Key.KEY_LEFT)) { } else if (input.isKeyPressed(Key.KEY_LEFT)) {
player.setFaceDirection(Direction.LEFT); player.setFaceDirection(Direction.LEFT);
} else if(input.isKeyPressed(Key.KEY_RIGHT)) { } else if (input.isKeyPressed(Key.KEY_RIGHT)) {
player.setFaceDirection(Direction.RIGHT); player.setFaceDirection(Direction.RIGHT);
} }
} else { } else {
if(input.isKeyPressed(Key.KEY_DOWN)) { if (input.isKeyPressed(Key.KEY_DOWN)) {
player.getLayer().pushMovement(player.prepareMovement(Direction.DOWN)); player.getLayer().pushMovement(player.prepareMovement(Direction.DOWN));
} else if(input.isKeyPressed(Key.KEY_UP)) { } else if (input.isKeyPressed(Key.KEY_UP)) {
player.getLayer().pushMovement(player.prepareMovement(Direction.UP)); player.getLayer().pushMovement(player.prepareMovement(Direction.UP));
} else if(input.isKeyPressed(Key.KEY_LEFT)) { } else if (input.isKeyPressed(Key.KEY_LEFT)) {
player.getLayer().pushMovement(player.prepareMovement(Direction.LEFT)); player.getLayer().pushMovement(player.prepareMovement(Direction.LEFT));
} else if(input.isKeyPressed(Key.KEY_RIGHT)) { } else if (input.isKeyPressed(Key.KEY_RIGHT)) {
player.getLayer().pushMovement(player.prepareMovement(Direction.RIGHT)); player.getLayer().pushMovement(player.prepareMovement(Direction.RIGHT));
} }
} }

View File

@@ -1,11 +1,5 @@
package com.bartlomiejpluta.demo.map; package com.bartlomiejpluta.demo.map;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.input.Input;
import com.bartlomiejpluta.base.api.map.model.GameMap;
import com.bartlomiejpluta.base.api.map.handler.MapHandler;
import com.bartlomiejpluta.base.api.screen.Screen;
public class ForrestHandler extends BaseMapHandler { public class ForrestHandler extends BaseMapHandler {
} }

View File

@@ -1,9 +1,7 @@
package com.bartlomiejpluta.demo.map; package com.bartlomiejpluta.demo.map;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.input.Input;
import com.bartlomiejpluta.base.api.map.model.GameMap; import com.bartlomiejpluta.base.api.map.model.GameMap;
import com.bartlomiejpluta.base.api.screen.Screen;
public class ForrestTempleHandler extends BaseMapHandler { public class ForrestTempleHandler extends BaseMapHandler {
public static final String UID = "f845355e-b9ad-4884-a217-dd3a4c18a3fa"; public static final String UID = "f845355e-b9ad-4884-a217-dd3a4c18a3fa";

View File

@@ -1,17 +1,20 @@
package com.bartlomiejpluta.demo.menu; package com.bartlomiejpluta.demo.menu;
import lombok.*;
import java.util.function.*;
import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.api.gui.DisplayMode;
import com.bartlomiejpluta.base.api.input.*; import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.api.gui.*; import com.bartlomiejpluta.base.api.gui.UpdateMode;
import com.bartlomiejpluta.base.lib.gui.*; import com.bartlomiejpluta.base.api.gui.WindowManager;
import com.bartlomiejpluta.base.api.input.Key;
import com.bartlomiejpluta.base.api.input.KeyAction;
import com.bartlomiejpluta.base.api.input.KeyEvent;
import com.bartlomiejpluta.demo.gui.EquipmentWindow;
import com.bartlomiejpluta.demo.gui.GameMenuWindow;
import com.bartlomiejpluta.demo.gui.StartMenuWindow;
import com.bartlomiejpluta.demo.runner.DemoRunner; import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.gui.*; import lombok.NonNull;
import java.util.function.Consumer;
public class MenuManager { public class MenuManager {
private final DemoRunner runner; private final DemoRunner runner;
@@ -47,7 +50,7 @@ public class MenuManager {
private void handleGameMenuKeyEvent(KeyEvent event) { private void handleGameMenuKeyEvent(KeyEvent event) {
if (event.getKey() == Key.KEY_E && event.getAction() == KeyAction.PRESS) { if (event.getKey() == Key.KEY_E && event.getAction() == KeyAction.PRESS) {
if(manager.isEmpty()) { if (manager.isEmpty()) {
manager.open(equipment); manager.open(equipment);
} else if (manager.top() == equipment) { } else if (manager.top() == equipment) {
manager.close(); manager.close();
@@ -57,13 +60,13 @@ public class MenuManager {
} }
if (event.getKey() == Key.KEY_ESCAPE && event.getAction() == KeyAction.PRESS) { if (event.getKey() == Key.KEY_ESCAPE && event.getAction() == KeyAction.PRESS) {
if(manager.size() > 0) { if (manager.size() > 0) {
manager.close(); manager.close();
} else { } else {
manager.open(gameMenu); manager.open(gameMenu);
} }
if(manager.size() > 0) { if (manager.size() > 0) {
context.pause(); context.pause();
} else { } else {
context.resume(); context.resume();

View File

@@ -8,23 +8,21 @@ import com.bartlomiejpluta.base.util.profiler.FPSProfiler;
import com.bartlomiejpluta.demo.entity.Player; import com.bartlomiejpluta.demo.entity.Player;
import com.bartlomiejpluta.demo.menu.MenuManager; import com.bartlomiejpluta.demo.menu.MenuManager;
import com.bartlomiejpluta.demo.world.weapon.RangedWeapon; import com.bartlomiejpluta.demo.world.weapon.RangedWeapon;
import lombok.*; import lombok.Getter;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public class DemoRunner implements GameRunner { public class DemoRunner implements GameRunner {
private static final Logger log = LoggerFactory.getLogger(DemoRunner.class); private static final Logger log = LoggerFactory.getLogger(DemoRunner.class);
private final FPSProfiler fpsProfiler = FPSProfiler.create(20);
private Screen screen; private Screen screen;
private Context context; private Context context;
private MenuManager menu; private MenuManager menu;
private GUI hud; private GUI hud;
@Getter @Getter
private Player player; private Player player;
private final FPSProfiler fpsProfiler = FPSProfiler.create(20);
@Override @Override
public void init(Context context) { public void init(Context context) {
this.context = context; this.context = context;

View File

@@ -1,6 +1,7 @@
package com.bartlomiejpluta.demo.util; package com.bartlomiejpluta.demo.util;
import lombok.*; import lombok.AllArgsConstructor;
import java.util.LinkedList; import java.util.LinkedList;
@AllArgsConstructor @AllArgsConstructor

View File

@@ -1,12 +1,15 @@
package com.bartlomiejpluta.demo.world.weapon; package com.bartlomiejpluta.demo.world.weapon;
import com.bartlomiejpluta.base.api.context.*; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.context.ContextHolder;
import com.bartlomiejpluta.base.api.icon.Icon; import com.bartlomiejpluta.base.api.icon.Icon;
import com.bartlomiejpluta.base.lib.animation.*; import com.bartlomiejpluta.base.lib.animation.AnimationRunner;
import com.bartlomiejpluta.base.lib.animation.RandomAnimationsRunner;
import com.bartlomiejpluta.base.util.random.DiceRoller; import com.bartlomiejpluta.base.util.random.DiceRoller;
import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.entity.Creature;
import com.bartlomiejpluta.demo.event.HitEvent; import com.bartlomiejpluta.demo.event.HitEvent;
import lombok.*; import lombok.Getter;
import lombok.NonNull;
import org.joml.Vector2i; import org.joml.Vector2i;
import java.util.Random; import java.util.Random;
@@ -17,15 +20,12 @@ public class MeleeWeapon implements Weapon {
private final DiceRoller roller; private final DiceRoller roller;
private final AnimationRunner animation; private final AnimationRunner animation;
private final String sound; private final String sound;
@Getter
private String name;
@Getter @Getter
private final Icon icon; private final Icon icon;
@Getter @Getter
private int cooldown; private final String name;
@Getter
private final int cooldown;
public MeleeWeapon(@NonNull String id) { public MeleeWeapon(@NonNull String id) {
this(DB.dao.melee_weapon.find(id)); this(DB.dao.melee_weapon.find(id));

View File

@@ -1,15 +1,19 @@
package com.bartlomiejpluta.demo.world.weapon; package com.bartlomiejpluta.demo.world.weapon;
import com.bartlomiejpluta.base.api.animation.Animation; import com.bartlomiejpluta.base.api.animation.Animation;
import com.bartlomiejpluta.base.api.context.*; import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.context.ContextHolder;
import com.bartlomiejpluta.base.api.entity.Entity; import com.bartlomiejpluta.base.api.entity.Entity;
import com.bartlomiejpluta.base.api.icon.Icon; import com.bartlomiejpluta.base.api.icon.Icon;
import com.bartlomiejpluta.base.api.move.*; import com.bartlomiejpluta.base.api.move.Movable;
import com.bartlomiejpluta.base.lib.animation.*; import com.bartlomiejpluta.base.lib.animation.AnimationRunner;
import com.bartlomiejpluta.base.lib.animation.BulletAnimationRunner;
import com.bartlomiejpluta.base.lib.animation.SimpleAnimationRunner;
import com.bartlomiejpluta.base.util.random.DiceRoller; import com.bartlomiejpluta.base.util.random.DiceRoller;
import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.entity.Creature;
import com.bartlomiejpluta.demo.event.HitEvent; import com.bartlomiejpluta.demo.event.HitEvent;
import lombok.*; import lombok.Getter;
import lombok.NonNull;
import java.util.Random; import java.util.Random;
@@ -24,15 +28,12 @@ public class RangedWeapon implements Weapon {
private final String punchSound; private final String punchSound;
private final AnimationRunner missAnimation; private final AnimationRunner missAnimation;
private final String missSound; private final String missSound;
@Getter
private String name;
@Getter @Getter
private final Icon icon; private final Icon icon;
@Getter @Getter
private int cooldown; private final String name;
@Getter
private final int cooldown;
public RangedWeapon(@NonNull String id) { public RangedWeapon(@NonNull String id) {
this(DB.dao.ranged_weapon.find(id)); this(DB.dao.ranged_weapon.find(id));