mirror of
https://github.com/jwinterm/SpaceShooter.git
synced 2026-10-17 05:51:30 +02:00
169 lines
4.4 KiB
Java
169 lines
4.4 KiB
Java
package com.spaceshooter;
|
|
|
|
import com.badlogic.gdx.Input.Keys;
|
|
import com.badlogic.gdx.audio.Music;
|
|
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.scenes.scene2d.Actor;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
|
import com.badlogic.gdx.Gdx;
|
|
import com.badlogic.gdx.Screen;
|
|
|
|
public class LevelScreen implements Screen {
|
|
private SpaceShooter game;
|
|
|
|
private OrthographicCamera camera;
|
|
private SpriteBatch batch;
|
|
private Texture bgtexture;
|
|
private Sprite bgsprite;
|
|
|
|
private Texture bgtexture2;
|
|
private Sprite bgsprite2;
|
|
|
|
private float scrollTimer = 0.0f;
|
|
|
|
private Music bgm;
|
|
|
|
private BulletManager bulletManager;
|
|
private EnemyManager enemyManager;
|
|
private PlayerManager playerManager;
|
|
private ScoreHandler scoreHandler;
|
|
private PickupManager pickupManager;
|
|
|
|
public LevelScreen(SpaceShooter game) {
|
|
this.game = game;
|
|
Gdx.input.setCursorCatched(true);
|
|
float w = Gdx.graphics.getWidth();
|
|
float h = Gdx.graphics.getHeight();
|
|
|
|
camera = new OrthographicCamera(w, h);
|
|
batch = new SpriteBatch();
|
|
// Load the stars with alpha channel
|
|
bgtexture = ResourceManager.getAssetManager().get(
|
|
ResourceManager.PrimaryBG1, Texture.class);
|
|
bgtexture.setWrap(Texture.TextureWrap.Repeat,
|
|
Texture.TextureWrap.Repeat);
|
|
|
|
bgtexture2 = ResourceManager.getAssetManager().get(
|
|
ResourceManager.ParallaxBG, Texture.class);
|
|
bgtexture2.setWrap(Texture.TextureWrap.Repeat,
|
|
Texture.TextureWrap.Repeat);
|
|
|
|
// first scroll
|
|
bgsprite = new Sprite(bgtexture);
|
|
bgsprite.setPosition(SpaceShooter.getLeftBound(), SpaceShooter.getBottomBound());
|
|
// Load the stars with alpha channel
|
|
|
|
// second scroll to make parallax
|
|
bgsprite2 = new Sprite(bgtexture2);
|
|
|
|
//bgsprite2.translate(getLeftBound()*2,getBottomBound());
|
|
bgsprite2.setPosition(SpaceShooter.getLeftBound() - (bgsprite2.getWidth()/4), SpaceShooter.getLeftBound());
|
|
bgsprite2.setColor(bgsprite2.getColor().r, bgsprite2.getColor().g,
|
|
bgsprite2.getColor().b, 125);
|
|
|
|
bulletManager = new BulletManager();
|
|
enemyManager = new EnemyManager();
|
|
bgm = Gdx.audio.newMusic(Gdx.files.internal("media/ethervapor.mp3"));
|
|
bgm.setLooping(true);
|
|
|
|
if (!SpaceShooter.isMuted())
|
|
bgm.play();
|
|
|
|
playerManager = new PlayerManager();
|
|
|
|
scoreHandler = new ScoreHandler();
|
|
pickupManager = new PickupManager();
|
|
}
|
|
|
|
@Override
|
|
public void render(float delta) {
|
|
|
|
if (Gdx.input.isKeyPressed(Keys.BACK) || Gdx.input.isKeyPressed(Keys.ESCAPE)) {
|
|
game.setScreen(new MenuScreen(game));
|
|
}
|
|
|
|
scrollTimer += (Gdx.graphics.getDeltaTime() / 5);
|
|
|
|
if (scrollTimer > 2.0f)
|
|
scrollTimer = 0.0f;
|
|
|
|
bgsprite.setV(0.5f * scrollTimer);
|
|
bgsprite.setV2(0.5f * scrollTimer - 1);
|
|
|
|
bgsprite2.setV(2f * scrollTimer);
|
|
bgsprite2.setV2(2f * scrollTimer - 1);
|
|
enemyManager.update(playerManager.getPlayer(), scoreHandler,
|
|
bulletManager);
|
|
playerManager.update(enemyManager,bulletManager, pickupManager, scoreHandler);
|
|
pickupManager.update();
|
|
Gdx.gl.glClearColor(0, 0, 0, 1);
|
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
|
|
|
|
batch.setProjectionMatrix(camera.combined);
|
|
batch.begin();
|
|
|
|
bgsprite.draw(batch);
|
|
bgsprite2.draw(batch);
|
|
bulletManager.update(enemyManager, batch, scoreHandler,
|
|
playerManager.getPlayer(), pickupManager);
|
|
enemyManager.draw(batch);
|
|
playerManager.drawPlayer(batch);
|
|
pickupManager.draw(batch);
|
|
bulletManager.draw(batch);
|
|
|
|
scoreHandler.displayScore(batch,SpaceShooter.getLeftBound(),
|
|
SpaceShooter.getTopBound()); // @ Top left of screen
|
|
|
|
batch.end();
|
|
|
|
}
|
|
|
|
@Override
|
|
public void resize(int width, int height) {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
@Override
|
|
public void show() {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
@Override
|
|
public void hide() {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
@Override
|
|
public void pause() {
|
|
// TODO Auto-generated method stub
|
|
dispose();
|
|
}
|
|
|
|
@Override
|
|
public void resume() {
|
|
// TODO Auto-generated method stub
|
|
ResourceManager.loadAll();
|
|
}
|
|
|
|
@Override
|
|
public void dispose() {
|
|
scoreHandler.saveScore();
|
|
batch.dispose();
|
|
bulletManager.dispose();
|
|
enemyManager.clear();
|
|
bgtexture.dispose();
|
|
bgtexture2.dispose();
|
|
playerManager.dispose();
|
|
pickupManager.dispose();
|
|
ResourceManager.getAssetManager().dispose();
|
|
|
|
}
|
|
|
|
} |