Rev 886 |
Rev 894 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
package com.gebauz.burutaru.game;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.gebauz.bauzoid.game.Game;
import com.gebauz.bauzoid.game.GameObject;
import com.gebauz.bauzoid.game.entities.EntityManager;
import com.gebauz.bauzoid.graphics.sprite.Sprite;
import com.gebauz.bauzoid.math.Vector2;
import com.gebauz.burutaru.GameConsts;
import com.gebauz.burutaru.game.entities.BlobEnemies;
import com.gebauz.burutaru.game.entities.Explosions;
import com.gebauz.burutaru.game.entities.PlasmaShots;
import com.gebauz.burutaru.game.entities.PowerUpMissile;
import com.gebauz.burutaru.game.entities.PowerUps;
import com.gebauz.burutaru.game.entities.Ship;
import com.gebauz.burutaru.game.entities.VirtualPad;
public class GameLogic extends GameObject
{
// Constants========================================================================================
public static final float SPAWN_INTERVAL_MIN = 0.2f;
public static final float SPAWN_INTERVAL_MAX = 1.5f;
// Embedded Types===================================================================================
// Fields===========================================================================================
private EntityManager mEntities = new EntityManager();
private Ship mShip = null;
private ShipController mShipController = null;
private ShipParameters mShipParameters = null;
private PlasmaShots mPlasmaShots = null;
private BlobEnemies mBlobEnemies = null;
private Explosions mExplosions = null;
private VirtualPad mVirtualPad = null;
private PowerUps mPowerUps = null;
private PowerUpMissile mPowerUpMissile = null;
// TEMP:
private Sprite mBackground = null;
private float mSpawnTimer = 0.0f;
// Methods==========================================================================================
public GameLogic(Game game)
{
super(game);
// TEMP:
mBackground = new Sprite(getGraphics(), "data/textures/background.png");
}
public void createEntities()
{
mShip = mEntities.addEntity(new Ship(this));
mPlasmaShots = mEntities.addEntity(new PlasmaShots(this));
mBlobEnemies = mEntities.addEntity(new BlobEnemies(this));
mExplosions = mEntities.addEntity(new Explosions(this));
mVirtualPad = mEntities.addEntity(new VirtualPad(this));
mPowerUps = mEntities.addEntity(new PowerUps(this));
mPowerUpMissile = mEntities.addEntity(new PowerUpMissile(this));
}
public void initAsync()
{
createEntities();
mEntities.initAsync();
// TEMP:
mBackground.initAsync();
}
public void init()
{
mEntities.init();
// TEMP:
mBackground.init();
mBackground.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
mShipController = new ShipController(this);
mShipParameters = new ShipParameters(this);
}
public void exit()
{
mShipController = null;
mShipParameters = null;
mEntities.exit();
}
public void update(float deltaTime)
{
mShipController.handleInput(deltaTime);
mShip.update(deltaTime);
mPlasmaShots.update(deltaTime);
mBlobEnemies.update(deltaTime);
mExplosions.update(deltaTime);
mPowerUps.update(deltaTime);
mPowerUpMissile.update(deltaTime);
// TEMP:
mSpawnTimer -= deltaTime;
if (mSpawnTimer < 0.0f)
{
mBlobEnemies.spawn(GameConsts.VIRTUAL_SCREEN_WIDTH + 100.0f, getGame().getRandomFloat(100.0f, GameConsts.VIRTUAL_SCREEN_HEIGHT - 100.0f));
mSpawnTimer = getGame().getRandomFloat(SPAWN_INTERVAL_MIN, SPAWN_INTERVAL_MAX);
}
}
public void render()
{
// TEMP:
mBackground.x = 0;
mBackground.y = 0;
mBackground.w = GameConsts.VIRTUAL_SCREEN_WIDTH;
mBackground.h = GameConsts.VIRTUAL_SCREEN_HEIGHT;
mBackground.pivotX = 0;
mBackground.pivotY = 0;
mBackground.render();
// render powerups
mPowerUps.render();
// render weapons
mPlasmaShots.render();
mPowerUpMissile.render();
// render enemies
mBlobEnemies.render();
// render ships
mShip.render();
// render effects
mExplosions.render();
// render UI
mVirtualPad.render();
}
public boolean checkForHit(float x, float y, float w, float h)
{
boolean result = false;
if (mBlobEnemies.checkForHit(x, y, w, h))
result = true;
// TODO: more enemy types here:
return result;
}
// TODO: maybe it's time to generalize an Enemy interface
public boolean getNearestEnemyPosition(float x, float y, Vector2 result)
{
boolean found = mBlobEnemies.getNearestEnemy(x, y, result);
return found;
}
// Getters/Setters==================================================================================
public final Ship getShip() { return mShip; }
public final PlasmaShots getPlasmaShots() { return mPlasmaShots; }
public final Explosions getExplosions() { return mExplosions; }
public final VirtualPad getVirtualPad() { return mVirtualPad; }
public final PowerUps getPowerUps() { return mPowerUps; }
public final PowerUpMissile getPowerUpMissile() { return mPowerUpMissile; }
public final ShipParameters getShipParameters() { return mShipParameters; }
}