141 lines
4.2 KiB
Java
141 lines
4.2 KiB
Java
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.gdx.ApplicationAdapter;
|
|
import com.badlogic.gdx.Gdx;
|
|
import com.saltosion.gladiator.gui.GUIManager;
|
|
import com.saltosion.gladiator.input.InputHandler;
|
|
import com.saltosion.gladiator.level.EntityFactory;
|
|
import com.saltosion.gladiator.level.LevelFactory;
|
|
import com.saltosion.gladiator.state.BaseState;
|
|
import com.saltosion.gladiator.state.IntroState;
|
|
import com.saltosion.gladiator.systems.AISystem;
|
|
import com.saltosion.gladiator.systems.CombatSystem;
|
|
import com.saltosion.gladiator.systems.MiscManagerSystem;
|
|
import com.saltosion.gladiator.systems.ParticleSystem;
|
|
import com.saltosion.gladiator.systems.PhysicsSystem;
|
|
import com.saltosion.gladiator.systems.RenderingSystem;
|
|
import com.saltosion.gladiator.util.AppUtil;
|
|
import com.saltosion.gladiator.util.Log;
|
|
|
|
public class GladiatorBrawler extends ApplicationAdapter {
|
|
|
|
private Engine engine;
|
|
private EntityFactory entityFactory;
|
|
private LevelFactory levelFactory;
|
|
private GUIManager guiManager;
|
|
private InputHandler inputHandler;
|
|
|
|
private BaseState currentState;
|
|
|
|
@Override
|
|
public void create() {
|
|
Log.info("Starting up the game");
|
|
|
|
// Initialize the Engine
|
|
engine = new Engine();
|
|
AppUtil.engine = engine;
|
|
setupSystems();
|
|
|
|
// Initialize the EntityFactory
|
|
entityFactory = new EntityFactory();
|
|
AppUtil.entityFactory = entityFactory;
|
|
|
|
// Initialize the LevelFactory
|
|
levelFactory = new LevelFactory();
|
|
AppUtil.levelFactory = levelFactory;
|
|
|
|
// 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 IntroState());
|
|
|
|
Log.info("Successfully started the game.");
|
|
}
|
|
|
|
private void setupSystems() {
|
|
engine.addSystem(new PhysicsSystem());
|
|
engine.addSystem(new RenderingSystem());
|
|
engine.addSystem(new CombatSystem());
|
|
engine.addSystem(new MiscManagerSystem());
|
|
engine.addSystem(new AISystem());
|
|
engine.addSystem(new ParticleSystem());
|
|
engine.addEntityListener(new EntityListener() {
|
|
@Override
|
|
public void entityAdded(Entity entity) {
|
|
PhysicsSystem ps = engine.getSystem(PhysicsSystem.class);
|
|
ps.updateEntities(engine);
|
|
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
|
|
rs.updateEntities(engine);
|
|
CombatSystem cs = engine.getSystem(CombatSystem.class);
|
|
cs.updateEntities(engine);
|
|
MiscManagerSystem mms = engine.getSystem(MiscManagerSystem.class);
|
|
mms.updateEntities(engine);
|
|
AISystem ais = engine.getSystem(AISystem.class);
|
|
ais.updateEntities(engine);
|
|
}
|
|
|
|
@Override
|
|
public void entityRemoved(Entity entity) {
|
|
PhysicsSystem ps = engine.getSystem(PhysicsSystem.class);
|
|
ps.updateEntities(engine);
|
|
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
|
|
rs.updateEntities(engine);
|
|
CombatSystem cs = engine.getSystem(CombatSystem.class);
|
|
cs.updateEntities(engine);
|
|
MiscManagerSystem mms = engine.getSystem(MiscManagerSystem.class);
|
|
mms.updateEntities(engine);
|
|
AISystem ais = engine.getSystem(AISystem.class);
|
|
ais.updateEntities(engine);
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void render() {
|
|
engine.update(Gdx.graphics.getDeltaTime());
|
|
currentState.update(Gdx.graphics.getDeltaTime());
|
|
}
|
|
|
|
public void setState(BaseState newState) {
|
|
if (newState != null) {
|
|
if (currentState != null) {
|
|
currentState.destroy();
|
|
}
|
|
newState.create();
|
|
currentState = newState;
|
|
} else {
|
|
Log.error("Tried to set state to null!");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void resize(int width, int height) {
|
|
super.resize(width, height);
|
|
|
|
RenderingSystem rs = engine.getSystem(RenderingSystem.class);
|
|
rs.screenHeight = height;
|
|
rs.screenWidth = width;
|
|
float aspectratio = ((float) width) / ((float) height);
|
|
rs.aspectratio = aspectratio;
|
|
rs.setViewport((int) (AppUtil.VPHEIGHT_CONST * aspectratio), AppUtil.VPHEIGHT_CONST);
|
|
}
|
|
|
|
@Override
|
|
public void dispose() {
|
|
if (currentState != null) {
|
|
currentState.destroy();
|
|
}
|
|
AppUtil.engine.getSystem(RenderingSystem.class).dispose();
|
|
}
|
|
}
|