diff --git a/android/assets/1280x720/flake.png b/android/assets/1280x720/flake.png index d73c496..341d8a2 100755 Binary files a/android/assets/1280x720/flake.png and b/android/assets/1280x720/flake.png differ diff --git a/android/assets/1280x800/flake.png b/android/assets/1280x800/flake.png index 0c1543b..67076c3 100755 Binary files a/android/assets/1280x800/flake.png and b/android/assets/1280x800/flake.png differ diff --git a/android/assets/1366x768/flake.png b/android/assets/1366x768/flake.png index 7056272..78056c2 100755 Binary files a/android/assets/1366x768/flake.png and b/android/assets/1366x768/flake.png differ diff --git a/android/assets/1920x1080/flake.png b/android/assets/1920x1080/flake.png index 818e80e..2da5d42 100755 Binary files a/android/assets/1920x1080/flake.png and b/android/assets/1920x1080/flake.png differ diff --git a/android/assets/1920x1200/flake.png b/android/assets/1920x1200/flake.png index d2a0729..858ac5c 100755 Binary files a/android/assets/1920x1200/flake.png and b/android/assets/1920x1200/flake.png differ diff --git a/android/assets/2560x1440/flake.png b/android/assets/2560x1440/flake.png index c8d7937..6e50620 100755 Binary files a/android/assets/2560x1440/flake.png and b/android/assets/2560x1440/flake.png differ diff --git a/android/assets/3840x2160/flake.png b/android/assets/3840x2160/flake.png index 43fcae4..a0cb521 100755 Binary files a/android/assets/3840x2160/flake.png and b/android/assets/3840x2160/flake.png differ diff --git a/android/assets/800x480/flake.png b/android/assets/800x480/flake.png index 4d9c737..e8db7c6 100755 Binary files a/android/assets/800x480/flake.png and b/android/assets/800x480/flake.png differ diff --git a/core/src/zero1hd/polyjet/audio/map/RhythmMapAlgorithm.java b/core/src/zero1hd/polyjet/audio/map/RhythmMapAlgorithm.java index c273678..f041e19 100755 --- a/core/src/zero1hd/polyjet/audio/map/RhythmMapAlgorithm.java +++ b/core/src/zero1hd/polyjet/audio/map/RhythmMapAlgorithm.java @@ -8,8 +8,12 @@ import com.badlogic.gdx.utils.FloatArray; import zero1hd.polyjet.Polyjet; import zero1hd.polyjet.audio.AudioAnalyzer; import zero1hd.polyjet.entity.Entities; +import zero1hd.polyjet.util.MiniEvents; +import zero1hd.polyjet.util.MiniSender; public class RhythmMapAlgorithm implements Runnable { + private MiniSender sender; + private FloatArray bassPeaks; private FloatArray UMPeaks; private FloatArray overlappedPeaks; @@ -23,6 +27,8 @@ public class RhythmMapAlgorithm implements Runnable { private volatile int progress; public RhythmMapAlgorithm(AudioAnalyzer analyzer, float speedMod, float healthMod) { + sender = new MiniSender(); + bassPeaks = analyzer.getBassPeaks(); UMPeaks = analyzer.getUMPeaks(); overlappedPeaks = analyzer.getOverlappedPeaks(); @@ -41,7 +47,7 @@ public class RhythmMapAlgorithm implements Runnable { for (int index = 0; index < bassPeaks.size; index++) { if (bassPeaks.get(index) != 0 || UMPeaks.get(index) != 0) { 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 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); + + sender.send(MiniEvents.MAPGEN_ITERATED); } map.endBuild(); } @@ -84,4 +92,8 @@ public class RhythmMapAlgorithm implements Runnable { public synchronized int getProgress() { return progress; } + + public MiniSender getSender() { + return sender; + } } diff --git a/core/src/zero1hd/polyjet/entity/enemies/Flake.java b/core/src/zero1hd/polyjet/entity/enemies/Flake.java index 402d423..0184385 100755 --- a/core/src/zero1hd/polyjet/entity/enemies/Flake.java +++ b/core/src/zero1hd/polyjet/entity/enemies/Flake.java @@ -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) { this.shards = shards; - setSize(1f, 1f); + setSize(3f, 3f); this.rate = rate; this.timer = fuse; hitbox.setSize(getWidth(), getHeight()); diff --git a/core/src/zero1hd/polyjet/entity/enemies/Shard.java b/core/src/zero1hd/polyjet/entity/enemies/Shard.java index e79b253..c668728 100755 --- a/core/src/zero1hd/polyjet/entity/enemies/Shard.java +++ b/core/src/zero1hd/polyjet/entity/enemies/Shard.java @@ -71,7 +71,7 @@ public class Shard extends Actor implements Entity, Poolable { @Override public void draw(Batch batch, float parentAlpha) { 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); batch.setColor(Color.WHITE); super.draw(batch, parentAlpha); diff --git a/core/src/zero1hd/polyjet/ui/pages/AnalyzePage.java b/core/src/zero1hd/polyjet/ui/pages/AnalyzePage.java index 32f8a5f..49bc4e8 100755 --- a/core/src/zero1hd/polyjet/ui/pages/AnalyzePage.java +++ b/core/src/zero1hd/polyjet/ui/pages/AnalyzePage.java @@ -230,11 +230,18 @@ public class AnalyzePage extends Page implements MiniListener { info[3].setText("data cleaning done."); info[4].addAction(Actions.color(Color.BLACK, 0.75f)); mapGenAlgorithm = new RhythmMapAlgorithm(audioAnalyzer, speedModifier.getValue(), healthModifier.getValue()); + mapGenAlgorithm.getSender().addListener(this); mapGenThread = new Thread(mapGenAlgorithm); mapGenThread.start(); + startTime = System.currentTimeMillis(); break; case MAPGEN_ITERATED: 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: break; } @@ -246,8 +253,4 @@ public class AnalyzePage extends Page implements MiniListener { info[3].setText("finalizing data..."); info[3].addAction(Actions.color(Color.BLACK, 0.75f)); } - - private void generateMap() { - - } } diff --git a/core/src/zero1hd/polyjet/ui/stages/CreativeStage.java b/core/src/zero1hd/polyjet/ui/stages/CreativeStage.java index 8b0d25b..764e818 100755 --- a/core/src/zero1hd/polyjet/ui/stages/CreativeStage.java +++ b/core/src/zero1hd/polyjet/ui/stages/CreativeStage.java @@ -15,8 +15,10 @@ import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import zero1hd.polyjet.Polyjet; import zero1hd.polyjet.audio.AudioAnalyzer; +import zero1hd.polyjet.audio.map.RhythmMapAlgorithm; import zero1hd.polyjet.screens.MainMenu; import zero1hd.polyjet.ui.windows.BeatViewer; +import zero1hd.polyjet.ui.windows.DifficultyWindow; import zero1hd.polyjet.ui.windows.FPSWindow; import zero1hd.polyjet.ui.windows.GraphWindow; import zero1hd.polyjet.ui.windows.MusicController; @@ -34,8 +36,10 @@ public class CreativeStage extends Stage implements MiniListener { GraphWindow graphViewer; VolumeWindow volumeWindow; SpawnerWindow spawnerWindow; + DifficultyWindow diffWindow; AudioAnalyzer analyzer; + RhythmMapAlgorithm mapGen; Window toolbox; 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()); volumeWindow = new VolumeWindow("Volume adjustments", core.getDefaultSkin(), core.getPrefs()); spawnerWindow = new SpawnerWindow("Spawn Tool", core.getDefaultSkin(), gpa.ec, gpa); + diffWindow = new DifficultyWindow(core.getDefaultSkin()); //Back button TextButton backButton = new TextButton("Back", core.getDefaultSkin()); @@ -171,7 +176,21 @@ public class CreativeStage extends Stage implements MiniListener { } }); 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()); toolbox.add(scroller).expand().fill(); @@ -225,16 +244,19 @@ public class CreativeStage extends Stage implements MiniListener { analyzer.startAnalyticalThread(musicSelector.getSelectedMusic()); break; case SPECTRAL_FLUX_DONE: - analyzer.runThresholdCleaning(); + analyzer.runThresholdCleaning(diffWindow.getSensitivityVal()); break; 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()); volumeWindow.setMusic(musicPlayBackControls.getAudiofile()); beatViewer.setMusic(musicPlayBackControls.getAudiofile(), analyzer); graphViewer.setData(analyzer.getBassPeaks(), analyzer.getUMPeaks(), musicPlayBackControls.getAudiofile()); break; - case MAP_GENERATED: - break; default: break; } diff --git a/core/src/zero1hd/polyjet/ui/windows/DifficultyWindow.java b/core/src/zero1hd/polyjet/ui/windows/DifficultyWindow.java index 7e927a6..7fc495a 100755 --- a/core/src/zero1hd/polyjet/ui/windows/DifficultyWindow.java +++ b/core/src/zero1hd/polyjet/ui/windows/DifficultyWindow.java @@ -15,8 +15,8 @@ public class DifficultyWindow extends Window { private Slider healthModifier; private Label healthModifierTitle; - public DifficultyWindow(String title, Skin skin) { - super(title, skin, "tinted"); + public DifficultyWindow(Skin skin) { + super("Difficulty Adjuster", skin, "tinted"); sensitivityRating = new Slider(-5f, 5f, 1f, false, skin); sensitivityRating.setValue(0f); 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")); add(sensitivityRatingTitle); - row(); - add(sensitivityRating).fillX(); + add(sensitivityRating); row(); @@ -44,8 +43,7 @@ public class DifficultyWindow extends Window { }); speedModifierTitle = new Label("Speed Modifier: " + speedModifier.getValue(), skin, "sub-font", skin.getColor("default")); add(speedModifierTitle); - row(); - add(speedModifier).fillX(); + add(speedModifier); row(); @@ -60,8 +58,20 @@ public class DifficultyWindow extends Window { }); healthModifierTitle = new Label("Health modifier: " + healthModifier.getValue(), skin, "sub-font", skin.getColor("default")); add(healthModifierTitle); - row(); - add(healthModifier).fillX().spaceBottom(15f); + add(healthModifier); + + pack(); + } + + public float getSensitivityVal() { + return sensitivityRating.getValue(); + } + + public float getSpeedModifier() { + return speedModifier.getValue(); + } + + public float getHealthModifier() { + return healthModifier.getValue(); } - }