2015-04-08 15:59:01 +02:00
|
|
|
package com.saltosion.gladiator;
|
|
|
|
|
2015-04-08 18:19:14 +02:00
|
|
|
import com.badlogic.ashley.core.Engine;
|
2015-04-08 19:15:14 +02:00
|
|
|
import com.badlogic.ashley.core.Entity;
|
|
|
|
import com.badlogic.ashley.core.EntityListener;
|
2015-04-08 15:59:01 +02:00
|
|
|
import com.badlogic.gdx.ApplicationAdapter;
|
|
|
|
import com.badlogic.gdx.Gdx;
|
2015-05-11 12:44:43 +02:00
|
|
|
import com.saltosion.gladiator.gui.GUIManager;
|
2015-04-10 16:30:30 +02:00
|
|
|
import com.saltosion.gladiator.input.InputHandler;
|
2015-05-16 00:35:51 +02:00
|
|
|
import com.saltosion.gladiator.level.EntityFactory;
|
|
|
|
import com.saltosion.gladiator.state.BaseState;
|
|
|
|
import com.saltosion.gladiator.state.InGameState;
|
2015-05-11 22:18:38 +02:00
|
|
|
import com.saltosion.gladiator.systems.AISystem;
|
2015-05-10 19:34:55 +02:00
|
|
|
import com.saltosion.gladiator.systems.CombatSystem;
|
|
|
|
import com.saltosion.gladiator.systems.MiscManagerSystem;
|
2015-05-08 20:18:12 +02:00
|
|
|
import com.saltosion.gladiator.systems.PhysicsSystem;
|
2015-04-08 19:15:14 +02:00
|
|
|
import com.saltosion.gladiator.systems.RenderingSystem;
|
2015-04-10 16:30:30 +02:00
|
|
|
import com.saltosion.gladiator.util.AppUtil;
|
2015-05-11 12:44:43 +02:00
|
|
|
import com.saltosion.gladiator.util.Log;
|
2015-04-08 15:59:01 +02:00
|
|
|
|
|
|
|
public class GladiatorBrawler extends ApplicationAdapter {
|
2015-05-08 20:18:12 +02:00
|
|
|
|
2015-05-10 00:09:54 +02:00
|
|
|
private Engine engine;
|
2015-05-16 00:35:51 +02:00
|
|
|
private EntityFactory entityFactory;
|
2015-05-11 12:44:43 +02:00
|
|
|
private GUIManager guiManager;
|
2015-05-10 00:09:54 +02:00
|
|
|
private InputHandler inputHandler;
|
|
|
|
|
2015-05-16 00:35:51 +02:00
|
|
|
private BaseState currentState;
|
2015-05-10 00:09:54 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void create() {
|
2015-05-12 18:27:46 +02:00
|
|
|
Log.info("Starting up the game");
|
2015-05-13 20:12:13 +02:00
|
|
|
|
2015-05-10 00:09:54 +02:00
|
|
|
// Initialize the Engine
|
|
|
|
engine = new Engine();
|
2015-05-10 19:34:55 +02:00
|
|
|
AppUtil.engine = engine;
|
2015-05-16 00:35:51 +02:00
|
|
|
setupSystems();
|
2015-05-10 00:09:54 +02:00
|
|
|
|
2015-05-16 00:35:51 +02:00
|
|
|
// Initialize the EntityFactory
|
|
|
|
entityFactory = new EntityFactory();
|
|
|
|
AppUtil.entityFactory = entityFactory;
|
|
|
|
|
|
|
|
// Initialize GUI
|
|
|
|
guiManager = new GUIManager();
|
|
|
|
AppUtil.guiManager = this.guiManager;
|
|
|
|
|
|
|
|
// Initialize input
|
|
|
|
inputHandler = new InputHandler();
|
|
|
|
Gdx.input.setInputProcessor(inputHandler);
|
|
|
|
|
|
|
|
// Initialize states
|
|
|
|
BaseState.setMainClass(this);
|
|
|
|
setState(new InGameState());
|
|
|
|
|
|
|
|
Log.info("Successfully started the game.");
|
|
|
|
}
|
|
|
|
|
|
|
|
private void setupSystems() {
|
2015-05-10 00:09:54 +02:00
|
|
|
engine.addSystem(new PhysicsSystem());
|
2015-05-10 16:57:50 +02:00
|
|
|
engine.addSystem(new RenderingSystem());
|
2015-05-10 19:34:55 +02:00
|
|
|
engine.addSystem(new CombatSystem());
|
|
|
|
engine.addSystem(new MiscManagerSystem());
|
2015-05-11 22:18:38 +02:00
|
|
|
engine.addSystem(new AISystem());
|
2015-05-10 00:09:54 +02:00
|
|
|
engine.addEntityListener(new EntityListener() {
|
|
|
|
@Override
|
|
|
|
public void entityAdded(Entity entity) {
|
|
|
|
PhysicsSystem ps = engine.getSystem(PhysicsSystem.class);
|
|
|
|
ps.updateEntities(engine);
|
2015-05-10 16:57:50 +02:00
|
|
|
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
|
|
|
|
rs.updateEntities(engine);
|
2015-05-10 19:34:55 +02:00
|
|
|
CombatSystem cs = engine.getSystem(CombatSystem.class);
|
|
|
|
cs.updateEntities(engine);
|
|
|
|
MiscManagerSystem mms = engine.getSystem(MiscManagerSystem.class);
|
|
|
|
mms.updateEntities(engine);
|
2015-05-11 22:18:38 +02:00
|
|
|
AISystem ais = engine.getSystem(AISystem.class);
|
|
|
|
ais.updateEntities(engine);
|
2015-05-10 00:09:54 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void entityRemoved(Entity entity) {
|
|
|
|
PhysicsSystem ps = engine.getSystem(PhysicsSystem.class);
|
|
|
|
ps.updateEntities(engine);
|
|
|
|
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
|
|
|
|
rs.updateEntities(engine);
|
2015-05-10 19:34:55 +02:00
|
|
|
CombatSystem cs = engine.getSystem(CombatSystem.class);
|
|
|
|
cs.updateEntities(engine);
|
|
|
|
MiscManagerSystem mms = engine.getSystem(MiscManagerSystem.class);
|
|
|
|
mms.updateEntities(engine);
|
2015-05-11 22:18:38 +02:00
|
|
|
AISystem ais = engine.getSystem(AISystem.class);
|
|
|
|
ais.updateEntities(engine);
|
2015-05-10 00:09:54 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void render() {
|
2015-05-13 20:12:13 +02:00
|
|
|
engine.update(Gdx.graphics.getDeltaTime());
|
2015-05-16 00:35:51 +02:00
|
|
|
currentState.update(Gdx.graphics.getDeltaTime());
|
2015-05-10 00:09:54 +02:00
|
|
|
}
|
|
|
|
|
2015-05-16 00:35:51 +02:00
|
|
|
public void setState(BaseState newState) {
|
|
|
|
if (newState != null) {
|
|
|
|
if (currentState != null) {
|
|
|
|
currentState.destroy();
|
2015-05-11 12:44:43 +02:00
|
|
|
}
|
2015-05-16 00:35:51 +02:00
|
|
|
newState.create();
|
|
|
|
currentState = newState;
|
|
|
|
} else {
|
|
|
|
Log.error("Tried to set state to null!");
|
|
|
|
}
|
2015-05-11 12:44:43 +02:00
|
|
|
}
|
2015-05-10 00:09:54 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void resize(int width, int height) {
|
|
|
|
super.resize(width, height);
|
2015-05-16 00:35:51 +02:00
|
|
|
|
2015-05-10 00:09:54 +02:00
|
|
|
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
|
2015-05-16 00:35:51 +02:00
|
|
|
rs.screenHeight = height;
|
|
|
|
rs.screenWidth = width;
|
2015-05-10 00:09:54 +02:00
|
|
|
float aspectratio = ((float) width) / ((float) height);
|
2015-05-16 00:35:51 +02:00
|
|
|
rs.aspectratio = aspectratio;
|
2015-05-10 00:09:54 +02:00
|
|
|
rs.setViewport((int) (AppUtil.VPHEIGHT_CONST * aspectratio), AppUtil.VPHEIGHT_CONST);
|
|
|
|
}
|
2015-05-16 00:35:51 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void dispose() {
|
|
|
|
if (currentState != null) {
|
|
|
|
currentState.destroy();
|
|
|
|
}
|
|
|
|
AppUtil.engine.getSystem(RenderingSystem.class).dispose();
|
|
|
|
}
|
2015-04-08 15:59:01 +02:00
|
|
|
}
|