diff --git a/core/src/zero1hd/rhythmbullet/audio/MusicController.java b/core/src/zero1hd/rhythmbullet/audio/MusicController.java index 2059d22..f3d74ef 100755 --- a/core/src/zero1hd/rhythmbullet/audio/MusicController.java +++ b/core/src/zero1hd/rhythmbullet/audio/MusicController.java @@ -49,8 +49,6 @@ public class MusicController extends Observable implements OnCompletionListener, music.play(); music.setVolume(prefs.getFloat("music vol", 1f)); notifyObservers(states.PLAYING); - } else { - Gdx.app.debug("MusicListController", "failed to begin playing. Load the music!!!"); } } @@ -224,7 +222,7 @@ public class MusicController extends Observable implements OnCompletionListener, /** * Returns the current music. In no circumstances should this be used to begin playing or it would be playing independent of the controller. * Doing otherwise would mean you are playing the music separately of the controller. - * @return + * @return the {@link Music} that is currently "loaded" and ready to play. */ public Music getCurrentMusic() { return music; @@ -233,4 +231,11 @@ public class MusicController extends Observable implements OnCompletionListener, public int getCurrentlyPlayingIndex() { return currentlyPlayingIndex; } + + public boolean hasSongLoaded() { + if (music != null) { + return true; + } + return false; + } } diff --git a/core/src/zero1hd/rhythmbullet/audio/visualizer/CircularVisualizer.java b/core/src/zero1hd/rhythmbullet/audio/visualizer/CircularVisualizer.java index 09f306c..d0d1c81 100755 --- a/core/src/zero1hd/rhythmbullet/audio/visualizer/CircularVisualizer.java +++ b/core/src/zero1hd/rhythmbullet/audio/visualizer/CircularVisualizer.java @@ -19,6 +19,7 @@ import com.badlogic.gdx.utils.Disposable; import zero1hd.rhythmbullet.RhythmBullet; public class CircularVisualizer implements Disposable { + private PCMSystem pcm; private int centerX, centerY; private int r; private int componentCount = 2 + 1; @@ -27,21 +28,19 @@ public class CircularVisualizer implements Disposable { private float color; private Mesh mesh; private ShaderProgram shader; - private Visualizer visualizer; private int barCount = 180; private float barHeightMultiplier = 1.5f; private float[] audioSpectrum; private Camera camera; - public CircularVisualizer(Visualizer visualizer) { + public CircularVisualizer(PCMSystem PCMSystem) { + this.pcm = PCMSystem; shader = new ShaderProgram(Gdx.files.internal("shaders/mesh.vsh"), Gdx.files.internal("shaders/mesh.fsh")); if (!shader.isCompiled() || shader.getLog().length() != 0) { Gdx.app.debug("Circular visualizer shader", shader.getLog()); Gdx.app.exit(); } r = RhythmBullet.pixels_per_unit*RhythmBullet.SPAWN_CIRCLE_RADIUS; - - this.visualizer = visualizer; } /** diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/DoubleHorizontalVisualizer.java b/core/src/zero1hd/rhythmbullet/audio/visualizer/DoubleHorizontalVisualizer.java old mode 100755 new mode 100644 similarity index 91% rename from desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/DoubleHorizontalVisualizer.java rename to core/src/zero1hd/rhythmbullet/audio/visualizer/DoubleHorizontalVisualizer.java index 3b16fae..068eafe --- a/desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/DoubleHorizontalVisualizer.java +++ b/core/src/zero1hd/rhythmbullet/audio/visualizer/DoubleHorizontalVisualizer.java @@ -1,112 +1,112 @@ -package zero1hd.rhythmbullet.desktop.audio.visualizer; - -import com.badlogic.gdx.graphics.g2d.Batch; -import com.badlogic.gdx.graphics.glutils.ShapeRenderer; -import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; - -import zero1hd.rhythmbullet.audio.MusicController; - -public class DoubleHorizontalVisualizer { - private int width, height, barCount, barWidth, spaceBetweenBars; - private int x, y; - private float barRate = 0.75f; - private ShapeRenderer shapeRenderer; - private PCMMachine pcm; - private int smoothRange; - private int multiplier = 300; - private int[] amplitudes; - private int[] barHeights; - private int binsPerBar; - - /** - * - * @param barCount amount of bars this visualizer should have. - * @param width the width of the visualizer. - * @param spacePercentage the percentage of a bar that should be space. - */ - public DoubleHorizontalVisualizer(int barCount, int width, int height, float spacePercentage, MusicController musicController) { - this.barCount = barCount; - this.barWidth = width/barCount; - this.spaceBetweenBars = (int) (barWidth * spacePercentage); - this.barWidth -= spaceBetweenBars; - if (barWidth < 1) throw new IllegalArgumentException("The arguments you passed caused the bar width to be 0."); - binsPerBar = (pcm.getWindowSize()/barCount); - this.width = width; - this.height = height; - pcm = new PCMMachine(musicController); - amplitudes = new int[barCount]; - barHeights = new int[barCount]; - shapeRenderer = new ShapeRenderer(); - shapeRenderer.set(ShapeType.Filled); - } - - public void act(float delta) { - for (int bar = 0; bar < amplitudes.length; bar++) { - float normalizedAmplitude = 0; - for (int freq = bar*binsPerBar; freq < bar*binsPerBar + binsPerBar; freq++) { - normalizedAmplitude += Math.abs(pcm.getFrequencyBins()[freq]); - } - amplitudes[bar] = (int) (normalizedAmplitude*multiplier); - amplitudes[bar] /= binsPerBar; - - barHeights[bar] += Math.max(0, (amplitudes[bar] - barHeights[bar]) * barRate * delta); - if (barHeights[bar] > amplitudes[bar]) barHeights[bar] = amplitudes[bar]; - - } - for (int bar = 1; bar <= barHeights.length; bar++) { - int smoothCount = 1; - for (int range = 0; range < smoothRange; range++) { - if (bar+range < amplitudes.length) { - barHeights[bar] += amplitudes[bar+range]; - smoothCount++; - } - if (bar-range > 0) { - barHeights[bar] += amplitudes[bar-range]; - smoothCount++; - } - } - barHeights[bar] /= smoothCount; - } - } - - public void draw(Batch batch, float parentAlpha) { - shapeRenderer.begin(); - shapeRenderer.rect(x, y-2, width, y); - shapeRenderer.rect(x, y+height, width, y+height+2); - int beginX = x + spaceBetweenBars/2, beginY = y; - for (int bar = 0; bar < barCount; bar++) { - shapeRenderer.rect(beginX + spaceBetweenBars*bar, beginY+height, beginX+barWidth, beginY+barHeights[bar]+height); - shapeRenderer.rect(beginX + spaceBetweenBars*bar, beginY, beginX+barWidth, beginY+barHeights[barHeights.length - 1 - bar]); - } - shapeRenderer.end(); - } - - public int getWidth() { - return width; - } - - public int getHeight() { - return height; - } - - public void setX(int x) { - this.x = x; - } - - public void setY(int y) { - this.y = y; - } - - public void setPosition(int x, int y) { - this.x = x; - this.y = y; - } - - public int getX() { - return x; - } - - public int getY() { - return y; - } -} +package zero1hd.rhythmbullet.audio.visualizer; + +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; + +import zero1hd.rhythmbullet.audio.MusicController; + +public class DoubleHorizontalVisualizer { + private int width, height, barCount, barWidth, spaceBetweenBars; + private int x, y; + private float barRate = 0.75f; + private ShapeRenderer shapeRenderer; + private PCMSystem pcm; + private int smoothRange; + private int multiplier = 300; + private int[] amplitudes; + private int[] barHeights; + private int binsPerBar; + + /** + * + * @param barCount amount of bars this visualizer should have. + * @param width the width of the visualizer. + * @param spacePercentage the percentage of a bar that should be space. + */ + public DoubleHorizontalVisualizer(int barCount, int width, int height, float spacePercentage, MusicController musicController, PCMSystem PCMSystem) { + this.barCount = barCount; + this.barWidth = width/barCount; + this.spaceBetweenBars = (int) (barWidth * spacePercentage); + this.barWidth -= spaceBetweenBars; + if (barWidth < 1) throw new IllegalArgumentException("The arguments you passed caused the bar width to be 0."); + binsPerBar = (pcm.getWindowSize()/barCount); + this.width = width; + this.height = height; + pcm = PCMSystem; + amplitudes = new int[barCount]; + barHeights = new int[barCount]; + shapeRenderer = new ShapeRenderer(); + shapeRenderer.set(ShapeType.Filled); + } + + public void act(float delta) { + for (int bar = 0; bar < amplitudes.length; bar++) { + float normalizedAmplitude = 0; + for (int freq = bar*binsPerBar; freq < bar*binsPerBar + binsPerBar; freq++) { + normalizedAmplitude += Math.abs(pcm.getFrequencyBins()[freq]); + } + amplitudes[bar] = (int) (normalizedAmplitude*multiplier); + amplitudes[bar] /= binsPerBar; + + barHeights[bar] += Math.max(0, (amplitudes[bar] - barHeights[bar]) * barRate * delta); + if (barHeights[bar] > amplitudes[bar]) barHeights[bar] = amplitudes[bar]; + + } + for (int bar = 1; bar <= barHeights.length; bar++) { + int smoothCount = 1; + for (int range = 0; range < smoothRange; range++) { + if (bar+range < amplitudes.length) { + barHeights[bar] += amplitudes[bar+range]; + smoothCount++; + } + if (bar-range > 0) { + barHeights[bar] += amplitudes[bar-range]; + smoothCount++; + } + } + barHeights[bar] /= smoothCount; + } + } + + public void draw(Batch batch, float parentAlpha) { + shapeRenderer.begin(); + shapeRenderer.rect(x, y-2, width, y); + shapeRenderer.rect(x, y+height, width, y+height+2); + int beginX = x + spaceBetweenBars/2, beginY = y; + for (int bar = 0; bar < barCount; bar++) { + shapeRenderer.rect(beginX + spaceBetweenBars*bar, beginY+height, beginX+barWidth, beginY+barHeights[bar]+height); + shapeRenderer.rect(beginX + spaceBetweenBars*bar, beginY, beginX+barWidth, beginY+barHeights[barHeights.length - 1 - bar]); + } + shapeRenderer.end(); + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + public void setX(int x) { + this.x = x; + } + + public void setY(int y) { + this.y = y; + } + + public void setPosition(int x, int y) { + this.x = x; + this.y = y; + } + + public int getX() { + return x; + } + + public int getY() { + return y; + } +} diff --git a/core/src/zero1hd/rhythmbullet/audio/visualizer/HorizontalVisualizer.java b/core/src/zero1hd/rhythmbullet/audio/visualizer/HorizontalVisualizer.java deleted file mode 100755 index f01b3be..0000000 --- a/core/src/zero1hd/rhythmbullet/audio/visualizer/HorizontalVisualizer.java +++ /dev/null @@ -1,280 +0,0 @@ -package zero1hd.rhythmbullet.audio.visualizer; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.Color; -import com.badlogic.gdx.graphics.Pixmap; -import com.badlogic.gdx.graphics.Pixmap.Format; -import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.Batch; -import com.badlogic.gdx.graphics.g2d.Sprite; -import com.badlogic.gdx.math.MathUtils; -import com.badlogic.gdx.math.Vector2; -import com.badlogic.gdx.utils.Array; -import com.badlogic.gdx.utils.Disposable; - - -public class HorizontalVisualizer implements Disposable { - private Pixmap pixmap; - private Texture barTexture; - private int barWidth; - private int binsPerBar; - private int spaceBetweenBars; - private Sprite[] bars; - private float[] barHeights; - private int smoothRange; - private float barHeightMultiplier; - private float rotation; - private Vector2 angleRot; - private boolean flip; - private Array mirrors; - private boolean reverse; - private float maxAvgHeight; - private float currentAvg; - private int barCount; - private float width, height, x, y; - - private Visualizer visualizer; - - public HorizontalVisualizer(Visualizer visualizer) { - super(); - mirrors = new Array<>(); - pixmap = new Pixmap(2, 2, Format.RGBA8888); - pixmap.setColor(Color.WHITE); - pixmap.fill(); - - barCount = 68; - - width = Gdx.graphics.getWidth(); - height = Gdx.graphics.getHeight()/2f; - x = 0; - y = 0; - - this.visualizer = visualizer; - - smoothRange = 2; - angleRot = new Vector2(MathUtils.cosDeg(rotation), MathUtils.sinDeg(rotation)); - bars = new Sprite[barCount]; - barHeights = new float[barCount]; - barTexture = new Texture(pixmap); - for (int i = 0; i < bars.length; i++) { - bars[i] = new Sprite(barTexture); - } - - updatePositionInfo(); - pixmap.dispose(); - } - - public void render(Batch batch, float parentAlpha) { - if (visualizer.getMM() != null) { - for (int i = 0; i < bars.length; i++) { - bars[i].draw(batch); - for (int j = 0; j < mirrors.size; j++) { - mirrors.get(j).render(i, batch, parentAlpha, bars); - } - } - } - - } - - public void update(float delta) { - if (visualizer.getMM() != null) { - //Averaging bins together - for (int i = 0; i < barCount; i++) { - float barHeight = 0; - for (int j = 0; j < binsPerBar; j++) { - barHeight += Math.abs(visualizer.getAudioPCMData()[j+i*binsPerBar +1]); - } - barHeight /= binsPerBar; - barHeight *= barHeightMultiplier; - barHeights[i] = barHeight; - } - currentAvg = 0; - for (int i = 0; i < barCount; i++) { - int avg = 0; - //Averaging the bars - for (int range = 0; range < smoothRange; range++) { - if (i+range < barCount) { - avg += barHeights[i+range]; - } - if (i-range >= 0) { - avg += barHeights[i-range]; - } - } - avg /= smoothRange*2; - barHeights[i] = avg; - currentAvg += barHeights[i]; - if (bars[i].getHeight() > barHeights[i]) { - bars[i].setSize(barWidth, bars[i].getHeight() - (15f*delta*(bars[i].getHeight()-barHeights[i]))); - } else { - bars[i].setSize(barWidth, bars[i].getHeight() + (20f*delta*(barHeights[i] - bars[i].getHeight()))); - } - } - currentAvg /= barHeights.length; - if (currentAvg > maxAvgHeight) { - maxAvgHeight = currentAvg; - } - } - } - - public void setMM(MusicManager mm) { - maxAvgHeight = 0; - currentAvg = 0; - float validBins = (4200/((mm.getSampleRate()/2)/((mm.getReadWindowSize()/2)+1))); - Gdx.app.debug("Visualizer", "valid frequency bins " + validBins); - binsPerBar = MathUtils.round((validBins/barCount)); - barHeights = new float[barCount]; - visualizer.setMM(mm); - } - - public void dispose() { - barTexture.dispose(); - visualizer.dispose(); - } - - public void updatePositionInfo() { - barHeightMultiplier = height; - int barSpace = 0; - angleRot.set(MathUtils.cosDeg(rotation), MathUtils.sinDeg(rotation)); - - barWidth = MathUtils.round((float) width/(float) barCount); - barWidth -= spaceBetweenBars; - for (int i = 0; i < bars.length; i++) { - barSpace = i*(barWidth+spaceBetweenBars); - if (flip) { - bars[i].setRotation(rotation+180); - } else { - bars[i].setRotation(rotation); - } - if (reverse) { - bars[bars.length-i-1].setPosition(x + barSpace*angleRot.x, y + barSpace*angleRot.y); - } else { - bars[i].setPosition(x + barSpace*angleRot.x, y + barSpace*angleRot.y); - } - for (int mirrorIndex = 0; mirrorIndex < mirrors.size; mirrorIndex++) { - mirrors.get(mirrorIndex).position(i, barWidth, spaceBetweenBars); - } - } - - } - - public float getActualWidth() { - return (barWidth+spaceBetweenBars)*(barCount - 1); - } - - public void setColor(Color color) { - for (int i = 0; i < bars.length; i++) { - bars[i].setColor(color); - } - for (int i = 0; i < mirrors.size; i++) { - mirrors.get(i).setColor(color); - } - } - - public void setColor(float r, float g, float b, float a) { - for (int i = 0; i < bars.length; i++) { - bars[i].setColor(r, g, b, a); - } - for (int i = 0; i < mirrors.size; i++) { - mirrors.get(i).setColor(r, g, b, a); - } - } - - public void setRotation(float rotation) { - this.rotation = rotation; - } - - public void flip() { - flip = !flip; - } - - public boolean isFlipped() { - return flip; - } - - public void addMirrorVisualizer(MirrorVisualizer mirror) { - updatePositionInfo(); - mirror.setup(bars, x, y, rotation); - mirrors.add(mirror); - x = (int) (((width - getActualWidth())/2f)); - } - - public void removeMirrorVisualizer(MirrorVisualizer mirror) { - mirrors.removeValue(mirror, true); - } - - public void setSpaceBetweenBars(int spaceBetweenBars) { - this.spaceBetweenBars = spaceBetweenBars; - } - - public int getBarWidth() { - return barWidth; - } - - public void reverse() { - reverse = reverse ? false : true; - } - - public boolean isReversed() { - return reverse; - } - - public Sprite[] getBars() { - return bars; - } - - public float getCurrentAvg() { - return currentAvg; - } - - public float getMaxAvgHeight() { - return maxAvgHeight; - } - - public int getSpaceBetweenBars() { - return spaceBetweenBars; - } - - public void setX(float x) { - this.x = x; - } - - public float getX() { - return x; - } - - public void setY(float y) { - this.y = y; - } - - public float getY() { - return y; - } - - public void setWidth(float width) { - this.width = width; - } - - public float getWidth() { - return width; - } - - public void setHeight(float height) { - this.height = height; - } - - public float getHeight() { - return height; - } - - public void calcPCMData() { - visualizer.calcPCMData(); - } - - public void calculate() { - visualizer.fft(); - } - - public Visualizer getVisualizer() { - return visualizer; - } -} diff --git a/core/src/zero1hd/rhythmbullet/audio/visualizer/PCMSystem.java b/core/src/zero1hd/rhythmbullet/audio/visualizer/PCMSystem.java new file mode 100644 index 0000000..a796867 --- /dev/null +++ b/core/src/zero1hd/rhythmbullet/audio/visualizer/PCMSystem.java @@ -0,0 +1,9 @@ +package zero1hd.rhythmbullet.audio.visualizer; + +public interface PCMSystem { + + float[] getFrequencyBins(); + + int getWindowSize(); + +} \ No newline at end of file diff --git a/core/src/zero1hd/rhythmbullet/game/GamePlayMap.java b/core/src/zero1hd/rhythmbullet/game/GamePlayMap.java deleted file mode 100755 index 6573a36..0000000 --- a/core/src/zero1hd/rhythmbullet/game/GamePlayMap.java +++ /dev/null @@ -1,106 +0,0 @@ -package zero1hd.rhythmbullet.game; - -import zero1hd.rhythmbullet.audio.MusicManager; -import zero1hd.rhythmbullet.entity.Entity; -import zero1hd.rhythmbullet.entity.EntityFrame; -import zero1hd.rhythmbullet.entity.coordinator.Coordinator; -import zero1hd.rhythmbullet.entity.coordinator.CoordinatorFrame; - -public class GamePlayMap { - private MusicManager musicData; - private MapWindowData[] spawnList; - private boolean building; - private int index; - - private byte[] hudType; - /** - * GamePlayMap is what the game area will use to generate entities and judge current audio data - * @param audioData audio data - */ - public GamePlayMap(MusicManager audioData, int totalWindows) { - this.musicData = audioData; - spawnList = new MapWindowData[totalWindows]; - hudType = new byte[totalWindows]; - } - - public int setIndex(int index) { - int previousIndex = this.index; - if (index < 0) { - this.index = 0; - } else if (index >= spawnList.length) { - toHead(); - } else { - this.index = index; - } - return previousIndex; - } - - public void setHUDType(byte data) { - hudType[index] = data; - } - - public byte[] getHudType() { - return hudType; - } - - public EntitySpawnInfo addEntity(EntityFrame entityType, CoordinatorFrame coordinator) { - if (building) { - if (spawnList[index] == null) { - spawnList[index] = new MapWindowData(); - } - EntitySpawnInfo esi = new EntitySpawnInfo(entityType, coordinator); - spawnList[index].addEntity(esi); - return esi; - } else { - throw new IllegalStateException("Stupid, you need to call begin building first first."); - } - } - - public void nextWindowData() { - if (building) { - index++; - } else { - throw new IllegalStateException("Stupid, you need to call begin building first first."); - } - } - - public void toHead() { - index = spawnList.length-1; - } - - public MusicManager getMusicData() { - return musicData; - } - - public void beginBuild() { - if (!building) { - index = 0; - building = true; - } else { - throw new IllegalStateException("Excuse me, but your already building..."); - } - } - - public void endBuild() { - if (building) { - index = 0; - building = false; - } else { - throw new IllegalStateException("Nothings being built..."); - } - } - - public MapWindowData getCurrentWindowBasedOnIndex() { - if (index != musicData.getPlaybackIndexPosition()) { - index = musicData.getPlaybackIndexPosition(); - if (index < spawnList.length) { - return spawnList[index]; - } - } - return null; - } - - public int getIndex() { - return index; - } -} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/PCMMachine.java b/desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/PCMObtainer.java similarity index 93% rename from desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/PCMMachine.java rename to desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/PCMObtainer.java index b26f8c5..a02bdf9 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/PCMMachine.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/PCMObtainer.java @@ -10,7 +10,6 @@ import java.util.Observer; import org.lwjgl.openal.AL11; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.assets.AssetLoaderParameters.LoadedCallback; import com.badlogic.gdx.backends.lwjgl.audio.OpenALMusic; import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.TimeUtils; @@ -20,8 +19,9 @@ import com.badlogic.gdx.utils.reflect.ReflectionException; import zero1hd.rhythmbullet.audio.MusicController; import zero1hd.rhythmbullet.audio.visualizer.BasicFFT; +import zero1hd.rhythmbullet.audio.visualizer.PCMSystem; -public class PCMMachine implements Observer, Disposable { +public class PCMObtainer implements Observer, Disposable, PCMSystem { private int windowSize = 1024; private float[] PCM = new float[windowSize]; private float[] frequencyBins = new float[windowSize / 2]; @@ -38,7 +38,7 @@ public class PCMMachine implements Observer, Disposable { private int currentPlaybackWindow; private volatile boolean updated; - public PCMMachine(MusicController musicController) { + public PCMObtainer(MusicController musicController) { this.mc = musicController; mc.addObserver(this); try { @@ -141,6 +141,7 @@ public class PCMMachine implements Observer, Disposable { buffer.rewind(); } + @Override public float[] getFrequencyBins() { if (updated) { synchronized (PCM) { @@ -151,6 +152,7 @@ public class PCMMachine implements Observer, Disposable { return frequencyBins; } + @Override public int getWindowSize() { return windowSize; } diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/components/MusicControls.java b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/components/MusicControls.java index 9b2365f..cedaa82 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/components/MusicControls.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/components/MusicControls.java @@ -12,23 +12,16 @@ import zero1hd.rhythmbullet.audio.MusicController; public class MusicControls extends HorizontalGroup { private ImageButton reverse, forward; private CheckBox shuffle, play; - private float disableTimer; public MusicControls(Skin skin, final MusicController sc) { reverse = new ImageButton(skin, "rewind-button"); reverse.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { - if (sc.getCurrentMusicManager() != null) { - boolean wasPlaying = sc.getCurrentMusicManager().isPlaying(); - sc.previous(); - if (wasPlaying) { - sc.play(); - } + boolean wasPlaying = sc.isPlaying(); + sc.previous(); + if (wasPlaying) { + sc.play(); } - - forward.setDisabled(true); - reverse.setDisabled(true); - disableTimer = 0.75f; } }); addActor(reverse); @@ -36,8 +29,8 @@ public class MusicControls extends HorizontalGroup { play = new CheckBox(null, skin, "play-button") { @Override public void act(float delta) { - if (sc.getCurrentMusicManager() != null) { - play.setChecked(sc.getCurrentMusicManager().isPlaying()); + if (sc.hasSongLoaded()) { + play.setChecked(sc.isPlaying()); } else { play.setChecked(false); } @@ -47,13 +40,11 @@ public class MusicControls extends HorizontalGroup { play.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { - if (sc.getCurrentMusicManager() != null) { - if (play.isChecked()) { - sc.getCurrentMusicManager().play(); - } else { - sc.getCurrentMusicManager().pause(); - } - } + if (play.isChecked()) { + sc.play(); + } else { + sc.pause(); + } } }); addActor(play); @@ -62,17 +53,11 @@ public class MusicControls extends HorizontalGroup { forward.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { - if (sc.getCurrentMusicManager() != null) { - boolean wasPlaying = sc.getCurrentMusicManager().isPlaying(); - sc.skip(); - if (wasPlaying) { - sc.play(); - } + boolean wasPlaying = sc.isPlaying(); + sc.skip(); + if (wasPlaying) { + sc.play(); } - - forward.setDisabled(true); - reverse.setDisabled(true); - disableTimer = 0.75f; } }); addActor(forward); @@ -98,20 +83,4 @@ public class MusicControls extends HorizontalGroup { invalidate(); } - - @Override - public void act(float delta) { - setWidth(getMinWidth()); - setHeight(getMinHeight()); - - if (disableTimer > 0) { - disableTimer -= delta; - if (disableTimer <= 0) { - forward.setDisabled(false); - reverse.setDisabled(false); - disableTimer = 0; - } - } - super.act(delta); - } } diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/pages/StatPage.java b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/pages/StatPage.java deleted file mode 100755 index 8fafa91..0000000 --- a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/pages/StatPage.java +++ /dev/null @@ -1,44 +0,0 @@ -package zero1hd.rhythmbullet.desktop.graphics.ui.pages; - -import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.scenes.scene2d.ui.Table; - -public class StatPage extends Page { - private Table table; - private Label winLabel; - - private Label finalScore, damageTaken, enemiesKilled, shotsTaken, shotsMissed, accuracy; - public StatPage(Skin skin, int score, int damageTake, int enemiesKilled, int shotsTaken, int shotsMissed, int accuracy) { - table = new Table(skin); - addActor(table); - table.setFillParent(true); - - winLabel = new Label("Win!", skin); - table.add(winLabel); - table.row(); - - this.finalScore = new Label("Your score: " + score, skin, "sub-font", skin.getColor("default")); - table.add(this.finalScore); - table.row(); - - this.damageTaken = new Label("Damage Taken: " + damageTake, skin, "sub-font", skin.getColor("default")); - table.add(this.damageTaken); - table.row(); - - this.enemiesKilled = new Label("Enemies slayed: " + enemiesKilled, skin, "sub-font", skin.getColor("default")); - table.add(this.enemiesKilled); - table.row(); - - this.shotsTaken = new Label("Shots taken: " + shotsTaken, skin, "sub-font", skin.getColor("default")); - table.add(this.shotsTaken); - table.row(); - - this.shotsMissed = new Label("Shots missed: " + shotsMissed, skin, "sub-font", skin.getColor("default")); - table.add(this.shotsMissed); - table.row(); - - this.accuracy = new Label("Accuracy: " + accuracy, skin, "sub-font", skin.getColor("default")); - table.add(this.accuracy); - } -} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/BeatViewer.java b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/BeatViewer.java deleted file mode 100755 index 68810f2..0000000 --- a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/BeatViewer.java +++ /dev/null @@ -1,132 +0,0 @@ -package zero1hd.rhythmbullet.desktop.graphics.ui.windows; - -import com.badlogic.gdx.graphics.Pixmap; -import com.badlogic.gdx.graphics.Pixmap.Format; -import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.scenes.scene2d.actions.Actions; -import com.badlogic.gdx.scenes.scene2d.ui.Image; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup; -import com.badlogic.gdx.scenes.scene2d.ui.Window; - -import zero1hd.rhythmbullet.audio.AudioDataPackage; -import zero1hd.rhythmbullet.audio.MusicManager; - -public class BeatViewer extends Window { - Pixmap lights; - int songIndex; - MusicManager music; - Texture lightOn; - private AudioDataPackage data; - - public BeatViewer(String title, Skin skin) { - super(title, skin, "tinted"); - defaults().space(5f); - setSize(64, 100); - - - //Draw the 'lights' - lights = new Pixmap(16, 16, Format.RGBA8888); - lights.setColor(1, 0.2f, 0.2f, 1f); - lights.fillCircle(lights.getWidth()/2, lights.getHeight()/2, 7); - lightOn = new Texture(lights); - - - WidgetGroup bassBar = new WidgetGroup(); - final Image bgBassBar = new Image(skin.getPatch("bar-empty")); - bgBassBar.setHeight(50f); - bassBar.setSize(bgBassBar.getWidth(), bgBassBar.getHeight()); - - final Image bassBarFill = new Image(skin.getPatch("bar-fill")) { - @Override - public void act(float delta) { - try { - if (music != null && data.getBassPeaks().get(songIndex) != 0) { - clearActions(); - addAction(Actions.sequence(Actions.sizeTo(getWidth(), (data.getBassPeaks().get(songIndex)/data.getBassMaxVal())*bgBassBar.getHeight()), Actions.sizeTo(getWidth(), 0, 0.3f))); - } - } catch (IndexOutOfBoundsException e) { - } - super.act(delta); - } - }; - bassBarFill.setHeight(0f); - bassBar.addActor(bgBassBar); - bassBar.addActor(bassBarFill); - add(bassBar).minSize(bassBar.getWidth(), bassBar.getHeight()); - - WidgetGroup UMBar = new WidgetGroup(); - final Image bgUMBar = new Image(skin.getPatch("bar-empty")); - bgUMBar.setHeight(50f); - UMBar.setSize(bgUMBar.getWidth(), bgUMBar.getHeight()); - Image UMBarFill = new Image(skin.getPatch("bar-fill")) { - @Override - public void act(float delta) { - try { - if (music != null && data.getBassPeaks().get(songIndex) != 0) { - clearActions(); - addAction(Actions.sequence(Actions.sizeTo(getWidth(), (data.getuMPeaks().get(songIndex)/data.getuMMaxval())*bgUMBar.getHeight()), Actions.sizeTo(getWidth(), 0f, 0.3f))); - } - } catch (IndexOutOfBoundsException e) { - - } - super.act(delta); - } - }; - UMBarFill.setHeight(0f); - UMBar.addActor(bgUMBar); - UMBar.addActor(UMBarFill); - add(UMBar).minSize(UMBar.getWidth(), UMBar.getHeight()); - - - row(); - - Image bassIndicator = new Image(lightOn) { - @Override - public void act(float delta) { - try { - if (music != null && data.getBassPeaks().get(songIndex) != 0) { - clearActions(); - addAction(Actions.sequence(Actions.alpha(1f), Actions.fadeOut(0.15f))); - } - } catch (IndexOutOfBoundsException e) { - } - super.act(delta); - } - }; - - bassIndicator.setColor(1f, 1f, 1f, 0f); - add(bassIndicator).center(); - - - Image UMIndicator = new Image(lightOn) { - @Override - public void act(float delta) { - try { - if (music != null && data.getuMPeaks().get(songIndex) != 0) { - clearActions(); - addAction(Actions.sequence(Actions.alpha(1f), Actions.fadeOut(0.15f))); - } - } catch (IndexOutOfBoundsException e) { - - } - super.act(delta); - } - }; - UMIndicator.setColor(1f, 1f, 1f, 0f); - add(UMIndicator).center(); - } - - @Override - public void act(float delta) { - if (music != null) { - songIndex = music.getPlaybackIndexPosition(); - } - super.act(delta); - } - - public void setMusic(MusicManager audioData, AudioDataPackage adp) { - this.music = audioData; - this.data = adp; - } -} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/DifficultyWindow.java b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/DifficultyWindow.java deleted file mode 100755 index cf910b8..0000000 --- a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/DifficultyWindow.java +++ /dev/null @@ -1,77 +0,0 @@ -package zero1hd.rhythmbullet.desktop.graphics.ui.windows; - -import com.badlogic.gdx.scenes.scene2d.Actor; -import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.scenes.scene2d.ui.Slider; -import com.badlogic.gdx.scenes.scene2d.ui.Window; -import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; - -public class DifficultyWindow extends Window { - private Slider sensitivityRating; - private Label sensitivityRatingTitle; - private Slider speedModifier; - private Label speedModifierTitle; - private Slider healthModifier; - private Label healthModifierTitle; - - public DifficultyWindow(Skin skin) { - super("Difficulty Adjuster", skin, "tinted"); - sensitivityRating = new Slider(0f, 100f, 1f, false, skin); - sensitivityRating.setValue(0f); - sensitivityRating.addListener(new ChangeListener() { - - @Override - public void changed(ChangeEvent event, Actor actor) { - sensitivityRatingTitle.setText("Base Difficulty: " + sensitivityRating.getValue()); - } - }); - - sensitivityRatingTitle = new Label("Base Difficulty: " + sensitivityRating.getValue(), skin, "sub-font", skin.getColor("default")); - add(sensitivityRatingTitle); - add(sensitivityRating); - - row(); - - speedModifier = new Slider(1f, 3f, 0.25f, false, skin); - speedModifier.setValue(1f); - speedModifier.addListener(new ChangeListener() { - @Override - public void changed(ChangeEvent event, Actor actor) { - speedModifierTitle.setText("Speed Modifier: " + speedModifier.getValue()); - } - }); - speedModifierTitle = new Label("Speed Modifier: " + speedModifier.getValue(), skin, "sub-font", skin.getColor("default")); - add(speedModifierTitle); - add(speedModifier); - - row(); - - healthModifier = new Slider(0f, 5f, 1f, false, skin); - healthModifier.setValue(0f); - healthModifier.addListener(new ChangeListener() { - - @Override - public void changed(ChangeEvent event, Actor actor) { - healthModifierTitle.setText("Health modifier: " + healthModifier.getValue()); - } - }); - healthModifierTitle = new Label("Health modifier: " + healthModifier.getValue(), skin, "sub-font", skin.getColor("default")); - add(healthModifierTitle); - add(healthModifier); - - pack(); - } - - public float getOverallDiffMod() { - return sensitivityRating.getValue(); - } - - public float getSpeedModifier() { - return speedModifier.getValue(); - } - - public float getHealthModifier() { - return healthModifier.getValue(); - } -} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/FPSWindow.java b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/FPSWindow.java deleted file mode 100755 index a6b72e8..0000000 --- a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/FPSWindow.java +++ /dev/null @@ -1,21 +0,0 @@ -package zero1hd.rhythmbullet.desktop.graphics.ui.windows; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.scenes.scene2d.ui.Window; - -public class FPSWindow extends Window { - public FPSWindow(String title, Skin skin) { - super(title, skin, "tinted"); - Label FPS = new Label("FPS: ", skin, "window-font", skin.getColor("default")) { - @Override - public void act(float delta) { - setText("FPS: " + Gdx.graphics.getFramesPerSecond()); - super.act(delta); - } - }; - add(FPS).center(); - setSize(70, 70); - } -} \ No newline at end of file diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/LoadingWindow.java b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/LoadingWindow.java deleted file mode 100755 index 75f645a..0000000 --- a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/LoadingWindow.java +++ /dev/null @@ -1,85 +0,0 @@ -package zero1hd.rhythmbullet.desktop.graphics.ui.windows; - -import com.badlogic.gdx.assets.AssetManager; -import com.badlogic.gdx.audio.Sound; -import com.badlogic.gdx.scenes.scene2d.actions.Actions; -import com.badlogic.gdx.scenes.scene2d.ui.Image; -import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.scenes.scene2d.ui.Window; -import com.badlogic.gdx.utils.Disposable; - -public class LoadingWindow extends Window implements Disposable { - - private Label status; - private Sound closeSound; - private Sound openSound; - private float vol; - public LoadingWindow(Skin skin, boolean progress, AssetManager assets, float vol) { - super("loading...", skin, "tinted"); - - this.openSound = assets.get("pop_open.ogg", Sound.class); - this.closeSound = assets.get("pop_close.ogg", Sound.class); - this.vol = vol; - Image loading = new Image(skin, "loading"); - loading.addAction(Actions.forever(Actions.rotateBy(-360f, 2f))); - add(loading).left(); - - setSize(loading.getWidth()+20f, loading.getHeight()+40f); - - loading.setOrigin(loading.getWidth()/2, loading.getHeight()/2); - - - - if (progress) { - status = new Label("[ ]", skin, "sub-font", skin.getColor("default")); - add(status).spaceLeft(10f).expandX().right(); - setSize(getWidth() + status.getWidth() + 45f, (loading.getHeight() >= status.getHeight() ? loading.getHeight() : status.getHeight()) + 74); - } - - } - - public LoadingWindow(Skin skin, String styleName, boolean progress, AssetManager assets, float vol) { - super("loading...", skin, styleName); - - this.openSound = assets.get("pop_open.ogg", Sound.class); - this.closeSound = assets.get("pop_close.ogg", Sound.class); - this.vol = vol; - Image loading = new Image(skin, "loading"); - loading.addAction(Actions.forever(Actions.rotateBy(-360f, 2f))); - add(loading).left(); - - setSize(loading.getWidth()+20f, loading.getHeight()+40f); - - loading.setOrigin(loading.getWidth()/2, loading.getHeight()/2); - - - - if (progress) { - status = new Label("[ ]", skin, "sub-font", skin.getColor("default")); - add(status).spaceLeft(10f).expandX().right(); - setSize(getWidth() + status.getWidth() + 45f, (loading.getHeight() >= status.getHeight() ? loading.getHeight() : status.getHeight()) + 74); - } - - } - - public void playOpenSound() { - openSound.play(vol/100f); - } - - @Override - public boolean remove() { - closeSound.play(vol/100f); - return super.remove(); - } - - public void setProgress(float progress) { - status.setText(String.valueOf((int) progress) + '%'); - } - - @Override - public void dispose() { - openSound.dispose(); - closeSound.dispose(); - } -} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/NoticeWindow.java b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/NoticeWindow.java deleted file mode 100755 index cb3f443..0000000 --- a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/NoticeWindow.java +++ /dev/null @@ -1,63 +0,0 @@ -package zero1hd.rhythmbullet.desktop.graphics.ui.windows; - -import com.badlogic.gdx.assets.AssetManager; -import com.badlogic.gdx.audio.Sound; -import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.scenes.scene2d.ui.TextButton; -import com.badlogic.gdx.scenes.scene2d.ui.Window; -import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; -import com.badlogic.gdx.utils.Align; - -public class NoticeWindow extends Window { - private Label noticeText; - private Skin skin; - - private Sound closeSound; - private Sound openSound; - private float vol; - public NoticeWindow(Skin skin, String styleName, String text, float vol, AssetManager assets) { - super("Notice", skin, "tinted"); - this.skin = skin; - - this.openSound = assets.get("pop_open.ogg", Sound.class); - this.closeSound = assets.get("pop_close.ogg", Sound.class); - this.vol = vol; - - noticeText = new Label(text, skin, "sub-font", skin.getColor("default")); - noticeText.setWrap(true); - noticeText.setAlignment(Align.center); - add(noticeText).expandX().fill().center().padLeft(20f).padRight(20f); - } - - public NoticeWindow(Skin skin, String styleName, String title, String text, float vol, AssetManager assets) { - super(title, skin, styleName); - this.skin = skin; - - this.openSound = assets.get("pop_open.ogg", Sound.class); - this.closeSound = assets.get("pop_close.ogg", Sound.class); - this.vol = vol; - - noticeText = new Label(text, skin, "sub-font", skin.getColor("default")); - noticeText.setWrap(true); - noticeText.setAlignment(Align.center); - add(noticeText).expandX().fill().center().padLeft(20f).padRight(20f); - } - - public void setupButton(String text, ChangeListener changeListener, int alignment) { - TextButton button = new TextButton(text, skin, "sub"); - button.addListener(changeListener); - add(button).align(alignment); - } - - public void playOpenSound() { - openSound.play(vol/100f); - } - - @Override - public boolean remove() { - closeSound.play(vol/100f); - return super.remove(); - } - -} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/PauseMenu.java b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/PauseMenu.java deleted file mode 100755 index c7764f8..0000000 --- a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/PauseMenu.java +++ /dev/null @@ -1,35 +0,0 @@ -package zero1hd.rhythmbullet.desktop.graphics.ui.windows; - -import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.scenes.scene2d.ui.TextButton; -import com.badlogic.gdx.scenes.scene2d.ui.Window; - -public class PauseMenu extends Window { - private Label label; - private TextButton resumeButton; - private TextButton quit; - public PauseMenu(Skin skin) { - super("Paused", skin, "tinted"); - defaults().pad(25f); - label = new Label("Game is paused.", skin); - add(label).spaceBottom(15f); - row(); - - resumeButton = new TextButton("Resume", skin, "sub"); - add(resumeButton).spaceBottom(8f); - quit = new TextButton("Quit", skin, "sub"); - add(quit); - pack(); - - setModal(true); - } - - - public TextButton getResumeButton() { - return resumeButton; - } - public TextButton getQuitButton() { - return quit; - } -} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/Spawnables.java b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/Spawnables.java deleted file mode 100755 index 7077935..0000000 --- a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/Spawnables.java +++ /dev/null @@ -1,20 +0,0 @@ -package zero1hd.rhythmbullet.desktop.graphics.ui.windows; - -import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.scenes.scene2d.ui.Table; -import com.badlogic.gdx.scenes.scene2d.ui.Window; - -public class Spawnables extends Window { - - public Spawnables(String title, Skin skin) { - super(title, skin, "tinted"); - - Table spawnButtons = new Table(skin); - - ScrollPane entityListScroller = new ScrollPane(spawnButtons); - entityListScroller.setSize(180, 80); - add(entityListScroller); - setSize(185, 85); - } -} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/VolumeWindow.java b/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/VolumeWindow.java deleted file mode 100755 index 95d69d0..0000000 --- a/desktop/src/zero1hd/rhythmbullet/desktop/graphics/ui/windows/VolumeWindow.java +++ /dev/null @@ -1,76 +0,0 @@ -package zero1hd.rhythmbullet.desktop.graphics.ui.windows; - -import com.badlogic.gdx.Preferences; -import com.badlogic.gdx.math.MathUtils; -import com.badlogic.gdx.scenes.scene2d.Actor; -import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.scenes.scene2d.ui.Slider; -import com.badlogic.gdx.scenes.scene2d.ui.Window; -import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; - -import zero1hd.rhythmbullet.audio.MusicManager; - -public class VolumeWindow extends Window { - - private Slider fxVolSlider; - private Slider musicVolSlider; - private Preferences prefs; - - private MusicManager music; - public VolumeWindow(String title, Skin skin, Preferences prefs) { - super(title, skin, "tinted"); - this.prefs = prefs; - setSize(360f, 100f); - - Label musicVolSliderLabel = new Label("Music Volume: ", skin, "window-font", skin.getColor("default")); - add(musicVolSliderLabel).left().padLeft(5f); - musicVolSlider = new Slider(0, 100, 0.1f, false, skin); - musicVolSlider.setValue(prefs.getFloat("music vol", 100f)); - add(musicVolSlider).width(200f); - final Label musicVolPercentage = new Label(MathUtils.round(musicVolSlider.getValue()) + "%", skin, "window-font", skin.getColor("default")); - musicVolSlider.addListener(new ChangeListener() { - @Override - public void changed(ChangeEvent event, Actor actor) { - save(); - musicVolPercentage.setText(MathUtils.round(musicVolSlider.getValue()) + "%"); - if (music != null) { - music.setVolume(musicVolSlider.getValue()); - } - } - }); - - add(musicVolPercentage).spaceLeft(10f).expandX().left(); - - row(); - - Label fxVolSliderLabel = new Label("FX Volume: ", skin, "window-font", skin.getColor("default")); - add(fxVolSliderLabel).left().padLeft(5f); - fxVolSlider = new Slider(0, 100, 1, false, skin); - fxVolSlider.setValue(prefs.getFloat("fx vol", 100f)); - add(fxVolSlider).width(200f); - final Label fxVolPercentage = new Label(MathUtils.round(fxVolSlider.getValue()) + "%", skin, "window-font", skin.getColor("default")); - fxVolSlider.addListener(new ChangeListener() { - @Override - public void changed(ChangeEvent event, Actor actor) { - save(); - fxVolPercentage.setText(MathUtils.round(fxVolSlider.getValue()) + "%"); - } - }); - - add(fxVolPercentage).spaceLeft(10f).expandX().left(); - } - - public void save() { - prefs.putFloat("music vol", musicVolSlider.getValue()); - prefs.putFloat("fx vol", fxVolSlider.getValue()); - prefs.flush(); - } - - public void setMusic(MusicManager music) { - this.music = music; - if (music != null) { - music.setVolume(prefs.getFloat("music vol")); - } - } -} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/screens/GameScreen.java b/desktop/src/zero1hd/rhythmbullet/desktop/screens/GameScreen.java index ece95db..e432e9a 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/screens/GameScreen.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/screens/GameScreen.java @@ -10,8 +10,9 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.utils.viewport.ExtendViewport; import zero1hd.rhythmbullet.RhythmBullet; +import zero1hd.rhythmbullet.audio.MusicController; import zero1hd.rhythmbullet.audio.visualizer.CircularVisualizer; -import zero1hd.rhythmbullet.desktop.audio.visualizer.PCMMachine; +import zero1hd.rhythmbullet.desktop.audio.visualizer.PCMObtainer; import zero1hd.rhythmbullet.game.GameController; public class GameScreen extends ScreenAdapter { @@ -21,11 +22,11 @@ public class GameScreen extends ScreenAdapter { private GameController gc; private CircularVisualizer circleVisualizer; - public GameScreen(AssetManager assets, Preferences prefs) { + public GameScreen(AssetManager assets, Preferences prefs, MusicController musicController) { this.assets = assets; batch = new SpriteBatch(); viewport = new ExtendViewport(RhythmBullet.WORLD_WIDTH, RhythmBullet.WORLD_HEIGHT); - circleVisualizer = new CircularVisualizer(new PCMMachine()); + circleVisualizer = new CircularVisualizer(new PCMObtainer(musicController)); circleVisualizer.setCenter(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2); circleVisualizer.setCamera(viewport.getCamera()); circleVisualizer.setColor(Color.CYAN.toFloatBits()); diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainPage.java b/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainPage.java index 52e9976..6a2aea8 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainPage.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainPage.java @@ -18,7 +18,8 @@ import com.badlogic.gdx.utils.Align; import zero1hd.rhythmbullet.RhythmBullet; import zero1hd.rhythmbullet.audio.MusicController; -import zero1hd.rhythmbullet.desktop.audio.visualizer.DoubleHorizontalVisualizer; +import zero1hd.rhythmbullet.audio.visualizer.DoubleHorizontalVisualizer; +import zero1hd.rhythmbullet.desktop.audio.visualizer.PCMObtainer; import zero1hd.rhythmbullet.desktop.graphics.ui.components.MusicControls; import zero1hd.rhythmbullet.desktop.graphics.ui.pages.Page; import zero1hd.rhythmbullet.graphics.ui.components.ScrollText; @@ -43,7 +44,7 @@ public class MainPage extends Page implements Observer { super(0, 0); this.mc = musicController; - dhv = new DoubleHorizontalVisualizer(70, (int) getWidth(), (int) (getHeight()*0.3), 0.3f, mc); + dhv = new DoubleHorizontalVisualizer(70, (int) getWidth(), (int) (getHeight()*0.3), 0.3f, mc, new PCMObtainer(mc)); dhv.setPosition(0, (int) ((getHeight() - dhv.getHeight())/2f)); title = new Image(assetManager.get("title.png", Texture.class)); diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MusicStatusPage.java b/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MusicStatusPage.java deleted file mode 100755 index bfc57e4..0000000 --- a/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MusicStatusPage.java +++ /dev/null @@ -1,40 +0,0 @@ -package zero1hd.rhythmbullet.desktop.screens.main; - -import com.badlogic.gdx.math.Vector3; -import com.badlogic.gdx.scenes.scene2d.Actor; -import com.badlogic.gdx.scenes.scene2d.actions.Actions; -import com.badlogic.gdx.scenes.scene2d.ui.Button; -import com.badlogic.gdx.scenes.scene2d.ui.Image; -import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; - -import zero1hd.rhythmbullet.desktop.graphics.ui.pages.Page; - -public class MusicStatusPage extends Page { - Label statusText; - Image loading; - Button back; - - public MusicStatusPage(Skin skin, final Vector3 v3) { - super("Info", skin); - - back = new Button(skin, "arrow-button"); - back.setPosition(15f, (getHeight()-back.getHeight())/2 -15); - back.addListener(new ChangeListener() { - - @Override - public void changed(ChangeEvent event, Actor actor) { - v3.x = 0.5f*getWidth(); - } - }); - addActor(back); - - - loading = new Image(skin, "loading"); - loading.setPosition((getWidth()-loading.getWidth())/2, (getHeight()-loading.getHeight())/2); - loading.setOrigin(loading.getWidth()/2, loading.getHeight()/2); - loading.addAction(Actions.forever(Actions.rotateBy(-360f, 2f))); - addActor(loading); - } -}