Add randomPowerUpChance to Level type.
Allow defining said chance in level files. Generate powerups on the fly when a brick is hit and the chance is met
This commit is contained in:
parent
35dea75776
commit
d32cccebd6
@ -165,6 +165,11 @@ public class Brick extends Entity implements PhysicsBody, CollisionListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float powerUpChance = ((PlayState) state).currentLevel.getRandomPowerUpChance();
|
||||||
|
if (powerUpType == null && powerUpChance > 0f && MathUtils.randomBoolean(powerUpChance)) {
|
||||||
|
powerUpType = PowerUpType.getWeightedRandom();
|
||||||
|
}
|
||||||
|
|
||||||
if (powerUpType != null) {
|
if (powerUpType != null) {
|
||||||
((PlayState) state).powerUps.add(powerUpType.createInstance((PlayState) state, this));
|
((PlayState) state).powerUps.add(powerUpType.createInstance((PlayState) state, this));
|
||||||
}
|
}
|
||||||
|
@ -1,30 +1,26 @@
|
|||||||
package com.me.brickbuster.layout;
|
package com.me.brickbuster.layout;
|
||||||
|
|
||||||
import com.badlogic.gdx.files.FileHandle;
|
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import com.badlogic.gdx.utils.Json;
|
|
||||||
import com.me.brickbuster.entity.Brick;
|
import com.me.brickbuster.entity.Brick;
|
||||||
|
import com.me.brickbuster.state.FieldState;
|
||||||
import com.me.brickbuster.state.PlayState;
|
import com.me.brickbuster.state.PlayState;
|
||||||
|
|
||||||
public class FileLayout implements BrickLayout {
|
public class FileLayout implements BrickLayout {
|
||||||
|
|
||||||
private static final Json JSON = new Json();
|
private FieldState state;
|
||||||
|
private LevelJsonTemplate template;
|
||||||
private PlayState state;
|
|
||||||
private Array<Brick> bricks;
|
private Array<Brick> bricks;
|
||||||
private FileHandle file;
|
|
||||||
|
|
||||||
public FileLayout(PlayState state, FileHandle file) {
|
public FileLayout(FieldState state, LevelJsonTemplate template) {
|
||||||
this.state = state;
|
this.state = state;
|
||||||
this.file = file;
|
this.template = template;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
bricks = new Array<Brick>();
|
bricks = new Array<Brick>();
|
||||||
|
|
||||||
LevelJsonTemplate level = JSON.fromJson(LevelJsonTemplate.class, file);
|
for (LevelJsonTemplate.BrickJsonTemplate brick : template.bricks) {
|
||||||
for (LevelJsonTemplate.BrickJsonTemplate brick : level.bricks) {
|
|
||||||
final float x = PlayState.EDGE_PADDING + Brick.BRICK_WIDTH/2 + brick.col * Brick.BRICK_WIDTH;
|
final float x = PlayState.EDGE_PADDING + Brick.BRICK_WIDTH/2 + brick.col * Brick.BRICK_WIDTH;
|
||||||
final float y = PlayState.EDGE_PADDING + Brick.BRICK_HEIGHT/2 + brick.row * Brick.BRICK_HEIGHT;
|
final float y = PlayState.EDGE_PADDING + Brick.BRICK_HEIGHT/2 + brick.row * Brick.BRICK_HEIGHT;
|
||||||
|
|
||||||
|
@ -2,14 +2,19 @@ package com.me.brickbuster.layout;
|
|||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.files.FileHandle;
|
import com.badlogic.gdx.files.FileHandle;
|
||||||
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
|
import com.badlogic.gdx.utils.Json;
|
||||||
|
import com.me.brickbuster.state.FieldState;
|
||||||
import com.me.brickbuster.state.PlayState;
|
import com.me.brickbuster.state.PlayState;
|
||||||
|
|
||||||
public class FileLevelLoader implements LevelLoader {
|
public class FileLevelLoader implements LevelLoader {
|
||||||
|
|
||||||
private PlayState state;
|
private static final Json JSON = new Json();
|
||||||
|
|
||||||
|
private FieldState state;
|
||||||
private int level = 1;
|
private int level = 1;
|
||||||
|
|
||||||
public FileLevelLoader(PlayState state) {
|
public FileLevelLoader(FieldState state) {
|
||||||
this.state = state;
|
this.state = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,8 +22,15 @@ public class FileLevelLoader implements LevelLoader {
|
|||||||
public Level getNextLevel() {
|
public Level getNextLevel() {
|
||||||
FileHandle file = Gdx.files.internal("levels/level_" + level + ".json");
|
FileHandle file = Gdx.files.internal("levels/level_" + level + ".json");
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
|
LevelJsonTemplate template = JSON.fromJson(LevelJsonTemplate.class, file);
|
||||||
|
|
||||||
|
Texture background = null;
|
||||||
|
if (template.backgroundFile != null && !"".equals(template.backgroundFile)) {
|
||||||
|
background = new Texture(Gdx.files.internal(template.backgroundFile));
|
||||||
|
}
|
||||||
|
|
||||||
level++;
|
level++;
|
||||||
return new Level(new FileLayout(state, file), null, null);
|
return new Level(new FileLayout(state, template), background, template.randomPowerUpChance);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -6,16 +6,16 @@ public class Level {
|
|||||||
|
|
||||||
private final BrickLayout layout;
|
private final BrickLayout layout;
|
||||||
private final Texture background;
|
private final Texture background;
|
||||||
private final Texture border;
|
private final float randomPowerUpChance;
|
||||||
|
|
||||||
public Level(BrickLayout layout) {
|
public Level(BrickLayout layout) {
|
||||||
this(layout, null, null);
|
this(layout, null, 0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Level(BrickLayout layout, Texture background, Texture border) {
|
public Level(BrickLayout layout, Texture background, float randomPowerUpChance) {
|
||||||
this.layout = layout;
|
this.layout = layout;
|
||||||
this.background = background;
|
this.background = background;
|
||||||
this.border = border;
|
this.randomPowerUpChance = randomPowerUpChance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BrickLayout getLayout() {
|
public BrickLayout getLayout() {
|
||||||
@ -26,8 +26,8 @@ public class Level {
|
|||||||
return background;
|
return background;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Texture getBorder() {
|
public float getRandomPowerUpChance() {
|
||||||
return border;
|
return randomPowerUpChance;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ import java.util.List;
|
|||||||
public class LevelJsonTemplate {
|
public class LevelJsonTemplate {
|
||||||
|
|
||||||
public String backgroundFile;
|
public String backgroundFile;
|
||||||
public String borderFile;
|
public float randomPowerUpChance;
|
||||||
public List<BrickJsonTemplate> bricks;
|
public List<BrickJsonTemplate> bricks;
|
||||||
|
|
||||||
public static class BrickJsonTemplate {
|
public static class BrickJsonTemplate {
|
||||||
|
Loading…
Reference in New Issue
Block a user