fixed dumb math mistake and changes to map gen index control

This commit is contained in:
Harrison Deng 2017-07-26 02:24:23 -05:00
parent e6b3960e7e
commit 013e3d7d99
8 changed files with 81 additions and 48 deletions

View File

@ -57,26 +57,32 @@ public class RhythmMapAlgorithm implements Runnable {
map.beginBuild(); map.beginBuild();
for (int index = 0; index < bassPeaks.size; index++) { for (int index = 0; index < bassPeaks.size; index++) {
if (bassPeaks.get(index) != 0 || UMPeaks.get(index) != 0) { if (bassPeaks.get(index) != 0 || UMPeaks.get(index) != 0) {
if (bassPeaks.get(index) != 0) {
//If there is a value of some sorts that is not zero, we generate some beat for the map //If there is a value of some sorts that is not zero, we generate some beat for the map
if (bassPeaks.get(index) >= avgBass) { if (bassPeaks.get(index) >= avgBass) {
float warningTime = map.goBack((int) (windowPerSecond*1.5f))/windowPerSecond; //If bass peak is greater than the bass peak average, then:
int indexMoved = map.goBack((int) (windowPerSecond*1.5f));
float waitTime = indexMoved/windowPerSecond;
float endRadius = (bassPeaks.get(index)/bassMax)*(Main.GAME_AREA_HEIGHT/4f); float endRadius = (bassPeaks.get(index)/bassMax)*(Main.GAME_AREA_HEIGHT/4f);
map.addToMap(Entities.VOID_CIRCLE, map.addToMap(Entities.VOID_CIRCLE,
endRadius, endRadius,
rand.nextFloat()*Main.GAME_AREA_WIDTH, rand.nextFloat()*Main.GAME_AREA_WIDTH,
rand.nextFloat()*Main.GAME_AREA_HEIGHT, rand.nextFloat()*Main.GAME_AREA_HEIGHT,
endRadius/(avgSPB*0.7f), endRadius/(avgSPB*0.7f),
warningTime waitTime
); );
map.resetIndex(); map.goForward(indexMoved);
} }
}
if (UMPeaks.get(index) != 0) {
if (UMPeaks.get(index) >= avgUM) { if (UMPeaks.get(index) >= avgUM) {
//If upper midrange peaks are greater than average, the:
int spawnLocations = (Main.GAME_AREA_WIDTH-8)/8; int spawnLocations = (Main.GAME_AREA_WIDTH-8)/8;
map.addToMap(Entities.BAR, map.addToMap(Entities.BAR,
MathUtils.round(rand.nextFloat()*spawnLocations)*8, MathUtils.round(rand.nextFloat()*spawnLocations)*8,
(8f/avgSPB)*speedMod); (8f/avgSPB)*speedMod);
} else { } else {
if (UMPeaks.get(index) != 0) {
float xSpawnLocation = (rand.nextFloat()*(Main.GAME_AREA_WIDTH-2))+1; float xSpawnLocation = (rand.nextFloat()*(Main.GAME_AREA_WIDTH-2))+1;
map.addToMap(Entities.PELLET, map.addToMap(Entities.PELLET,
xSpawnLocation, xSpawnLocation,
@ -85,6 +91,17 @@ public class RhythmMapAlgorithm implements Runnable {
(Main.GAME_AREA_HEIGHT/4f)/avgSPB); (Main.GAME_AREA_HEIGHT/4f)/avgSPB);
} }
} }
if (overlappedPeaks.get(index) != 0) {
}
if (rand.nextFloat() < 0.15f) {
switch(rand.nextInt(10)) {
case 0:
break;
}
}
} else { } else {
map.addNullToMap(); map.addNullToMap();
} }

View File

@ -1,15 +1,29 @@
package zero1hd.polyjet.entity; package zero1hd.polyjet.entity;
import zero1hd.polyjet.entity.ally.Laser;
import zero1hd.polyjet.entity.ally.PolyJetEntity;
import zero1hd.polyjet.entity.enemies.Bar;
import zero1hd.polyjet.entity.enemies.Flake;
import zero1hd.polyjet.entity.enemies.Pellet;
import zero1hd.polyjet.entity.enemies.Shard;
import zero1hd.polyjet.entity.enemies.VoidCircle;
public enum Entities { public enum Entities {
POLYJET(false), BAR(true), VOID_CIRCLE(true), SHARD(true), LASER(false), PELLET(true), FLAKE(true); POLYJET(false, PolyJetEntity.class), BAR(true, Bar.class), VOID_CIRCLE(true, VoidCircle.class), SHARD(true, Shard.class), LASER(false, Laser.class), PELLET(true, Pellet.class), FLAKE(true, Flake.class);
private boolean enemy; private final boolean enemy;
private final Class<? extends Entity> classType;
private Entities(boolean enemy) { private Entities(boolean enemy, Class<? extends Entity> classType) {
this.enemy = enemy; this.enemy = enemy;
this.classType = classType;
} }
public boolean isEnemy() { public boolean isEnemy() {
return enemy; return enemy;
} }
public Class<? extends Entity> getClassType() {
return classType;
}
} }

View File

@ -33,14 +33,18 @@ public class EntityController {
private Pool<Bar> barPool; private Pool<Bar> barPool;
private Pool<Flake> flakePool; private Pool<Flake> flakePool;
private EntityController ec = this;
//Ally pool declaration; //Ally pool declaration;
private Pool<Laser> laserPool; private Pool<Laser> laserPool;
public EntityController(AssetManager assetManager, Preferences preferences) { private Stage stage;
public EntityController(AssetManager assetManager, Preferences preferences, Stage stage) {
activeAllies = new Array<Entity>(); activeAllies = new Array<Entity>();
activeEnemies = new Array<Entity>(); activeEnemies = new Array<Entity>();
this.assets = assetManager; this.assets = assetManager;
this.prefs = preferences; this.prefs = preferences;
this.stage = stage;
//Enemy pool initialization; //Enemy pool initialization;
voidCirclePool = new Pool<VoidCircle>() { voidCirclePool = new Pool<VoidCircle>() {
@ -74,7 +78,7 @@ public class EntityController {
flakePool = new Pool<Flake>() { flakePool = new Pool<Flake>() {
@Override @Override
protected Flake newObject() { protected Flake newObject() {
return new Flake(assets.get("flake.png", Texture.class)); return new Flake(assets.get("flake.png", Texture.class), ec);
} }
}; };
@ -155,13 +159,7 @@ public class EntityController {
return bar; return bar;
case FLAKE: case FLAKE:
Flake flake = flakePool.obtain(); Flake flake = flakePool.obtain();
Shard[] shards = new Shard[(int) param[0]]; flake.init(param[1], param[2], param[3], param[4], param[5], (int) param[0]);
for (int i = 0; i < shards.length; i++) {
shards[i] = (Shard) retrieveEntity(Entities.SHARD);
shards[i].init(param[6], param[7], param[8], param[9], (int) param[10]);
stage.addActor(shards[i]);
}
flake.init(param[1], param[2], param[3], param[4], param[5], shards);
activeEnemies.add(flake); activeEnemies.add(flake);
stage.addActor(flake); stage.addActor(flake);
return flake; return flake;
@ -228,4 +226,7 @@ public class EntityController {
} }
} }
public Stage getStage() {
return stage;
}
} }

View File

@ -11,6 +11,7 @@ import com.badlogic.gdx.utils.Pool.Poolable;
import zero1hd.polyjet.Main; import zero1hd.polyjet.Main;
import zero1hd.polyjet.entity.Entities; import zero1hd.polyjet.entity.Entities;
import zero1hd.polyjet.entity.Entity; import zero1hd.polyjet.entity.Entity;
import zero1hd.polyjet.entity.EntityController;
public class Flake extends Entity implements Poolable { public class Flake extends Entity implements Poolable {
private Texture texture; private Texture texture;
@ -21,16 +22,23 @@ public class Flake extends Entity implements Poolable {
private Rectangle hitbox; private Rectangle hitbox;
private Vector2 center; private Vector2 center;
private Vector2 rot; private Vector2 rot;
private EntityController ec;
public Flake(Texture texture) { public Flake(Texture texture, EntityController ec) {
this.ec = ec;
this.texture = texture; this.texture = texture;
hitbox = new Rectangle(); hitbox = new Rectangle();
center = new Vector2(); center = new Vector2();
rot = new Vector2(); rot = new Vector2();
} }
public void init(float x, float y, float rate, float fuse, float angle, Shard... shards) { public void init(float x, float y, float rate, float fuse, float angle, int shardCount) {
this.shards = shards; this.shards = new Shard[shardCount];
for (int i = 0; i < shards.length; i++) {
shards[i] = (Shard) ec.retrieveEntity(Entities.SHARD);
shards[i].init(x, y, 360/shards.length*i, 0, 2);
ec.getStage().addActor(shards[i]);
}
setSize(3f, 3f); setSize(3f, 3f);
this.rate = rate; this.rate = rate;
this.timer = fuse; this.timer = fuse;
@ -38,7 +46,7 @@ public class Flake extends Entity implements Poolable {
hitbox.setSize(getWidth(), getHeight()); hitbox.setSize(getWidth(), getHeight());
center.set(getWidth()/2f, getHeight()/2f); center.set(getWidth()/2f, getHeight()/2f);
setPosition(x-center.x, y-center.y); setPosition(x-center.x, y-center.y);
rot.set(MathUtils.sinDeg(angle), MathUtils.cosDeg(angle)); rot.set(MathUtils.cosDeg(angle), MathUtils.sinDeg(angle));
} }
@Override @Override

View File

@ -6,7 +6,6 @@ import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.utils.Pool.Poolable; import com.badlogic.gdx.utils.Pool.Poolable;
import zero1hd.polyjet.Main; import zero1hd.polyjet.Main;
@ -28,7 +27,7 @@ public class Pellet extends Entity implements Poolable {
public void init(float x, float y, float angle, float rate) { public void init(float x, float y, float angle, float rate) {
setPosition(x, y); setPosition(x, y);
direction.set(MathUtils.sinDeg(angle), MathUtils.cosDeg(angle)); direction.set(MathUtils.cosDeg(angle), MathUtils.sinDeg(angle));
setSize(0.5f, 0.5f); setSize(0.5f, 0.5f);
hitBox.setSize(getWidth(), getHeight()); hitBox.setSize(getWidth(), getHeight());
this.rate = rate; this.rate = rate;

View File

@ -34,8 +34,8 @@ public class Shard extends Entity implements Poolable {
this.rate = rate; this.rate = rate;
this.hp = hp; this.hp = hp;
maxHp = hp; maxHp = hp;
this.angle.set(MathUtils.sinDeg(angle), MathUtils.cosDeg(angle)); this.angle.set(MathUtils.cosDeg(angle), MathUtils.sinDeg(angle));
sprite.setRotation(-angle); sprite.setRotation(angle+90);
setSize(2f, 2f); setSize(2f, 2f);
hitbox.setSize(getWidth(), getHeight()); hitbox.setSize(getWidth(), getHeight());
center.set(getWidth()/2f, getHeight()/2f); center.set(getWidth()/2f, getHeight()/2f);

View File

@ -46,7 +46,7 @@ public class GamePlayArea extends Stage {
Gdx.app.debug("Game Area", "new area created"); Gdx.app.debug("Game Area", "new area created");
polyjet = new PolyJetEntity(assetManager, 25f, 25f, "standard"); polyjet = new PolyJetEntity(assetManager, 25f, 25f, "standard");
ec = new EntityController(assetManager, prefs); ec = new EntityController(assetManager, prefs, this);
collisionDetector = new CollisionDetector(ec.activeAllies, ec.activeEnemies, assetManager, prefs); collisionDetector = new CollisionDetector(ec.activeAllies, ec.activeEnemies, assetManager, prefs);
ec.activeAllies.add(polyjet); ec.activeAllies.add(polyjet);
addActor(polyjet); addActor(polyjet);

View File

@ -96,14 +96,8 @@ public class SpawnerWindow extends Window {
break; break;
case FLAKE: case FLAKE:
Flake flake = (Flake) entity; Flake flake = (Flake) entity;
Shard[] shards = new Shard[(int) mod4.getValue()];
for (int i = 0; i < shards.length; i++) {
shards[i] = (Shard) ec.retrieveEntity(Entities.SHARD);
shards[i].init(coords.x, coords.y, 360f/shards.length*i, 0f, (int) 2);
stage.addActor(shards[i]);
}
stage.addActor(flake); stage.addActor(flake);
flake.init(coords.x, coords.y, mod1.getValue(), mod3.getValue(), mod2.getValue()/mod2.getMaxValue()*360f, shards); flake.init(coords.x, coords.y, mod1.getValue(), mod3.getValue(), mod2.getValue()/mod2.getMaxValue()*360f, (int) mod4.getValue());
default: default:
break; break;
} }