Make Scene implements Updatable interface

This commit is contained in:
2021-02-01 13:50:51 +01:00
parent 8e2c63aac7
commit b047a2530a
5 changed files with 21 additions and 6 deletions

View File

@@ -1,5 +1,5 @@
package com.bartlomiejpluta.base.core.world.animation; package com.bartlomiejpluta.base.core.world.animation;
public interface Animator { public interface Animator {
void animate(Iterable<AnimationableObject> objects); void animate(Iterable<? extends AnimationableObject> objects);
} }

View File

@@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
public class DefaultAnimator implements Animator { public class DefaultAnimator implements Animator {
@Override @Override
public void animate(Iterable<AnimationableObject> objects) { public void animate(Iterable<? extends AnimationableObject> objects) {
for (var object : objects) { for (var object : objects) {
animate(object); animate(object);
} }

View File

@@ -22,6 +22,10 @@ public class Movement {
public Vector2i getTargetCoordinate() { public Vector2i getTargetCoordinate() {
return direction.asIntVector().add(object.getCoordinates()); return direction.asIntVector().add(object.getCoordinates());
} }
public Movement getAnother() {
return object.prepareMovement(direction);
}
} }
//@Data //@Data
//public class Movement { //public class Movement {

View File

@@ -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.render.Renderable;
import com.bartlomiejpluta.base.core.gl.shader.constant.UniformName; import com.bartlomiejpluta.base.core.gl.shader.constant.UniformName;
import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager; 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.ui.Window;
import com.bartlomiejpluta.base.core.world.animation.AnimationableObject; import com.bartlomiejpluta.base.core.world.animation.AnimationableObject;
import com.bartlomiejpluta.base.core.world.animation.Animator; import com.bartlomiejpluta.base.core.world.animation.Animator;
import com.bartlomiejpluta.base.core.world.camera.Camera; import com.bartlomiejpluta.base.core.world.camera.Camera;
import com.bartlomiejpluta.base.core.world.map.GameMap; 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 com.bartlomiejpluta.base.core.world.object.RenderableObject;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@@ -17,21 +19,21 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
@AllArgsConstructor @AllArgsConstructor
public class Scene implements Renderable { public class Scene implements Renderable, Updatable {
private final Animator animator; private final Animator animator;
private final Camera camera; private final Camera camera;
private final List<AnimationableObject> objects = new ArrayList<>(); private final List<MovableObject> objects = new ArrayList<>();
@Setter @Setter
@Getter @Getter
private GameMap map; private GameMap map;
public Scene addObject(AnimationableObject object) { public Scene addObject(MovableObject object) {
objects.add(object); objects.add(object);
return this; return this;
} }
public Scene removeObject(AnimationableObject object) { public Scene removeObject(MovableObject object) {
objects.remove(object); objects.remove(object);
return this; return this;
} }
@@ -52,6 +54,13 @@ public class Scene implements Renderable {
renderArray(map.getLayer(3), window, shaderManager); renderArray(map.getLayer(3), window, shaderManager);
} }
@Override
public void update(float dt) {
for(var object : objects) {
object.update(dt);
}
}
private <T extends RenderableObject> void renderList(List<T> objects, Window window, ShaderManager shaderManager) { private <T extends RenderableObject> void renderList(List<T> objects, Window window, ShaderManager shaderManager) {
for (var object : objects) { for (var object : objects) {
if (object != null) { if (object != null) {

View File

@@ -26,6 +26,7 @@ public class Entity extends MovableObject {
private int animationSpeed = 100; private int animationSpeed = 100;
@Setter @Setter
@Getter
private Direction faceDirection; private Direction faceDirection;
@Override @Override
@@ -94,5 +95,6 @@ public class Entity extends MovableObject {
this.defaultSpriteColumn = configuration.getDefaultSpriteColumn(); this.defaultSpriteColumn = configuration.getDefaultSpriteColumn();
this.spriteDirectionRows = configuration.getSpriteDirectionRows(); this.spriteDirectionRows = configuration.getSpriteDirectionRows();
this.onScene = false; this.onScene = false;
this.faceDirection = Direction.DOWN;
} }
} }