Migrate CRLF file endings to LF
This commit is contained in:
0
game/src/main/java/com/bartlomiejpluta/base/game/App.java
Executable file → Normal file
0
game/src/main/java/com/bartlomiejpluta/base/game/App.java
Executable file → Normal file
129
game/src/main/java/com/bartlomiejpluta/base/game/logic/DefaultGameLogic.java
Executable file → Normal file
129
game/src/main/java/com/bartlomiejpluta/base/game/logic/DefaultGameLogic.java
Executable file → Normal file
@@ -1,67 +1,62 @@
|
||||
package com.bartlomiejpluta.base.game.logic;
|
||||
|
||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.core.gl.object.texture.TextureManager;
|
||||
import com.bartlomiejpluta.base.core.gl.render.Renderer;
|
||||
import com.bartlomiejpluta.base.core.logic.GameLogic;
|
||||
import com.bartlomiejpluta.base.core.ui.Window;
|
||||
import com.bartlomiejpluta.base.core.util.mesh.MeshManager;
|
||||
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.Direction;
|
||||
import com.bartlomiejpluta.base.core.world.scene.Scene;
|
||||
import com.bartlomiejpluta.base.core.world.tileset.manager.TileSetManager;
|
||||
import com.bartlomiejpluta.base.game.world.entity.Entity;
|
||||
import com.bartlomiejpluta.base.game.world.entity.EntityManager;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import static org.lwjgl.glfw.GLFW.*;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class DefaultGameLogic implements GameLogic {
|
||||
private final Renderer renderer;
|
||||
private final TileSetManager tileSetManager;
|
||||
private final MeshManager meshManager;
|
||||
private final TextureManager textureManager;
|
||||
private final EntityManager entityManager;
|
||||
private final Animator animator;
|
||||
|
||||
private Camera camera;
|
||||
private GameMap map;
|
||||
private Scene scene;
|
||||
|
||||
private Entity player;
|
||||
|
||||
@Override
|
||||
public void init(Window window) {
|
||||
log.info("Initializing game logic");
|
||||
renderer.init();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void input(Window window) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Window window) {
|
||||
renderer.render(window, scene);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanUp() {
|
||||
renderer.cleanUp();
|
||||
scene.cleanUp();
|
||||
}
|
||||
}
|
||||
package com.bartlomiejpluta.base.game.logic;
|
||||
|
||||
import com.bartlomiejpluta.base.core.error.AppException;
|
||||
import com.bartlomiejpluta.base.core.gl.object.texture.TextureManager;
|
||||
import com.bartlomiejpluta.base.core.gl.render.Renderer;
|
||||
import com.bartlomiejpluta.base.core.image.ImageManager;
|
||||
import com.bartlomiejpluta.base.core.logic.GameLogic;
|
||||
import com.bartlomiejpluta.base.core.profiling.fps.FPSMonitor;
|
||||
import com.bartlomiejpluta.base.core.ui.Window;
|
||||
import com.bartlomiejpluta.base.core.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.core.world.animation.Animator;
|
||||
import com.bartlomiejpluta.base.core.world.map.GameMap;
|
||||
import com.bartlomiejpluta.base.core.world.tileset.manager.TileSetManager;
|
||||
import com.bartlomiejpluta.base.game.world.entity.manager.EntityManager;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class DefaultGameLogic implements GameLogic {
|
||||
private final Renderer renderer;
|
||||
private final TileSetManager tileSetManager;
|
||||
private final MeshManager meshManager;
|
||||
private final TextureManager textureManager;
|
||||
private final EntityManager entityManager;
|
||||
private final ImageManager imageManager;
|
||||
private final Animator animator;
|
||||
private final FPSMonitor fpsMonitor;
|
||||
|
||||
private GameMap map;
|
||||
|
||||
@Override
|
||||
public void init(Window window) {
|
||||
log.info("Initializing game logic");
|
||||
renderer.init();
|
||||
|
||||
throw new AppException("TODO: Everything seems to be working fine. The game engine logic is not implemented yet though...");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void input(Window window) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
fpsMonitor.update(dt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Window window) {
|
||||
renderer.render(window, map);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanUp() {
|
||||
log.info("There is nothing to clean up here");
|
||||
}
|
||||
}
|
||||
|
||||
56
game/src/main/java/com/bartlomiejpluta/base/game/world/entity/config/EntitySpriteConfiguration.java
Executable file → Normal file
56
game/src/main/java/com/bartlomiejpluta/base/game/world/entity/config/EntitySpriteConfiguration.java
Executable file → Normal file
@@ -1,28 +1,28 @@
|
||||
package com.bartlomiejpluta.base.game.world.entity.config;
|
||||
|
||||
import com.bartlomiejpluta.base.core.world.movement.Direction;
|
||||
import lombok.Data;
|
||||
import org.joml.Vector2i;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
@Configuration
|
||||
@ConfigurationProperties(prefix = "app.sprite.entity")
|
||||
public class EntitySpriteConfiguration {
|
||||
private EntitySpriteDimensionConfiguration dimension;
|
||||
private int defaultSpriteColumn;
|
||||
private Map<Direction, Integer> spriteDirectionRows;
|
||||
|
||||
@Data
|
||||
public static class EntitySpriteDimensionConfiguration {
|
||||
private int rows;
|
||||
private int cols;
|
||||
|
||||
public Vector2i asVector() {
|
||||
return new Vector2i(rows, cols);
|
||||
}
|
||||
}
|
||||
}
|
||||
package com.bartlomiejpluta.base.game.world.entity.config;
|
||||
|
||||
import com.bartlomiejpluta.base.core.world.movement.Direction;
|
||||
import lombok.Data;
|
||||
import org.joml.Vector2i;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
@Configuration
|
||||
@ConfigurationProperties(prefix = "app.sprite.entity")
|
||||
public class EntitySpriteConfiguration {
|
||||
private EntitySpriteDimensionConfiguration dimension;
|
||||
private int defaultSpriteColumn;
|
||||
private Map<Direction, Integer> spriteDirectionRows;
|
||||
|
||||
@Data
|
||||
public static class EntitySpriteDimensionConfiguration {
|
||||
private int rows;
|
||||
private int cols;
|
||||
|
||||
public Vector2i asVector() {
|
||||
return new Vector2i(rows, cols);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
76
game/src/main/java/com/bartlomiejpluta/base/game/world/entity/manager/DefaultEntityManager.java
Executable file → Normal file
76
game/src/main/java/com/bartlomiejpluta/base/game/world/entity/manager/DefaultEntityManager.java
Executable file → Normal file
@@ -1,38 +1,38 @@
|
||||
package com.bartlomiejpluta.base.game.world.entity.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
||||
import com.bartlomiejpluta.base.core.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.core.world.map.GameMap;
|
||||
import com.bartlomiejpluta.base.game.world.entity.config.EntitySpriteConfiguration;
|
||||
import com.bartlomiejpluta.base.game.world.entity.model.Entity;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class DefaultEntityManager implements EntityManager {
|
||||
private final MeshManager meshManager;
|
||||
private final EntitySpriteConfiguration configuration;
|
||||
|
||||
@Override
|
||||
public Entity createEntity(Material material, GameMap map) {
|
||||
return new Entity(buildMesh(material), material, map.getStepSize(), configuration);
|
||||
}
|
||||
|
||||
private Mesh buildMesh(Material material) {
|
||||
var texture = material.getTexture();
|
||||
var dimension = configuration.getDimension().asVector();
|
||||
var spriteWidth = texture.getWidth() / (float) dimension.y;
|
||||
var spriteHeight = texture.getHeight() / (float) dimension.x;
|
||||
return meshManager.createQuad(spriteWidth, spriteHeight, spriteWidth / 2, spriteHeight*0.9f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanUp() {
|
||||
log.info("There is nothing to clean up here");
|
||||
}
|
||||
}
|
||||
package com.bartlomiejpluta.base.game.world.entity.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
||||
import com.bartlomiejpluta.base.core.util.mesh.MeshManager;
|
||||
import com.bartlomiejpluta.base.core.world.map.GameMap;
|
||||
import com.bartlomiejpluta.base.game.world.entity.config.EntitySpriteConfiguration;
|
||||
import com.bartlomiejpluta.base.game.world.entity.model.Entity;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class DefaultEntityManager implements EntityManager {
|
||||
private final MeshManager meshManager;
|
||||
private final EntitySpriteConfiguration configuration;
|
||||
|
||||
@Override
|
||||
public Entity createEntity(Material material, GameMap map) {
|
||||
return new Entity(buildMesh(material), material, map.getStepSize(), configuration);
|
||||
}
|
||||
|
||||
private Mesh buildMesh(Material material) {
|
||||
var texture = material.getTexture();
|
||||
var dimension = configuration.getDimension().asVector();
|
||||
var spriteWidth = texture.getWidth() / (float) dimension.y;
|
||||
var spriteHeight = texture.getHeight() / (float) dimension.x;
|
||||
return meshManager.createQuad(spriteWidth, spriteHeight, spriteWidth / 2, spriteHeight*0.9f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanUp() {
|
||||
log.info("There is nothing to clean up here");
|
||||
}
|
||||
}
|
||||
|
||||
20
game/src/main/java/com/bartlomiejpluta/base/game/world/entity/manager/EntityManager.java
Executable file → Normal file
20
game/src/main/java/com/bartlomiejpluta/base/game/world/entity/manager/EntityManager.java
Executable file → Normal file
@@ -1,10 +1,10 @@
|
||||
package com.bartlomiejpluta.base.game.world.entity.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.core.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.core.world.map.GameMap;
|
||||
import com.bartlomiejpluta.base.game.world.entity.model.Entity;
|
||||
|
||||
public interface EntityManager extends Cleanable {
|
||||
Entity createEntity(Material material, GameMap map);
|
||||
}
|
||||
package com.bartlomiejpluta.base.game.world.entity.manager;
|
||||
|
||||
import com.bartlomiejpluta.base.core.gc.Cleanable;
|
||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.core.world.map.GameMap;
|
||||
import com.bartlomiejpluta.base.game.world.entity.model.Entity;
|
||||
|
||||
public interface EntityManager extends Cleanable {
|
||||
Entity createEntity(Material material, GameMap map);
|
||||
}
|
||||
|
||||
158
game/src/main/java/com/bartlomiejpluta/base/game/world/entity/model/Entity.java
Executable file → Normal file
158
game/src/main/java/com/bartlomiejpluta/base/game/world/entity/model/Entity.java
Executable file → Normal file
@@ -1,79 +1,79 @@
|
||||
package com.bartlomiejpluta.base.game.world.entity.model;
|
||||
|
||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
||||
import com.bartlomiejpluta.base.core.world.movement.Direction;
|
||||
import com.bartlomiejpluta.base.core.world.movement.MovableObject;
|
||||
import com.bartlomiejpluta.base.game.world.entity.config.EntitySpriteConfiguration;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.joml.Vector2f;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class Entity extends MovableObject {
|
||||
private final Map<Direction, Integer> spriteDirectionRows;
|
||||
private final int defaultSpriteColumn;
|
||||
|
||||
@Setter
|
||||
private int animationSpeed = 100;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
private Direction faceDirection;
|
||||
|
||||
@Override
|
||||
public int getAnimationSpeed() {
|
||||
return animationSpeed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldAnimate() {
|
||||
return isMoving();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector2f[] getSpriteAnimationFramesPositions() {
|
||||
var row = spriteDirectionRows.get(faceDirection);
|
||||
var frames = spriteSheetDimension.y;
|
||||
var array = new Vector2f[frames];
|
||||
|
||||
for(int column=0; column<frames; ++column) {
|
||||
array[column] = new Vector2f(column, row);
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setDefaultAnimationFrame() {
|
||||
setAnimationFrame(new Vector2f(defaultSpriteColumn, spriteDirectionRows.get(faceDirection)));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean move(Direction direction) {
|
||||
if(super.move(direction)) {
|
||||
faceDirection = direction;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setMovementSlowness(int slowness) {
|
||||
framesToCrossOneTile = slowness;
|
||||
}
|
||||
|
||||
public int getMovementSlowness() {
|
||||
return framesToCrossOneTile;
|
||||
}
|
||||
|
||||
public Entity(Mesh mesh, Material material, Vector2f coordinateStepSize, EntitySpriteConfiguration configuration) {
|
||||
super(mesh, material, coordinateStepSize, configuration.getDimension().asVector());
|
||||
this.defaultSpriteColumn = configuration.getDefaultSpriteColumn();
|
||||
this.spriteDirectionRows = configuration.getSpriteDirectionRows();
|
||||
this.faceDirection = Direction.DOWN;
|
||||
}
|
||||
}
|
||||
package com.bartlomiejpluta.base.game.world.entity.model;
|
||||
|
||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
||||
import com.bartlomiejpluta.base.core.world.movement.Direction;
|
||||
import com.bartlomiejpluta.base.core.world.movement.MovableObject;
|
||||
import com.bartlomiejpluta.base.game.world.entity.config.EntitySpriteConfiguration;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.joml.Vector2f;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class Entity extends MovableObject {
|
||||
private final Map<Direction, Integer> spriteDirectionRows;
|
||||
private final int defaultSpriteColumn;
|
||||
|
||||
@Setter
|
||||
private int animationSpeed = 100;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
private Direction faceDirection;
|
||||
|
||||
@Override
|
||||
public int getAnimationSpeed() {
|
||||
return animationSpeed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldAnimate() {
|
||||
return isMoving();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector2f[] getSpriteAnimationFramesPositions() {
|
||||
var row = spriteDirectionRows.get(faceDirection);
|
||||
var frames = spriteSheetDimension.y;
|
||||
var array = new Vector2f[frames];
|
||||
|
||||
for(int column=0; column<frames; ++column) {
|
||||
array[column] = new Vector2f(column, row);
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setDefaultAnimationFrame() {
|
||||
setAnimationFrame(new Vector2f(defaultSpriteColumn, spriteDirectionRows.get(faceDirection)));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean move(Direction direction) {
|
||||
if(super.move(direction)) {
|
||||
faceDirection = direction;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setMovementSlowness(int slowness) {
|
||||
framesToCrossOneTile = slowness;
|
||||
}
|
||||
|
||||
public int getMovementSlowness() {
|
||||
return framesToCrossOneTile;
|
||||
}
|
||||
|
||||
public Entity(Mesh mesh, Material material, Vector2f coordinateStepSize, EntitySpriteConfiguration configuration) {
|
||||
super(mesh, material, coordinateStepSize, configuration.getDimension().asVector());
|
||||
this.defaultSpriteColumn = configuration.getDefaultSpriteColumn();
|
||||
this.spriteDirectionRows = configuration.getSpriteDirectionRows();
|
||||
this.faceDirection = Direction.DOWN;
|
||||
}
|
||||
}
|
||||
|
||||
58
game/src/main/resources/application.yml
Executable file → Normal file
58
game/src/main/resources/application.yml
Executable file → Normal file
@@ -1,30 +1,30 @@
|
||||
app:
|
||||
window:
|
||||
title: "Simple Game"
|
||||
width: 640
|
||||
height: 480
|
||||
|
||||
core:
|
||||
targetUps: 50 # Updates per second
|
||||
|
||||
profiling:
|
||||
aspects: false
|
||||
|
||||
sprite:
|
||||
entity:
|
||||
dimension:
|
||||
rows: 4
|
||||
cols: 4
|
||||
|
||||
default-sprite-column: 0
|
||||
|
||||
sprite-direction-rows:
|
||||
down: 0
|
||||
left: 1
|
||||
right: 2
|
||||
up: 3
|
||||
|
||||
|
||||
logging:
|
||||
level:
|
||||
app:
|
||||
window:
|
||||
title: "Simple Game"
|
||||
width: 640
|
||||
height: 480
|
||||
|
||||
core:
|
||||
targetUps: 50 # Updates per second
|
||||
|
||||
profiling:
|
||||
aspects: false
|
||||
|
||||
sprite:
|
||||
entity:
|
||||
dimension:
|
||||
rows: 4
|
||||
cols: 4
|
||||
|
||||
default-sprite-column: 0
|
||||
|
||||
sprite-direction-rows:
|
||||
down: 0
|
||||
left: 1
|
||||
right: 2
|
||||
up: 3
|
||||
|
||||
|
||||
logging:
|
||||
level:
|
||||
com.bartlomiejpluta.base.core.profiling.time.aspect.ExecutionTimeAspect: DEBUG
|
||||
Reference in New Issue
Block a user