From 933608b7530e1495727de69d4ed76bc070bb24c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Mon, 22 Aug 2022 22:59:41 +0200 Subject: [PATCH] Apply BASE engine refactor --- .../0dcbaf26-d634-4ca8-9691-7a8ff966f702.png | Bin .../0ea0fe55-53b2-4eea-8fab-2011e694127b.png | Bin .../1779ae2b-474a-4599-8fc3-be34f7d66965.png | Bin .../61393836-8127-4277-853f-87b48022ae43.png | Bin .../7a723b64-e54a-4fff-852d-108349133111.png | Bin .../92ac46ff-8cf2-4748-907f-873030c8e378.png | Bin .../c7ec2341-e5fc-4285-9ecb-a2dfc8a0ed67.png | Bin .../e605b2b1-3cab-499f-882d-160ab65b49d8.png | Bin .../f1113db3-4a6c-4a07-9b64-32ba8e653e4f.png | Bin .../fbea4628-e1d3-4acc-800a-ed54c1bb51b6.png | Bin data.mv.db | Bin 32768 -> 28672 bytes maps/f845355e-b9ad-4884-a217-dd3a4c18a3fa.dat | Bin 15983 -> 16459 bytes project.bep | 22 +++++++-------- .../com/bartlomiejpluta/demo/ai/AnimalAI.java | 12 ++++----- .../com/bartlomiejpluta/demo/ai/ArcherAI.java | 14 +++++----- .../demo/ai/SimpleEnemyAI.java | 14 +++++----- .../demo/ai/SimpleSniperAI.java | 4 +-- .../demo/ai/WeaponBasedAI.java | 12 ++++----- .../entity/{Character.java => Creature.java} | 12 +++++---- .../bartlomiejpluta/demo/entity/Enemy.java | 19 ++++++------- .../demo/entity/MapObject.java | 15 +++++------ .../{NamedEntity.java => NamedCharacter.java} | 9 ++++--- .../bartlomiejpluta/demo/entity/Player.java | 6 ++--- .../bartlomiejpluta/demo/event/HitEvent.java | 6 ++--- .../demo/map/BaseMapHandler.java | 8 +++--- .../demo/runner/DemoRunner.java | 4 +-- .../demo/world/weapon/MeleeWeapon.java | 12 ++++----- .../demo/world/weapon/RangedWeapon.java | 25 +++++++++--------- .../demo/world/weapon/Weapon.java | 4 +-- 29 files changed, 99 insertions(+), 99 deletions(-) rename entsets/4fff029b-6c24-4c83-9dfb-51f5512a687e.png => charsets/0dcbaf26-d634-4ca8-9691-7a8ff966f702.png (100%) rename entsets/815a5c5c-4979-42f5-a42a-ccbbff9a97e5.png => charsets/0ea0fe55-53b2-4eea-8fab-2011e694127b.png (100%) rename entsets/cb4c89a7-a421-49ea-8c58-571e9b215d37.png => charsets/1779ae2b-474a-4599-8fc3-be34f7d66965.png (100%) rename entsets/9da2c95b-45b7-49e5-957b-c1c8803cdf28.png => charsets/61393836-8127-4277-853f-87b48022ae43.png (100%) rename entsets/a1d5baf4-d5e8-4be9-ba7b-b37ca81b59fb.png => charsets/7a723b64-e54a-4fff-852d-108349133111.png (100%) rename entsets/15415d5a-2f53-4ee0-8f8f-8e81d702ccdb.png => charsets/92ac46ff-8cf2-4748-907f-873030c8e378.png (100%) rename entsets/a5c6c6eb-e6cf-4b9e-8c35-11e4c8587ce7.png => charsets/c7ec2341-e5fc-4285-9ecb-a2dfc8a0ed67.png (100%) rename entsets/55a8c74b-e636-4c0a-9787-1878e672e368.png => charsets/e605b2b1-3cab-499f-882d-160ab65b49d8.png (100%) rename entsets/a973f4ec-a7ad-4fd7-8002-b50a854fb733.png => charsets/f1113db3-4a6c-4a07-9b64-32ba8e653e4f.png (100%) rename entsets/71414ffb-0e1c-4778-9a1a-0f9f53388fd0.png => charsets/fbea4628-e1d3-4acc-800a-ed54c1bb51b6.png (100%) rename src/main/java/com/bartlomiejpluta/demo/entity/{Character.java => Creature.java} (78%) rename src/main/java/com/bartlomiejpluta/demo/entity/{NamedEntity.java => NamedCharacter.java} (62%) diff --git a/entsets/4fff029b-6c24-4c83-9dfb-51f5512a687e.png b/charsets/0dcbaf26-d634-4ca8-9691-7a8ff966f702.png similarity index 100% rename from entsets/4fff029b-6c24-4c83-9dfb-51f5512a687e.png rename to charsets/0dcbaf26-d634-4ca8-9691-7a8ff966f702.png diff --git a/entsets/815a5c5c-4979-42f5-a42a-ccbbff9a97e5.png b/charsets/0ea0fe55-53b2-4eea-8fab-2011e694127b.png similarity index 100% rename from entsets/815a5c5c-4979-42f5-a42a-ccbbff9a97e5.png rename to charsets/0ea0fe55-53b2-4eea-8fab-2011e694127b.png diff --git a/entsets/cb4c89a7-a421-49ea-8c58-571e9b215d37.png b/charsets/1779ae2b-474a-4599-8fc3-be34f7d66965.png similarity index 100% rename from entsets/cb4c89a7-a421-49ea-8c58-571e9b215d37.png rename to charsets/1779ae2b-474a-4599-8fc3-be34f7d66965.png diff --git a/entsets/9da2c95b-45b7-49e5-957b-c1c8803cdf28.png b/charsets/61393836-8127-4277-853f-87b48022ae43.png similarity index 100% rename from entsets/9da2c95b-45b7-49e5-957b-c1c8803cdf28.png rename to charsets/61393836-8127-4277-853f-87b48022ae43.png diff --git a/entsets/a1d5baf4-d5e8-4be9-ba7b-b37ca81b59fb.png b/charsets/7a723b64-e54a-4fff-852d-108349133111.png similarity index 100% rename from entsets/a1d5baf4-d5e8-4be9-ba7b-b37ca81b59fb.png rename to charsets/7a723b64-e54a-4fff-852d-108349133111.png diff --git a/entsets/15415d5a-2f53-4ee0-8f8f-8e81d702ccdb.png b/charsets/92ac46ff-8cf2-4748-907f-873030c8e378.png similarity index 100% rename from entsets/15415d5a-2f53-4ee0-8f8f-8e81d702ccdb.png rename to charsets/92ac46ff-8cf2-4748-907f-873030c8e378.png diff --git a/entsets/a5c6c6eb-e6cf-4b9e-8c35-11e4c8587ce7.png b/charsets/c7ec2341-e5fc-4285-9ecb-a2dfc8a0ed67.png similarity index 100% rename from entsets/a5c6c6eb-e6cf-4b9e-8c35-11e4c8587ce7.png rename to charsets/c7ec2341-e5fc-4285-9ecb-a2dfc8a0ed67.png diff --git a/entsets/55a8c74b-e636-4c0a-9787-1878e672e368.png b/charsets/e605b2b1-3cab-499f-882d-160ab65b49d8.png similarity index 100% rename from entsets/55a8c74b-e636-4c0a-9787-1878e672e368.png rename to charsets/e605b2b1-3cab-499f-882d-160ab65b49d8.png diff --git a/entsets/a973f4ec-a7ad-4fd7-8002-b50a854fb733.png b/charsets/f1113db3-4a6c-4a07-9b64-32ba8e653e4f.png similarity index 100% rename from entsets/a973f4ec-a7ad-4fd7-8002-b50a854fb733.png rename to charsets/f1113db3-4a6c-4a07-9b64-32ba8e653e4f.png diff --git a/entsets/71414ffb-0e1c-4778-9a1a-0f9f53388fd0.png b/charsets/fbea4628-e1d3-4acc-800a-ed54c1bb51b6.png similarity index 100% rename from entsets/71414ffb-0e1c-4778-9a1a-0f9f53388fd0.png rename to charsets/fbea4628-e1d3-4acc-800a-ed54c1bb51b6.png diff --git a/data.mv.db b/data.mv.db index 8d70b0eb43e13dc52c8f9769b89d238c1d3c30b7..2ba5b456aa4e22ee0d7d05513bc02316784374a5 100644 GIT binary patch literal 28672 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 literal 32768 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 diff --git a/maps/f845355e-b9ad-4884-a217-dd3a4c18a3fa.dat b/maps/f845355e-b9ad-4884-a217-dd3a4c18a3fa.dat index b51af9cc612eb9d6ff575d19f4dce6a023aaa249..0df5ca0074a13722767f3e9fd52188e34a0070aa 100644 GIT binary patch delta 93 zcmaD~bGm_X!&Di;X&PKyzKNN63O(animal, 4); - this.runawayAI = new RunawayAI<>(animal, character); + this.runawayAI = new RunawayAI<>(animal, creature); } @Override @@ -30,7 +30,7 @@ public class AnimalAI implements AI { return; } - var distance = animal.manhattanDistance(character); + var distance = animal.manhattanDistance(creature); if(animal.getHp() < animal.getMaxHp() && distance < range) { runawayAI.nextActivity(layer, dt); diff --git a/src/main/java/com/bartlomiejpluta/demo/ai/ArcherAI.java b/src/main/java/com/bartlomiejpluta/demo/ai/ArcherAI.java index 23bd0b9..f28dedf 100644 --- a/src/main/java/com/bartlomiejpluta/demo/ai/ArcherAI.java +++ b/src/main/java/com/bartlomiejpluta/demo/ai/ArcherAI.java @@ -17,37 +17,37 @@ import org.joml.Vector2i; import org.joml.Vector2ic; import com.bartlomiejpluta.demo.entity.Enemy; -import com.bartlomiejpluta.demo.entity.Character; +import com.bartlomiejpluta.demo.entity.Creature; -public class ArcherAI extends KeepStraightDistanceAI { +public class ArcherAI extends KeepStraightDistanceAI { private static final int ASTAR_MAX_NODES = 100; private static final int IDLE_MOVEMENT_INTERVAL = 4; private final int range; private final AI idle; - public ArcherAI(Enemy enemy, Character target, int minRange, int maxRange, int range) { + public ArcherAI(Enemy enemy, Creature target, int minRange, int maxRange, int range) { super(new AstarPathFinder(ASTAR_MAX_NODES), enemy, target, minRange, maxRange); this.range = range; this.idle = new RandomMovementAI<>(enemy, IDLE_MOVEMENT_INTERVAL); } @Override - protected boolean sees(Enemy enemy, Character target, ObjectLayer layer) { + protected boolean sees(Enemy enemy, Creature target, ObjectLayer layer) { return enemy.manhattanDistance(target) < range; } @Override - protected void interact(Enemy enemy, Character target, ObjectLayer layer, float dt) { + protected void interact(Enemy enemy, Creature target, ObjectLayer layer, float dt) { enemy.attack(); } @Override - protected void follow(Enemy enemy, Character target, ObjectLayer layer, float dt) { + protected void follow(Enemy enemy, Creature target, ObjectLayer layer, float dt) { // noop } @Override - protected void idle(Enemy enemy, Character target, ObjectLayer layer, float dt) { + protected void idle(Enemy enemy, Creature target, ObjectLayer layer, float dt) { idle.nextActivity(layer, dt); } } diff --git a/src/main/java/com/bartlomiejpluta/demo/ai/SimpleEnemyAI.java b/src/main/java/com/bartlomiejpluta/demo/ai/SimpleEnemyAI.java index 2daf378..ae378c2 100644 --- a/src/main/java/com/bartlomiejpluta/demo/ai/SimpleEnemyAI.java +++ b/src/main/java/com/bartlomiejpluta/demo/ai/SimpleEnemyAI.java @@ -7,37 +7,37 @@ import com.bartlomiejpluta.base.api.ai.*; import com.bartlomiejpluta.base.lib.ai.*; import com.bartlomiejpluta.demo.entity.Enemy; -import com.bartlomiejpluta.demo.entity.Character; +import com.bartlomiejpluta.demo.entity.Creature; -public class SimpleEnemyAI extends FollowEntityAI { +public class SimpleEnemyAI extends FollowObjectAI { private static final int ASTAR_MAX_NODES = 100; private static final int IDLE_MOVEMENT_INTERVAL = 4; private final AI idle; private final int range; - public SimpleEnemyAI(Enemy enemy, Character target, int range) { + public SimpleEnemyAI(Enemy enemy, Creature target, int range) { super(new AstarPathFinder(ASTAR_MAX_NODES), enemy, target); this.range = range; this.idle = new RandomMovementAI<>(enemy, IDLE_MOVEMENT_INTERVAL); } @Override - protected boolean sees(Enemy enemy, Character target, ObjectLayer layer, int distance) { + protected boolean sees(Enemy enemy, Creature target, ObjectLayer layer, int distance) { return distance < range; } @Override - protected void interact(Enemy enemy, Character target, ObjectLayer layer, float dt) { + protected void interact(Enemy enemy, Creature target, ObjectLayer layer, float dt) { enemy.attack(); } @Override - protected void follow(Enemy enemy, Character target, ObjectLayer layer, float dt) { + protected void follow(Enemy enemy, Creature target, ObjectLayer layer, float dt) { // noop } @Override - protected void idle(Enemy enemy, Character target, ObjectLayer layer, float dt) { + protected void idle(Enemy enemy, Creature target, ObjectLayer layer, float dt) { idle.nextActivity(layer, dt); } } \ No newline at end of file diff --git a/src/main/java/com/bartlomiejpluta/demo/ai/SimpleSniperAI.java b/src/main/java/com/bartlomiejpluta/demo/ai/SimpleSniperAI.java index 66a7350..dca7ae8 100644 --- a/src/main/java/com/bartlomiejpluta/demo/ai/SimpleSniperAI.java +++ b/src/main/java/com/bartlomiejpluta/demo/ai/SimpleSniperAI.java @@ -6,12 +6,12 @@ import com.bartlomiejpluta.base.api.ai.*; import com.bartlomiejpluta.base.lib.ai.*; import com.bartlomiejpluta.demo.entity.Enemy; -import com.bartlomiejpluta.demo.entity.Character; +import com.bartlomiejpluta.demo.entity.Creature; @AllArgsConstructor public class SimpleSniperAI implements AI { private final Enemy enemy; - private Character target; + private Creature target; private int range; @Override diff --git a/src/main/java/com/bartlomiejpluta/demo/ai/WeaponBasedAI.java b/src/main/java/com/bartlomiejpluta/demo/ai/WeaponBasedAI.java index 422911b..d017c37 100644 --- a/src/main/java/com/bartlomiejpluta/demo/ai/WeaponBasedAI.java +++ b/src/main/java/com/bartlomiejpluta/demo/ai/WeaponBasedAI.java @@ -6,7 +6,7 @@ import com.bartlomiejpluta.base.api.move.MoveEvent; import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.lib.ai.*; -import com.bartlomiejpluta.demo.entity.Character; +import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.entity.Enemy; import com.bartlomiejpluta.demo.world.weapon.*; @@ -15,12 +15,12 @@ public class WeaponBasedAI implements AI { private static final int MIN_RANGE = 3; private static final int MAX_RANGE = 12; private final Enemy enemy; - private final Character target; - private final RunawayAI runawayAI; + private final Creature target; + private final RunawayAI runawayAI; private final SimpleEnemyAI meleeAI; private final ArcherAI archerAI; - public WeaponBasedAI(@NonNull Enemy enemy, @NonNull Character target) { + public WeaponBasedAI(@NonNull Enemy enemy, @NonNull Creature target) { this.enemy = enemy; this.target = target; this.runawayAI = new RunawayAI<>(enemy, target); @@ -41,8 +41,8 @@ public class WeaponBasedAI implements AI { @Override public void nextActivity(ObjectLayer layer, float dt) { var lastAttacker = enemy.getLastAttacker(); - if(lastAttacker != null && lastAttacker instanceof Character) { - var attacker = (Character) lastAttacker; + if(lastAttacker != null && lastAttacker instanceof Creature) { + var attacker = (Creature) lastAttacker; if(attacker.isAlive()) { runawayAI.setDanger(attacker); meleeAI.setTarget(attacker); diff --git a/src/main/java/com/bartlomiejpluta/demo/entity/Character.java b/src/main/java/com/bartlomiejpluta/demo/entity/Creature.java similarity index 78% rename from src/main/java/com/bartlomiejpluta/demo/entity/Character.java rename to src/main/java/com/bartlomiejpluta/demo/entity/Creature.java index 185b325..17b21a5 100644 --- a/src/main/java/com/bartlomiejpluta/demo/entity/Character.java +++ b/src/main/java/com/bartlomiejpluta/demo/entity/Creature.java @@ -4,13 +4,15 @@ 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.entity.Entity; + import com.bartlomiejpluta.base.lib.animation.AnimationRunner; import com.bartlomiejpluta.demo.world.weapon.Weapon; -public abstract class Character extends NamedEntity { - private static final Logger log = LoggerFactory.getLogger(Character.class); +public abstract class Creature extends NamedCharacter { + private static final Logger log = LoggerFactory.getLogger(Creature.class); protected int attackCooldown = 0; @@ -31,9 +33,9 @@ public abstract class Character extends NamedEntity { private Weapon weapon; @Getter - private NamedEntity lastAttacker; + private NamedCharacter lastAttacker; - public Character(@NonNull Entity entity) { + public Creature(@NonNull Character entity) { super(entity); } @@ -49,7 +51,7 @@ public abstract class Character extends NamedEntity { } } - public void hit(NamedEntity source, int dmg) { + public void hit(NamedCharacter source, int dmg) { this.lastAttacker = source; if(immortal) { diff --git a/src/main/java/com/bartlomiejpluta/demo/entity/Enemy.java b/src/main/java/com/bartlomiejpluta/demo/entity/Enemy.java index 34efbc4..1837c41 100644 --- a/src/main/java/com/bartlomiejpluta/demo/entity/Enemy.java +++ b/src/main/java/com/bartlomiejpluta/demo/entity/Enemy.java @@ -4,6 +4,7 @@ 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.NPC; import com.bartlomiejpluta.base.api.move.MoveEvent; @@ -19,7 +20,7 @@ import com.bartlomiejpluta.demo.ai.*; import com.bartlomiejpluta.demo.ai.ArcherAI; -public class Enemy extends Character implements NPC { +public class Enemy extends Creature implements NPC { private final DB.model.EnemyModel template; private AI ai = NoopAI.INSTANCE; private final AnimationRunner dieAnimation; @@ -38,7 +39,7 @@ public class Enemy extends Character implements NPC { } public Enemy(@NonNull DB.model.EnemyModel template) { - super(ContextHolder.INSTANCE.getContext().createEntity(template.getEntset())); + super(ContextHolder.INSTANCE.getContext().createCharacter(A.charsets.get(template.getCharset()).uid)); this.template = template; name = template.getName(); maxHp = DiceRoller.of(template.getHp()).roll(); @@ -58,7 +59,7 @@ public class Enemy extends Character implements NPC { this.rangedWeapon = new RangedWeapon(rangedWeaponTemplate); } - this.dieAnimation = new SimpleAnimationRunner(template.getDieAnimation()); + this.dieAnimation = new SimpleAnimationRunner(A.animations.get(template.getDieAnimation()).uid); } @Override @@ -69,7 +70,7 @@ public class Enemy extends Character implements NPC { @Override public void die() { super.die(); - changeEntitySet(template.getDeadEntset()); + changeCharacterSet(A.charsets.get(template.getDeadCharset()).uid); setScale(0.5f); setBlocking(false); setZIndex(-1); @@ -77,11 +78,11 @@ public class Enemy extends Character implements NPC { ai = NoopAI.INSTANCE; dieAnimation.run(context, getLayer(), this); - context.playSound(template.getDieSound()); + context.playSound(A.sounds.get(template.getDieSound()).uid); context.fireEvent(new EnemyDiedEvent(this)); } - public Enemy followAndAttack(Character target, int range) { + public Enemy followAndAttack(Creature target, int range) { var ai = new SimpleEnemyAI(this, target, range); addEventListener(MoveEvent.TYPE, ai::recomputePath); @@ -92,19 +93,19 @@ public class Enemy extends Character implements NPC { return this; } - public Enemy campAndHunt(Character target, int range) { + public Enemy campAndHunt(Creature target, int range) { this.ai = new SimpleSniperAI(this, target, range); return this; } - public Enemy asAnimal(Character source, int range) { + public Enemy asAnimal(Creature source, int range) { this.ai = new AnimalAI(this, source, range); return this; } - public Enemy archer(Character target, int minRange, int maxRange, int range) { + public Enemy archer(Creature target, int minRange, int maxRange, int range) { var ai = new ArcherAI(this, target, minRange, maxRange, range); addEventListener(MoveEvent.TYPE, ai::recomputePath); diff --git a/src/main/java/com/bartlomiejpluta/demo/entity/MapObject.java b/src/main/java/com/bartlomiejpluta/demo/entity/MapObject.java index f22e65b..6861662 100644 --- a/src/main/java/com/bartlomiejpluta/demo/entity/MapObject.java +++ b/src/main/java/com/bartlomiejpluta/demo/entity/MapObject.java @@ -4,12 +4,9 @@ import lombok.*; import com.bartlomiejpluta.base.api.entity.Entity; import com.bartlomiejpluta.base.api.context.*; import com.bartlomiejpluta.base.api.move.*; -import com.bartlomiejpluta.base.lib.entity.EntityDelegate; import com.bartlomiejpluta.base.util.path.*; -import com.bartlomiejpluta.demo.entity.Character; - -public class MapObject extends NamedEntity { +public class MapObject extends NamedCharacter { private final PathExecutor pathExecutor = new PathExecutor<>(this); private final DB.model.MapObjectModel template; private final Short frame; @@ -25,11 +22,11 @@ public class MapObject extends NamedEntity { } public MapObject(@NonNull DB.model.MapObjectModel template) { - super(ContextHolder.INSTANCE.getContext().createEntity(template.getEntset())); + super(ContextHolder.INSTANCE.getContext().createCharacter(A.charsets.get(template.getCharset()).uid)); this.template = template; this.frame = template.getFrame(); this.name = template.getName(); - this.interactSound = template.getInteractSound(); + this.interactSound = A.sounds.get(template.getInteractSound()).uid; setBlocking(true); disableAnimation(); @@ -40,7 +37,7 @@ public class MapObject extends NamedEntity { pathExecutor.setPath( frame != null - ? new EntityPath() + ? new CharacterPath() .run(this::startInteraction) .turn(Direction.LEFT, frame) .wait(0.05f) @@ -55,11 +52,11 @@ public class MapObject extends NamedEntity { .turn(Direction.DOWN, frame) .wait(0.5f) .run(this::finishInteraction) - : new EntityPath() + : new CharacterPath() ); } - public void interact(Character character) { + public void interact(Creature creature) { interacting = true; } diff --git a/src/main/java/com/bartlomiejpluta/demo/entity/NamedEntity.java b/src/main/java/com/bartlomiejpluta/demo/entity/NamedCharacter.java similarity index 62% rename from src/main/java/com/bartlomiejpluta/demo/entity/NamedEntity.java rename to src/main/java/com/bartlomiejpluta/demo/entity/NamedCharacter.java index 8c0d2aa..75fc760 100644 --- a/src/main/java/com/bartlomiejpluta/demo/entity/NamedEntity.java +++ b/src/main/java/com/bartlomiejpluta/demo/entity/NamedCharacter.java @@ -2,16 +2,17 @@ package com.bartlomiejpluta.demo.entity; import com.bartlomiejpluta.base.api.context.*; import com.bartlomiejpluta.base.api.entity.Entity; -import com.bartlomiejpluta.base.lib.entity.EntityDelegate; +import com.bartlomiejpluta.base.lib.character.CharacterDelegate; +import com.bartlomiejpluta.base.api.character.Character; import com.bartlomiejpluta.demo.runner.DemoRunner; -public abstract class NamedEntity extends EntityDelegate { +public abstract class NamedCharacter extends CharacterDelegate { protected final Context context; protected final DemoRunner runner; - public NamedEntity(Entity entity) { - super(entity); + public NamedCharacter(Character character) { + super(character); this.context = ContextHolder.INSTANCE.getContext(); this.runner = (DemoRunner) context.getGameRunner(); } diff --git a/src/main/java/com/bartlomiejpluta/demo/entity/Player.java b/src/main/java/com/bartlomiejpluta/demo/entity/Player.java index 866a27b..0b8ad91 100644 --- a/src/main/java/com/bartlomiejpluta/demo/entity/Player.java +++ b/src/main/java/com/bartlomiejpluta/demo/entity/Player.java @@ -4,11 +4,11 @@ import lombok.*; import org.joml.Vector2i; import com.bartlomiejpluta.base.api.context.Context; import com.bartlomiejpluta.base.api.entity.Entity; -import com.bartlomiejpluta.demo.entity.MapObject; +import com.bartlomiejpluta.base.api.character.Character; -public class Player extends Character { +public class Player extends Creature { - public Player(@NonNull Entity entity) { + public Player(@NonNull Character entity) { super(entity); this.hp = 500; this.maxHp = 500; diff --git a/src/main/java/com/bartlomiejpluta/demo/event/HitEvent.java b/src/main/java/com/bartlomiejpluta/demo/event/HitEvent.java index f9223c0..8d36483 100644 --- a/src/main/java/com/bartlomiejpluta/demo/event/HitEvent.java +++ b/src/main/java/com/bartlomiejpluta/demo/event/HitEvent.java @@ -4,15 +4,15 @@ import lombok.*; import com.bartlomiejpluta.base.api.event.*; import com.bartlomiejpluta.base.lib.event.*; -import com.bartlomiejpluta.demo.entity.Character; +import com.bartlomiejpluta.demo.entity.Creature; @Getter @RequiredArgsConstructor public class HitEvent extends BaseEvent { public static final EventType TYPE = new EventType<>("HIT_EVENT"); - private final Character attacker; - private final Character target; + private final Creature attacker; + private final Creature target; private final int damage; @Override diff --git a/src/main/java/com/bartlomiejpluta/demo/map/BaseMapHandler.java b/src/main/java/com/bartlomiejpluta/demo/map/BaseMapHandler.java index 8d018fc..febf98c 100644 --- a/src/main/java/com/bartlomiejpluta/demo/map/BaseMapHandler.java +++ b/src/main/java/com/bartlomiejpluta/demo/map/BaseMapHandler.java @@ -13,7 +13,7 @@ import com.bartlomiejpluta.base.api.input.*; import com.bartlomiejpluta.base.lib.camera.*; -import com.bartlomiejpluta.base.util.world.EntitySpawner; +import com.bartlomiejpluta.base.util.world.CharacterSpawner; import com.bartlomiejpluta.demo.runner.DemoRunner; import com.bartlomiejpluta.demo.entity.*; @@ -33,7 +33,7 @@ public abstract class BaseMapHandler implements MapHandler { protected Player player; protected ObjectLayer mainLayer; protected CameraController cameraController; - protected final List spawners = new LinkedList<>(); + protected final List spawners = new LinkedList<>(); @Override public void onCreate(Context context, GameMap map) { @@ -111,8 +111,8 @@ public abstract class BaseMapHandler implements MapHandler { return object; } - public EntitySpawner spawner(int x, int y, ObjectLayer layer) { - var spawner = new EntitySpawner(x, y, context, map, layer).trackEntities(EnemyDiedEvent.TYPE); + public CharacterSpawner spawner(int x, int y, ObjectLayer layer) { + var spawner = new CharacterSpawner(x, y, context, map, layer).trackEntities(EnemyDiedEvent.TYPE); this.spawners.add(spawner); return spawner; } diff --git a/src/main/java/com/bartlomiejpluta/demo/runner/DemoRunner.java b/src/main/java/com/bartlomiejpluta/demo/runner/DemoRunner.java index c5ae6e4..9c85907 100644 --- a/src/main/java/com/bartlomiejpluta/demo/runner/DemoRunner.java +++ b/src/main/java/com/bartlomiejpluta/demo/runner/DemoRunner.java @@ -70,11 +70,11 @@ public class DemoRunner implements GameRunner { } private void initPlayer() { - this.player = new Player(context.createEntity(A.entsets.luna.uid)); + this.player = new Player(context.createCharacter(A.charsets.luna.uid)); } private void resetPlayer() { - this.player.changeEntitySet(A.entsets.luna.uid); + this.player.changeCharacterSet(A.charsets.luna.uid); this.player.setScale(1.0f); this.player.setSpeed(0.07f); this.player.setAnimationSpeed(0.005f); diff --git a/src/main/java/com/bartlomiejpluta/demo/world/weapon/MeleeWeapon.java b/src/main/java/com/bartlomiejpluta/demo/world/weapon/MeleeWeapon.java index c0984ae..23f1811 100644 --- a/src/main/java/com/bartlomiejpluta/demo/world/weapon/MeleeWeapon.java +++ b/src/main/java/com/bartlomiejpluta/demo/world/weapon/MeleeWeapon.java @@ -8,7 +8,7 @@ import com.bartlomiejpluta.base.api.context.*; import com.bartlomiejpluta.base.lib.animation.*; import com.bartlomiejpluta.base.util.random.DiceRoller; -import com.bartlomiejpluta.demo.entity.Character; +import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.event.HitEvent; @@ -40,16 +40,16 @@ public class MeleeWeapon implements Weapon { .uAnimationSpeed(0.01f, 0.05f) .offset(0, -10) .uDelay(0, 500) - .with(template.getAnimation()); - this.sound = template.getSound(); + .with(A.animations.get(template.getAnimation()).uid); + this.sound = A.sounds.get(template.getSound()).uid; } @Override - public boolean attack(Character attacker) { + public boolean attack(Creature attacker) { var facingNeighbour = attacker.getCoordinates().add(attacker.getFaceDirection().vector, new Vector2i()); for(var entity : attacker.getLayer().getEntities()) { - if(entity.getCoordinates().equals(facingNeighbour) && entity.isBlocking() && entity instanceof Character) { - var character = (Character) entity; + if(entity.getCoordinates().equals(facingNeighbour) && entity.isBlocking() && entity instanceof Creature) { + var character = (Creature) entity; var damage = roller.roll(); character.hit(attacker, damage); animation.run(context, character.getLayer(), character); diff --git a/src/main/java/com/bartlomiejpluta/demo/world/weapon/RangedWeapon.java b/src/main/java/com/bartlomiejpluta/demo/world/weapon/RangedWeapon.java index 0f64645..59fd60e 100644 --- a/src/main/java/com/bartlomiejpluta/demo/world/weapon/RangedWeapon.java +++ b/src/main/java/com/bartlomiejpluta/demo/world/weapon/RangedWeapon.java @@ -10,8 +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.entity.Character; -import com.bartlomiejpluta.demo.entity.NamedEntity; +import com.bartlomiejpluta.demo.entity.Creature; import com.bartlomiejpluta.demo.event.HitEvent; @@ -43,7 +42,7 @@ public class RangedWeapon implements Weapon { this.dmgRoller = DiceRoller.of(template.getDamage()); this.rangeRoller = DiceRoller.of(template.getRange()); this.cooldown = template.getCooldown(); - this.animation = new BulletAnimationRunner(template.getAnimation()) + this.animation = new BulletAnimationRunner(A.animations.get(template.getAnimation()).uid) .infinite() .offset(0, -15) .onHit(this::onHit) @@ -51,18 +50,18 @@ public class RangedWeapon implements Weapon { .speed(0.25f) .animationSpeed(0.07f) .scale(0.6f); - this.sound = template.getSound(); - this.punchAnimation = new SimpleAnimationRunner(template.getPunchAnimation()); - this.punchSound = template.getPunchSound(); - this.missAnimation = new SimpleAnimationRunner(template.getMissAnimation()) + this.sound = A.sounds.get(template.getSound()).uid; + this.punchAnimation = new SimpleAnimationRunner(A.animations.get(template.getPunchAnimation()).uid); + this.punchSound = A.sounds.get(template.getPunchSound()).uid; + this.missAnimation = new SimpleAnimationRunner(A.animations.get(template.getMissAnimation()).uid) .scale(0.4f); - this.missSound = template.getMissSound(); + this.missSound = A.sounds.get(template.getMissSound()).uid; } private void onHit(Movable attacker, Entity target) { - if(target.isBlocking() && target instanceof Character) { - var namedAttacker = (Character) attacker; - var character = (Character) target; + if(target.isBlocking() && target instanceof Creature) { + var namedAttacker = (Creature) attacker; + var character = (Creature) target; var damage = dmgRoller.roll(); character.hit(namedAttacker, damage); punchAnimation.run(context, character.getLayer(), character); @@ -72,12 +71,12 @@ public class RangedWeapon implements Weapon { } private void onMiss(Movable attacker, Animation animation) { - missAnimation.run(context, ((Character) attacker).getLayer(), animation.getPosition()); + missAnimation.run(context, ((Creature) attacker).getLayer(), animation.getPosition()); context.playSound(missSound); } @Override - public boolean attack(Character attacker) { + public boolean attack(Creature attacker) { var direction = attacker.getFaceDirection(); context.playSound(sound); animation diff --git a/src/main/java/com/bartlomiejpluta/demo/world/weapon/Weapon.java b/src/main/java/com/bartlomiejpluta/demo/world/weapon/Weapon.java index a58e072..0007166 100644 --- a/src/main/java/com/bartlomiejpluta/demo/world/weapon/Weapon.java +++ b/src/main/java/com/bartlomiejpluta/demo/world/weapon/Weapon.java @@ -1,9 +1,9 @@ package com.bartlomiejpluta.demo.world.weapon; -import com.bartlomiejpluta.demo.entity.Character; +import com.bartlomiejpluta.demo.entity.Creature; public interface Weapon { String getName(); int getCooldown(); - boolean attack(Character attacker); + boolean attack(Creature attacker); } \ No newline at end of file