Removed the usage of Box2D
This commit is contained in:
parent
e985102e80
commit
5975288d04
@ -8,17 +8,9 @@ import com.badlogic.gdx.ApplicationAdapter;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.g2d.Sprite;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
import com.badlogic.gdx.physics.box2d.Body;
|
||||
import com.badlogic.gdx.physics.box2d.BodyDef;
|
||||
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
|
||||
import com.badlogic.gdx.physics.box2d.Fixture;
|
||||
import com.badlogic.gdx.physics.box2d.FixtureDef;
|
||||
import com.badlogic.gdx.physics.box2d.PolygonShape;
|
||||
import com.badlogic.gdx.physics.box2d.World;
|
||||
import com.saltosion.gladiator.components.CPhysics;
|
||||
import com.saltosion.gladiator.components.CRenderedObject;
|
||||
import com.saltosion.gladiator.input.InputHandler;
|
||||
import com.saltosion.gladiator.systems.MovementSystem;
|
||||
import com.saltosion.gladiator.systems.RenderingSystem;
|
||||
import com.saltosion.gladiator.util.AppUtil;
|
||||
import com.saltosion.gladiator.util.Name;
|
||||
@ -28,7 +20,6 @@ import com.saltosion.gladiator.util.SpriteSequence;
|
||||
public class GladiatorBrawler extends ApplicationAdapter {
|
||||
|
||||
private Engine engine;
|
||||
private World world;
|
||||
private InputHandler inputHandler;
|
||||
|
||||
private float physics_accumulator = 0f;
|
||||
@ -36,17 +27,13 @@ public class GladiatorBrawler extends ApplicationAdapter {
|
||||
private Entity player;
|
||||
|
||||
@Override
|
||||
public void create () {
|
||||
// Initializing Physics
|
||||
|
||||
world = new World(new Vector2(0, -10), true);
|
||||
public void create () {
|
||||
|
||||
// Initialize the Engine
|
||||
|
||||
engine = new Engine();
|
||||
|
||||
engine.addSystem(new RenderingSystem(world));
|
||||
engine.addSystem(new MovementSystem());
|
||||
engine.addSystem(new RenderingSystem());
|
||||
|
||||
engine.addEntityListener(Family.getFor(),
|
||||
new EntityListener() {
|
||||
@ -54,16 +41,12 @@ public class GladiatorBrawler extends ApplicationAdapter {
|
||||
public void entityRemoved(Entity entity) {
|
||||
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
|
||||
rs.updateEntities(engine);
|
||||
MovementSystem ms = engine.getSystem(MovementSystem.class);
|
||||
ms.updateEntities(engine);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void entityAdded(Entity entity) {
|
||||
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
|
||||
rs.updateEntities(engine);
|
||||
MovementSystem ms = engine.getSystem(MovementSystem.class);
|
||||
ms.updateEntities(engine);
|
||||
|
||||
}
|
||||
});
|
||||
@ -72,7 +55,6 @@ public class GladiatorBrawler extends ApplicationAdapter {
|
||||
// Initialize stuff in the world
|
||||
|
||||
initializePlayer();
|
||||
initializeTerrain();
|
||||
|
||||
// Initialize input
|
||||
|
||||
@ -83,45 +65,9 @@ public class GladiatorBrawler extends ApplicationAdapter {
|
||||
@Override
|
||||
public void render () {
|
||||
engine.update(Gdx.graphics.getDeltaTime());
|
||||
physicsStep(Gdx.graphics.getDeltaTime());
|
||||
}
|
||||
|
||||
private void physicsStep(float deltaTime) {
|
||||
float frameTime = Math.max(deltaTime, 0.25f);
|
||||
physics_accumulator += frameTime;
|
||||
if (physics_accumulator >= AppUtil.PHYSICS_TIMESTEP) {
|
||||
world.step(AppUtil.PHYSICS_TIMESTEP, 6, 2);
|
||||
physics_accumulator -= AppUtil.PHYSICS_TIMESTEP;
|
||||
}
|
||||
}
|
||||
|
||||
public void initializePlayer() {
|
||||
BodyDef bodyDef = new BodyDef();
|
||||
bodyDef.type = BodyType.DynamicBody;
|
||||
bodyDef.position.set(5, 5);
|
||||
bodyDef.fixedRotation = true;
|
||||
Body body = world.createBody(bodyDef);
|
||||
|
||||
PolygonShape bottomBox = new PolygonShape();
|
||||
bottomBox.setAsBox(1.95f, .5f, new Vector2(0, -1.5f), 0);
|
||||
|
||||
FixtureDef bottomDef = new FixtureDef();
|
||||
bottomDef.shape = bottomBox;
|
||||
bottomDef.density = 75f;
|
||||
bottomDef.friction = 7f;
|
||||
Fixture bottom = body.createFixture(bottomDef);
|
||||
|
||||
PolygonShape topBox = new PolygonShape();
|
||||
topBox.setAsBox(2, 1.5f, new Vector2(0, .5f), 0);
|
||||
|
||||
FixtureDef topDef = new FixtureDef();
|
||||
topDef.shape = topBox;
|
||||
topDef.density = 75f;
|
||||
topDef.friction = 0f;
|
||||
Fixture top = body.createFixture(topDef);
|
||||
|
||||
bottomBox.dispose();
|
||||
topBox.dispose();
|
||||
|
||||
player = new Entity();
|
||||
|
||||
@ -133,22 +79,12 @@ public class GladiatorBrawler extends ApplicationAdapter {
|
||||
renderedObject.playAnimation("Idle");
|
||||
player.add(renderedObject);
|
||||
player.add(new CPhysics());
|
||||
player.getComponent(CPhysics.class).body = body;
|
||||
|
||||
engine.addEntity(player);
|
||||
|
||||
AppUtil.player = player;
|
||||
}
|
||||
|
||||
public void initializeTerrain() {
|
||||
BodyDef terrain = new BodyDef();
|
||||
Body terrainBody = world.createBody(terrain);
|
||||
PolygonShape terrainBox = new PolygonShape();
|
||||
terrainBox.setAsBox(20, 2);
|
||||
terrainBody.createFixture(terrainBox, 0);
|
||||
terrainBox.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resize(int width, int height) {
|
||||
super.resize(width, height);
|
||||
|
@ -2,14 +2,13 @@ package com.saltosion.gladiator.components;
|
||||
|
||||
import com.badlogic.ashley.core.Component;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
import com.badlogic.gdx.physics.box2d.Body;
|
||||
|
||||
public class CPhysics extends Component {
|
||||
|
||||
public Body body;
|
||||
|
||||
public Vector2 position = new Vector2(0, 0);
|
||||
public Vector2 velocity = new Vector2(0, 0);
|
||||
public boolean movingLeft = false;
|
||||
public boolean movingRight = false;
|
||||
|
||||
public boolean jumping = false;
|
||||
public boolean grounded = true;
|
||||
}
|
||||
|
23
core/src/com/saltosion/gladiator/input/IRJump.java
Normal file
23
core/src/com/saltosion/gladiator/input/IRJump.java
Normal file
@ -0,0 +1,23 @@
|
||||
package com.saltosion.gladiator.input;
|
||||
|
||||
import com.saltosion.gladiator.components.CPhysics;
|
||||
import com.saltosion.gladiator.util.AppUtil;
|
||||
|
||||
public class IRJump implements InputReceiver {
|
||||
|
||||
@Override
|
||||
public boolean pressed() {
|
||||
CPhysics physics = AppUtil.player.getComponent(CPhysics.class);
|
||||
physics.jumping = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean released() {
|
||||
CPhysics physics = AppUtil.player.getComponent(CPhysics.class);
|
||||
physics.jumping = false;
|
||||
physics.grounded = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
@ -13,6 +13,7 @@ public class InputHandler implements InputProcessor {
|
||||
public InputHandler() {
|
||||
keys.put(Keys.A, Name.MOVE_LEFT);
|
||||
keys.put(Keys.D, Name.MOVE_RIGHT);
|
||||
keys.put(Keys.SPACE, Name.JUMP);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -10,6 +10,7 @@ public class InputReceivers {
|
||||
static {
|
||||
inputreceivers.put(Name.MOVE_LEFT, new IRMoveLeft());
|
||||
inputreceivers.put(Name.MOVE_RIGHT, new IRMoveRight());
|
||||
inputreceivers.put(Name.JUMP, new IRJump());
|
||||
}
|
||||
|
||||
public static InputReceiver getReceiver(String key) {
|
||||
|
@ -1,60 +0,0 @@
|
||||
package com.saltosion.gladiator.systems;
|
||||
|
||||
import com.badlogic.ashley.core.ComponentMapper;
|
||||
import com.badlogic.ashley.core.Engine;
|
||||
import com.badlogic.ashley.core.Entity;
|
||||
import com.badlogic.ashley.core.EntitySystem;
|
||||
import com.badlogic.ashley.core.Family;
|
||||
import com.badlogic.ashley.utils.ImmutableArray;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
import com.saltosion.gladiator.components.CPhysics;
|
||||
|
||||
public class MovementSystem extends EntitySystem {
|
||||
|
||||
private ComponentMapper<CPhysics> pm = ComponentMapper.getFor(CPhysics.class);
|
||||
private ImmutableArray<Entity> entities;
|
||||
|
||||
private final Vector2 RIGHT = new Vector2(1, 0);
|
||||
private final float MOVEMENT_SPEED = 850;
|
||||
private final float MAX_MOVEMENT_SPEED = 10;
|
||||
|
||||
private Vector2 newVel = new Vector2(0, 0);
|
||||
private Vector2 bodyVel = new Vector2(0, 0);
|
||||
|
||||
@Override
|
||||
public void addedToEngine(Engine engine) {
|
||||
updateEntities(engine);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float deltaTime) {
|
||||
for (int i=0; i<entities.size(); i++) {
|
||||
Entity e = entities.get(i);
|
||||
CPhysics physics = pm.get(e);
|
||||
|
||||
newVel.setZero();
|
||||
if (physics.movingRight) {
|
||||
newVel.add(RIGHT);
|
||||
}
|
||||
if (physics.movingLeft) {
|
||||
newVel.add(RIGHT).scl(-1);
|
||||
}
|
||||
newVel.scl(MOVEMENT_SPEED);
|
||||
bodyVel.set(physics.body.getLinearVelocity());
|
||||
bodyVel.y = 0;
|
||||
newVel.sub(bodyVel.scl(50));
|
||||
System.out.println(newVel);
|
||||
physics.body.applyLinearImpulse(newVel, physics.body.getPosition(), true);
|
||||
/**
|
||||
if (Math.abs(bodyVel.x) < MAX_MOVEMENT_SPEED) {
|
||||
physics.body.applyLinearImpulse(newVel, physics.body.getPosition(), true);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
public void updateEntities(Engine engine) {
|
||||
entities = engine.getEntitiesFor(Family.getFor(CPhysics.class));
|
||||
}
|
||||
|
||||
}
|
@ -9,15 +9,11 @@ import com.badlogic.ashley.utils.ImmutableArray;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.GL20;
|
||||
import com.badlogic.gdx.graphics.OrthographicCamera;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.Sprite;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer;
|
||||
import com.badlogic.gdx.physics.box2d.World;
|
||||
import com.saltosion.gladiator.components.CPhysics;
|
||||
import com.saltosion.gladiator.components.CRenderedObject;
|
||||
import com.saltosion.gladiator.util.AppUtil;
|
||||
import com.saltosion.gladiator.util.SpriteLoader;
|
||||
import com.saltosion.gladiator.util.SpriteSequence;
|
||||
|
||||
public class RenderingSystem extends EntitySystem {
|
||||
@ -29,16 +25,8 @@ public class RenderingSystem extends EntitySystem {
|
||||
private SpriteBatch batch;
|
||||
private OrthographicCamera camera;
|
||||
|
||||
private Box2DDebugRenderer debugRenderer;
|
||||
private World world;
|
||||
|
||||
public RenderingSystem(World world) {
|
||||
this.world = world;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addedToEngine(Engine engine) {
|
||||
debugRenderer = new Box2DDebugRenderer();
|
||||
|
||||
updateEntities(engine);
|
||||
|
||||
@ -54,7 +42,7 @@ public class RenderingSystem extends EntitySystem {
|
||||
@Override
|
||||
public void update(float deltaTime) {
|
||||
CPhysics phys = pm.get(AppUtil.player);
|
||||
camera.position.set(phys.body.getPosition().x, phys.body.getPosition().y, 0);
|
||||
camera.position.set(phys.position.x, phys.position.y, 0);
|
||||
camera.update();
|
||||
|
||||
Gdx.gl.glClearColor(0, 0, 0, 0);
|
||||
@ -72,17 +60,14 @@ public class RenderingSystem extends EntitySystem {
|
||||
int spriteHeight = currSprite.getRegionHeight();
|
||||
int spriteWidth = currSprite.getRegionWidth();
|
||||
|
||||
currSprite.setPosition(physics.body.getPosition().x-spriteWidth/2,
|
||||
physics.body.getPosition().y-spriteHeight/2);
|
||||
currSprite.setRotation(physics.body.getAngle());
|
||||
currSprite.setPosition(physics.position.x-spriteWidth/2,
|
||||
physics.position.y-spriteHeight/2);
|
||||
currSprite.draw(batch);
|
||||
|
||||
float nextFrame = renderedObject.getCurrentFrame() + deltaTime*currSequence.getPlayspeed();
|
||||
renderedObject.setCurrentFrame(nextFrame%currSequence.frameCount());
|
||||
}
|
||||
batch.end();
|
||||
|
||||
debugRenderer.render(world, camera.combined);
|
||||
}
|
||||
|
||||
public void updateEntities(Engine engine) {
|
||||
|
@ -1,12 +1,13 @@
|
||||
package com.saltosion.gladiator.util;
|
||||
|
||||
import com.badlogic.ashley.core.Entity;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
|
||||
public class AppUtil {
|
||||
|
||||
public static Entity player;
|
||||
|
||||
public static final int VPHEIGHT_CONST = 14;
|
||||
public static final float PHYSICS_TIMESTEP = 1/45f;
|
||||
|
||||
|
||||
public static final Vector2 JUMP_FORCE = new Vector2(0, 12000);
|
||||
}
|
||||
|
@ -9,5 +9,6 @@ public class Name {
|
||||
|
||||
public static final String MOVE_LEFT = "MOVE_LEFT";
|
||||
public static final String MOVE_RIGHT = "MOVE_RIGHT";
|
||||
public static final String JUMP = "JUMP";
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user