From 901594608c3d545987e4f7abaf15eeee75ca08bc Mon Sep 17 00:00:00 2001 From: Recrown Date: Thu, 16 Aug 2018 13:49:44 -0500 Subject: [PATCH] removed deprecated code; platform based, window manager created; cleaned code and files; --- android/assets/uiskin.atlas | 2 +- android/assets/uiskin.png | Bin 11867 -> 10789 bytes .../zero1hd/rhythmbullet/RhythmBullet.java | 12 ++- .../rhythmbullet/audio/MusicController.java | 5 +- .../DoubleHorizontalVisualizer.java | 17 +++-- .../rhythmbullet/game/GameController.java | 1 - .../{util => game}/ScoreManager.java | 2 +- .../MusicSelectableButtonGroup.java | 3 +- .../rhythmbullet/{ => util}/AssetPack.java | 2 +- .../{ => util}/InitialScreen.java | 4 +- .../zero1hd/rhythmbullet/util/MiniEvents.java | 6 -- .../rhythmbullet/util/MiniListener.java | 6 -- .../zero1hd/rhythmbullet/util/MiniSender.java | 26 ------- .../util/ScreenConfiguration.java | 25 +++++++ .../desktop/DesktopAssetPack.java | 2 +- .../rhythmbullet/desktop/DesktopLauncher.java | 8 +- .../desktop/DesktopScreenConfiguration.java | 70 ++++++++++++++++++ .../desktop/audio/PCMObtainer.java | 41 +++++----- .../desktop/screens/SplashScreen.java | 2 +- .../desktop/screens/main/MainPage.java | 5 +- .../desktop/screens/main/MainScreen.java | 3 +- .../screens/main/MusicSelectionPage.java | 2 +- 22 files changed, 159 insertions(+), 85 deletions(-) rename core/src/zero1hd/rhythmbullet/{util => game}/ScoreManager.java (86%) rename core/src/zero1hd/rhythmbullet/{util => graphics/ui/components}/MusicSelectableButtonGroup.java (93%) mode change 100644 => 100755 rename core/src/zero1hd/rhythmbullet/{ => util}/AssetPack.java (95%) rename core/src/zero1hd/rhythmbullet/{ => util}/InitialScreen.java (79%) delete mode 100755 core/src/zero1hd/rhythmbullet/util/MiniEvents.java delete mode 100755 core/src/zero1hd/rhythmbullet/util/MiniListener.java delete mode 100755 core/src/zero1hd/rhythmbullet/util/MiniSender.java create mode 100755 core/src/zero1hd/rhythmbullet/util/ScreenConfiguration.java create mode 100755 desktop/src/zero1hd/rhythmbullet/desktop/DesktopScreenConfiguration.java diff --git a/android/assets/uiskin.atlas b/android/assets/uiskin.atlas index 91c0a71..6cacd61 100755 --- a/android/assets/uiskin.atlas +++ b/android/assets/uiskin.atlas @@ -391,6 +391,6 @@ side-bars xy: 221, 35 size: 15, 14 split: 7, 7, 2, 2 - orig: 5, 14 + orig: 15, 14 offset: 0, 0 index: -1 \ No newline at end of file diff --git a/android/assets/uiskin.png b/android/assets/uiskin.png index b4597760d7bb1fcfc5c8cc51187e48dca18829c9..beae0406b673b1e728a53bd26b1d6a2a9a016ecb 100755 GIT binary patch literal 10789 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 I!7A+k00eH}EC2ui literal 11867 zcmb7qbzD?y7w(>6h!GW-K~WSK5e8{N6s3li8j+BcFp%z$Zl$}Wq(eelkWx_zX{2G0 z5TsLb;BLV4eV*g_?)}|A_HWP3e&6-3wVqYa%=q2CbNkc@>JtC}oRXFjR|EhE_!0t; z5P`S*R@qO$8%$pWD*^yTA*6c`2*LMo3n_JL05}V-JPUy^_;}iZ9}?S0VkG$U{CVSBFz7`r>KW7v##&YtNVDNxjonTvcCO=n!a1Rmc5mmn{nIw zn@fAW8cz7O?ZOTIU6%s5CqK2Ss;YkHN2_iuuU4xc?^b7sYowk}ZSD7sLO1*w$3^Sp z_-K-YYe_4CtjNNejb7jKl#VbB&x%?FhrsQ4Z|R@C6}20)SaZj2;ffJEO(A%p8Mx|B zvjJ52#&)MNCdt26Eaed_$?eYA_U$RI@8$^fd1P>t`iVO1`|IVvr=69^O_~!l%*%V$ z&~^+<2$x$#586G$A4Wc?5IXcZv`}A#_R&82)(uGYoYvC#27^YHv6osqGfN+`>VC}x z&C;7e83~<^0luE6m*y&zy011FA>Fb2F}3R%Y((aihH>#Q(Wlx2;`lLQ%oWbQkJ8YN zfxxx-jYXpugRr~Twy_R~4l{I-T?&6@F}&)$1md+`al7EB7vFu^-E*7Fiy2;y$UQVg z!;)~YB=g|n*37D@XwAo5OZ+9hXhwHIUzi2-GXtPSn^uDWJahVz>emW6&^sG_I-E~% zA%#T@fH`H@yO^0%^uDkTZcQdYi{p&_zT((`612VU#V2%K4!A^4w{ZSkjW{d}(D;5j z8X%u+q4t>8$*XKK*9eCRR69m_N&&37hV&4I!;iBBrkKB8cCXUgrFO92U?B_xRFu2L zp;DkgwJfxI@T*t2XJ%(A29j2-2CenJ7xCG|yxD?<3h}=)*+`baBH<`_fy08aPQ1-p zE3ZzIm7)gI*Q|xuvrO*OP3dQ~YE;p01`qcRc^6CtM*}u-CN4VqO5NmRq&i#gUsY63 zvDY-U8}AKVxb=hQK@KwDa6!yEx!#=b}kDc7K3_uDZ8H}{IQ|u;xiB+z-S3E}{gXh-HN)SMVOeC(!&KGXHqMwr$;3A*xi*yk-lk=i_p^rriA zW;`)4#UU;UC>TdPn)0sQgiHWW)PFw;1Hw_*CxT@$;3E`#=A&rNLafT0^NopHXgqI$ zXCB$RT=-bxlJoS}w>bP_s|03UmBqoZRJeonb4p7ju*&FW zbBi(7aRFY{C%5{7L6?fuaKzaqjan8ei^gamwV0N#lA)Iowq!6rSjSa;86Z2ImHz=L zAb`7AbK^!6J6x^_jbZ64$?6sFtGscT5rJ@&4U+tac9LFHoATvAo0 zn*OEil_^hk95Q*UfmKPpJc@${a#41aLq~qLPQ5J>2-HrDdfabpj^I>~0YdB>E*H@5 zjS+Jq<}48PUw3f_uBtNH6@6%@#K|&0*j;w82ze$I8n%T3fg*`#^mLsf?EMs>y3m%- zo1TmhX(XT)OvQ!_@QYu+JG48EMoGKeswp@A;j-j}`|32hmV}J}=5)4sQ1<(`MB4j! zK;yhtPr=w~q^rd>8Qq)wOjywCou&!w?g=78WetcL_7a*JVzn2X0v9A=8SE#oq@FG?JO%RO`(<{^E&)2Wv7bjHOc+a z?4*~#`c&2ZyU^H&c|u1LKQaOFd!K~{Ppwov`Eu8%DPcFdl!jst)5)pqUlm$`x6e@2 z6p~HsNT$GBWn{+>76-#uHzhYts4W^cNi6Rs^h-!6(wur$ong5 z_Ck#0o5}f8IQynV5%tW_=urmkR9PH!2D?w@G9$Ll{LbbDd2&rT14?aGYF}f3cUw)< z1M~273rjf^g{Vg~HjjpVEsN4~(==m0_RSXTWed-?I(L)xlpafVTquEhd{H^nt>I#{ z1oS4#PE@CWG$O**JU@?4lQxaI`o#i<$06pYl+A}zS z*D_n#L zh#E7vUod-fiJeA-!JYBG0W_Q9$ls>XK(RC*OFluhP)-omszJQHZlP$csnGVD30zl{ z9Igwudxf6E$$T8q`1EqrpZoQ%*reR-@#a7m|H!@}%K@ueC?6^iTJ|7gcq=J4##^`D z`jEqTcQvMNZ#JsXdFqTTtLovYueH(BD$=@>D%i`L`HUa5kCWw153%RVqjHQymV962 zpUwLk-IUCE4H7fMU1U6|b>d4yLD*B~tH`&KUa}rvfAX9#Rq@%N7qS5(yte`4EW7Gj z4dx3oB#*gQoy5qQsU^Igate0CQk^rxLB`y9;zGtOpJ@xbyGhKH@*T65ga_Qo^oi#1 zGQl9xcod1}M#rR;q4@AF!g9&?POD3Y5ND9DlMekNO=nIe*&vf{1xH$`W{kpMe#?vr z%?)f?il|{lfp={XxH9Erro{P-k*dHhGc8H|xz~o&r_RW{wPjp4o%i|)_Yyw)dZP+_ zf3&2n_dz!gHA|%3oXpHnKk)*R$b(IH&Nj+!j{9&)V*ZCrLmuTT3+d5~69~pq1G-ZA zb1?eJTI%!G;Ppu8GN<`HNkdSX65D>BpywxQ-l+2wh&v*kQe57n$S-YvZH!&}+IVj5 zyhCMHyS1}Z%aw&*J)82=@tK`>Q>b_YK1E5HKji#F=;nH|xSOg?`q=8EHSw6 zw~qcPy6Y{15?y>1#x)II->WxihG_X~dx+SMOqPsHrV_XxfSC2t9%hqsLgDwcJDDU7MAq-k zE{d?lAv8)s+)qL&taO3`Z-EzAa#)O0GZH{zrje<296J}o`s~=xXP6elboZWic5mqL zfJG_Lck`2AH5tVSHXvAX@H;o3<|}ql6>DA!O9ZE-n`FR~uqt_~mF>yW7l3P>??LOq zS$yCOW2%pVrKt9_j6tW6LGo1+@kW>H+~1wAbANJ{)Lvwk2jmeoZ%Xh}H22l#> z%@Y#Nw6si2K+!?q45vxD+ZAs6B!CR{&4*0-;SaaVE%*H>`?de|bU7Yp9ggvN;U;5= zkh4*9YAhgfkKn-8^F5AEf(@M;sIRkP@yX;PSH^i}$~0`x=EQ?Jl5a=ZHLpQoNls=N zrTH*zE{YyOwB*)-ek2VYOCdHwtX0gRueLxk7)nz6tSrngoiR zF`WY%`P7E*D}?Y!;uTge-k>tNZ{0e8!pBQK!6Ni7`M&zaFNOYifuvd2{? zyD>Nh{!C^KgAS1%W+zEyq2#9o@QQ73Y!M7%1dvGlki-=4Nk0!*(Wey%=nDtvmO8%f zHRGyzM3(%Zmh^$Z)Yu)bIb6Vgg0IKtcTDx|AGTuUbh5FMVSGo}+>_eir0nFxYbw$o z1LSHN9vU+roT1-yX4yeNV{U!FFefEdXy#+<`^Ua`l1?hqbba5Gr`3u{*W@S;mP+rT z{})__9FW*pi+O0|>sR$0UVWJ=ptp$N^`U)o&lkVBo^NnW?1iAa$ov;M#(Ac36e|IF zCRR{fLLrq)(2S7b)M>@&L+oz&DNl47f}>hFqu9j;vHK0T6B>pX0rmS#tNX;&2i!mM z!+~<~oo^`AQgS{`?PJ%F8EuV((7wulPnujTkXd9-cbb-4xaNj6x6BaF3qaV}sc*x_+s3aQjQ{>O0^%)KDlpi!b z8739qJnOLV>2YMaAvffl;wM{Df%Dx-X7L}yXA$m~YKi@BZvFf~zk4GS?}l`V&rT3H z0*)Zvce8#+t?=V*w{_VAvaVd3@fM`;=>>=6&AwcM^mzoL9xu+&(0;EE2)G^fuNAPH z8D8JuJ>i+M8t+GNSBGhJ&>nP%aujef=Y#d^t;EO)G(e6a9;Zb=Jh+D0eJ4KgZC8iA zs-m}5&&E#U!Sgp#&r9_M9Ui9A?WE~!0_j^du=?F9?N@>HwlCy?>yuo5|Biu1I3PD) zVgI&_(tcxVcLA8Soxfz5M8l{^V3r zG#aRV;E)91>~2*TxU{*07NjBFdnSDOZ?_##1$hs^P*ZZwKb!o9PFr*>#z+)WSiWoH zdJFVq(JYwKmuUCOV?)rYi##jGmgvug-K9lK%Q{}KX z0jKh?bA5CK-4u!r2Ezqz2oZ{dEZeE?k%F}v5^vqAA^88*lPImuZrDI zSj!TeYm!&$BExqsX_Y#XtvC@w9CWJdjKLg=)DeX?781NsUwzW`JHu*rb= z;Dl4Bn=30pmum_icquuKuOWctefwmc^n1io11xZ1lhZ0fR+lZgA}Lg%w9Lnz4VDJv z&MtjIp5AL+n3g{T?lF`cCn!FgTyL6jt3kTDLl$^w?HK%cgG_uIe;UKIW7ZiV;YDCR z-U7}tD%N2S?R?ZY=d$R$_WiuKsx)T(cAfCAlBfmkuzOUox4LgG#i}~F0fyt;nSODc=%c3u z`>LJ1#{a9Qb>D}Mv0P80QhT3KXRUd%?64q80mYBIBjHN#>m8r$OfwTdrM^GR_CYTT zLtl)yM31^rx_Dg~k-GM*r|HlGuS9dNb^eIiXQ!Z`I_zq8V1J<8i`}4H7uAXZ_aTM=K^HuLi=q=}b z?{M}aZ9_P7ip1{AKZjre$Z}9P9XSC4GM(J#3`j8_4KJt>|Ga}-h12(t&iwoO6r0Qz zFN$Y1F}DXN4=1)nZyu&f1n61)im0@El3^^5x|$v&Hu zS!ks2DF?Y!@3RX>G~uZ7wEb0ms$s7;#Dry!=F9qClDABs&4Mfn5{+R`ke~iG&YCNz zo>8nD4&vv7@Z|mvCLjQ@po~uID#PU&gV~0JkKIcZESC%p>m1-Sc_IA%+uFEw0L+5r z&vBO?vWzX7Ci95=ot=PVNvb7dSA74!3`i^83UxKh3+#tv=}5Yy*fVgvrdFk|@%wYU ztG@R;DOw+Y()kAQ13Ulhf3T+i=YspDPneTdqPpxPQwHE#8uCPZc zT_Yn%7LOhXf)7q>XGDIXeHC z_=#m55x?H3j*23|b=w(kE|SL(&B9mzWu1Qr5J8dlJ8J!xd3GEzPyQUn)i>gB_CeYm zKAX66uwwW8zIz~V{lx?mkC`Cp_4eoM?dEjL;%S)F0uBxZ(UBoB9Ul(lFTUy|qbW3B z0*;SITyy3Z*UY}<*Yn`Z-n~wo65g~^tkj;OnATM_90zv}s;UAHwKXSmp{bHP301G} zonu*GUSSv*)L9vk`9q9nyEcC^FLuzCMusRU_(`bhfLfr19 z6iLISf?NJOlKRGFf4N*MeO^9bKC97Hs$uEcK2fK&1&Q2PeCZCG;-)seD?DefQ{5MK z*RSGGwIrY!H#9-_p%7}0kF`iEm0fWn+zTGnTGvr-4KKgdC3MJcOu344-}?G)3eM&} zDahXn0#mKWCagI5Wx+B=LMO*;uTFj4>;&vncTK4QBImOu(`i(#>|@O{k__%L)wWST zBb(WQrL6Lb{S@-U6BgDKC~!g{?^IjB6G~eigRMr>JMa0HZ-o6@mv7WYgZ?-$`9)hH z<8BF!wJ7bB#nUS;0gcVcxr^%QizDLBO_3O@oq+%0mbbt%v)1=zr3ZUPuPc%m!IDCW z6R2OMlHm1QWbZoYzd1-0Y!)wumpgP>MCkWJ;?ei<)yD{_n%Qy|4Tn7#Tqi z+>%>tm6Pv5M9!ygs=*;UBN930`e(K>bjyi^@+7qGr+WW0cs?QAAKZ366--wBi$lf~ zdzdc2@L1!)#{{L?TIUXZm%@WnqH$STSZ0F9r6iFA4L!;nYh_LL!>ndUJc5Z%K2NJoK=Prk+JQdY0kzL)C*y}K<&=zyH1D4t8!|Qj;e7TkWNGfYM zAjHlRLYB8}{Y}y^hK2aeyLLmjtQiPBerbc^pvlxaJEG~hZ1jp<}x?bTuh(GS8t9P1|}X0Jr)z20W7jQ~C3a7eud z*%YH1q}|r%Xr6KrMW{J5RS+KeMEU;ABjkQj>JZrzK6#9TyL@xpa6J|5_BI{EI1k-& zt6AOsFVRyGWvxTux5@UJ!o9rekQW+m{Go}B9Q3M*_0{P!sY-6u-B%VAl_L6eMfWar zPORf%L;IL2TEmKukdaQOChnQhH(I5xk!CBDH#0Uk4|aqUv@HLX&z5vQcfai_eS;}Z zoBOgk45Nz8pO&L=sPU|sn|B~|6f1L|%i{;M_Tw+R{s~GJ1Mq?9`MZ}69#?4Y^NWJG za2x4fj{CB3d*tVir@ zOn}@f%CR8I(MP@*A=&j?4FO@`L=13DZO(Msw-8=>Xes)q80(og`c z;^6GAbVvnv)*eUNMZrkjg zZ?LRTzUkHTXxvNd5(%#X*VHD3%T))A(--%2OS1efvAxVcasebZABGt8aKW+?HLli- z>(_Xj`DXg1O|DuR)m@i0Xo0X5II>PiPg*{j_6@Kr#n`P9xrIrUAV~ib`OhNTr2(&BMpIYV-$}e7H=}PBY1@$l z2Ug!Xvn4!y6tU%~Kr2rla$zVm=8!na>q!rTUs93p>R(YBZnY-Mae7KYd?jd9h0-^K zz-7A?GlD;0RD1&V_@fs4@IQ`hg^igKzTVgOudcm%60S44TNr zA{>VMZ;e-}h&%OK%OL0%BZiF536`3WABM}QSfmcjPL?HGcveUvatUg&a(8LVqxyUJ zR6?I&C%}B|k1Q$Wfmnpyg~#uaopHcB$Q=8TD&rJG;?_YBVm`BAD~iN^I{Q zryc*ZOxPGfmx<_ayBVL}i8?;??gB&RXp6W`=zf^zj?uZ&RtmQQ?;T`L7ff-AR6MVa zkJhv*+cY@()KO}d^SL(}NAPI90jW!6VdJdz=1ZEXI_#^v)9nE!0neRI=IwWv$&jtY zBW6ecHm@l0-GE%(s_u5R-rZLEW$ti26SIrj`usZC7jhhEa=L)3DBe#w2b!~ELV<5} zNh3oSZQU^=J;s!6!M~;=z(jTIr}9mYo^PUb@f~DH{Mb7=KkoqVo9I=Qi%{YdZpn=t zdalU@nLbK~AkOgATdtmXXu`Aw9=D1{B zNp5hCx1jdpM|2+;pUANWtK_V{Og1KrCDE6MiFUlXu9FGrerY53SPzzho?W5NkZ;6A z4rfsoi=!ha$T4q8mt|9TUtPd_ChXtSuXuJqph-#AGwxko{>C91@EaG?5dSmv7&##p zCklt#b=H336pvH=VRD$Pl;6~|R2xf$Q;JIK-z za_b7;UwZv@t471+Y);ENA-fCny%Pyiz%OZV-8mok=>H+M z?gfY53wEd8xHj}Y5QkdD(qqLMCc0qok|dDCe5s_Y8Bn7 zhrJ;`Ek#@In6Do7GJ3M~BRc$d^*0`lqXq8$HAnuUt;bd1KR%~I@_x(tRX`mq?>`>i ziPJgcqU4(#hjb_4GSOr(_|vB7@LOS>6ulFk0TRS3AbCONgMm^;yS5xeL%iu{?Qgm^Vc_6KCo&k5s^I~ zQ@P_xvE_*G=WBQx`S-n1dkHftoj6KC8H`ZjNc!&&=P4~?P?)8UNcZi`>Cq)-A%^iS z;T;HEoi^k56JDKZ-*-wfm{oZ2C=_rN?!kKo_J2L$nc3lCxK3o8#$8=}YlRY(v=fh+ z@yKd%jhT_8Xn$UT+ht8@of8+JpY7aPvGpyK5$T}hyBajAYpVQQ^+pDqSK zMp>blWV2b47bDP&=sJ{NtFe0u(%RJ5ifYkpnr~wP(*2_p2yLvOyRtC z91|MT-a=g4G=Ny1je3YVfbVbxg;#J{>E!%w1MA1f73QvJn~ex}2_Z)RDE)bUkM!dVP^a8h2*jQV<#^(R4gWuX-`41iI z`Xz?*cLvHdc&?EC<{fS%)i#i|Q@wgGQYlgbO2R=v6Z;FhYXfIo;}3o&TjpU%UI-Is zc3#NK^$B>R*j5mx-(SVl%M_7tClN!VSwk)P7lLLuPF1eq9((;X1E^BKHl?{oK#OYAbmfb zre3jTtxp%WQo&kZ5_C5bv*KP}@8@0U-M~sNw&+doS3)~japICcT6E%%PYWYc8DdKI za&+oBloFHQw>Uc_@wex_kNVSG&#Qvl?e*fDuDEO)uMvt|1D&+`u32H7I=kYwOGMbN zRiYE=SV8JrKic%d5l4{@7#I`IuU*N4PyA=W)H$H5Jp$(n^5(?v?Pp-vltT^YY*SyP zt@jM2)iyP{RBAJNjVI(4EcZ4J9&9$^Ya7H?o~z%bR3Bw((U-dF_4J z{QHhN)!Ud2lmYBN(6?-yqTe#?#7k%=mf4t7$deQ8Y|JwJ9@**zPX1<8khf6H5$Z3F z2Zdt3SzCYTbt=%uW~_OhPd7f76$>t=qcjj!=&AOQ8kH_O*6q zk{6;!ksQ>#+Zp5pr_n&9sx0lMu--6rG3*|g!B@&mQs&r@IfoBrRA!(--DuOt|D zt*nRgzJqmD?Xa$%J|9cv^U1~XgeUmt61(NvoS(|%F#U%3NGBE&&uin@X2CPCcjs5o zQ%NU0#{%smtjq~TEYQ{P$_h`^P2{Neu%-xk0^D45F&{J1^A~}q78U2-!nZ%ROK4LbU67~*SEp01(!c!MAnqCD4&1=A1Q7haNrRL6?^VjyL zJcJ@wJ$WB2`kwHte;3d8R2*D)X*As!6mR0o`$Gd1dtn?~6%C4eZXZ$b4=prQ$ziPD zu&;k9Io|~?^Rq|J{@?B=>?7t7;JSa_@7N=khe2(bs^Ru#pccqcm;mVFez-X_33Tzi zH!q|ebg|w0c=u`0#r)r}_12(^6PM9rm7tIQ+J3uQ+WroR(35Jv$`}x#YoiUrvLHg| z%^xmifCvTha&3Y}>3@okbpn0$X&F7Ma>DZ^SG8YNlqbsIq 1f) color.g = 0f; if (color.b > 1f) color.b = 0f; if (color.a > 1f) color.a = 0.2f; + float[] freqBins = pcm.getFrequencyBins(); 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]); + normalizedAmplitude += Math.abs(freqBins[freq]); } amplitudes[bar] += normalizedAmplitude * normalFactor * (height/100f); amplitudes[bar] /= binsPerBar; @@ -77,8 +79,11 @@ public class DoubleHorizontalVisualizer implements Disposable { } amplitudes[bar] /= smoothCount; - int pixelsMoved = MathUtils.round(amplitudes[bar] - barHeights[bar]); - pixelsMoved = MathUtils.floor(pixelsMoved*delta*barChangeRate); + + int pixelsMoved = 0; + pixelsMoved = MathUtils.round(amplitudes[bar] - barHeights[bar]); + pixelsMoved = MathUtils.floor(pixelsMoved*targetDelta*barChangeRate); + barHeights[bar] += pixelsMoved; diff --git a/core/src/zero1hd/rhythmbullet/game/GameController.java b/core/src/zero1hd/rhythmbullet/game/GameController.java index ce82a18..d040fc5 100755 --- a/core/src/zero1hd/rhythmbullet/game/GameController.java +++ b/core/src/zero1hd/rhythmbullet/game/GameController.java @@ -13,7 +13,6 @@ import zero1hd.rhythmbullet.entity.EntityManager; import zero1hd.rhythmbullet.entity.ally.Laser; import zero1hd.rhythmbullet.entity.ally.PolyjetEntity; import zero1hd.rhythmbullet.entity.coordinator.CoordinatorManager; -import zero1hd.rhythmbullet.util.ScoreManager; public class GameController implements Disposable, InputProcessor { diff --git a/core/src/zero1hd/rhythmbullet/util/ScoreManager.java b/core/src/zero1hd/rhythmbullet/game/ScoreManager.java similarity index 86% rename from core/src/zero1hd/rhythmbullet/util/ScoreManager.java rename to core/src/zero1hd/rhythmbullet/game/ScoreManager.java index 942d8d6..db40bf7 100755 --- a/core/src/zero1hd/rhythmbullet/util/ScoreManager.java +++ b/core/src/zero1hd/rhythmbullet/game/ScoreManager.java @@ -1,4 +1,4 @@ -package zero1hd.rhythmbullet.util; +package zero1hd.rhythmbullet.game; public class ScoreManager { private int score; diff --git a/core/src/zero1hd/rhythmbullet/util/MusicSelectableButtonGroup.java b/core/src/zero1hd/rhythmbullet/graphics/ui/components/MusicSelectableButtonGroup.java old mode 100644 new mode 100755 similarity index 93% rename from core/src/zero1hd/rhythmbullet/util/MusicSelectableButtonGroup.java rename to core/src/zero1hd/rhythmbullet/graphics/ui/components/MusicSelectableButtonGroup.java index dea9ce9..466a01b --- a/core/src/zero1hd/rhythmbullet/util/MusicSelectableButtonGroup.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/components/MusicSelectableButtonGroup.java @@ -1,11 +1,10 @@ -package zero1hd.rhythmbullet.util; +package zero1hd.rhythmbullet.graphics.ui.components; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.scenes.scene2d.ui.ButtonGroup; import com.badlogic.gdx.utils.Array; import zero1hd.rhythmbullet.audio.metadata.AudioMetadata; -import zero1hd.rhythmbullet.graphics.ui.components.MusicSelectable; public class MusicSelectableButtonGroup extends ButtonGroup { private Array buttons; diff --git a/core/src/zero1hd/rhythmbullet/AssetPack.java b/core/src/zero1hd/rhythmbullet/util/AssetPack.java similarity index 95% rename from core/src/zero1hd/rhythmbullet/AssetPack.java rename to core/src/zero1hd/rhythmbullet/util/AssetPack.java index a5cfb97..a6271f2 100755 --- a/core/src/zero1hd/rhythmbullet/AssetPack.java +++ b/core/src/zero1hd/rhythmbullet/util/AssetPack.java @@ -1,4 +1,4 @@ -package zero1hd.rhythmbullet; +package zero1hd.rhythmbullet.util; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.scenes.scene2d.ui.Skin; diff --git a/core/src/zero1hd/rhythmbullet/InitialScreen.java b/core/src/zero1hd/rhythmbullet/util/InitialScreen.java similarity index 79% rename from core/src/zero1hd/rhythmbullet/InitialScreen.java rename to core/src/zero1hd/rhythmbullet/util/InitialScreen.java index d05d96a..efeab6f 100755 --- a/core/src/zero1hd/rhythmbullet/InitialScreen.java +++ b/core/src/zero1hd/rhythmbullet/util/InitialScreen.java @@ -1,8 +1,8 @@ -package zero1hd.rhythmbullet; +package zero1hd.rhythmbullet.util; import com.badlogic.gdx.Screen; -import zero1hd.rhythmbullet.util.ResizeReadyScreen; +import zero1hd.rhythmbullet.RhythmBullet; public interface InitialScreen extends ResizeReadyScreen { /** diff --git a/core/src/zero1hd/rhythmbullet/util/MiniEvents.java b/core/src/zero1hd/rhythmbullet/util/MiniEvents.java deleted file mode 100755 index 463bd09..0000000 --- a/core/src/zero1hd/rhythmbullet/util/MiniEvents.java +++ /dev/null @@ -1,6 +0,0 @@ -package zero1hd.rhythmbullet.util; - -@Deprecated -public enum MiniEvents { - SPECTRAL_FLUX_DONE, MUSIC_DATA_CLEANED, MUSIC_SELECTED, BACK, MAP_GENERATED, ANALYZER_ITERATED, MAPGEN_ITERATED; -} diff --git a/core/src/zero1hd/rhythmbullet/util/MiniListener.java b/core/src/zero1hd/rhythmbullet/util/MiniListener.java deleted file mode 100755 index 0eada38..0000000 --- a/core/src/zero1hd/rhythmbullet/util/MiniListener.java +++ /dev/null @@ -1,6 +0,0 @@ -package zero1hd.rhythmbullet.util; - -@Deprecated -public interface MiniListener { - public void handle(MiniEvents ID); -} diff --git a/core/src/zero1hd/rhythmbullet/util/MiniSender.java b/core/src/zero1hd/rhythmbullet/util/MiniSender.java deleted file mode 100755 index 12c862e..0000000 --- a/core/src/zero1hd/rhythmbullet/util/MiniSender.java +++ /dev/null @@ -1,26 +0,0 @@ -package zero1hd.rhythmbullet.util; - -import com.badlogic.gdx.utils.Array; - -@Deprecated -public class MiniSender { - private volatile Array listeners; - - public MiniSender() { - listeners = new Array(); - } - - public synchronized void send(MiniEvents ID) { - for (MiniListener listener : listeners) { - listener.handle(ID); - } - } - - public synchronized void addListener(MiniListener handler) { - listeners.add(handler); - } - - public synchronized void removeListener(MiniListener listener) { - listeners.removeValue(listener, true); - } -} diff --git a/core/src/zero1hd/rhythmbullet/util/ScreenConfiguration.java b/core/src/zero1hd/rhythmbullet/util/ScreenConfiguration.java new file mode 100755 index 0000000..cc09df4 --- /dev/null +++ b/core/src/zero1hd/rhythmbullet/util/ScreenConfiguration.java @@ -0,0 +1,25 @@ +package zero1hd.rhythmbullet.util; + +public interface ScreenConfiguration { + public void setFramesPerSecond(int fps); + + public void setVsync(boolean useVsync); + + public int getFramesPerSecond(); + + public boolean getVsync(); + + public int getScreenWidth(); + + public int getScreenHeight(); + + public int getWindowPosX(); + + public int getWindowPosY(); + + public void setWindowLocationX(int x); + + public void setWindowLocationY(int y); + + public void setWindowLocation(int x, int y); +} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/DesktopAssetPack.java b/desktop/src/zero1hd/rhythmbullet/desktop/DesktopAssetPack.java index 33086a2..1696cd1 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/DesktopAssetPack.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/DesktopAssetPack.java @@ -23,7 +23,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle; import com.badlogic.gdx.scenes.scene2d.ui.TextField.TextFieldStyle; import com.badlogic.gdx.scenes.scene2d.ui.Window.WindowStyle; -import zero1hd.rhythmbullet.AssetPack; +import zero1hd.rhythmbullet.util.AssetPack; public class DesktopAssetPack implements AssetPack { private FreeTypeFontGenerator default_fontGenerator; diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/DesktopLauncher.java b/desktop/src/zero1hd/rhythmbullet/desktop/DesktopLauncher.java index 5ae3efb..cf43d31 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/DesktopLauncher.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/DesktopLauncher.java @@ -10,14 +10,16 @@ public class DesktopLauncher { public static void main (String[] arg) { RhythmBullet core; LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); + DesktopScreenConfiguration screenConfig = new DesktopScreenConfiguration(config); config.title = "Rhythm Bullet"; config.resizable = false; config.useHDPI = true; config.samples = 2; - config.width = 128; - config.height = 128; + config.width = 512; + config.height = 512; + System.setProperty("org.lwjgl.opengl.Window.undecorated", "true"); core = new RhythmBullet(); - core.setup(new SplashScreen(), new DesktopAssetPack()); + core.setup(new SplashScreen(), new DesktopAssetPack(), screenConfig); new LwjglApplication(core, config); } } diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/DesktopScreenConfiguration.java b/desktop/src/zero1hd/rhythmbullet/desktop/DesktopScreenConfiguration.java new file mode 100755 index 0000000..04c3bb8 --- /dev/null +++ b/desktop/src/zero1hd/rhythmbullet/desktop/DesktopScreenConfiguration.java @@ -0,0 +1,70 @@ +package zero1hd.rhythmbullet.desktop; + +import org.lwjgl.opengl.Display; + +import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; + +import zero1hd.rhythmbullet.util.ScreenConfiguration; + +public class DesktopScreenConfiguration implements ScreenConfiguration { + private LwjglApplicationConfiguration configuration; + + public DesktopScreenConfiguration(LwjglApplicationConfiguration configuration) { + this.configuration = configuration; + } + + @Override + public void setFramesPerSecond(int fps) { + configuration.foregroundFPS = fps; + } + + @Override + public void setVsync(boolean useVsync) { + configuration.vSyncEnabled = useVsync; + } + + @Override + public int getFramesPerSecond() { + return configuration.foregroundFPS; + } + + @Override + public boolean getVsync() { + return configuration.vSyncEnabled; + } + + @Override + public int getScreenWidth() { + return Display.getDesktopDisplayMode().getWidth(); + } + + @Override + public int getScreenHeight() { + return Display.getDesktopDisplayMode().getHeight(); + } + + @Override + public int getWindowPosX() { + return Display.getX(); + } + + @Override + public int getWindowPosY() { + return Display.getY(); + } + + @Override + public void setWindowLocationX(int x) { + Display.setLocation(x, getWindowPosY()); + } + + @Override + public void setWindowLocationY(int y) { + Display.setLocation(getWindowPosX(), y); + } + + @Override + public void setWindowLocation(int x, int y) { + Display.setLocation(x, y); + } +} diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/audio/PCMObtainer.java b/desktop/src/zero1hd/rhythmbullet/desktop/audio/PCMObtainer.java index fc5e652..5202f2c 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/audio/PCMObtainer.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/audio/PCMObtainer.java @@ -49,6 +49,8 @@ public class PCMObtainer implements Observer, PCMSystem { Field bufferField = ClassReflection.getDeclaredField(OpenALMusic.class, "tempBuffer"); bufferField.setAccessible(true); buffer = ((ByteBuffer) bufferField.get(null)).asShortBuffer().asReadOnlyBuffer(); + playingBuffer = ShortBuffer.allocate(buffer.capacity()); + compareBuffer = ShortBuffer.allocate(buffer.capacity()); } catch (IllegalArgumentException | SecurityException | ReflectionException e) { Gdx.app.debug("Visualizer reflection", "Failed attempt at retrieving tempBuffer field.", e); Gdx.app.exit(); @@ -106,9 +108,11 @@ public class PCMObtainer implements Observer, PCMSystem { private boolean synchronizeBufferWithPlayback() { int bufferPos = calcBufferPosition(); if (bufferPos <= playingBuffer.limit()) { - playingBuffer.position(calcBufferPosition()); - windowsRead = (int) ((mc.getCurrentPosition() * sampleRate) / windowSize); - return true; + synchronized (this) { + playingBuffer.position(calcBufferPosition()); + windowsRead = (int) ((mc.getCurrentPosition() * sampleRate) / windowSize); + return true; + } } return false; } @@ -121,26 +125,23 @@ public class PCMObtainer implements Observer, PCMSystem { sampleRate = mc.getCurrentMusicHeader().getSampleRate(); String millisPerWindowF = df.format(windowSize/(float) sampleRate); millisPerWindow = (long) (Float.valueOf(millisPerWindowF)*1000); - playingBuffer = ShortBuffer.allocate(buffer.capacity()); - buffer.rewind(); - playingBuffer.put(buffer); - playingBuffer.flip(); - - compareBuffer = ShortBuffer.allocate(buffer.capacity()); - buffer.rewind(); - compareBuffer.put(buffer); - compareBuffer.flip(); - - buffer.rewind(); } @Override public float[] getFrequencyBins() { - if (updated) { - synchronized (this) { - System.arraycopy(PCM, 1, frequencyBins, 0, frequencyBins.length); + if (mc.isPlaying()) { + if (updated) { + synchronized (this) { + System.arraycopy(PCM, 1, frequencyBins, 0, frequencyBins.length); + } + + } + } else { + for (int freqID = 0; freqID < frequencyBins.length; freqID++) { + frequencyBins[freqID] = 0; } } + updated = false; return frequencyBins; } @@ -149,6 +150,8 @@ public class PCMObtainer implements Observer, PCMSystem { return windowSize; } + + private class BufferStreamReadThread implements Runnable { private String name = "PCM-Audio-Processing"; private Thread thread; @@ -190,9 +193,7 @@ public class PCMObtainer implements Observer, PCMSystem { e.printStackTrace(); } } else { - for (int freqID = 0; freqID < frequencyBins.length; freqID++) { - getFrequencyBins()[freqID] = 0; - } + synchronized (this) { try { wait(); diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/screens/SplashScreen.java b/desktop/src/zero1hd/rhythmbullet/desktop/screens/SplashScreen.java index 5319949..99f08ef 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/screens/SplashScreen.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/screens/SplashScreen.java @@ -11,9 +11,9 @@ import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.utils.viewport.ScreenViewport; -import zero1hd.rhythmbullet.InitialScreen; import zero1hd.rhythmbullet.RhythmBullet; import zero1hd.rhythmbullet.desktop.screens.main.MainScreen; +import zero1hd.rhythmbullet.util.InitialScreen; public class SplashScreen extends ScreenAdapter implements InitialScreen { private Stage stage; diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainPage.java b/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainPage.java index 1b530d3..7ee3c43 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainPage.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainPage.java @@ -23,6 +23,7 @@ import zero1hd.rhythmbullet.desktop.audio.PCMObtainer; import zero1hd.rhythmbullet.desktop.graphics.ui.components.MusicControls; import zero1hd.rhythmbullet.graphics.ui.Page; import zero1hd.rhythmbullet.graphics.ui.components.ScrollText; +import zero1hd.rhythmbullet.util.ScreenConfiguration; public class MainPage extends Page implements Observer { private MusicController mc; @@ -40,12 +41,12 @@ public class MainPage extends Page implements Observer { private DoubleHorizontalVisualizer dhv; - public MainPage(MusicController musicController, AssetManager assetManager, Skin skin, ChangeListener playButtonListener, ChangeListener optionsButtonListener) { + public MainPage(MusicController musicController, AssetManager assetManager, Skin skin, ScreenConfiguration screenConfiguration, ChangeListener playButtonListener, ChangeListener optionsButtonListener) { super(0, 0); this.mc = musicController; this.mc.addObserver(this); - dhv = new DoubleHorizontalVisualizer((int) getWidth(), (int) (getHeight()*0.3), mc, new PCMObtainer(mc)); + dhv = new DoubleHorizontalVisualizer((int) getWidth(), (int) (getHeight()*0.3), screenConfiguration.getFramesPerSecond(), 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/MainScreen.java b/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainScreen.java index 118b517..baab909 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainScreen.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MainScreen.java @@ -117,7 +117,7 @@ public class MainScreen extends ScreenAdapter implements ResizeReadyScreen { background = rhythmBullet.getAssetManager().get("backgrounds/mainBG.png", Texture.class); - mainPage = new MainPage(musicController, rhythmBullet.getAssetManager(), rhythmBullet.getSkin(), listeners.musicSelectionPageButtonListener, listeners.optionsPageButtonListener); + mainPage = new MainPage(musicController, rhythmBullet.getAssetManager(), rhythmBullet.getSkin(), rhythmBullet.getScreenConfiguration(), listeners.musicSelectionPageButtonListener, listeners.optionsPageButtonListener); stage.addActor(mainPage); //End main menu @@ -151,7 +151,6 @@ public class MainScreen extends ScreenAdapter implements ResizeReadyScreen { } }); - stage.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MusicSelectionPage.java b/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MusicSelectionPage.java index 36569a8..f308e1a 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MusicSelectionPage.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/screens/main/MusicSelectionPage.java @@ -30,8 +30,8 @@ import zero1hd.rhythmbullet.audio.MusicMetadataController; import zero1hd.rhythmbullet.audio.MusicController; import zero1hd.rhythmbullet.graphics.ui.Page; import zero1hd.rhythmbullet.graphics.ui.components.MusicSelectable; +import zero1hd.rhythmbullet.graphics.ui.components.MusicSelectableButtonGroup; import zero1hd.rhythmbullet.graphics.ui.components.ScrollText; -import zero1hd.rhythmbullet.util.MusicSelectableButtonGroup; public class MusicSelectionPage extends Page implements Observer { Preferences musicFileAnnotation;