From 871e6677079fb01e3489e1b3f017b8a4becdd8f7 Mon Sep 17 00:00:00 2001 From: Recrown Date: Sat, 14 Oct 2017 16:49:02 -0500 Subject: [PATCH] added proper menu screen controller for music playback; changed valid bin range for visualizer --- android/assets/uiskin.atlas | 111 ++++++++++++------ android/assets/uiskin.png | Bin 6288 -> 11500 bytes .../zero1hd/rhythmbullet/RhythmBullet.java | 34 +++++- .../rhythmbullet/audio/Mp3Manager.java | 2 +- .../rhythmbullet/audio/MusicManager.java | 4 +- .../audio/SongListController.java | 11 +- .../rhythmbullet/audio/WAVManager.java | 2 +- .../audio/visualizer/BasicVisualizer.java | 4 +- .../ui/components/GraphicsOptions.java | 9 +- .../ui/components/TitleBarVisualizer.java | 6 +- .../graphics/ui/components/Visualizer.java | 19 +-- .../graphics/ui/pages/MainPage.java | 7 ++ .../graphics/ui/pages/OptionsPage.java | 10 +- .../graphics/ui/windows/MusicController.java | 10 +- .../rhythmbullet/screens/MainMenu.java | 1 + 15 files changed, 163 insertions(+), 67 deletions(-) diff --git a/android/assets/uiskin.atlas b/android/assets/uiskin.atlas index cdee16f..810c86d 100755 --- a/android/assets/uiskin.atlas +++ b/android/assets/uiskin.atlas @@ -12,14 +12,6 @@ check-off orig: 14, 14 offset: 0, 0 index: -1 -textfield - rotate: false - xy: 11, 5 - size: 14, 14 - split: 3, 3, 3, 3 - orig: 14, 14 - offset: 0, 0 - index: -1 check-on rotate: false xy: 125, 35 @@ -28,6 +20,22 @@ check-on orig: 14, 14 offset: 0, 0 index: -1 +check-disabled + rotate: false + xy: 192, 20 + size: 14, 14 + split: 5, 5, 5, 5 + orig: 14, 14 + offset: 0, 0 + index: -1 +textfield + rotate: false + xy: 11, 5 + size: 14, 14 + split: 3, 3, 3, 3 + orig: 14, 14 + offset: 0, 0 + index: -1 cursor rotate: false xy: 23, 1 @@ -224,15 +232,15 @@ white pause rotate: false xy: 1, 50 - size: 44, 44 - orig: 44, 44 + size: 45, 45 + orig: 45, 45 offset: 0, 0 index: -1 pause-down rotate: false - xy: 46, 50 - size: 44, 44 - orig: 44, 44 + xy: 1, 96 + size: 45, 45 + orig: 45, 45 offset: 0, 0 index: -1 bar-fill @@ -267,32 +275,67 @@ left-button-down orig: 12, 20 offset: 0, 0 index: -1 -arrow +play rotate: false - xy: 91, 50 - size: 44, 44 - orig: 44, 44 + xy: 47, 50 + size: 45, 45 + orig: 45, 45 + offset: 0, 0 + index: -1 +play-down + rotate: false + xy: 47, 96 + size: 45, 45 + orig: 45, 45 + offset: 0, 0 + index: -1 +fast-forward + rotate: false + xy: 93, 50 + size: 45, 45 + orig: 45, 45 + offset: 0, 0 + index: -1 +fast-forward-down + rotate: false + xy: 93, 96 + size: 45, 45 + orig: 45, 45 + offset: 0, 0 + index: -1 +rewind + rotate: false + xy: 139, 50 + size: 45, 45 + orig: 45, 45 + offset: 0, 0 + index: -1 +rewind-down + rotate: false + xy: 139, 96 + size: 45, 45 + orig: 45, 45 + offset: 0, 0 + index: -1 +shuffle + rotate: false + xy: 185, 50 + size: 45, 45 + orig: 45, 45 + offset: 0, 0 + index: -1 +shuffle-down + rotate: false; + xy: 185, 96 + size: 45, 45 + orig: 45, 45 offset: 0, 0 index: -1 loading rotate: false; - xy: 136, 50 - size: 44, 44 - orig: 44, 44 - offset: 0, 0 - index: -1 -left-double-arrow - rotate: false; - xy: 1, 95 - size: 21, 21 - orig: 21, 21 - offset: 0, 0 - index: -1 -right-double-arrow - rotate: false; - xy: 23, 95 - size: 21, 21 - orig: 21, 21 + xy: 47, 142 + size: 45, 45 + orig: 45, 45 offset: 0, 0 index: -1 holo-pane diff --git a/android/assets/uiskin.png b/android/assets/uiskin.png index fa5bcfec8132f571756989c134614a2d4b64fe04..67b53ba4890d980e93005588e6efef85fd36452e 100755 GIT binary patch literal 11500 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�{?nq2Q)ij^Dm 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 D6C+xd literal 6288 zcmeHM2UnBpvi=f@KtMoB07XJH6fty_-a$buD54+;0fgw0UZjN(iUOi^L8K}hv9KWl z2_P*Y{Q>u`o3)ZRdB4m%GtV>6%$Joo%d;o%ba=JqzT^#cGH|Ia4~&({^p z-sJQ*KV!-{#>FXoO!JDjFO_aR8d(`MP1D^ z&jkQP*Ue1~F9tcx=IDP#^#@SkaR^2GDz4@T;lsRpkzi3nG3O-ni#F&n;RudvNYS~p zH>Ob0-P{sLGZT9owD;ZEDrKaRBCl^UC(J}p5Ef#zdn-=*V2gm^1+npiw-H%OIl7pD z)ww{o?mF!n?WN(>U3r0lU4xmQMrL#|?8nNGfYIQX4wEsF<+4v*Z*#%;l{R+0b*Wpw zAtF(4{cDd=GaS3ncqaA+Y51ParFRyg6g)EY%Y)0umFgMe5$ayUs8sKzLBH-<{}VjG zy~!9Ws?#NE`r?ye6{)r)Z?mo|&4;*Y8elOhU-=*@En_7CVF#SGh8UEzY2WDsFSPFW zLWc;>msc7Sb0w#Ly#2BM`DUp{mutnJ1&jqa1C4YbiP^Qf3WCe-7ftapI1PU- z@av8*Pi|;{&7{M{Ov&nM<|s7;nl3;XQ2Fk9D%5FuA9gAeQ>-azmsB_NCvC6|P5@gz z0UKOD3=ETko`ZqLzm5v^FmzW3KNR{A&LY=`0!KXfS0`c>UUAI`KDEYFmfREt;4YlR z!#%EwqMg+|_{t)vO)ZQ-v5Ks_kv^cHRTGdP9bQE~NU%tE$Z-mj2Y9BA9{~i?JWeRT zLOpKU*C*?rAQNsQ8etXp!@tTR?Q;wqCsw{{aPPJV=bgxIIN&i?f|r-&0K| z@8bXCB(Ux*9wbl9hIV1{p zT7MiP`8oRGoB%;XXd9dWu)0<_Ncmu&Gk?8%4jJ{Ss5qnH6bN8q_5{h*x%31mik?|B zNnX~NDNWVy5RTAVdki(;6TyFwB5N9%2{ytU`&IiAX;!e0QBmLQEi z?i5y9D)D3I)Dx$3K@oo^a0!CmItfT~f}&df@srFmI_5LAe&W<;#ZF;Ht7)M!pz%5xl^e?Oa@QH_A5z1^fGW z(&=%npGdnUfV~f6Lu)wr;*H3H@HuJRSNlR>)KDh|fhG)yeO1kfcS9OtDn6fhb-G9J zU)cVeR6Ain<2=XpMPu4H1Yo6gH?l}k1HwOzrr5>%0+7J8K>#gI2>!oRkLJ%5iZ4PsnVxBe1r)uGedAKb%*e+ADvlV^})A@2UyxGxlL@?{4?84%bURqZx1E98=dCw z-NLzmSAtFv)H?-Vn_?=vTujmOYh#6Sr0QQKZFbgf>rcOF>Zed9`X{e!#Z?=D@MteR z@Gu`F-<_UVX%+eWhD^Rs`ha*&R6v4Agi9O0l4-@z)i>0Xmj_rtynU>vsw%It~2TkYnXqId%co{)bCueo+zTV2nS)%9#E z6l5rK37XJ4SGPKR#->|4qaOuyJpQnETa*u=284c$Ow{Zv=~?&)qrw)&Lw2N!Wj5J3 zj!m%zU8ohn8d7apma;nmF@T^Gj|k&O^SkfuzIg;Vn%tCpu;*2WOQJ4`TlZ2~<&1s( zQkQmC<#5P!u_-W3>BrZ177VDSZug-hBKW8^j6m^o;IxddjkN!g>LgeGB>GdeiEr*p zu8VD6k3Yl(bdEi-y#WGH4$w>1KrLH1%_|vnx$|-*)__z3hxbFhN*k~098J0Yz!&ju zw;}n_o%|6{e5&S!BzQ1|PzENWx1=mV-rvDJOHGOh+%f3VFm7Y^d~cBhUv3$Sm@(%{ zRPq{nUGdE)2$9};7fKd(*|G+*%K($bO6IHm&Hip3`TQx>_j1Z+V(~3S9KGZ3J7Dc# z@4y0ifT{5rrbckR2xQ9vnUnm}2l0VZi`VR0FFS^Pe6-?9pLj)_iQYCUL*`w8J9m)LooJ3)OxvT(aTvi{0~x5Ky`KwzXvT}hv` z8pc5Y>&zV69O{$xlcApM{H$PrSIp$ec%+g7ty(HIiL+JJrG1|~(9h8p*DyT@qsEb1 zc-_TCfEW>=mfGJ2Pd^C>!e4@rVMmiXtbH*TK?{^#l2(gN`1V)crohv~lp{!|&0Nd| zRSMuofPj(DUyH!rpi374si+@O z*Hg|t2lq_hg8*Qd5=0*0I|AI)w0qO0TasVEN@vNTiP?b*|c6;1mfZukn-R#dwM1(-5OTJ>Fn zu$NEwrxB}pNgt-=0b{_t-TynY#`W&EMxv{#Y5rNJK%DJJ7{w&7I^A?J!vi5#q!xMI zHsxG!C=7_rNoZQG&IxMlZaYaeeBbqaTT6W&!V!nRbMX1tDy0O!6Lkn`eBD*<9>!sb zz4omz)OM0LrJ8~mixzNJ33AeYaJ52jT%w~o_nz#;MzD2P#Gf?3sgXw`YT@q8j?Kbu zm<8EEfUr8Q4zHB{fiKKay;#)HDE#-ZX{7KF!Oh-uO%dD35@z~wrCl?;C?O9SAHbrHQ zNgvvkZ^&-(kfqif7$TTP~*`fy-m33 zC|VpX%auXJ`uH3sZRGMt{_zX-$g)|H?P&Uj!2$^)U~DB*B~`(%>=-P*bR9Q}xZBCP zx+H7dt-$ge&u$bwBbFss#651`4O=w6}f*h9p+`DZV8Ca%q#@1Zo0>}_XOt_9~QbhX_I zU;6I=X3czrnB$K07}t*QRw!@w&8lupoF8$h ze+Lq~t^!8L4aY}jOu!V>GB#->FyMkbPJaE(R1ZdR3K#yvE4XTZu}jU1F*5@=Cp!@R z9Rdj{0SmN_EfwFEB2cP`oY*E~&VgD+2g{g0hqtfd>X#{5NkJMpaB<;D;O|n>4Fqvf zprCrUrZ^K)$Fm6C1R?+B&$##rcYQL+t)`dKcbg`0Qe^$ss6B&E(qZ}RF9kwesYiYZ zEkhnC{BhZvu^U7^BMJ`h@?o%+5C()`Voqtu_2Y!D*%#`SI>@Qkz=a*W*PZz3z0vDY zG3#u27ej@AAqQdUCXexurfLA~0)OTeKVh?e8{Qn${~ z;+OsG{Sh$@ciGi2xvO54LmrioC^|}&d~~2Vv?h-3Cos-|rSU0+6#ZUd(!zKFb+JNd zgg))7MMFZlhT=TLak*y(Jw!d@j+;cN$kzMCh}K#CCiCeOsKHw(2v^N{nYJfvQaZTf0YFJE{kYkr z%jh!xo0@<3zyS8WT}=Nnt!-2D9FC)kgEZTg2*4=Tv7;DCL4_SH;viCdTZibqxRJpv z#mD-zwp4runWP&m*fXw?2g1!DdL!p+$4uvcZyK-v04uL&jtovucLy)tBwL`VxtsfX z#u*H7J?($Ai3a13tY3(OulptNM4YW}EaIfj_3}iZn4PmTokH6o?%x4K_Pv_R$ObE+ zZGC>3CXoSl{IXQxA-Z}T-)j-!A&I-fi|sOg0vQQziXT4w+f?|m4a%-Kz3y7^8SH|MNUJ#xv_F*Y8;%Sam27x^;J-Cbbb@d z0n52ljrxfI*-{%ketpgS7VcVlXYVnQ0}=!4$$x!07a7)wVRs$p@bA+NRtq^AwO@07 z?|L*vz^Va==5TI5YUlicUXWj<>b=4Ocl3#eTh$g6B%P7g*Ly!&yPHuQW6EDIv{SL$ zL(uYc%!W!2q1BmwY<#ji5<>{cw;bbe=QqW+j0qptFX`sQu;v?y z_h+B(F7dTp^oXDTYX{RGHlT;6Hp@m#b?^LWOg5-JG{G^ZS$}~1iK#Ib^AC zzQeR5g7J;_c^t-@_c1Ony@-Rm5pWu^0^M-O_A##lR;VQpi4SXm4`{g@HgHF8DKBc4 z`6Wu~_u8&d1Q@frNF1*xp2x#`3s*PuvBNoxK5GzMgy_2Jzm>-#@%G(zZC`@hRCcZ8 z#n0+Z?RbcEyu~I##BR4J&jWQSP;>s{8|$3lUCLE{ux!NTqf-1meZ0nPGknHn zGjA<)iiiWIv%oPSUza$W{?h0zHAk34%KOZzQ4AJYS()ErjJ21wSHuNkVidOCLlJ@( znvTRly4oxU1a+_c*7g9TaZz+een&$&>YLD zC(^xQaX8w{61j(&g+VUl39G=mS9pA`YLhz^tmy6yX-2Uexyn_{eQg{1Q(i&E2@{mV zs$1_gntgrBxz_Kqy&TkgE^shHmbb*x7|bd-m&o4w$HZj^pN+2g1^3i6a+-kRA4fm$) z0EDOd-9H*vXUxWxM7EQfXhqn|D*q?pl2^vy{>zIW*{3R(Og24;{5xOM_oG)rkqhCO z4Rb`Tgqut393}PVY*?Gt2mXbYG~e87W5E%-ZH5M0Vr~qIaCv8-Kb0n6HVQ?Ikk14; zSBKavm29)*!_vcv0?qz5Y$kpYEHq!mi(CnRnE8{zLy?EQBTEY%uOLjoDLQ7uDoKM4 zUXs(CJs9X9Ezu7WxW{V3q+wB0(wYkqEnr0mJoo9Tz{}fvuK)k?e-i?upFIC>d1;<) ey}zHu|6=8tG}k+g7WQ8SfVt^elM*9z songList.getAmountOfSongs() -1) { + currentPlaybackID = 0; + } + } + if (currentPlaybackID < 0) { + currentPlaybackID = 0; + } this.mdp = songList.getMusicInfoFromIndex(currentPlaybackID); if (mdp == null) { if (!Gdx.files.external("RhythmBullet/Alan Walker - Spectre.mp3").exists()) { diff --git a/core/src/zero1hd/rhythmbullet/audio/WAVManager.java b/core/src/zero1hd/rhythmbullet/audio/WAVManager.java index a768e80..399704e 100755 --- a/core/src/zero1hd/rhythmbullet/audio/WAVManager.java +++ b/core/src/zero1hd/rhythmbullet/audio/WAVManager.java @@ -104,7 +104,7 @@ public class WAVManager implements MusicManager { } @Override - public float getPosition() { + public float getPositionInSeconds() { return playbackMusic.getPosition(); } diff --git a/core/src/zero1hd/rhythmbullet/audio/visualizer/BasicVisualizer.java b/core/src/zero1hd/rhythmbullet/audio/visualizer/BasicVisualizer.java index 45a994e..5d88e4d 100755 --- a/core/src/zero1hd/rhythmbullet/audio/visualizer/BasicVisualizer.java +++ b/core/src/zero1hd/rhythmbullet/audio/visualizer/BasicVisualizer.java @@ -39,7 +39,7 @@ public class BasicVisualizer extends VisualizerCore { pixmap.setColor(Color.WHITE); pixmap.fill(); barCount = 65; - smoothRange = 2; + smoothRange = 3; angleRot = new Vector2(MathUtils.cosDeg(rotation), MathUtils.sinDeg(rotation)); textures = new Texture[barCount]; bars = new Sprite[barCount]; @@ -110,7 +110,7 @@ public class BasicVisualizer extends VisualizerCore { super.setMM(mm); maxAvgHeight = 0; currentAvg = 0; - float validBins = (5000/((mm.getSampleRate()/2)/((audioPCM.length/2)+1))); + float validBins = (5500/((mm.getSampleRate()/2)/((audioPCM.length/2)+1))); Gdx.app.debug("Visualizer", "valid frequency bins " + validBins); binsPerBar = MathUtils.round((validBins/barCount)); barHeights = new float[barCount]; diff --git a/core/src/zero1hd/rhythmbullet/graphics/ui/components/GraphicsOptions.java b/core/src/zero1hd/rhythmbullet/graphics/ui/components/GraphicsOptions.java index 0ad3db3..9dd14db 100755 --- a/core/src/zero1hd/rhythmbullet/graphics/ui/components/GraphicsOptions.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/components/GraphicsOptions.java @@ -37,7 +37,7 @@ public class GraphicsOptions extends Table { add(shaders).fillX(); row(); - glowShader = new CheckBox(" Glow Shader", skin, "expandable"); + glowShader = new CheckBox(" Glow Shader", skin); glowShader.setChecked(prefs.getBoolean("glow shader", true)); glowShader.addListener(new ChangeListener() { @Override @@ -45,12 +45,15 @@ public class GraphicsOptions extends Table { save(); if (glowShader.isChecked()) { mainMenu.loadShaders(); + enhancedGlow.setDisabled(false); } else { mainMenu.unloadShaders(); + enhancedGlow.setChecked(false); + enhancedGlow.setDisabled(true); } } }); - add(glowShader).minHeight(shaders.getHeight()); + add(glowShader); row(); enhancedGlow = new CheckBox(" Enhanced Glow", skin); @@ -66,7 +69,7 @@ public class GraphicsOptions extends Table { } } }); - add(enhancedGlow).minHeight(shaders.getHeight()); + add(enhancedGlow); row(); resolutions = new Label("Resolutions: ", skin); diff --git a/core/src/zero1hd/rhythmbullet/graphics/ui/components/TitleBarVisualizer.java b/core/src/zero1hd/rhythmbullet/graphics/ui/components/TitleBarVisualizer.java index 71c66c8..416c0d2 100755 --- a/core/src/zero1hd/rhythmbullet/graphics/ui/components/TitleBarVisualizer.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/components/TitleBarVisualizer.java @@ -33,26 +33,28 @@ public class TitleBarVisualizer extends Group implements Disposable { public TitleBarVisualizer(AssetManager assets) { if (assets == null) throw new NullPointerException("TitleBarVisualizer requires assets manager... ITS NULL YOU FOOL"); visual = new Visualizer(); - visual.getVis().setSpaceBetweenBars(visual.getVis().getBarWidth()-1); + visual.getVis().setSpaceBetweenBars(visual.getVis().getBarWidth()-2); addActor(visual); setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()*0.2f); setPosition(0, (Gdx.graphics.getHeight()-getHeight())/2f); visual.setWidth(getWidth()); visual.setHeight(getHeight()); - visual.setY(-2); visual.getVis().flip(); visual.getVis().reverse(); visual2 = new MirrorVisualizer(); visual.setUpdatePositioning(false); visual.getVis().addMirrorVisualizer(visual2); visual2.setyPos(MathUtils.round(getHeight())); + visual.setY(-2); visual.updateVisualPosition(); Pixmap pixmap = new Pixmap(MathUtils.round(getWidth()), MathUtils.round(getHeight()), Format.RGBA8888); pixmap.setColor(Color.WHITE); pixmap.drawLine(0, 0, pixmap.getWidth(), 0); + pixmap.drawLine(0, 1, pixmap.getWidth(), 1); pixmap.drawLine(0, pixmap.getHeight()-1, pixmap.getWidth(), pixmap.getHeight()-1); + pixmap.drawLine(0, pixmap.getHeight()-2, pixmap.getWidth(), pixmap.getHeight()-2); bgTexture = new Texture(pixmap); pixmap.dispose(); diff --git a/core/src/zero1hd/rhythmbullet/graphics/ui/components/Visualizer.java b/core/src/zero1hd/rhythmbullet/graphics/ui/components/Visualizer.java index d6306da..48ac3e0 100755 --- a/core/src/zero1hd/rhythmbullet/graphics/ui/components/Visualizer.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/components/Visualizer.java @@ -34,11 +34,7 @@ public class Visualizer extends Widget { } vis.modify(delta); - vis.setHeight(getHeight()); - vis.setWidth(getWidth()); - vis.setxPos(getX()); - vis.setyPos(getY()); - vis.setRotation(getRotation()); + setVisualizerPosProp(); if (updatePositioning) { vis.updatePositionInfo(); vis.setxPos((getWidth() - vis.getActualWidth())/2f); @@ -65,14 +61,23 @@ public class Visualizer extends Widget { super.setColor(r, g, b, a); } + public void setVisualizerPosProp() { + vis.setHeight(getHeight()); + vis.setWidth(getWidth()); + vis.setxPos(getX()); + vis.setyPos(getY()); + vis.setRotation(getRotation()); + } + public void setUpdatePositioning(boolean updatePositioning) { - vis.updatePositionInfo(); + updateVisualPosition(); vis.setxPos(((vis.getWidth() - vis.getActualWidth())/2f)); - vis.updatePositionInfo(); + updateVisualPosition(); this.updatePositioning = updatePositioning; } public void updateVisualPosition() { + setVisualizerPosProp(); vis.updatePositionInfo(); } diff --git a/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MainPage.java b/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MainPage.java index 1d6ecd3..f2a9c78 100755 --- a/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MainPage.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/pages/MainPage.java @@ -14,6 +14,7 @@ import zero1hd.rhythmbullet.RhythmBullet; import zero1hd.rhythmbullet.audio.MusicManager; import zero1hd.rhythmbullet.audio.SongListController; import zero1hd.rhythmbullet.events.OnDifferentSongListener; +import zero1hd.rhythmbullet.graphics.ui.components.MusicControls; import zero1hd.rhythmbullet.graphics.ui.components.TitleBarVisualizer; public class MainPage extends Page implements OnDifferentSongListener { @@ -25,6 +26,8 @@ public class MainPage extends Page implements OnDifferentSongListener { private TextButton playButton; private TextButton optionsButton; private TextButton quitButton; + + private MusicControls musicControls; public MainPage(RhythmBullet core, Vector3 targetPosition, SongListController sc) { this.sc = sc; @@ -75,6 +78,10 @@ public class MainPage extends Page implements OnDifferentSongListener { } }); table.add(quitButton).fillX(); + + musicControls = new MusicControls(core.getDefaultSkin(), sc); + musicControls.setPosition((getWidth()-musicControls.getMinWidth() - 20f), getHeight()-musicControls.getMinHeight()); + addActor(musicControls); } @Override diff --git a/core/src/zero1hd/rhythmbullet/graphics/ui/pages/OptionsPage.java b/core/src/zero1hd/rhythmbullet/graphics/ui/pages/OptionsPage.java index ad19e0a..31028ae 100755 --- a/core/src/zero1hd/rhythmbullet/graphics/ui/pages/OptionsPage.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/pages/OptionsPage.java @@ -67,7 +67,7 @@ public class OptionsPage extends Page { core.getPrefs().putFloat("music vol", musicVolSlider.getPercent()); } }); - optionsTable.add(musicVolPercentage).center(); + optionsTable.add(musicVolPercentage).left(); optionsTable.row(); @@ -85,13 +85,13 @@ public class OptionsPage extends Page { } }); - optionsTable.add(fxVolPercentage).center(); + optionsTable.add(fxVolPercentage).left(); optionsTable.row(); Label musicDirectoryLabel = new Label("Music Directory: ", core.getDefaultSkin()); optionsTable.add(musicDirectoryLabel).left(); - Label songCount = new Label(": " + sc.getSongList().getAmountOfSongs(), core.getDefaultSkin(), "sub-font", core.getDefaultSkin().getColor("default")); + Label songCount = new Label("Songs: " + sc.getSongList().getAmountOfSongs(), core.getDefaultSkin(), "sub-font", core.getDefaultSkin().getColor("default")); directoryField = new TextField(null, core.getDefaultSkin() ) { @Override public void act(float delta) { @@ -100,7 +100,7 @@ public class OptionsPage extends Page { if (musicSearchTimer <= 0) { sc.getSongList().setSearchPath(directoryField.getText()); sc.getSongList().refresh(); - songCount.setText(": " + sc.getSongList().getAmountOfSongs()); + songCount.setText("Songs: " + sc.getSongList().getAmountOfSongs()); } } super.act(delta); @@ -115,7 +115,7 @@ public class OptionsPage extends Page { } }); optionsTable.add(directoryField).fillX(); - optionsTable.add(songCount); + optionsTable.add(songCount).left(); optionsTable.row(); diff --git a/core/src/zero1hd/rhythmbullet/graphics/ui/windows/MusicController.java b/core/src/zero1hd/rhythmbullet/graphics/ui/windows/MusicController.java index 84a3b82..d68d18a 100755 --- a/core/src/zero1hd/rhythmbullet/graphics/ui/windows/MusicController.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/windows/MusicController.java @@ -34,8 +34,8 @@ public class MusicController extends Window implements OnCompletionListener { @Override public void changed(ChangeEvent event, Actor actor) { - audiofile.setPosition(audiofile.getPosition() - 2); - info.setText(String.valueOf(MathUtils.round(audiofile.getPosition())) + " sec"); + audiofile.setPosition(audiofile.getPositionInSeconds() - 2); + info.setText(String.valueOf(MathUtils.round(audiofile.getPositionInSeconds())) + " sec"); } }); @@ -72,8 +72,8 @@ public class MusicController extends Window implements OnCompletionListener { public void changed(ChangeEvent event, Actor actor) { if (audiofile != null) { audiofile.play(); - audiofile.setPosition(audiofile.getPosition() + 2); - info.setText(String.valueOf(MathUtils.round(audiofile.getPosition())) + " sec"); + audiofile.setPosition(audiofile.getPositionInSeconds() + 2); + info.setText(String.valueOf(MathUtils.round(audiofile.getPositionInSeconds())) + " sec"); } } }); @@ -84,7 +84,7 @@ public class MusicController extends Window implements OnCompletionListener { @Override public void act(float delta) { if (audiofile != null && audiofile.isPlaying()) { - setText(String.valueOf(MathUtils.round(audiofile.getPosition())) + " sec"); + setText(String.valueOf(MathUtils.round(audiofile.getPositionInSeconds())) + " sec"); } super.act(delta); } diff --git a/core/src/zero1hd/rhythmbullet/screens/MainMenu.java b/core/src/zero1hd/rhythmbullet/screens/MainMenu.java index 1e7e9f3..095c67f 100755 --- a/core/src/zero1hd/rhythmbullet/screens/MainMenu.java +++ b/core/src/zero1hd/rhythmbullet/screens/MainMenu.java @@ -66,6 +66,7 @@ public class MainMenu extends ScreenAdapter implements TransitionAdapter { sc = new SongListController(songList, core.getPrefs()); sc.setAutoPlay(true); sc.setShuffle(true); + sc.shuffle(); postTransition(); }