Replace custom Vector with JOML's Vector2* in :API
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package com.bartlomiejpluta.base.api.entity;
|
||||
|
||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
||||
import org.joml.Vector2i;
|
||||
|
||||
public enum Direction {
|
||||
UP(0, -1),
|
||||
@@ -10,11 +10,13 @@ public enum Direction {
|
||||
|
||||
public final int x;
|
||||
public final int y;
|
||||
public final Vector vector;
|
||||
|
||||
Direction(int x, int y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.vector = Vector.of(x, y);
|
||||
}
|
||||
|
||||
public Vector2i asVector() {
|
||||
return new Vector2i(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
package com.bartlomiejpluta.base.api.entity;
|
||||
|
||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
||||
import org.joml.Vector2f;
|
||||
import org.joml.Vector2i;
|
||||
|
||||
public interface Entity {
|
||||
Vector getCoordinates();
|
||||
Vector2i getCoordinates();
|
||||
|
||||
void setCoordinates(Vector coordinates);
|
||||
void setCoordinates(Vector2i coordinates);
|
||||
|
||||
void setCoordinates(int x, int y);
|
||||
|
||||
Vector2f getPosition();
|
||||
|
||||
void setPosition(Vector2f position);
|
||||
|
||||
void setPosition(float x, float y);
|
||||
|
||||
Movement prepareMovement(Direction direction);
|
||||
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
package com.bartlomiejpluta.base.api.entity;
|
||||
|
||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
||||
|
||||
import org.joml.Vector2i;
|
||||
|
||||
public interface Movement {
|
||||
boolean perform();
|
||||
|
||||
Movement another();
|
||||
|
||||
Vector getFrom();
|
||||
Vector2i getFrom();
|
||||
|
||||
Vector getTo();
|
||||
Vector2i getTo();
|
||||
|
||||
Direction getDirection();
|
||||
}
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
package com.bartlomiejpluta.base.api.geo;
|
||||
|
||||
public class Vector {
|
||||
public final int x;
|
||||
public final int y;
|
||||
|
||||
public Vector(int x, int y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public Vector add(Vector other) {
|
||||
return new Vector(x + other.x, y + other.y);
|
||||
}
|
||||
|
||||
public static Vector of(int x, int y) {
|
||||
return new Vector(x, y);
|
||||
}
|
||||
}
|
||||
@@ -5,18 +5,14 @@ import com.bartlomiejpluta.base.api.entity.Movement;
|
||||
|
||||
public interface GameMap {
|
||||
void addEntity(int objectLayerIndex, Entity entity);
|
||||
|
||||
void removeEntity(int objectLayerIndex, Entity entity);
|
||||
|
||||
boolean isMovementPossible(int objectLayerIndex, Movement movement);
|
||||
|
||||
void setTile(int tileLayerIndex, int row, int column, int tileId);
|
||||
|
||||
void setTile(int tileLayerIndex, int row, int column, int tileSetRow, int tileSetColumn);
|
||||
|
||||
void clearTile(int tileLayerIndex, int row, int column);
|
||||
|
||||
void setPassageAbility(int objectLayerIndex, int row, int column, PassageAbility passageAbility);
|
||||
|
||||
void setTile(int tileLayerIndex, int row, int column, int tileId);
|
||||
void setTile(int tileLayerIndex, int row, int column, int tileSetRow, int tileSetColumn);
|
||||
void clearTile(int tileLayerIndex, int row, int column);
|
||||
|
||||
void setColor(int colorLayerIndex, float r, float g, float b, float alpha);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,24 @@
|
||||
package ${package};
|
||||
|
||||
import com.bartlomiejpluta.base.api.map.MapHandler;
|
||||
import com.bartlomiejpluta.base.api.map.GameMap;
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.input.Keyboard;
|
||||
|
||||
public class ${className} implements MapHandler {
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
public void init(Context context, GameMap map) {
|
||||
throw new RuntimeException("Not implemented yet");
|
||||
}
|
||||
|
||||
@Override
|
||||
void input(Keyboard keyboard) {
|
||||
throw new RuntimeException("Not implemented yet");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Context context, GameMap map, float dt) {
|
||||
throw new RuntimeException("Not implemented yet");
|
||||
}
|
||||
}
|
||||
@@ -27,52 +27,45 @@ public abstract class Model {
|
||||
@Setter
|
||||
protected float scaleY = 1.0f;
|
||||
|
||||
public Model setPosition(float x, float y) {
|
||||
public void setPosition(float x, float y) {
|
||||
position.x = x;
|
||||
position.y = y;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Model setPosition(Vector2f position) {
|
||||
public void setPosition(Vector2f position) {
|
||||
this.position.x = position.x;
|
||||
this.position.y = position.y;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Model movePosition(float x, float y) {
|
||||
|
||||
public void movePosition(float x, float y) {
|
||||
position.x += x;
|
||||
position.y += y;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Model movePosition(Vector2f position) {
|
||||
public void movePosition(Vector2f position) {
|
||||
this.position.x += position.x;
|
||||
this.position.y += position.y;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Model moveRotation(float rotation) {
|
||||
public void moveRotation(float rotation) {
|
||||
this.rotation += rotation;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Model setScale(float scale) {
|
||||
public void setScale(float scale) {
|
||||
this.scaleX = scale;
|
||||
this.scaleY = scale;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Model setScale(float scaleX, float scaleY) {
|
||||
public void setScale(float scaleX, float scaleY) {
|
||||
this.scaleX = scaleX;
|
||||
this.scaleY = scaleY;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Matrix4f getModelMatrix() {
|
||||
return modelMatrix
|
||||
.identity()
|
||||
.translate(position.x, position.y, 0)
|
||||
.rotateZ((float) toRadians(-rotation))
|
||||
.scaleXY(scaleX, scaleY);
|
||||
.identity()
|
||||
.translate(position.x, position.y, 0)
|
||||
.rotateZ((float) toRadians(-rotation))
|
||||
.scaleXY(scaleX, scaleY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.bartlomiejpluta.base.game.entity.model;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
||||
import com.bartlomiejpluta.base.core.util.math.MathUtil;
|
||||
@@ -64,11 +63,6 @@ public class DefaultEntity extends MovableSprite implements Entity {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCoordinates(Vector coordinates) {
|
||||
setCoordinates(coordinates.x, coordinates.y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeed(float speed) {
|
||||
framesToCrossOneTile = (int) (1 / MathUtil.clamp(speed, Float.MIN_VALUE, 1.0));
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package com.bartlomiejpluta.base.game.map.layer.object;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
||||
import com.bartlomiejpluta.base.api.map.PassageAbility;
|
||||
import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager;
|
||||
import com.bartlomiejpluta.base.core.ui.Window;
|
||||
import com.bartlomiejpluta.base.core.world.camera.Camera;
|
||||
import com.bartlomiejpluta.base.game.map.layer.base.Layer;
|
||||
import com.bartlomiejpluta.base.game.movement.MovableSprite;
|
||||
import org.joml.Vector2i;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -33,7 +33,7 @@ public class ObjectLayer implements Layer {
|
||||
passageMap[row][column] = passageAbility;
|
||||
}
|
||||
|
||||
public boolean isMovementPossible(Vector source, Vector target, Direction direction) {
|
||||
public boolean isMovementPossible(Vector2i source, Vector2i target, Direction direction) {
|
||||
var isTargetReachable = switch (passageMap[target.y][target.x]) {
|
||||
case UP_ONLY -> direction != Direction.DOWN;
|
||||
case DOWN_ONLY -> direction != Direction.UP;
|
||||
|
||||
@@ -2,10 +2,10 @@ package com.bartlomiejpluta.base.game.movement;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.entity.Movement;
|
||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Data;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.joml.Vector2i;
|
||||
|
||||
@Data
|
||||
@RequiredArgsConstructor(access = AccessLevel.PACKAGE)
|
||||
@@ -26,12 +26,12 @@ public class DefaultMovement implements Movement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector getFrom() {
|
||||
public Vector2i getFrom() {
|
||||
return object.getCoordinates();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector getTo() {
|
||||
return getFrom().add(direction.vector);
|
||||
public Vector2i getTo() {
|
||||
return direction.asVector().add(object.getCoordinates());
|
||||
}
|
||||
}
|
||||
@@ -2,12 +2,12 @@ package com.bartlomiejpluta.base.game.movement;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
||||
import com.bartlomiejpluta.base.api.entity.Movement;
|
||||
import com.bartlomiejpluta.base.api.geo.Vector;
|
||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
||||
import com.bartlomiejpluta.base.core.logic.Updatable;
|
||||
import com.bartlomiejpluta.base.game.animation.AnimatedSprite;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import org.joml.Vector2f;
|
||||
import org.joml.Vector2i;
|
||||
|
||||
@@ -18,6 +18,7 @@ public abstract class MovableSprite extends AnimatedSprite implements Updatable
|
||||
private int moveTime = 0;
|
||||
private Vector2f movementVector;
|
||||
|
||||
@Getter
|
||||
private final Vector2i coordinates = new Vector2i(0, 0);
|
||||
|
||||
protected int framesToCrossOneTile = 1;
|
||||
@@ -63,27 +64,20 @@ public abstract class MovableSprite extends AnimatedSprite implements Updatable
|
||||
return true;
|
||||
}
|
||||
|
||||
public Vector getCoordinates() {
|
||||
return Vector.of(coordinates.x, coordinates.y);
|
||||
}
|
||||
|
||||
public MovableSprite setCoordinates(int x, int y) {
|
||||
public void setCoordinates(int x, int y) {
|
||||
coordinates.x = x;
|
||||
coordinates.y = y;
|
||||
setPosition((x + 0.5f) * coordinateStepSize.x, (y + 0.5f) * coordinateStepSize.y);
|
||||
return this;
|
||||
}
|
||||
|
||||
public MovableSprite setCoordinates(Vector2i coordinates) {
|
||||
return setCoordinates(coordinates.x, coordinates.y);
|
||||
public void setCoordinates(Vector2i coordinates) {
|
||||
setCoordinates(coordinates.x, coordinates.y);
|
||||
}
|
||||
|
||||
public MovableSprite setStepSize(float x, float y) {
|
||||
public void setStepSize(float x, float y) {
|
||||
coordinateStepSize.x = x;
|
||||
coordinateStepSize.y = y;
|
||||
setCoordinates(coordinates);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public MovableSprite(Mesh mesh, Material material) {
|
||||
|
||||
Reference in New Issue
Block a user