98 lines
2.7 KiB
Java
98 lines
2.7 KiB
Java
package de.samdev.colorrunner.game.world;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import com.badlogic.gdx.Game;
|
|
import com.badlogic.gdx.Gdx;
|
|
import com.badlogic.gdx.math.Rectangle;
|
|
import com.badlogic.gdx.math.Vector2;
|
|
|
|
import de.samdev.colorrunner.CRGame;
|
|
import de.samdev.colorrunner.game.renderer.AbstractGameRenderer;
|
|
import de.samdev.colorrunner.game.world.entities.CRGameEntity;
|
|
import de.samdev.colorrunner.game.world.entities.gameentities.PlayerEntity;
|
|
import de.samdev.colorrunner.game.world.entities.gameentities.floor.DownStateFloorTileEntity;
|
|
import de.samdev.colorrunner.game.world.entities.gameentities.floor.FloorTileEntity;
|
|
import de.samdev.colorrunner.game.world.entities.gameentities.floor.LeftStateFloorTileEntity;
|
|
import de.samdev.colorrunner.game.world.entities.gameentities.floor.NoStateFloorTileEntity;
|
|
import de.samdev.colorrunner.game.world.entities.gameentities.floor.RightStateFloorTileEntity;
|
|
import de.samdev.colorrunner.game.world.entities.gameentities.floor.UpStateFloorTileEntity;
|
|
import de.samdev.colorrunner.game.world.map.CRMapStorage;
|
|
import de.samdev.colorrunner.game.world.map.CRTiledMap;
|
|
import de.samdev.colorrunner.game.world.map.MapSection;
|
|
import de.samdev.colorrunner.game.world.map.provider.EndlessMapProvider;
|
|
import de.samdev.colorrunner.game.world.map.provider.MapProvider;
|
|
import de.samdev.colorrunner.input.GameInputListener;
|
|
import de.samdev.colorrunner.screens.gameScreen.GameScreen;
|
|
import de.samdev.colorrunner.screens.menu.MainMenu;
|
|
|
|
public class CRGameWorld implements GameInputListener {
|
|
public PlayerEntity player;
|
|
public List<CRGameEntity> entities;
|
|
|
|
public FPSCounter fps = new FPSCounter();
|
|
public Rectangle camViewBoundaries = new Rectangle();
|
|
|
|
public MapProvider mapprovider;
|
|
|
|
public CRGameWorld() {
|
|
reinitialize();
|
|
}
|
|
|
|
private void reinitialize() {
|
|
entities = new ArrayList<CRGameEntity>();
|
|
mapprovider = new EndlessMapProvider();
|
|
|
|
addEntity(player = new PlayerEntity(this, 40, 290));
|
|
|
|
mapprovider.init(this);
|
|
}
|
|
|
|
public void update(float delta) {
|
|
fps.Inc();
|
|
|
|
for (int i = entities.size()-1; i >= 0; i--) {
|
|
CRGameEntity ent = entities.get(i);
|
|
|
|
if (ent.active)
|
|
ent.update(delta);
|
|
else
|
|
entities.remove(i);
|
|
}
|
|
|
|
if(player.getPosition().y < - 10)
|
|
{
|
|
((Game) Gdx.app.getApplicationListener()).setScreen(new GameScreen());
|
|
}
|
|
|
|
mapprovider.update(this, player.bounds);
|
|
}
|
|
|
|
public CRGameEntity addEntity(CRGameEntity ent) {
|
|
entities.add(ent);
|
|
|
|
return ent;
|
|
}
|
|
|
|
@Override
|
|
public void doJump() {
|
|
player.jump();
|
|
}
|
|
|
|
@Override
|
|
public void switchColor(SwipeDirection sd) {
|
|
player.switchPhase(sd);
|
|
}
|
|
|
|
@Override
|
|
public void doFly() {
|
|
player.fly();
|
|
}
|
|
|
|
@Override
|
|
public void reset() {
|
|
reinitialize();
|
|
}
|
|
}
|