SimplyGladiators/core/src/com/saltosion/gladiator/GladiatorBrawler.java

134 lines
3.9 KiB
Java
Raw Normal View History

2015-04-08 15:59:01 +02:00
package com.saltosion.gladiator;
import com.badlogic.ashley.core.Engine;
import com.badlogic.ashley.core.Entity;
import com.badlogic.ashley.core.EntityListener;
import com.badlogic.ashley.core.EntitySystem;
import com.badlogic.ashley.core.Family;
2015-04-08 15:59:01 +02:00
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.systems.RenderingSystem;
import com.saltosion.gladiator.util.Global;
import com.saltosion.gladiator.util.SpriteLoader;
2015-04-08 15:59:01 +02:00
public class GladiatorBrawler extends ApplicationAdapter {
private Engine engine;
private World world;
private float physics_accumulator = 0f;
2015-04-08 15:59:01 +02:00
private Entity player;
2015-04-08 15:59:01 +02:00
@Override
public void create () {
// Initializing Physics
world = new World(new Vector2(0, -10), true);
// Initialize the Engine
engine = new Engine();
engine.addSystem(new RenderingSystem(world));
engine.addEntityListener(Family.getFor(),
new EntityListener() {
@Override
public void entityRemoved(Entity entity) {
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
rs.updateEntities(engine);
}
@Override
public void entityAdded(Entity entity) {
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
rs.updateEntities(engine);
}
});
// Initialize stuff in the world
initializePlayer();
initializeTerrain();
2015-04-08 15:59:01 +02:00
}
@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 >= Global.PHYSICS_TIMESTEP) {
world.step(Global.PHYSICS_TIMESTEP, 6, 2);
physics_accumulator -= Global.PHYSICS_TIMESTEP;
}
}
public void initializePlayer() {
BodyDef bodyDef = new BodyDef();
bodyDef.type = BodyType.DynamicBody;
bodyDef.position.set(5, 5);
Body body = world.createBody(bodyDef);
PolygonShape box = new PolygonShape();
box.setAsBox(2, 2);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape = box;
fixtureDef.density = 0.5f;
fixtureDef.friction = 0.4f;
Fixture fixture = body.createFixture(fixtureDef);
box.dispose();
player = new Entity();
CRenderedObject renderedObject = new CRenderedObject();
Sprite player1 = SpriteLoader.loadSprite(Global.PLAYERIMG, 0, 0, 64, 64);
Sprite player2 = SpriteLoader.loadSprite(Global.PLAYERIMG, 1, 0, 64, 64);
SpriteSequence sequence = new SpriteSequence(1).addSprite(player1).addSprite(player2);
renderedObject.addSequence("Idle", sequence);
renderedObject.setCurrentSequence("Idle");
player.add(renderedObject);
player.add(new CPhysics());
player.getComponent(CPhysics.class).body = body;
engine.addEntity(player);
2015-04-08 15:59:01 +02:00
}
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);
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
float aspectratio = ((float)width)/((float)height);
rs.setViewport((int)(Global.VPHEIGHT_CONST*aspectratio), Global.VPHEIGHT_CONST);
}
2015-04-08 15:59:01 +02:00
}