Compare commits
No commits in common. "35dea757760ff72138aa413efd0e560b3d15b34d" and "9e44b1e93f1f05d84ca7ad06ac691a83bf6a9c08" have entirely different histories.
35dea75776
...
9e44b1e93f
@ -1,4 +1,4 @@
|
|||||||
package com.me.brickbuster.utils;
|
package com.me.brickbuster;
|
||||||
|
|
||||||
import com.badlogic.gdx.math.MathUtils;
|
import com.badlogic.gdx.math.MathUtils;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
@ -42,7 +42,9 @@ public class Brick extends Entity implements PhysicsBody, CollisionListener {
|
|||||||
@Override
|
@Override
|
||||||
public void render(SpriteBatch sb, ShapeRenderer sr) {
|
public void render(SpriteBatch sb, ShapeRenderer sr) {
|
||||||
sb.setColor(type.getColor());
|
sb.setColor(type.getColor());
|
||||||
sb.draw(region, pos.x - BRICK_WIDTH/2, pos.y - BRICK_HEIGHT/2,
|
float x = pos.x - BRICK_WIDTH/2;
|
||||||
|
float y = pos.y - BRICK_HEIGHT/2;
|
||||||
|
sb.draw(region, x, y,
|
||||||
BRICK_WIDTH/2, BRICK_HEIGHT/2,
|
BRICK_WIDTH/2, BRICK_HEIGHT/2,
|
||||||
BRICK_WIDTH, BRICK_HEIGHT,
|
BRICK_WIDTH, BRICK_HEIGHT,
|
||||||
1f, 1f,
|
1f, 1f,
|
||||||
|
@ -9,6 +9,7 @@ import com.badlogic.gdx.physics.box2d.Body;
|
|||||||
import com.badlogic.gdx.physics.box2d.BodyDef;
|
import com.badlogic.gdx.physics.box2d.BodyDef;
|
||||||
import com.badlogic.gdx.physics.box2d.CircleShape;
|
import com.badlogic.gdx.physics.box2d.CircleShape;
|
||||||
import com.badlogic.gdx.physics.box2d.FixtureDef;
|
import com.badlogic.gdx.physics.box2d.FixtureDef;
|
||||||
|
import com.me.brickbuster.Utils;
|
||||||
import com.me.brickbuster.entity.Ball;
|
import com.me.brickbuster.entity.Ball;
|
||||||
import com.me.brickbuster.entity.Entity;
|
import com.me.brickbuster.entity.Entity;
|
||||||
import com.me.brickbuster.entity.Paddle;
|
import com.me.brickbuster.entity.Paddle;
|
||||||
@ -16,6 +17,7 @@ import com.me.brickbuster.physics.CollisionListener;
|
|||||||
import com.me.brickbuster.physics.EntityType;
|
import com.me.brickbuster.physics.EntityType;
|
||||||
import com.me.brickbuster.physics.PhysicsBody;
|
import com.me.brickbuster.physics.PhysicsBody;
|
||||||
import com.me.brickbuster.state.PlayState;
|
import com.me.brickbuster.state.PlayState;
|
||||||
|
import net.dermetfan.utils.Pair;
|
||||||
|
|
||||||
public abstract class PowerUp extends Entity implements PhysicsBody, CollisionListener {
|
public abstract class PowerUp extends Entity implements PhysicsBody, CollisionListener {
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ public class GridLevelLoader implements LevelLoader {
|
|||||||
private int playCount = 0;
|
private int playCount = 0;
|
||||||
|
|
||||||
public GridLevelLoader(PlayState state) {
|
public GridLevelLoader(PlayState state) {
|
||||||
this(state, false, false);
|
this(state, false, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
public GridLevelLoader(PlayState state, boolean randomShape, boolean randomType) {
|
public GridLevelLoader(PlayState state, boolean randomShape, boolean randomType) {
|
||||||
|
@ -2,7 +2,6 @@ package com.me.brickbuster.state;
|
|||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.Input;
|
import com.badlogic.gdx.Input;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
import com.badlogic.gdx.math.Vector3;
|
import com.badlogic.gdx.math.Vector3;
|
||||||
import com.me.brickbuster.BrickBuster;
|
import com.me.brickbuster.BrickBuster;
|
||||||
@ -24,7 +23,6 @@ public class MenuState extends State {
|
|||||||
public void render() {
|
public void render() {
|
||||||
game.sb.setProjectionMatrix(game.cam.combined);
|
game.sb.setProjectionMatrix(game.cam.combined);
|
||||||
game.sb.begin();
|
game.sb.begin();
|
||||||
game.sb.setColor(Color.WHITE);
|
|
||||||
game.sb.draw(playButton,
|
game.sb.draw(playButton,
|
||||||
BrickBuster.BOARD_WIDTH/2-playButton.getWidth()/2,
|
BrickBuster.BOARD_WIDTH/2-playButton.getWidth()/2,
|
||||||
BrickBuster.BOARD_HEIGHT/2-playButton.getHeight()/2);
|
BrickBuster.BOARD_HEIGHT/2-playButton.getHeight()/2);
|
||||||
|
@ -2,20 +2,17 @@ package com.me.brickbuster.state;
|
|||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.physics.box2d.*;
|
import com.badlogic.gdx.physics.box2d.*;
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import com.me.brickbuster.BrickBuster;
|
import com.me.brickbuster.BrickBuster;
|
||||||
import com.me.brickbuster.utils.CompositeIterator;
|
|
||||||
import com.me.brickbuster.entity.*;
|
import com.me.brickbuster.entity.*;
|
||||||
import com.me.brickbuster.entity.powerup.PowerUp;
|
import com.me.brickbuster.entity.powerup.PowerUp;
|
||||||
import com.me.brickbuster.layout.BrickLayout;
|
import com.me.brickbuster.layout.*;
|
||||||
import com.me.brickbuster.layout.FileLevelLoader;
|
|
||||||
import com.me.brickbuster.layout.Level;
|
|
||||||
import com.me.brickbuster.layout.LevelLoader;
|
|
||||||
import com.me.brickbuster.physics.Box2dContactListener;
|
import com.me.brickbuster.physics.Box2dContactListener;
|
||||||
import com.me.brickbuster.physics.EntityType;
|
import com.me.brickbuster.physics.EntityType;
|
||||||
import com.me.brickbuster.physics.PhysicsBody;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
@ -84,20 +81,25 @@ public class PlayState extends FieldState {
|
|||||||
long start = System.nanoTime();
|
long start = System.nanoTime();
|
||||||
|
|
||||||
game.sb.begin();
|
game.sb.begin();
|
||||||
Iterator<? extends Entity> it = CompositeIterator.concat(balls, bricks);
|
for (Brick block : bricks) {
|
||||||
while (it.hasNext()) {
|
block.render(game.sb, game.sr);
|
||||||
it.next().render(game.sb, game.sr);
|
}
|
||||||
|
for (Ball ball : balls) {
|
||||||
|
ball.render(game.sb, game.sr);
|
||||||
}
|
}
|
||||||
game.sb.end();
|
game.sb.end();
|
||||||
|
|
||||||
it = CompositeIterator.concat(powerUps, shields);
|
for (PowerUp powerUp : powerUps) {
|
||||||
while (it.hasNext()) {
|
powerUp.render(game.sb, game.sr);
|
||||||
it.next().render(game.sb, game.sr);
|
}
|
||||||
|
for (Shield shield : shields) {
|
||||||
|
shield.render(game.sb, game.sr);
|
||||||
}
|
}
|
||||||
paddle.render(game.sb, game.sr);
|
paddle.render(game.sb, game.sr);
|
||||||
|
|
||||||
//debugRenderer.render(world, game.cam.combined.cpy().scl(PIXEL_PER_METER));
|
//debugRenderer.render(world, game.cam.combined.cpy().scl(PIXEL_PER_METER));
|
||||||
long renderTime = System.nanoTime() - start;
|
long renderTime = System.nanoTime() - start;
|
||||||
|
|
||||||
game.fb.begin();
|
game.fb.begin();
|
||||||
game.font.setColor(Color.GRAY);
|
game.font.setColor(Color.GRAY);
|
||||||
game.font.draw(game.fb, String.format("FPS: %d Update: %.2f ms Render: %.2f ms",
|
game.font.draw(game.fb, String.format("FPS: %d Update: %.2f ms Render: %.2f ms",
|
||||||
@ -108,26 +110,47 @@ public class PlayState extends FieldState {
|
|||||||
@Override
|
@Override
|
||||||
public void update(float dt) {
|
public void update(float dt) {
|
||||||
long start = System.nanoTime();
|
long start = System.nanoTime();
|
||||||
|
|
||||||
paddle.update(dt);
|
paddle.update(dt);
|
||||||
|
|
||||||
Iterator<? extends Entity> it = CompositeIterator.concat(balls, powerUps, shields, bricks);
|
for (Iterator<Ball> it = balls.iterator(); it.hasNext();) {
|
||||||
while (it.hasNext()) {
|
Ball ball = it.next();
|
||||||
Entity ent = it.next();
|
ball.update(dt);
|
||||||
ent.update(dt);
|
if (ball.isDeleted()) {
|
||||||
if (ent.isDeleted()) {
|
|
||||||
it.remove();
|
it.remove();
|
||||||
if (ent instanceof PhysicsBody) {
|
world.destroyBody(ball.getBody());
|
||||||
world.destroyBody(((PhysicsBody) ent).getBody());
|
|
||||||
}
|
|
||||||
ent.dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (balls.size == 0) {
|
if (balls.size == 0) {
|
||||||
ballReset();
|
ballReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (Iterator<PowerUp> it = powerUps.iterator(); it.hasNext();) {
|
||||||
|
PowerUp powerUp = it.next();
|
||||||
|
powerUp.update(dt);
|
||||||
|
if(powerUp.isDeleted()) {
|
||||||
|
it.remove();
|
||||||
|
world.destroyBody(powerUp.getBody());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Iterator<Shield> it = shields.iterator(); it.hasNext();) {
|
||||||
|
Shield shield = it.next();
|
||||||
|
shield.update(dt);
|
||||||
|
if(shield.isDeleted()) {
|
||||||
|
it.remove();
|
||||||
|
world.destroyBody(shield.getBody());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Iterator<Brick> it = bricks.iterator(); it.hasNext();) {
|
||||||
|
Brick brick = it.next();
|
||||||
|
brick.update(dt);
|
||||||
|
if (brick.isDeleted()) {
|
||||||
|
it.remove();
|
||||||
|
brick.dispose();
|
||||||
|
world.destroyBody(brick.getBody());
|
||||||
|
}
|
||||||
|
}
|
||||||
if (bricks.size == 0) {
|
if (bricks.size == 0) {
|
||||||
currentLevel = levelLoader.getNextLevel();
|
currentLevel = levelLoader.getNextLevel();
|
||||||
if (currentLevel == null) {
|
if (currentLevel == null) {
|
||||||
@ -138,6 +161,7 @@ public class PlayState extends FieldState {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
world.step(dt, 6, 2);
|
world.step(dt, 6, 2);
|
||||||
updateTime = System.nanoTime() - start;
|
updateTime = System.nanoTime() - start;
|
||||||
}
|
}
|
||||||
|
@ -1,43 +0,0 @@
|
|||||||
package com.me.brickbuster.utils;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
public class CompositeIterator<T> implements Iterator<T> {
|
|
||||||
|
|
||||||
private short index = 0;
|
|
||||||
private Iterator<? extends T> iterator;
|
|
||||||
private Iterable<? extends T>[] iterables;
|
|
||||||
|
|
||||||
private CompositeIterator(Iterable<? extends T>... iterables) {
|
|
||||||
this.iterables = iterables;
|
|
||||||
this.iterator = iterables[index].iterator();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasNext() {
|
|
||||||
if (iterator.hasNext()) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
if (++index < iterables.length) {
|
|
||||||
iterator = iterables[index].iterator();
|
|
||||||
return hasNext();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public T next() {
|
|
||||||
return iterator.next();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void remove() {
|
|
||||||
iterator.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <E> CompositeIterator<E> concat(Iterable<? extends E>... iterables) {
|
|
||||||
return new CompositeIterator<E>(iterables);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user