From b047a2530aa078b933efa148720ab67531a8303c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Mon, 1 Feb 2021 13:50:51 +0100 Subject: [PATCH] Make Scene implements Updatable interface --- .../base/core/world/animation/Animator.java | 2 +- .../core/world/animation/DefaultAnimator.java | 2 +- .../base/core/world/movement/Movement.java | 4 ++++ .../base/core/world/scene/Scene.java | 17 +++++++++++++---- .../base/game/world/entity/model/Entity.java | 2 ++ 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/Animator.java b/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/Animator.java index a4d96897..4a273ce5 100755 --- a/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/Animator.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/Animator.java @@ -1,5 +1,5 @@ package com.bartlomiejpluta.base.core.world.animation; public interface Animator { - void animate(Iterable objects); + void animate(Iterable objects); } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/DefaultAnimator.java b/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/DefaultAnimator.java index 84600aaf..b4e2f9eb 100755 --- a/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/DefaultAnimator.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/DefaultAnimator.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; public class DefaultAnimator implements Animator { @Override - public void animate(Iterable objects) { + public void animate(Iterable objects) { for (var object : objects) { animate(object); } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/core/world/movement/Movement.java b/engine/src/main/java/com/bartlomiejpluta/base/core/world/movement/Movement.java index 896e6073..df7b6428 100755 --- a/engine/src/main/java/com/bartlomiejpluta/base/core/world/movement/Movement.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/core/world/movement/Movement.java @@ -22,6 +22,10 @@ public class Movement { public Vector2i getTargetCoordinate() { return direction.asIntVector().add(object.getCoordinates()); } + + public Movement getAnother() { + return object.prepareMovement(direction); + } } //@Data //public class Movement { diff --git a/engine/src/main/java/com/bartlomiejpluta/base/core/world/scene/Scene.java b/engine/src/main/java/com/bartlomiejpluta/base/core/world/scene/Scene.java index 0baaf552..ab92b7cf 100755 --- a/engine/src/main/java/com/bartlomiejpluta/base/core/world/scene/Scene.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/core/world/scene/Scene.java @@ -3,11 +3,13 @@ package com.bartlomiejpluta.base.core.world.scene; import com.bartlomiejpluta.base.core.gl.render.Renderable; import com.bartlomiejpluta.base.core.gl.shader.constant.UniformName; import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager; +import com.bartlomiejpluta.base.core.logic.Updatable; import com.bartlomiejpluta.base.core.ui.Window; import com.bartlomiejpluta.base.core.world.animation.AnimationableObject; import com.bartlomiejpluta.base.core.world.animation.Animator; import com.bartlomiejpluta.base.core.world.camera.Camera; import com.bartlomiejpluta.base.core.world.map.GameMap; +import com.bartlomiejpluta.base.core.world.movement.MovableObject; import com.bartlomiejpluta.base.core.world.object.RenderableObject; import lombok.AllArgsConstructor; import lombok.Getter; @@ -17,21 +19,21 @@ import java.util.ArrayList; import java.util.List; @AllArgsConstructor -public class Scene implements Renderable { +public class Scene implements Renderable, Updatable { private final Animator animator; private final Camera camera; - private final List objects = new ArrayList<>(); + private final List objects = new ArrayList<>(); @Setter @Getter private GameMap map; - public Scene addObject(AnimationableObject object) { + public Scene addObject(MovableObject object) { objects.add(object); return this; } - public Scene removeObject(AnimationableObject object) { + public Scene removeObject(MovableObject object) { objects.remove(object); return this; } @@ -52,6 +54,13 @@ public class Scene implements Renderable { renderArray(map.getLayer(3), window, shaderManager); } + @Override + public void update(float dt) { + for(var object : objects) { + object.update(dt); + } + } + private void renderList(List objects, Window window, ShaderManager shaderManager) { for (var object : objects) { if (object != null) { diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/world/entity/model/Entity.java b/game/src/main/java/com/bartlomiejpluta/base/game/world/entity/model/Entity.java index 1a262848..6c36df4e 100755 --- a/game/src/main/java/com/bartlomiejpluta/base/game/world/entity/model/Entity.java +++ b/game/src/main/java/com/bartlomiejpluta/base/game/world/entity/model/Entity.java @@ -26,6 +26,7 @@ public class Entity extends MovableObject { private int animationSpeed = 100; @Setter + @Getter private Direction faceDirection; @Override @@ -94,5 +95,6 @@ public class Entity extends MovableObject { this.defaultSpriteColumn = configuration.getDefaultSpriteColumn(); this.spriteDirectionRows = configuration.getSpriteDirectionRows(); this.onScene = false; + this.faceDirection = Direction.DOWN; } }