progress on debug screen and minor error resolved with map gen
Before Width: | Height: | Size: 248 B After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 317 B After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 294 B After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 487 B After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 503 B After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 608 B After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 167 B After Width: | Height: | Size: 1.2 KiB |
@ -8,8 +8,12 @@ import com.badlogic.gdx.utils.FloatArray;
|
|||||||
import zero1hd.polyjet.Polyjet;
|
import zero1hd.polyjet.Polyjet;
|
||||||
import zero1hd.polyjet.audio.AudioAnalyzer;
|
import zero1hd.polyjet.audio.AudioAnalyzer;
|
||||||
import zero1hd.polyjet.entity.Entities;
|
import zero1hd.polyjet.entity.Entities;
|
||||||
|
import zero1hd.polyjet.util.MiniEvents;
|
||||||
|
import zero1hd.polyjet.util.MiniSender;
|
||||||
|
|
||||||
public class RhythmMapAlgorithm implements Runnable {
|
public class RhythmMapAlgorithm implements Runnable {
|
||||||
|
private MiniSender sender;
|
||||||
|
|
||||||
private FloatArray bassPeaks;
|
private FloatArray bassPeaks;
|
||||||
private FloatArray UMPeaks;
|
private FloatArray UMPeaks;
|
||||||
private FloatArray overlappedPeaks;
|
private FloatArray overlappedPeaks;
|
||||||
@ -23,6 +27,8 @@ public class RhythmMapAlgorithm implements Runnable {
|
|||||||
|
|
||||||
private volatile int progress;
|
private volatile int progress;
|
||||||
public RhythmMapAlgorithm(AudioAnalyzer analyzer, float speedMod, float healthMod) {
|
public RhythmMapAlgorithm(AudioAnalyzer analyzer, float speedMod, float healthMod) {
|
||||||
|
sender = new MiniSender();
|
||||||
|
|
||||||
bassPeaks = analyzer.getBassPeaks();
|
bassPeaks = analyzer.getBassPeaks();
|
||||||
UMPeaks = analyzer.getUMPeaks();
|
UMPeaks = analyzer.getUMPeaks();
|
||||||
overlappedPeaks = analyzer.getOverlappedPeaks();
|
overlappedPeaks = analyzer.getOverlappedPeaks();
|
||||||
@ -41,7 +47,7 @@ public class RhythmMapAlgorithm implements Runnable {
|
|||||||
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) {
|
||||||
int warningTime = (int) ((3/speedMod)*windowPerSecond);
|
int warningTime = (int) ((3/speedMod)*windowPerSecond);
|
||||||
if (overlappedPeaks.get(index + warningTime) != 0) {
|
if ((index+warningTime <= bassPeaks.size) && overlappedPeaks.get(index + warningTime) != 0) {
|
||||||
//TODO basic void circle spawning
|
//TODO basic void circle spawning
|
||||||
float endRadius = overlappedPeaks.get(index+3)*Polyjet.GAME_AREA_WIDTH;
|
float endRadius = overlappedPeaks.get(index+3)*Polyjet.GAME_AREA_WIDTH;
|
||||||
|
|
||||||
@ -73,6 +79,8 @@ public class RhythmMapAlgorithm implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
progress = (int) (100f*index/bassPeaks.size);
|
progress = (int) (100f*index/bassPeaks.size);
|
||||||
|
|
||||||
|
sender.send(MiniEvents.MAPGEN_ITERATED);
|
||||||
}
|
}
|
||||||
map.endBuild();
|
map.endBuild();
|
||||||
}
|
}
|
||||||
@ -84,4 +92,8 @@ public class RhythmMapAlgorithm implements Runnable {
|
|||||||
public synchronized int getProgress() {
|
public synchronized int getProgress() {
|
||||||
return progress;
|
return progress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MiniSender getSender() {
|
||||||
|
return sender;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ public class Flake extends Actor implements Poolable, Entity {
|
|||||||
|
|
||||||
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, Shard... shards) {
|
||||||
this.shards = shards;
|
this.shards = shards;
|
||||||
setSize(1f, 1f);
|
setSize(3f, 3f);
|
||||||
this.rate = rate;
|
this.rate = rate;
|
||||||
this.timer = fuse;
|
this.timer = fuse;
|
||||||
hitbox.setSize(getWidth(), getHeight());
|
hitbox.setSize(getWidth(), getHeight());
|
||||||
|
@ -71,7 +71,7 @@ public class Shard extends Actor implements Entity, Poolable {
|
|||||||
@Override
|
@Override
|
||||||
public void draw(Batch batch, float parentAlpha) {
|
public void draw(Batch batch, float parentAlpha) {
|
||||||
sprite.setCenter(getX()+center.x, getY()+center.y);
|
sprite.setCenter(getX()+center.x, getY()+center.y);
|
||||||
sprite.setColor((float)hp/(float)maxHp, 0f, 0f, 1f);
|
sprite.setColor(1.3f-((float)hp/(float)maxHp), 1.3f-((float)hp/(float)maxHp), 1.3f-((float)hp/(float)maxHp), 0.75f);
|
||||||
sprite.draw(batch);
|
sprite.draw(batch);
|
||||||
batch.setColor(Color.WHITE);
|
batch.setColor(Color.WHITE);
|
||||||
super.draw(batch, parentAlpha);
|
super.draw(batch, parentAlpha);
|
||||||
|
@ -230,11 +230,18 @@ public class AnalyzePage extends Page implements MiniListener {
|
|||||||
info[3].setText("data cleaning done.");
|
info[3].setText("data cleaning done.");
|
||||||
info[4].addAction(Actions.color(Color.BLACK, 0.75f));
|
info[4].addAction(Actions.color(Color.BLACK, 0.75f));
|
||||||
mapGenAlgorithm = new RhythmMapAlgorithm(audioAnalyzer, speedModifier.getValue(), healthModifier.getValue());
|
mapGenAlgorithm = new RhythmMapAlgorithm(audioAnalyzer, speedModifier.getValue(), healthModifier.getValue());
|
||||||
|
mapGenAlgorithm.getSender().addListener(this);
|
||||||
mapGenThread = new Thread(mapGenAlgorithm);
|
mapGenThread = new Thread(mapGenAlgorithm);
|
||||||
mapGenThread.start();
|
mapGenThread.start();
|
||||||
|
startTime = System.currentTimeMillis();
|
||||||
break;
|
break;
|
||||||
case MAPGEN_ITERATED:
|
case MAPGEN_ITERATED:
|
||||||
info[4].setText("Generating map: " + mapGenAlgorithm.getProgress());
|
info[4].setText("Generating map: " + mapGenAlgorithm.getProgress());
|
||||||
|
break;
|
||||||
|
case MAP_GENERATED:
|
||||||
|
endTime = System.currentTimeMillis();
|
||||||
|
info[5].setText("Done. Generation time: " + ((endTime - startTime)/1000f) + "s");
|
||||||
|
info[5].addAction(Actions.color(Color.BLACK, 0.75f));
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -246,8 +253,4 @@ public class AnalyzePage extends Page implements MiniListener {
|
|||||||
info[3].setText("finalizing data...");
|
info[3].setText("finalizing data...");
|
||||||
info[3].addAction(Actions.color(Color.BLACK, 0.75f));
|
info[3].addAction(Actions.color(Color.BLACK, 0.75f));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void generateMap() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,10 @@ import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
|||||||
|
|
||||||
import zero1hd.polyjet.Polyjet;
|
import zero1hd.polyjet.Polyjet;
|
||||||
import zero1hd.polyjet.audio.AudioAnalyzer;
|
import zero1hd.polyjet.audio.AudioAnalyzer;
|
||||||
|
import zero1hd.polyjet.audio.map.RhythmMapAlgorithm;
|
||||||
import zero1hd.polyjet.screens.MainMenu;
|
import zero1hd.polyjet.screens.MainMenu;
|
||||||
import zero1hd.polyjet.ui.windows.BeatViewer;
|
import zero1hd.polyjet.ui.windows.BeatViewer;
|
||||||
|
import zero1hd.polyjet.ui.windows.DifficultyWindow;
|
||||||
import zero1hd.polyjet.ui.windows.FPSWindow;
|
import zero1hd.polyjet.ui.windows.FPSWindow;
|
||||||
import zero1hd.polyjet.ui.windows.GraphWindow;
|
import zero1hd.polyjet.ui.windows.GraphWindow;
|
||||||
import zero1hd.polyjet.ui.windows.MusicController;
|
import zero1hd.polyjet.ui.windows.MusicController;
|
||||||
@ -34,8 +36,10 @@ public class CreativeStage extends Stage implements MiniListener {
|
|||||||
GraphWindow graphViewer;
|
GraphWindow graphViewer;
|
||||||
VolumeWindow volumeWindow;
|
VolumeWindow volumeWindow;
|
||||||
SpawnerWindow spawnerWindow;
|
SpawnerWindow spawnerWindow;
|
||||||
|
DifficultyWindow diffWindow;
|
||||||
|
|
||||||
AudioAnalyzer analyzer;
|
AudioAnalyzer analyzer;
|
||||||
|
RhythmMapAlgorithm mapGen;
|
||||||
Window toolbox;
|
Window toolbox;
|
||||||
|
|
||||||
public CreativeStage(final Polyjet core, final MainMenu mainMenu, final GamePlayArea gpa) {
|
public CreativeStage(final Polyjet core, final MainMenu mainMenu, final GamePlayArea gpa) {
|
||||||
@ -48,6 +52,7 @@ public class CreativeStage extends Stage implements MiniListener {
|
|||||||
graphViewer = new GraphWindow("Peak Values", core.getDefaultSkin());
|
graphViewer = new GraphWindow("Peak Values", core.getDefaultSkin());
|
||||||
volumeWindow = new VolumeWindow("Volume adjustments", core.getDefaultSkin(), core.getPrefs());
|
volumeWindow = new VolumeWindow("Volume adjustments", core.getDefaultSkin(), core.getPrefs());
|
||||||
spawnerWindow = new SpawnerWindow("Spawn Tool", core.getDefaultSkin(), gpa.ec, gpa);
|
spawnerWindow = new SpawnerWindow("Spawn Tool", core.getDefaultSkin(), gpa.ec, gpa);
|
||||||
|
diffWindow = new DifficultyWindow(core.getDefaultSkin());
|
||||||
|
|
||||||
//Back button
|
//Back button
|
||||||
TextButton backButton = new TextButton("Back", core.getDefaultSkin());
|
TextButton backButton = new TextButton("Back", core.getDefaultSkin());
|
||||||
@ -171,7 +176,21 @@ public class CreativeStage extends Stage implements MiniListener {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
toolboxToolSet.add(spawnToolCheckBox);
|
toolboxToolSet.add(spawnToolCheckBox);
|
||||||
|
toolboxToolSet.row();
|
||||||
|
|
||||||
|
final CheckBox diffAdjusterCheckBox = new CheckBox(" Difficulty", core.getDefaultSkin());
|
||||||
|
diffAdjusterCheckBox.addListener(new ChangeListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void changed(ChangeEvent event, Actor actor) {
|
||||||
|
if (diffAdjusterCheckBox.isChecked()) {
|
||||||
|
addActor(diffWindow);
|
||||||
|
} else {
|
||||||
|
diffWindow.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
toolboxToolSet.add(diffAdjusterCheckBox);
|
||||||
|
|
||||||
ScrollPane scroller = new ScrollPane(toolboxToolSet, core.getDefaultSkin());
|
ScrollPane scroller = new ScrollPane(toolboxToolSet, core.getDefaultSkin());
|
||||||
toolbox.add(scroller).expand().fill();
|
toolbox.add(scroller).expand().fill();
|
||||||
@ -225,16 +244,19 @@ public class CreativeStage extends Stage implements MiniListener {
|
|||||||
analyzer.startAnalyticalThread(musicSelector.getSelectedMusic());
|
analyzer.startAnalyticalThread(musicSelector.getSelectedMusic());
|
||||||
break;
|
break;
|
||||||
case SPECTRAL_FLUX_DONE:
|
case SPECTRAL_FLUX_DONE:
|
||||||
analyzer.runThresholdCleaning();
|
analyzer.runThresholdCleaning(diffWindow.getSensitivityVal());
|
||||||
break;
|
break;
|
||||||
case MUSIC_DATA_CLEANED:
|
case MUSIC_DATA_CLEANED:
|
||||||
|
mapGen = new RhythmMapAlgorithm(analyzer, diffWindow.getSpeedModifier(), diffWindow.getHealthModifier());
|
||||||
|
Thread mapGenThread = new Thread(mapGen);
|
||||||
|
mapGenThread.start();
|
||||||
|
break;
|
||||||
|
case MAP_GENERATED:
|
||||||
musicPlayBackControls.setAudiofile(musicSelector.getSelectedMusic());
|
musicPlayBackControls.setAudiofile(musicSelector.getSelectedMusic());
|
||||||
volumeWindow.setMusic(musicPlayBackControls.getAudiofile());
|
volumeWindow.setMusic(musicPlayBackControls.getAudiofile());
|
||||||
beatViewer.setMusic(musicPlayBackControls.getAudiofile(), analyzer);
|
beatViewer.setMusic(musicPlayBackControls.getAudiofile(), analyzer);
|
||||||
graphViewer.setData(analyzer.getBassPeaks(), analyzer.getUMPeaks(), musicPlayBackControls.getAudiofile());
|
graphViewer.setData(analyzer.getBassPeaks(), analyzer.getUMPeaks(), musicPlayBackControls.getAudiofile());
|
||||||
break;
|
break;
|
||||||
case MAP_GENERATED:
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,8 @@ public class DifficultyWindow extends Window {
|
|||||||
private Slider healthModifier;
|
private Slider healthModifier;
|
||||||
private Label healthModifierTitle;
|
private Label healthModifierTitle;
|
||||||
|
|
||||||
public DifficultyWindow(String title, Skin skin) {
|
public DifficultyWindow(Skin skin) {
|
||||||
super(title, skin, "tinted");
|
super("Difficulty Adjuster", skin, "tinted");
|
||||||
sensitivityRating = new Slider(-5f, 5f, 1f, false, skin);
|
sensitivityRating = new Slider(-5f, 5f, 1f, false, skin);
|
||||||
sensitivityRating.setValue(0f);
|
sensitivityRating.setValue(0f);
|
||||||
sensitivityRating.addListener(new ChangeListener() {
|
sensitivityRating.addListener(new ChangeListener() {
|
||||||
@ -29,8 +29,7 @@ public class DifficultyWindow extends Window {
|
|||||||
|
|
||||||
sensitivityRatingTitle = new Label("Base Difficulty: " + sensitivityRating.getValue(), skin, "sub-font", skin.getColor("default"));
|
sensitivityRatingTitle = new Label("Base Difficulty: " + sensitivityRating.getValue(), skin, "sub-font", skin.getColor("default"));
|
||||||
add(sensitivityRatingTitle);
|
add(sensitivityRatingTitle);
|
||||||
row();
|
add(sensitivityRating);
|
||||||
add(sensitivityRating).fillX();
|
|
||||||
|
|
||||||
row();
|
row();
|
||||||
|
|
||||||
@ -44,8 +43,7 @@ public class DifficultyWindow extends Window {
|
|||||||
});
|
});
|
||||||
speedModifierTitle = new Label("Speed Modifier: " + speedModifier.getValue(), skin, "sub-font", skin.getColor("default"));
|
speedModifierTitle = new Label("Speed Modifier: " + speedModifier.getValue(), skin, "sub-font", skin.getColor("default"));
|
||||||
add(speedModifierTitle);
|
add(speedModifierTitle);
|
||||||
row();
|
add(speedModifier);
|
||||||
add(speedModifier).fillX();
|
|
||||||
|
|
||||||
row();
|
row();
|
||||||
|
|
||||||
@ -60,8 +58,20 @@ public class DifficultyWindow extends Window {
|
|||||||
});
|
});
|
||||||
healthModifierTitle = new Label("Health modifier: " + healthModifier.getValue(), skin, "sub-font", skin.getColor("default"));
|
healthModifierTitle = new Label("Health modifier: " + healthModifier.getValue(), skin, "sub-font", skin.getColor("default"));
|
||||||
add(healthModifierTitle);
|
add(healthModifierTitle);
|
||||||
row();
|
add(healthModifier);
|
||||||
add(healthModifier).fillX().spaceBottom(15f);
|
|
||||||
|
pack();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float getSensitivityVal() {
|
||||||
|
return sensitivityRating.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getSpeedModifier() {
|
||||||
|
return speedModifier.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getHealthModifier() {
|
||||||
|
return healthModifier.getValue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|