From 1195b8228a6bac153506ae74f31dc1baf7d9351e Mon Sep 17 00:00:00 2001 From: Recrown Date: Sat, 17 Nov 2018 23:27:05 -0600 Subject: [PATCH] refactor and better screen mechanism (probably) --- RhythmBullet/Content/Content.mgcb | 12 +++++++ RhythmBullet/Content/cursor.png | Bin 0 -> 83908 bytes RhythmBullet/RhythmBullet.csproj | 16 +++++----- RhythmBullet/RhythmBulletGame.cs | 30 +++++++++++------- .../ContentResolvers/FontContentResolver.cs | 2 +- .../ResolutionContentResolver.cs | 4 +-- .../{Game => }/Preferences/Controls.cs | 2 +- .../Zer01HD/{Game => }/Preferences/General.cs | 2 +- .../{Game => }/Screens/MainMenu/MainPage.cs | 4 +-- .../{Game => }/Screens/MainMenu/MainScreen.cs | 29 ++++++++--------- .../Screens/Transitions/FadeAwayTransition.cs | 2 +- ...tSystem.cs => ContentManagerController.cs} | 20 +++++------- .../Persistence/PreferencesManager.cs | 10 +++--- .../Utilities/ScreenSystem/LoadingScreen.cs | 10 ++++-- .../Utilities/ScreenSystem/ScreenManager.cs | 17 +++++----- 15 files changed, 89 insertions(+), 71 deletions(-) create mode 100644 RhythmBullet/Content/cursor.png rename RhythmBullet/Zer01HD/{Game => }/ContentResolvers/FontContentResolver.cs (90%) rename RhythmBullet/Zer01HD/{Game => }/ContentResolvers/ResolutionContentResolver.cs (96%) rename RhythmBullet/Zer01HD/{Game => }/Preferences/Controls.cs (88%) rename RhythmBullet/Zer01HD/{Game => }/Preferences/General.cs (91%) rename RhythmBullet/Zer01HD/{Game => }/Screens/MainMenu/MainPage.cs (87%) rename RhythmBullet/Zer01HD/{Game => }/Screens/MainMenu/MainScreen.cs (76%) rename RhythmBullet/Zer01HD/{Game => }/Screens/Transitions/FadeAwayTransition.cs (97%) rename RhythmBullet/Zer01HD/Utilities/ContentSystem/{ContentSystem.cs => ContentManagerController.cs} (89%) diff --git a/RhythmBullet/Content/Content.mgcb b/RhythmBullet/Content/Content.mgcb index bc2a38f..3a39ca3 100644 --- a/RhythmBullet/Content/Content.mgcb +++ b/RhythmBullet/Content/Content.mgcb @@ -700,3 +700,15 @@ /processorParam:TextureFormat=Color /build:loading_ring.png +#begin cursor.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:cursor.png + diff --git a/RhythmBullet/Content/cursor.png b/RhythmBullet/Content/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c7434bca1cbce0e686bf5153971f03baf895de GIT binary patch literal 83908 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�z<$?4l^8R)dN>vC>o&#R6KS*k<7 z0m1bpwI1C<1@`!Dk7_GLeNa8qa$go9KmXg&b!p1o!E}`Q4hv{fjC-~HZqZio(V6SE z__AWyF(noJ`FDD$bh6$jHZ!AK@i_QmP$kCIWdy>p?DpTm*7>O4Imw28#AeCRCrq z78*pGS-t+ttY>wC#LZUxw9m)#1O?NqeTFoDLkfupz|9B<=l05+hxjTjO6{)9F0tE~ zt-bwTgm>1m`K_5fQXIqI$yxlBe@w~4W^*JPIZ>&du9A% z4d1IZI~7QfcqZAhHWi{)YKYl}ZrAK8kxbFuk7lisclUSR8VmL2NdG>o!*2JI`T%n? zxw58vZpgwmC`adn7k=IWTj2SH@gqGCW0FR3Y7+C^<4&K3(FR;~5P=qD9VPXo-M z>fhtdww(G6HW;%XG{apJ*SzBB^MdEx1gpwoo$+*~1kg7Vr{D)ql2rK@gd;CO0kGCb0Ve@u@-0JnrCMUt0XaKod6K9SSNuD0;+P}m%f5ma zsCWFJ!p$s(<7OcS#mxoW#3IC^;ooKch6If$&=Q-4^M$z|G2bU>h*5%+D}L>{{NZW> znEjVhbV;!+t!lKf3%wza9YkW%`_LuzuL-3of4d$1jSU+yyTz1aY+H2M-f z3A`=X zzhw$ejxv8>Mmplku>dk62DF4;bU%FDY`L?-1&W@&pD^em)mP>?h@q8Do9~9$^ksOo z-1JEs4d-b?n9rfN5D62m8sbjMhPCNaUWqT3z8;wwWReZ5{iwlzrMBLk`ULN$8IpP{ zk!kGaB{xltzCBv}Gq0LNmf1WoZ{CMF9bBiG*92@XX)eoNt=JJr6#U&s6;`71zi(I`SD(>x znjK9epe0wM=Fzij^*`>6SEC|5_xTT~$r$|BUd0fxZs7x;(0})Wm>sd+=S+p_W!(`y z=jWJ7MCuIY2!pQO3vh?*B!H;3+In0vDEj|pSMj`VP%nz`;xwZ{-`au%%!k9ntU90kPRE|peV>G59I#Z+XG+7@;K5m z{x~%`EztYq_+t9I{ww{E1+P&)eRc z6`}CdM{PYRuH^-N%)&jJ5-_3u^;UHv^$}HRW>DP3?f3a!H9zUJeB|Z$Im$qj+J9% zk3+I$Cz5lFN+=?GCbJSUvd=NfL1wZlN3ud@Q^rv?Ic7peC^LH;oOABq-RJxG{o%pi zm-~I~>-Ds&71~UX>4n*|pF=9;cKf1h3^TBYQ1eu`6UhAaA^|y*awHStG zAHj9&ek#BXgTJZ+ccWJe0@E&rBG2~Ci3P>!vd|o9=O=Z^Z3lZ@L{v)iHk*2QZTJQuXTN4!qD*F(6lX+FT?j=-YhV-c@;VH5)9V+PP_&3jBb~n ze$H1O7BD~YL!A|@Cr7vu2i1s|zv;m{>EC@3^RmJH^th#-M92rmlH|VxgWG|OMM+an z|Is~`Ke5)H2Y=r=8?L@}&j9!SfjNr0rT}WBgSU8-*Mf+xT4(YA)sU<1#RFaPKIyOc!qE}_M7rv;xGfZJWtuoFB{ zlF#KGBnOfxXKud6A(j^1g$BU|t0QfQ5}ys+0E*;-`iGzW4IN-7f?vK#UKWGSRl?uW zg=KLcQ+pQ=BPVj(J=1uoG-DtiuC1a(2|_n>g7qf|lVYZmP$W($fu$t!{DD#MJ`6Ml_Ux5z@Z}O#25-#4Ynx6SWy1WLLgb$`;~3G-r)Y?RY&(SIZT5C6&WfubEz@@bpa{S@zg{pL1z2cVdR z$HeD0Iaa~8DeM#N-Wd89r>s=UcWUrh%l#|vaHd=Ugn+Q?-23zV0{CC}P4hLRt)@{$ zrvQoK3F?f3&>tG0amRT|&$SIu9DH91`2p%rSt`F~X7tUO2SOIN4^ZvEp$N+9Ipl{j zjeUDyV070|_RxA;)VAYm7kEcg*$~nT!~5@X{xh`#B>94cUhLWJgu8b`ck&APZ233aT1g@FNd{H}^3g z=+}`9s6p9>P{T&qFOWBXq`FyLz!0;pgnI(L#fND#3xjsi8#+O{uE)*M`!qgRn1U|f zK2Y~~DgKI(xMXu`HZ|=z;zi|tua*LL+*RlIYbO#QR;+>UxQn;|m?5jSx!dK0*_&D? za@YG=h`*^1O(LGN=;3nDy@XC6EP!jvsC+0K3QxgD_d!3gL1GSCs2cBYh3j-KGGYCu z7IbG^nAN5@7fG*cGR)WlH1o`?sGLEnfPA7Gdk8*%xE4(RS8my0O6k7)r2=uF~=$U(9`( zKLav=+!SyIIBz#ey?WeW>~(a4@4@ZQ^>3TzfwiyTtz_GyBe47hc7>5=4PgZ$SN;Ww zQ^O(B{9jK(Q+bUzHqZWQd05TT!hMaaio5Kp2p9NBDB6f!PRJW=2%E}B9eoi@=fmin z+K-};AW}A1EepcDfqN`{eWfz2NFH>q;o1`=$lh3pL{AB(n>y~SGQ0Ldpb;X&i>cuy zCc%r>abMyMv_KdjQ}o++LDI9V9KvVTw?KjFo`MlCjWdp6;Yet z_Slpy)mE`+Ulth+%wqJUuowm=Bn(Hx`B$W#vh?9!p>TbW+`R4bqP*RB3x(2sj%Y~q!_^El*A~A_sxQm@ziGorPx7}5<(DE za;oC*neY3TS={*w$`}kQ=o%;q=ho%}?~S0j2+4FVuXu?tR2VepWFpE)5yHRO*606p zp3~Fgrz}ex;-Ud#QkoZsNvxnAbeG|r3@KQVyVY48)M)4!I;%B#Qk<9&{qeI*(5vq+ zY&SOG8FWlc1L~W{Fjbd$`V*Wv395qcts!-f-g3Z^=N4IWRg>a>Or~K;GaT%9Q@g}! zQ>n;%E-ez|P!R1=pAS5MTkRb)Etc+R>ya-kzS&vSFEq~bEc&?n+vMAC zw9^7Dl!4c2SRSIn0XkHv5jYXszJ|r~E86tYQm24xV~elx-eCu9SzXO0li5^YIpJ4( zt(WTK*^t`z7jbWSAe~Ly3LF9d!WJ$euu+MNAfpu_i9af&|<8985llXgZCGR1V$O61x>t-`@t>!4Yxb4 z!tWQ^1bMB9!^dT4)vesJbpfYCjYPJWkc{aQTvvp}zPS1eZbQw(CwqD2bI$qt`8DTX zdG*^5q6y{Nt~`K6X6ZmZ5mI+R{J9O@W?8_?7xD>u9dS;LSefId+a(Y~$s~qKUM~nJ zxg^S~vv4m$0uZV5JpaD)E5{W=UsSoM_}2Wo)OR2NBzn$k2Q^C^zmOkTSgdXk`KMb+ z82I)#^_#Fzqy3~qdt|R3ew3CnO5?zcP$u_CG3a3G6Y}M*nCFaAvsS!Cf zsh+^)8KuuN{n*B1yz_KqbwV`bP)~z>5!_>pctm#%5;s8y6g{Vv%rWfRAD6J?&Fk521f>-$@8hetoOp z9&=pjud5UNcj%N59d5)SmH}C&wO{l<4s-bHIUu!)#CZd0Wih392%cYR4`Jq(kOg`1 z#~{XbT~z(kZ&PZ)4?AZL%@1jWBVB_b}YBIEE7( z_;&17GIPOrb)25eVoCiQ`D4}`WG~|Upt=+kJb*5DO`Bb2k2VbjGxnULO)kF zAoE;fvHH#@{3^$xsl;Rps3jB(ii_SbH0c|oWk*bfU<~n;*D0%&*fC0W6_82p+{u9W zjkUbY1+4pSKc%&gqc`H80K3zh)A~hI89<{XLm{_+qT$8LtZ!Iakq_frP@Md0I02*1 z3JPv2ZRpHtHUPc*Etx>E5nuEp8~>Y?yVEQe<^dEtlTXS2e9@Ach}|Vc4y9`#XT?dv z1|Fe@7oU~Ac_Rs@1PSDXunHk?LJVH^yr?WXP6ijAkv9x^N<`bEHQ@>C;aN}l@4;&H zuKp+w&@pmw`1?Q%9<_CV3U*RnfCQb2nJQ9+OFU|Fn1y&Z%~q^lpMySf=YV7B1gK7G zh$s?iR^Uc$Cs;z$et$5y(a(5JmJ~PjcRj;Ne73)}mHr=|`l_2Ij^#ONseX}V5pR|d zJI{vF1+nOe>mcrz{L-(CD9`^7q%4?Lf_bD<2vLL*AEsbtJ&%O3q{-aPL+ymfzWwoP zM^H9V3`DlH%tr(|NgNH15iF@|+oes4!ZgY2i!-lB*trfB2dKG4B!^1UJQc+bc8`bZ zx`hYIr#m}p}E@8vs+>d>+3hbTx zFDaVp_}aUf)b~~4BC#JP?gFap&NAuAz@}wv;6h@L!#HN4s8`&Ot2ZGIFZ<#i2{QNz zWhxPG{Pi^R5`gID(-*s8dP>T~XLqK+!BJeh9Q;uRk(=czxXH))qnpKVH>m!DsT1zq zOWcKr@8dA(%xpnI%&2gky(ZpiMU^i>{cBnZ59DGfVr{INdXL51&vGbXe;a9;oE7*M zbH5Wa!BE-=N%!s*L}4CFB?KzKyV%LeDFcy{>Cp`CDKQ?9ZNKoG<=H9t>#RCSA4n5LzE*qU?5xcva^E@&}a z!7g0*xWHb!ZOeh3zu&Db8cmO#-~`|ffKL$6M-u~7_C-DZQ$hw|i?MOxrvWk7(;iYz zRgppV+$=wf|MrXmc|QTX&rcu@Wq#}o^^Y<1KNMYTxweJ9kYYr8O6hzALdL#Z!YLIX z1v(i7H!0k#On|U6^FR?G90wdRN%uV}V<-UEy!i@V3*ZdOSl$uBAC^D|ayo-2rk!vq z{AsP5kzefJIy#6cg+cw|Z_nOq*SB|qFdS7mLB4V3DkQ4e$bx#0Owp;lt!-vREIv>= zH~a}mbPUaAprzsyZFhmhw@d6q`P|dK9MICs90Lkckk6sxb(->zV^_7q>B=}kY&8!| zyypqZh-1rNuZIJ<$&6w^U27xWgu$=TLknjak>PYv1wN>7mBaCTlI~H93wA=Wh~P>Q zO1;z5X8H)dP7BaP_p6dX{2*|xiR$xDLXmM>>M;E=HtVqcGxYG3gLyT!ji=Dq@2hBa z+LC)l{72gS8c3a@c>r%Z(6zhlwF$>l_1HG){~S#68*JzzhIo5f(9LX5?6(pa` z(-s4o>VQ|r*cZJ3Mua(I+5ca)i+=w&KKFVe?oFJ69Xu`?Y-XOI0|)rfhuS!BUC2Y+ zXB6Tj)CG2I^m7Mm&LLL|X38Uj1X%&o$*V*Atl$OD9CNf28=E5C^rIjAHQg-80O&*` zD8_m~UvT2*6!ex}0iuYNzNj1${r=-?-84Kt0#bbvv;C9T!0O|mckF7h@4u4vV~&AF z!_Vd1z_;z-h5*T!$&^QODPV!YK^!D8zW7r{=nj&MNUURdCONLzrquc1nSmX#CFh@&4^4| zy0@q?AdNkJ$gVu${TuB8EP6Z3<44I=o;4_*aln5|6#SIEegc|nqgm9MZt4aZ8wl(~ z{`ov53E5UkGx=ZMQtPcf@>m)cLZ;$zrObF7fb7UbY+};D6q1ht1KDM!Yb(JhizUiO zY0wv*lzlgF;pa=b`gg)|@Hu)^k^od!2O3I0c)AC&mH`eoUP~Ae9-M*Dh4d;+{1C2T zrLWwBr6F^AU=OV1teO?F~#M=!YcYwL%Rb2_gCh5DCU{-7xW*cY%uft1FD`j`)?{BHP0FtjG&no*fuvu?E`k@uy2+i1 zTk>D6pHhYqVmJM_^pEoY5@aYBJKIN1gVFx9E!aA(`}txc7!?jj1e5rgC6!AQ!403%_DrJTq z{9tWL0a8Rh6%itUiu5>M4A4%o=fr+s#R~q742W;Jv0g?s2l*dpCTtsJvP)F?VVTNd z0D)eLI`~)dDP_wcjv5NCMN&V1+am@1{d43?pnlMH+-(YZiyQFCqh_ztI)~6aw8Lln zx`J!>epkm%+`~)`Q%cvUqB8+MfyTu*L)NY1z*m3Z0~6#z#y@xaffeNC2695rBd&_i zCVa`^hKjIm6J0onxIu0PFH1VFO@E6_A>J385n}z1@kuJG_e}%m3f(Re%1EZe%?&{e zZdL}K#QJv^?p@az>t;cu?z-=N?hR;7iDX0#0;57eKaUF9UHVjV&UrBfUFAx;UDQqr_~1Fbi!rFKn`MC<1D z2G>?at{;%(1+RBkp6{pG?(^PHsmFE+)*3CXNcb2pJE!(zWe(YWd4-iYy735u`e)8! zD#%g%i8e;@qESlx4tH6Y%oK1PV)Nrem*`S@CHo;-zih$TCy<~0d@Q4=bC?0~J&1l> z|B}NC^~WHMpvbR~S^*5*HD)@bpu6PUJE)U9vb4zF7Hs}$4|n4(-9nC7s5EZF?eQc7qZZj^V-QDRMphjn`a~9Ylp9FCO%}T{^kVbWKdu@6Yn)% z-Nkd=?VAKbUe^{ZaAUvA?8Zr;S^qu<0XI5AOJ<(U6an~yd=suSJ+ zws(K3fpI~>tQ%7W3uU@SuAgj?0CKhn88mnoumxL~;W=153@Sea^&ijU_~d(Nn||r& z7-Digwr9Pe9Sm}W2NcDLPWiv}cbb#lZ<+t7qDm#yR8pnJ2fDFQEfzbX)W=DHpD@^f z-?RCbna!vq$L9~GB7R){VQzq<$6dr&@ZoZIMFc{Aa^v~U*B_t#^)MzJc8rF3N1t}^6j=jKu`ys6qv!zt;uuMn{KU(wEovOw zGS?>g((jqhhHcBFP^lZ*5o{1HZ(e>PS{-8e9(^@QXeV{Sv=nV6|9D}>=xF{BPdT{T zPL=vuYf)VZFpRYXIJklu<^bNnpA{IBzobw`^*;lzQNff7ndDNa{B?7yVToevk?schbpjyKk^ zrhEDX+Pm&0BEi3ePjz}38MMj-v61|^3v1((p;Mw$rc-f(unl+@1ShM}ox4*MUU2tY zrq)AP&glkOkVTDb9XRa=-m!U|TrcA$tah>Z z84}+FSO`!z|YuZw) zs(mz$PH;j|+iHGr9Tfmb4Dq6#IC1**8Mu z)4o9L_vu|w!Ooy*eeS@Ew7kX6aF1NzHd~;>h--?vjET$Ca6{#Fh9zKSC;SKy1Bfu4 zw_x7{G!DKb&{g-T6VC^xI(A)dGg_d3fICfp*;Kea10Eu)De|iP0 z-7;MTKsguJjvmYrp3xQ_gw3(g8|I9oiyXdFpB!$e1E%0+J1rY=b>nUHNB1o`Sx47p z!g=6fkm5uJ@bgGxj3#xx_xSO-jTKt;0%$k8n~ki8#UK&w4MIsC2F}Z&k`2bUR8Vvl zXPy{!<7!n=PPipm_nNo7F6jem7=ZoO~|lgBaahJdz=e5Y``OSlmztxN%i( zu_z9^l9OHzETV)M2`Fy-bPWI`w0!M`NAdC31a}DlZRNP5aR0hSaLV&sQ7N$_N zKI;2U=Wo*k-3+Qt`0Q}Q<$K#-IXg0suDj;C(j2=8i#1sk{UPVa$G}p-@?;L>IPf1A z{a{> zOEir`(mAa1%%Kr&w0t~7X1lkxJrTmd$dK^L89l7}=o(n?sPXyX&%ZxS_vq|vH#v40 zCQ2iY7dL*ME}x+P(xr5Lu@lEbzZAb8cK$Dk#QF?5mmO?yADC7F!jkjdvW~#@KF&Ley)@MC zx^57(_8?K|;xTutMsqKNvGXvwvmTpaf8qF`JiB%`^}(mnL(?U&ygV3P08%4LuhKr4 z+VuRe0zb5OUX4PBr^m%FLSpsBU`9|EMVyBK9czBy^F}?CvW3UhtEZ!{<%r*DdBW?` zJfLO0WpC2MDcd?BRgG!bU$ZRq#QaEy7{ zQ$x9@2xc{wf2d-Y?WI!qAvS)|mUITEvrk~Fz|OALuj*vVCm@~jEQ1D~JH|KA=vl_; z;B$YSHl><7eS7#0<7=wVT8#S$Kgdga7pk&)>dfs6=5r6IX8$|kzY1xlE zqH}^A)9>~P8+FaY%g2uY%y_25IKw&XU*Pak!-J)bANW|)981A26XtiWMK24n@AWg@ z*}%wV>o1u~O4gH3MWi%j7j8B82^Wk%hrb|T{DvGihE?McEaw7SH>2T8oIET?K})pY z6(UDD+(8VaHl!KB_lCuB*Mk1z8(TTyx>C+*Bq7EH{gCyp(d{7!mNW^&8Jsk{i^Jvh z)Z4jyoHbGXD4S_s5zGx?nsmci^11!2kz3`Ky^jP{T*ABZLz?#kxZ+4ror0b7zQq+-Pg^UbHAt)2N8+p7C^ops>*h2Gg_N7s)!`=;GvBJ%m0pRrJr z!HcASv~Z8(N?pIl{i%HDJM2pH@#Gdl0@#~1K7oy19oZ|fZCP&(|HR%Pr94ggqC+}q z9`4*4M3V$sq$qp3H09-Lv2_Bc?L(DS^cbbo&1!DbY5ju5gn8+XfA& zMrjK;{|bvEE!ll)W?v1PuLRii?jJ55?+C5)9wZ-24Mb_G9}b!xDFvPeROZp2XsU49Gqer zpVZXP0HPv@dk5&P$PZJZ+l2cR3L}Pg&@W`LkSe*2%{2oPoZ{FaDr~IYSZ*H!#th z8sT(H{IfNX^(|>Q%KScjNtBq;6vz0lIk(1N@H)+U?bHoiJfzMe>lzK>*XxXEinE75 zX=Ee|5j=&VSu_P}f!(^V-tS4F%arEcQ09+Exm(!u)vmFf^oU4=h%2@4$XU*82H>1} zw)p#)OO?9(7fgh1`e1?O`Ug{(g^dif%Iegnln3?mEB8R^DTlvDz>D`6EOUyeL%XHf zjCac4pH6*v|GUkBs4DQeofh6tJD&~|YRY*BHEVVg{O^1sF5cr3Kg2r!s}$Y%6|YC- zzUSjm0^Ya2DMYv^F^L!K!e*}tr|`}Kz8faQzvV0SKoGJkMAeiP%Ix)8|0JW(pjM{r zZTlq4+TzLLRMya`gGkJNTiwmpEwC5r%D?={*Ve~=j4Sff?Qa55J(0>u1RhviY&`MO^D?F_A3>PEviW+IYuR|$ zd+pSOl)Y|%sCrcKk!{b1yfISH&A^xq!?9WeC&h=Vk*A>og%eieUMv( zla$cS7}Ok)P|!ZJgq^)<#6DV}3S|{nf$~8Z_!#okX5T)c$3rX6vJi2lfw!A4LmWpA zI<~_2Oe$`yyx9`@ZZYZJS8*smY{p| zY^Q+WKT|CVT@9Q7XOZtkQh5WdTYIaqZW>)&VU>(cJB^ib^zKB1s+n~sS8W#TY2Pma zTT+Wof>c6qS7Xy@ng;eSttnt@hDMBNv-wrYxnI(^4X02dK5IRwwFr>kp*m|)cP zQEhjO@U~8zrXL^-*f^&X-EFdEe8NqT}4@ zv9dkJ-m(^xL+d@-6c_MF_f0+trDyc@w$2P;+sx^Jlq}1C+Q<89Nx}$lF#itC^uB&h z)Lrh4M}loTM%w=3yeuJIy(;+GL3RGgLO?AtNbB_DdxPkfCyPRnW7FAKm&0jJp!maG zz9CW@p-JHn9Lv$DB)x_89hmdo_1*LmR@^tnW3Nyc7x91)0H&y z3grUjn$fC~EcU9!jyp2+@{i}=-$uken+w{R-$N%KTvYpRBWc3|Pq+Ja3dToJI< zSunKQN#k&P-P3@zEf)_fJ>0Dexo|=5fN?ed+jF-Ho9zR})`lkew~58yDb_7U_V2J! zyd<5K{zwVhaDSv9!GWT2q4CAcVyQWWKii67k)fL1iCbHh+zq;b_y1e~Fe_%vZr}L~ z!jSqCuJlo<3+avYm*6scM(;v&oi(Df5pb)J$28|_Esx&UP%jKAp`S)}E_v&o>{4kh zvcd|vbz(!61GXe@%`n?J2zcZ=C+f z_CG(158J83c*Ac9xWwz`(OZhR3_d@2^rMIMhI>pOavA@@BxO`+Aq0D}Vx@;k{O3SM=nnK4>_MO{me|)Pe zjXG(v@-yT@GB%TK_wJC1p~X$BlJfV1lKRDq8B1uwL5uM&wkIke9!297#gcSx4uCoj z)%l;jL(p86CE#$nTQZ2h%)l8 zP+D*|Ovz6f=dNzW@bPxRE#mN7qIQq@gFT?b-=o7n+^AZIr~0!-N~C^cyg7s}aGafp zsn~;d>3EG{{_+lZN}>p21J}-?3~f;wFh#`6yL{0S&vy}JwrN#|Eo`;ztVs7>(3~*1 zrnElB%_%nqmBd!t54nE+cdT6r!8-lI0(JSE|n1pq-3}6`8$#pwTAc34pEn*7OrE5GtqOT37Xr@kAU3*<5qP8_463Tc#Bke zT-JE8zFfnqRpzT>^7ak) zZ_FN&Na~#uqeNP1K;+kErO^HXU!hNaU103u7vCaa+rR3AE|$_2+!ujGVw3ef=>xXV zlAtrV_s*fs=#P-aTkuptJNyoeQgC{#x@LC-5pZkn$wT z+NwN4L`JT-0Z{vX)N&zZW|+asZ2Yxxj9vBI$m|u}z0whdqgS5kJEM7kn&SPd4l|o1 z)90#dm8W=EFH*4EFHh><)1Ge@;{+IaeAic`=A2W|cp#zmfN@47liYF+PZkwf(B{X= zgVBtE-8l?#{yY4xQ%huw2_)9|1rrL)5ZZ{`blkQO2H85uaWT~7I&XTgj)GZi)q5*< z7dM>2M}8$4dWvkyF{Y-}7AiQWntSU_6fPnXGHS2Blo5)W_zL$5E4W>CAqRK2wg4#% zm-am&Zwz}k4uPL}N{?&?^DqJaXyowX!;m3~gSmn_n87HUDiYhQnc(M+h*5zX{K=D_pj#F%14ERwNPdYu6y`=i;rO{3&0k1R8ns?lTZ{eho z59XJ_Q>vc?l@+OqA+_J4bEF5?Ptgz_a$BVw+^wSlhTK){Q6t%fhqTP6_*uoIu^FLG zdw#;8#Tf7>MEErj(cW^uy{GSS@U#6+&D%S&{pkFb&Q|~_nV?GP^PEv$`+19py=gbj zUH>%A_?{D5oEK0K40f42t|tSwHP+SHdhSh%0bZ0;caJF{-P= z5bhMgQt?TMUGFIV)$Ti{+p8Go!n+B1tO__EebYFnlVo1XqIie zuHz8w$zPrRwjT{+Ov9Yhb@-XH&i?@~b}t^wFMK`JI2l!iUe_O8$Y#Mhj#Ou2Bb%Hr zNb|kBXF(m=jE5?;wd6hh5{R}sI>mLd8ZlStX?7Kx`80}ez1?Ezd@ob~H&lYi{O8g@o6Z#u0A_-?098x}-~Qhp>ek zjL&Vw1hQ;c2Vpg1z2Qyl;bnAv_pVWF^IdDi>(K^t$XujTW4<}D@SKO~b>87OR_&|f z9_oefWZjKd&Jy^Ekjnm5H(0qk>^|3kG-KOVS?lc=5OE`hdAyQb?Rc?bf$f!o+BiQe z9xo5Lp2X;>f`@TA>Nx&_o7X&M@dZcpOJ#~|t*gjol&d3uEJ~HdCMfk=aM^IS!E7ko zX$Gdq)BCMs{thXk*y=(GibcROJt}QSY~u26MMrbN5XIs0y8!1JCo;Cau)^fvL*mir zB&>Uv^k5kPACxaWdi|%mi|}b5uSgPME5xH2ZZt_Bx`MBqG@sLFlF-$>Ki>QLYK8RW z^b1Qed#3z_Ra>b`EraBPapn5U`Lx}`Q~h8v@e3WYICRrG%B@`~0qEgRO%Z_1Rr`0$ z`3CZYNDqJ2lm;C_iU}kgv1~Y$;RfX^_AMp2<)UahhwONW#n$ z-ctv;R3LuIWlRM6O`xkDHr0noQ;Dvlt9+4);!0?d#~ZGGA(}!Um&>jg=-#ML)rp~& zqdu?d#xQS?)NFJgh3dB^6{kJTvNVl1B?m zq=t=s3iJqwG|$?$|60+;`Ln+v~GXP{PYVClq&3EC~nEt z1BVyTFNlKXG0N#9fzIb)xiPZFka-{_ZVOOByjxfd^PzkW^G%Cnm8~`Hv<6eMKg*F9 zkJtv;ubB)+Y5b}#q;hX%e{sG<{n_dGigu}o5Qd&ZYc{_!qQt7@n}5-zbe|ivBxq1% z{wi*b?UXD>t&lrIoKD^?h12J5cV5HpzLef0fa$dn)uM#>wrs09k!HG*r+M^N|4%aI zk1(& zb#rEy*+gjNZP0ASbl}PA4X_IdDaPH;btycpfXqCC+U$R@3w=}S6Dwv>!_%>98~)-vqCO7U%e~NnW6(DE+{5=)w<+s@W87MgT{G(F zxzXl4aDr6?S@fiZGqS&)o4OK~v02eUV8Q0ETaTD(x@VVR$1+=1sBWGi&C=?Fn9C&z z<|pQi;@<30y~%RzXu_)E78>nDGQw6GjSus*q~%IK=v>9V-)XY^lQ{pItt_lRub8H+ zU_`Y}#uE57@APG}=a22}@tzSnoYGJbi6+l%{vM_D2Pu5=rg|j+kJKkiY$$B6L~-%z z7v2irfqk!@*19fJR_HlGuPcl47agW4V#j2oh4Wq_}K=l^7 zNE!dN@&4Qy{?hy~Q?H{}2L?gdeB~a5T|Df`OL}Zw72s$NtQlV~rp=QQ2>i--*0N9J zs2+h?Q{an$UB^?3p$8XEg>eEt&mN$vc(7kXWLx#0iA<-cK$VF?6Hk~>SFbc=yggkE zcEkAw!er^aq6_LoaUC*+(tC6@)D?CA=bv3?lcigNF+9r9)V4c|?cqvL*8XoMI1fgz zv<|q}xXVyyQTnJ*S#j(#*g$a^yNkhF<+6d{AFkn-S>rXmB>YV}{8(YEqas zCNXtNuhQJ!zU4ffdq%~{E>3pi$hU}wz7X+;Y_b1L^-rJYH_>FWbKuXR^sUe8_a{EF zr|40#O()N-x3)i%5~ro=y!E+_<^duoHDtk9M(xIBv2{bPnqSdA$F8t-=NfOJSWd~= zKh;y{?NU*D+fi9%sIyMUJzmh9Y7A!?KB^78=1$AH<+H|T7-$g7Z9%sa1!*WtC`bAV z)c;W5%+G86SY!eTsLRcI`V7~ooOYM)QEYpR*U(U1EB2&Bq{-VX4aWQHB>cQNCrXe= zbabODzY*l~ue7&J#iXAc=!+g=Ei>8tDE1>)EKTO)W>t7+D{?(CSFL9iIjIx@nYcdlhKFX&cY04?QA+xfFjB=f@zd{$U6ch4Pk+-P-iJPYB%>}nMX zpBj*tGs}y1WYv8kgFO9%pJV%ZQ1$B^;Zm{PD{IEBzA{Ix4!fr*$@mtXDd+D;tA$aI zbIfTY$KBsuen`t~38jA%du2csR`y62{kGF-_D3C?fE5fswssJ$Ch)t}5+a(>{BmzJ zTNiKlh~^^tlLKz}GUe7>8Uqr(dR(J?Sr8>H@@7#%Ll>E_;yJ`x_h3vt-f+5$R@vwlOks5w$+&#d>mUH%J z#a)b96BK_VpDhhMkH`~%sik;+p*_68o-a$YzUu zApaxKCvo2%@t<>d{`QyMRmgkSV#JiHZF+cXWMnxtLE@RdH=}aN$XC@&(hjMe@D`np zJx|KeqP_c(nnzQcA-t)wJdmQh{++6v7P^83xZ?YBD2EC4QW3xTcRHfxyXbHAhwn_i zsv^%OUdIDJd%veN9e3=_Ta%{LuFSP~Pwj(c$>ax}OUX^Q+C)o!4J$F|4CzlPOQIN_ zpK^nVIDV#La&b?GHBzL^#T*luK7xgeCEc(!A)r(Gb{;`QCqU@>HP(IM>YDw!W{=={K%hf zaqoPz1$Ak^^jB&g_PjTsur+aUOXRUc($(K{1P!WpGdc*{V;?$2SS(IILi=|;mLWV- z3ZGk!|0bH91SEU@)Btl`K4ILhAG;A3M&U`GhYEB)A=q{H&Ja5>Z^`nlK~Lt=6&VM% z1%s6$I}RTc;%{Y?X=?N*M=p${i*BRoD!iuUyd;kM44vk?n?r4G!XrXmF8SH;OtymQ z%Db3p!L)4p42~S#f4!W~SqzDln0pL%{4l(XbTTy4C8=mheHAkTJgrtpZQt45NAiTNBQ2cSOH))!o@2i>Fei3W38`GJMbkQ(}%q*%DY zay%!pNuqBDaEv%HMf?Jg2`mk$Jv+upUCLC+pE!F4CE^?WDo7k!^LO&j#sNe z$6ma>J<{Geqsq*M@p-}^Wdvo7P=?g`_%%C)H|yZ?VEiLjia9OQ?MC}RPg9u8gi5@X z{XRbCLb2bWri_CEPoVcE1(oa~l)9^wF3$1l2)6yNbUoY4a6^?oMwW&9Qh~iUbCckHzb z<0#|Iu_KF-nVh+JU5g&V>lb|I)Q{7rT9wSVbt$&f2P>!~ii=Qq-U{RVr`#yh#&}Cf z8L{7Urm4(?_~lv6ml2j@yYW{l&mJ*}kh{f(56*}Ftn3DZ)OuWf%Ew#J+kouSN|7Y8 zVq@@B-0$JD*PQCTcA_|eZ>t}Ggf{H)`_3O%N#OTHN56b?1Hpxi9WZu>x%z3DNX|AN zK9jr!Gjulpn#oj9%fz*Lc%{A*d;7=Z1cE@F>QGWElB-}3iZ9tI!I+m7ne+ctSH(zT zc0Smi!o9J3XJ$49amsLy;eKkl7b;dYxx;%mnI_9!rG7Yy};bm8Q z5h&Mhk0Bh2mt3;9F{U7ni=HnF=Gdu<4qMbYz3ODG0tj6se?~-cQh5f!?OJt>lQh&6 z^)~14Tq0ljS9J9r*Iq@h=r7A2!u|9W>dLNEuYULCJID3;a5>7J8z0x_1oS06wxWm= zbEF;JKhfK>9B-Kq+# z=z}|44y z%hCbAq+%q8V+yvl)A$QDRa1{RTps6{)A02xRKD{od)e*BSR45M;xHRmH2cS>MrZ3JfS6~}lBF@lS&M!u96_b5GVkd8ck7@~3 z6yI{{Du&gL@u?&(Pf~KW@PRx(HTe|pMNO;9g*Xbu>gsH;NE^d)*v*?*$t!FFCeWw!c=Klh(a6k3TO`x~p^vQ4 z0kfV!4YrIEXf`n`^gY1G6{uUSyTIUh&=#xKv@7blV z_|r_b_>yXvA$gf>xp>*2yGDA76o9#epH5R*=`54^ZTiZ~YJ+g;5uQpJANugZk&03W zw6{AA)wrDb8X4)GwNzJ1)C8A4Ps(-0AdSsN5e9H1>+- ze_Z&pXMqIbv+ijc&b7FIO?ra0??-nADhva$T9MgMU@y8I@K=bF4i&wTuu+G+J8<* z;}+_V_;lj$;}|WE`GA<^dd+yPR@3w-eXyY}bCBsBRVSV!K1yDV19DI^7rvzaUv=;P z&-DBMfp0Smlg&yFVdi|O=9EL&WDbRpN=Ij+gF`3@n?nxeoSZYsq2d+M2{|t$EQgW~ z&Y43wgbcHNFZKR@Zr^|5>&7p$UAwO9@wgs``{Vw&o=s`4z9Oq`16qyJT(PMFW1h8A zhPV@@F)T5;W9xpbY6ccjS3`7NoYo zn_o`RnQfg z537lYA0E&gk&n{0;!s?RY!pIL*(bW9i+`tQft`X?VrJ{uiu%DD&y#gkzM4E~Jjzt&OwNQCUI}6{>>6uXbK7B|G~dhqpS<3} z9#5n_DPZ;-I~}Rx|!zhKz98Re5cU`>00D;8$hRzf~FKG z`=;-<({o7n&Kl4_%B3Ei`>Sy#zSfXxt^o{%?~%mxT*o=TPuDNp(-8^jJ>IM#L7D!r zl_>g1je^A<(}0owyJ1F=g66ags98im`VBb^{Uq!>=h8Rc2{HjnmdZgQ*8`++zPwUm zgi_RpeamaJ!NNC<%HkIFN_`@otj7d03hCOeA?Z`?$W+PZJu-PeQ_P<o(%Ay%-6SJgs^t*TVY=l}51HWQ>gT6Xl2-_yd}5Y68eQ>OGtnFV?`s+Jv``$TN-(`_3YK#h3vN@czwZ{%!d-ZXv@S?KcHQZ z!8p7t58mjqel#c|Q{q$(VoivW^;+CD>R4Q?@XtIA0oU)BR>GAY*tim8lNV3W%@;wx z*)A><5yjnM@YIB(Qor0{P}W^`juYn0bszL8K0={o+pR!?ovtK1lzwA?{v>pFyZ@m# zWkxBRQNKLN*h`!5nM+}po;cZz+qk*zV`u3<-K?~kH{2>X$7*C3a%1R(Kl4j*oQk83 z6~Y`-!p$NXwot`qS6~~O<5ny+3V>}m>6^y)xyrwNITyH-e0NyS=KH#KpgP&mZfoKT z{||Ff#e77$I2s!9ABHF^s@fpKuM@5GECPiN&((xK(FX|o!pi6g|2zW;imqQM$-)C_ zlso-g3+4{T!w?dw|CI<$ordav574BXdSX?O4;6!XAn@D>UmyN7^{fc>f@ij**IzyU zG{kh67)8+|Z$vxsg{PD!PW^Io$7{L!$!)kB?fm5yi8oP8H`zF+9o|4U0M(#=%HcNC znegb-c7*=TQ=en2=+^#H*V}4*5ud_JgJ^Oot1fQR|NWx#lXDm&7sfgDjb{wTI+M$@ zQtoi7Mtr_;*xb2l>=^aWso|%2?(^xcW!1H<_Q3}{VD7NzMf7;Qu`E)T&Y!Y^8DsWV}=xcv{>DN41BJ-WL;F6)__uIC+$F-tWH zLkWi+!I3tPEW0J)4?kHNG}fw(%%nszijI0(tCb{qA*pxB&eC0R!pejnIOZGWaDP#J9N zD1vo8P6owkU=7?YqjN8CAFCk#Cq^_t+lj%n(YWV`B&!Gw?v%De^O?xVIJ@cikC#^2 zSR8#x_bKkCk-aOuW-_uui5jq<)R-fkJni-ci1jw!JWDR4x46wok%iD`p|8a~Xr-+^vJK9*mC*#WQ(=FZ(V9#t(!TzIZ>xtx^YjN<1^05ewxi2?mwcp zd7r&fV}E3cdTl=HuE@tY&cjQu9L5`i`jcXqydx5gHrr0X%A(N#IDwP&?}1HyXAk^T z#WWp%G@MKEF@&z~@Izc_!0k~Ep=EdM!@W^C(Zz#*Zvqd&>`hbg+z*|K!KlYDkGB{P zSZICeLSW@CipZtWij-6-Vzw2OF31+l-}*#RLa-|Wb?g`eREb2!#-y-sZj?~c>$)PU zcr^Ha*;X*>_e8lJp7uUNqfENeZ=^?ZHn6bx2g;_@1&dxI&$tEth_`YwFSAPY#}xZp zu67?;)2!fZF!xQhUvCMd52s%nZCx6EGnDLhcW+@JK->o-&@xf2{N%i98r6rBG0wTA zT)k$_;>>XiD4b>qwoYsJ?eC>%L)9sguj&*iyZXLpL1p4T>O;?{A!JOCqfgO9#!PL0 zd$@@G+#kPoO!&1btw87eI7+rsX1ETYWPF-Z`>YdIjJ8dN3?X`=x}vLK<)@Ryu(fL4 z5Z5R#T)sQ+fKJnjt{5yER?_oMG$qL_>z$|{`Rd&d`yLN28zrUQF_;Xv`iyZ7ubd}g zorEx&@ox|)UVGPrGPGRbXg~6jwx?Z>UUbViKH>0$usghOE3@qa%RpCko{-CQ9u1LY zg?nJkDk8ma!|nxjc5O7h|hgleyRWSJQ3;to<# z_P%S@h-N{8y^NI_|2+v1ZTFM+AKKw{V6$kVvo7yFUX)RxRdmX-nkEH?(-iGEI!wvT!J`#$!07Oo4;leoase_WB3`SwCp0sZ;wk&9F1n?`5+1Kwl?Nim;} z2cMXVDMxv7-8Fj|*T*%L&;@7oY|%5;t~jw8H{0qI9RDIh;ez;x+;)}YKMcxl?)f&|1RU82xk!cCflrlIn66D2N}Lpv2C?V%74$EVt9*<~ zyk;Rg6xMvhKW{Ed6e^OEinguBwsAc(1~#tH8jc4yV6mVL~)z!v8X#p_$z7n?1_ALkm3Ivgd2-a9j8pjzMvVt%l~ zk}56@xVtv$RJ4daWg6FTPVw=zY%ZEuYQ|xdxP>o>Lp?RXp_H(Os*XbA$_{1UN<)O9;t1WTab)d}HiG1C8u^{|oRF6}D~cL7 zvKxeYqTf@)-vQ_4)r(2Vh4eimc~-%q9ejpssdV}3mYPX)16Nb zG{R+wPS5j7C$WU?F*QH#uUOZ?aCjGnyN;jQUT$6N%KHOK)wy-fc8I z2#_@vj7~&UsPSQW;$Y(x-RcVl^-xU{Qb=7+UYu8Ih$lJXhrhweEVnB+KB1cs zN~%o^nP?5JxQCtayv!=D8kx~I=rh?c4}QFk2Jg9tNEqq4DKg3`ik;6nw=gEUN8l<@ zWUBJB_B_9%c@o+83_9CCIA6x=W~t5Z7ejRkxt4DjEi)_lkHxs$=PB{>5uEP{i`DYl zmo$-j%f(I6D3;z`#{#R)dF`2Sbm*tKG~D{0duE45@AX47Gby1rMy}>JZu@J)m=#N% zM^?n|uEs;d&@ZMb>$61{4);%K!Uy(PxI1LPQBWG>!HENqXT-c2UCs&N;_r_Q8I$!g zm-`v*>hJi^)h{zYo`D5mf1%3Sc0HdbEE+?jzQO}Xh|^72 zO}GU;twjDj=$HG@WfonU20`P|ny!@BfJsQYqsKtp`y^PPR#}&-JXueAwC3qa5pMP{ zhTqYiMjxi7(dmN5`7#~WP)35f?Mo0!#o3yW>dwy^>hrX>2Kt2>nY&h`H{e2hl9wm* zPV_s3P|JC@P)~kU8}7Hq4?T+aYMgg`VG>PUyE{*mq(ku;Y@C-ryi z$v>8>Y@hD%@>t@vc(wkCvl|Ca55Kz1EW>OUvp~JCHQ3dnF*<4(o~IkwHi?IBwnO$} z3P1tCN9~-6Q`4nL(zP3hDIxoDww_!l0TS1ebB-v^ENtU~j0UL;xYF;^DR=c(zvvF% z#!3i%7k5uOSPd9yWydL5G9{w0=zB<0AAXdR7*{q|hc%PJeKSZ6D4pyx z#_;y}qAtJfaQ15Xobu~Y$#8eVocmj&PL+W_bMuFNE#iMX&@IXER`^ceI`&ZBI{(~R zu~jz~o{}?e-pNS>r0VQ5wtq!lOj4)`RU-eb2J-66TZA%E+_5j46C^sNc zkPTB2z-uQCtOhOVt?+&*GHZ3Zue%y^+jSHx&yI5`y-E+m6R5Q;?YGI>HDIf~#ltoS_)Km%1N>+kI`M6w66!X7 zj5|GD1aJt_Em?N!*baS6)5#VMD3z*vvnAf-!qFBujgrWxtNW;d;wc~DIRv3ae$iR= zA;Hyq(~U`}Ubk4|62U5{pxJ1A(KE|5vCqOq3P&#cR9AmV^BxY8eM9;h zhv&H!@Lmu`Di7$?n(QJ!UGqoA8?;YpGSy7i+?6e6s)_V&Q*lK1$ zvja7E<=9{7(n}RzKeuaxpeJ9e$f?KJ0~QXrYi{nahTjP{+&o}M_h`5sL4NB#0z>{z zhih39`2?Nx3GB^e&y}xvQjELB+$7lcdo2*E5O*H7UZdRA$TQ8*IQ> z=_^Y|>TtVy22YLD?4P+vcZCgH;s|CPX>>{y=c6IUT-X+sKDh8~jqG)^q}RiN5mv`OoG-yndm+w3D(-hZ)EDDY8r z$)-rqU;85e2T=Z(xmP@_ZEU$c)aCb2|Ltl~s0MUXBdgT-ei|g`{A}InDCdt76eaAA zICy_^mPkyntw;*m`OG<0S>lsCPveWDq<1m}ACCrw_2QYN_`_bAK?~$63*}oLHyvn( zv=py7k4~W*G^#-3EX)0}9LxPG{;JiMJD=Ofjk9K3OEq0eL()s7ucFQD#g8^_&6>KQ z$>Mg~@#4zaBBw7veV($D?>$t9UXTuAC|Nb_F71*$n@w@iRBS6qLIbq8jCTqg56WfA zNtC<3Xn)Ibkq@v#vqGT$?p4q)4%^+P4rtFO4qluf^m={Y&9`{OG|4BE%4A) zJpr@(RU>)oF0eK`VT4OIZB&Y^B0+qjL+9}-f%G?ZR#8Myh4Dz)CjOg2X2kAD(j$aO z%PmT;B2jRwgc*8~QLaeTuRn_9#VFscj2E_47!h&zWxtPHk^7MKXeKmpwXCh;IC&qd z-2IV$qsR(4v_?X|M$Iu^Qmbxop(MKEZ0U_a{+Lw9w0@ynLeg+rz({4V*0@d0%**P* zg!gYb4~owM^ucAtrpReLNe604u6JqqTa8@Jy<}#det;jdI8sqlJ-5vo*eV7AKf9~r zv}nYV`Ue~56rp)4&(<3qELFKc!Pr_%?zVgNo>ksQc9mU-4{9CdP~362z}TTClmgv2);_DI)8=Z^`a!eb>=c8#_gEjm@`NN1?+IE&5pYdb5ux@nv_l?H5ftvW zT#i~IMFS=Z3d9q!sO3sW(#x|0owLbth-z>LP1e+#lE2JZ2wbF6$Gr_gMduZH;Pn zJE9a*fnIH=-i^Yj$E7DKNz1Sq_3QI?!W?ggq3*S@7jp`e<4J?&m&$@_Yug^#~~? zLgsjtWSfrO&=RP6jz_Dcs`U4w@X<(3N~MfnjTn)2j81&91}U4eQ_0%p9u}H|$o4ds z9lNVtR`4qQ^WDDE4EnjP6UK$1pMJED;tf+@a4E%OH*OSF>?HIW74IxwSGUjU8N9nF zjiE*?+A|ct+eBR$nsn%%6FN}H9%a%Kva~a0OMw-8J5m7aF6@q23M^Z^p6O@2JE}Ffbb4gDhW-VhOY913V>L_ zvqX)ElV45t%miOJ07AKwus1TyI$c7^>URvI=g>iSeknd&t&Jzc$kiq$(mNIy3I%Ad z;U!pQh>Ys8x@6j|+owz@Aq|D0NE@;3fRxX)*GPe1)AXAB!fbn>-2`Bh^o}}wTCXeK zoM55CkYR~iAIzrs zHn{i3^;3<=vTaN;ZdVOUrC)RHCB zd)`u;?SpQNrgq;%g=^>`2s7b)gcNTBVujZ)Lsxm7;c+U<36u~xkcmZlTzbdO2ghze zpsh%(mj)N&yf+WZq+2dUrb82scnt7>+a0b*i^py|P);K6WG*$WnEV;M5bxNxP`!CRk@6K8L)N?3am1myAn3-#b zJ*_#qqWr-2h|HG@D%3t!mTJ{r_w&ES$u=!c-80FAQn>PZbZ?mk;i1vNkZZfeWHd}b zuDtrq8U#sm3nSMa(Fpl9vH?rU7k)>B&K{uq;9!r~DL8-4kffJuLM?sH&?%0WU`9IO zM?u+hr#pN=+7__ug;sed&4@PzI>4oi5h}uhE>GaM5ih#r#M`~zNL~*x^Wo%<0 zGWV1_G`ZvUktiNJoU2#2Zo0Cik{(PPo>Z3+4!NR{e#emUq$iBe$j)dBB`Q_C7SO9` z|GNR3jVTN}qT-R`)W7a1R#ao7&Gu{|6It<#4ngeE&+aR=_;B~g4n(S0?d12hgxB*$ zCuHA=e)s>;`cR&IDf7zE?xm5H#XlxFah#F1YNn0xc81KwJCjK!=2Au_Kow6==I4;HM*I|XSeByo5Bo5%Z2bA3 zpJMsmUjkex!e_5Vfs-?A=G}#Baxp?n?QmC~zg*UB`lYNK`+ez^Jr0V1nq%8~6kZfPNq;+V?OCqc3vuziLuLmvW?PaCXk_i=0iB9w_bOlD{Ej62sCZP*IJ>k}kZ zsUW>4^L;hzE>>_9w}CAkt-=6K`h23TM8FV&7=+#;F$~(O&3gpUjZtq*isk zmn6qS^dq4)p97Ne%5b3?d(Pb{41JoahL{N>fk%`GhaF?Z8TA^;?=l6z{Us?vi;W%+ z=49sV{#%3w^M-!06K%0wHp=X*R?wO!eTzwW9lT7Uae8B4T3=CMFLl*xD=l%3EN=c2 zpnx}CbWs7zoc#s}Yi}k%56^1ZtD`h{dEU~rk`)ojY$XS6gtdYg-+!`2ru3)Ib%Yr< z8kUB(D29^YvUs=5KBBFqz@-f=S{Zil0=I=jnRm*qTX?R4Ds?Wc=a0cd3=)(+iNWAI zWlU{7_|uhB)H}K(kT6){VG82f!GSrMcFGYr64g756Z=Y?L<0k__bOI^~Z)@}%lQ6C&9@FXpyEL3%_q%6rSoA6A7dW-0_ z_k)8-UwQTtQgXP2$x+jl1)T;+H)k0^eo1fGOQTvh;94`jy~%%6p#deVf4D7!7Tl4_ zN0AY&#KY=V5Ln&yCz0i{L{d&Bub24olMrLo?xwjYcOH~6&2|V>lm5u0$Pg_6{^~$F z*#;TAr`HF_Ml-+dhs6!tT(79WlHUt=gG| zz_q>zGu`}VQWyq|i`s!XJ$&3^S(#IJ*ozkFat#Cb5d6(7qj-WRYN^qeUGgmMFAMni zc%#qegJN){$?Ar)GJ8be41ftlKU+kZm}gN&EpxIdu@0BTa&swPdmJ@){*6t42K=$R zJ|8eUaAVV5q2Lyp=%*q}fw;gsLBInUOB3s`gllkJlybiUrQ!GQ>Od)(P*OT~VxN*e z#_d%Ox;RtwcWD58{7=bl_pWy)N!=HKl=Pf!w*mHD0Kd8SrF1`R;%@0$&F-4%vX>QJ z(!Gjb_V=^C-HfI#M5!b{On~OC4YviV%=(w~UdG|P{&*Iri5B zzdp^U`YqupfWgMw}LZ>n_^sGheZE0 z!}9H>8*TgHHGg5*rhTy9wGu zw++g3E$+^p9io#{5aCIn#(xvYH z&Eo0nWxqh9*d-OGZw!?$iV~O+=*ZirKxkciN_H%@Pks+>3o`*-QP-`UZGb=gpc>Up zb4vY-v-J?g)%4roaH>NN1rU&IQut08Uhns_YAU}oxT6_qBmz7ix?4w*| z4+1b8?H;yc+eimbf z?I8a|QR%0rwYOC2rPU-h;#OuRZF<9ld~@T&O_)*l{99>DhPc0-w$ky0kykYG`xwc) zmLMLRG;Q`Ax9J}729b%rg!kffFs5>5?3deBOeJ$;b<-JkNcT?*JTHhASt^fN)S}6& z>%ji&BC4Q|A2Q2^Xi{FQ+tl}JqK;pqC}nw_`T^@!Arb@ZDX(!=?gCzUCcz#%P!s8T z9f^nJKVPW~+1s+u|H4~CzBeRCJ3|KcnS;KQYX!o|I}9$}`cTP9J8YiYF8uzqTge%| zMiOX$b6!2aR4>C0O%^6MIK^|O%wHz&2l+rEL2zoEN?*P{3DWz~L*gX;9ynY`*}AEX z_hn)iNCxf<&foe=2DNF06X6Qav|t`53$n#5JR*HSpTjOVpx{Nu`%RT#=|IhiA^dT# zWg^w?Vjp60-?C!zSWay5dYkbbdi#L75AcQE|E$_l0Vi~$Flb1(utGn27F;QuJjk~k&Tw=^!k+1SF#&*2y*3y4>Mnm zE%5Zrt5-DY!i$|8<~&E~a}x8?Edq`DIQ(xQD%4ld_e=q+TcZU90gPB0VA*64Xz(Uf z9)TDr93X3(1C4hm>msU}*k;O85*;H+(XX@+v9v~IWs4$pfnUGz!@0v1ZmG4g!Z-K~ z88G=jd1c2of+9!MI(-#3gxTjwPLl_XS?l@C200)@(CY0tM#m>K-_d#<_?!=swBNcZ z$251%(ddes{Jt#8a`O4#yxDvmiIB@4Jnjh8YtJEQHcTwCZ|9@ODF1uvDSAqRkyeKe z$6uFxKRBxkZZt7K*OQDe8$Pa1X3UyV#=kBx(QkX8|v)-1|?=rI6-{?55vov zUxE5Du~A6=h?r&X6HTtldjOR;z7I6U*avmwZi?pac|bCC3cs91_EBC5auu?C7Q0^G zv0!(DQ~TX%UT>}OD64YB;v`Cbz^|^-l1J(U9SP!yM>yeqL(b^u0O!5*Vfc3=>ye8DETQIi}{K{HSv0 z_q-rn{lW5sFHc=R8pLqCo>(~_KJdLRhFQ9KpKxJY;}c5xy=_Bq3ZuJ>tpH_ifq%y- z45UUe2zL^6x;o#tZP9nxH5VOhQ#HSbRvQo-G^q0FJC&zD><9Y{tAE);G^W=#g-0=$ zl4D$Zbl~DC#RS*;1sUa-3B$Lwbo%M*g0A0RTz9Lzva4_FIdjm!0jzzC$2$d7LR~7K zV(JyjF(33l#V_W2e!r1kURQFaFSvF{u*{@o(>A6IP(UV;Ob`ql%{Oc)SunP*~7ig<6D%)%yH6rMU$&=a>c((de z{AIGUe!XHsU}H`^fo`q3wDx6Na$8Vu)SLijQK$JjFG1X3Z?NOymx7mGtIm#5`VZy> z`&|Iez3IM0zMa1tY_5^1c-KZJ{EZ^>+2~C30xwzQIo~v-Xwz+JEx=XOOi@PgV!bw$ zjxbV;7gdd|D7=Hw78#Qx5!i$V6?l(6A`@>7lr9fi> zzq8rAGi$)XV9mu@U(ir*wumwlW z#gS*@BkP(DLS{D3gwg+_jZ_nXZ1vIJw&fUJo?d;-=#5b>#7ymM!-(hjLJ$`GlSiO$ zv;+Ijd8i8>EdLsOvtj)%as}KQEH5jC=Ws4%2l`H+WSBgASfB;iue+%{mSBSW#AjHW zhgkIzML@jH#^PFlFUIrrq(akXGvTcTqrPsOvweLI!#JK38|B2$wpn~K`m0&~p8+YA z5zIdT<+396tet%4_q<6{-zG+3*yFG3;cR1sJEwfvttl-N7P@8AdMf3&BC5|m< zkra(_(J~hgyaLO|Egh!TmC`t!f8X2s$Xq-Wyy}iVLcOp=PFtvR5sgWe5o`gUPZKSs zKVuROuYJWMTfHK*M8Cp+y4W3QCu`8i*8j#_NzhUPugdrzX@9|7c(8d1e2)RNsCh`C zAlXz!l0H5HES|?ZSx&~_8^Ol zzbZKE+`6+?ympqg9iEGF33xBgYhnC?{gQJapu%zCe{Th0`x}f^6P4R(PpFSyayG;< z)6w^T|GQk&{7s>N*LZ?46C^_34j;@eU4@57?26wbs8I7%0-`?4%gN^%nld@HJo^UAnjU zrBiKH$lRTD~#qGO9d<8n;enz0D%T-q+t|{P(C^VJqwj;3q z{~e6xT#!ZiclStEE=33K0n@GMgM*%mNYWaBmWY!hSzILhLGSHTi`SPvypt!AFH7Q$ zQLx=&*QjFDf?x)?I{=v{o+q4#lB+ex)<|_h$iIEr(n};#O+!=^9kHGCfq9t;$FeWO zq;@<-^zgB9!7hu0C@SKm1~isO2r2wAU|tkTOS=@ox}Q!^fU5tfMR6E#C(%&Tf65WK zFU?}*I;Ik^o|wy{+|8bVnoXqr&TejvB&{M8%plLqb=Lz%u!Dy>rK>64qah&7u>8M| zo?3ChR4Ttd@LKJ2C*12cw(tfi<+u?euE`DFfrvv8B9GKdR}-fwbGjPKGz`RC~*b_;;wL4dl>bUJ8^Us1@4%S;2K4j*5j=a>22FGPwDwY2BD4 zG6pIs!<-VVM>H83t`&T7kqj=70h;2rh>d?o#6xHKoUb)GM3sv&$x-dR@l)t)7dJrC zTDgKCcES;aFs{H2>D`kC97E=h(HdZyzW-ahx^4=oxDh;GokznoB?xv(ZCbNgh-U;t za(+BxFGBP}hq7s+SXQ2dCscikbyO%^C-{WlnSXnZG?McdQ&JesG(L%Bg)9ab&oWoI z@%NIqw~WzDjawMu_EW7X8G`xJZ}fsq7vEqH^7VZr zUqxvWK>-a*-5N30;7J!^vWlB|qw3c~w-0|z?~uiKzqB<3rv|Qp-;Wp;FUn4ymU>{G zkiE~MmMRQgWlQs-FLm;!qpvXn{w~anAscT?)`kjCoM<*RE?H8yUNko@;m2)+?yw_t zhrfcOuXOVM6|$^>phYvVhrsGsbTvNv`{1{?L)f#MTR zS`a&rb&*9X2JjNhs)1>X3*@X8nazp^qE3Uun2_q-I?YGSNb>^RwVaSLcM z6khszcKDgSSI&kqULH)udX@Uu2L zV|3xlK2*ieWJN8(tU@L><4?IFZ2g@C(>P9>7Z>m zk@b$WP4WR|<$5Z~|GHIEb<}=DgBtV8s1pyzh}k^Kh~n%I_D)eS+JK3`hc>CdD2JDq z6+I$NjSJbikq&TmA$MUTVY%wX3~V+}7f&`XjcNrKV{z$l(3`9>qBDm*+_RDAHm^0EYn3rV-XS82vD=+h|{c` zRq(s_3%MS^OJ)iE8+e5~&EkM26x_4~#elz9?wO`i40RyX$b>RQJOV@LzX;WUt?;G{ zmo^Bg^N#Fr-PwRD%1#L(13Kj%vK5afSHCe&q!rvVx-0sB>WN4@1>Dwo<7`S;lzr5| z*yHy8-6@&y4j#NmvN)SJGVY-L`cZyYej^Dv%ce81bU{>j6)$OPWtY+qn`&tVuIh-H zrceu(y8J&~4lcAP9J_2!AF1^zxQ ziyZ2%t*pZo7a}wJeA7;X=~fX-T`Wt`ig$_&16mfqQA=nb3Dfm4c)6@x$n3(vSbV1t z5;veVE%R-Ao!HqG#G8Ei;9t)9IX9j#~xcVBJ=U;-4nW676Ue&RC;sZVoj(K z!{z_R>-AJ{KIP}0vT^WnaN$)CF4X1d+>ZMRkYZ3bUyibpr0vA6q%_(eAg;{JGgd_r zeOm(?dQx^|$A$k{z?f&HDYWPJ_^{m63tXs+@Uv!=K8S0Q81eJtAF{u39ECn`7iJO? zw($NI^%22lefj_M{e}^8PvTV5`G~>s4Ig(Ck3T&P(*TVVN`ly_bY9f8!Vs&7jz$?m zX`9V<-%KG}<3}<(xuVz6PBnE<8)LSQn@9TAV;)HIzxK&5m!r#x?9$WOL zu<)>43!qgLgO=rQC@on60B2s<5v)o<true - - + + @@ -59,7 +59,7 @@ - + @@ -71,13 +71,13 @@ - - - + + + - - + + diff --git a/RhythmBullet/RhythmBulletGame.cs b/RhythmBullet/RhythmBulletGame.cs index 88b8950..ac906de 100644 --- a/RhythmBullet/RhythmBulletGame.cs +++ b/RhythmBullet/RhythmBulletGame.cs @@ -1,14 +1,15 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; -using RhythmBullet.Zer01HD.Game.ContentResolvers; -using RhythmBullet.Zer01HD.Game.Preferences; -using RhythmBullet.Zer01HD.Game.Screens.MainMenu; +using RhythmBullet.Zer01HD.ContentResolvers; +using RhythmBullet.Zer01HD.Preferences; +using RhythmBullet.Zer01HD.Screens.MainMenu; using RhythmBullet.Zer01HD.Utilities; using RhythmBullet.Zer01HD.Utilities.Camera; using RhythmBullet.Zer01HD.Utilities.ContentSystem; using RhythmBullet.Zer01HD.Utilities.DataTypes; using RhythmBullet.Zer01HD.Utilities.Input; +using RhythmBullet.Zer01HD.Utilities.Persistence; using RhythmBullet.Zer01HD.Utilities.ScreenSystem; using System; using System.Diagnostics; @@ -26,18 +27,19 @@ namespace RhythmBullet GraphicsDeviceManager graphics; SpriteBatch spriteBatch; - public readonly ContentSystem Assets; + public readonly ContentManagerController Assets; readonly ResolutionContentResolver resolutionContentResolver; public PreferencesManager preferencesManager; private ScreenManager screenManager; public Camera2D Camera { get; private set; } private bool resizing; - + private bool initialLoadComplete; + private MainScreen mainScreen; public RhythmBulletGame() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; - Assets = new ContentSystem(Content); + Assets = new ContentManagerController(Content); resolutionContentResolver = new ResolutionContentResolver(); FontContentResolver fcr = new FontContentResolver(resolutionContentResolver); @@ -77,9 +79,9 @@ namespace RhythmBullet spriteBatch = new SpriteBatch(GraphicsDevice); Camera = new Camera2D(graphics.GraphicsDevice); screenManager = new ScreenManager(graphics, Camera); - screenManager.RequireNextScreenEvent += ExitTransitionComplete; + screenManager.RequireNextScreenEvent += RequireNextScreen; QueueContent(); - screenManager.Screen = new LoadingScreen(Content.Load("RhythmBullet"), 0.7f); + screenManager.Screen = new LoadingScreen(this, Content.Load("RhythmBullet"), 0.7f); } /// @@ -106,6 +108,11 @@ namespace RhythmBullet { resizing = false; PostResize(); + } else if (!initialLoadComplete) + { + Console.WriteLine("Initial load complete."); + initialLoadComplete = true; + mainScreen = new MainScreen(Assets); } screenManager.UpdateCurrentScreen(gameTime, Assets.Done); @@ -135,7 +142,7 @@ namespace RhythmBullet resizing = true; Assets.UnloadAll(); QueueContent(); - screenManager.Resize(Content.Load("loading_ring")); + screenManager.Resize(new LoadingScreen(this, Content.Load("loading_ring"), 0.4f)); } private void PostResize() @@ -146,14 +153,15 @@ namespace RhythmBullet private void QueueContent() { + Assets.Queue("cursor", false); Assets.Queue("title"); Assets.Queue("default_cover", false); Assets.Queue("backgrounds/mainBG"); } - private void ExitTransitionComplete(Screen Screen) + private void RequireNextScreen(Screen Screen) { - Screen.NextScreen = new MainScreen(Assets); + Screen.NextScreen = mainScreen; } } } diff --git a/RhythmBullet/Zer01HD/Game/ContentResolvers/FontContentResolver.cs b/RhythmBullet/Zer01HD/ContentResolvers/FontContentResolver.cs similarity index 90% rename from RhythmBullet/Zer01HD/Game/ContentResolvers/FontContentResolver.cs rename to RhythmBullet/Zer01HD/ContentResolvers/FontContentResolver.cs index b52674f..05fd46d 100644 --- a/RhythmBullet/Zer01HD/Game/ContentResolvers/FontContentResolver.cs +++ b/RhythmBullet/Zer01HD/ContentResolvers/FontContentResolver.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace RhythmBullet.Zer01HD.Game.ContentResolvers +namespace RhythmBullet.Zer01HD.ContentResolvers { class FontContentResolver : IContentPathModifier { diff --git a/RhythmBullet/Zer01HD/Game/ContentResolvers/ResolutionContentResolver.cs b/RhythmBullet/Zer01HD/ContentResolvers/ResolutionContentResolver.cs similarity index 96% rename from RhythmBullet/Zer01HD/Game/ContentResolvers/ResolutionContentResolver.cs rename to RhythmBullet/Zer01HD/ContentResolvers/ResolutionContentResolver.cs index b3f3b25..0dbb8b1 100644 --- a/RhythmBullet/Zer01HD/Game/ContentResolvers/ResolutionContentResolver.cs +++ b/RhythmBullet/Zer01HD/ContentResolvers/ResolutionContentResolver.cs @@ -1,4 +1,4 @@ -using RhythmBullet.Zer01HD.Game.Preferences; +using RhythmBullet.Zer01HD.Preferences; using RhythmBullet.Zer01HD.Utilities; using RhythmBullet.Zer01HD.Utilities.ContentSystem; using RhythmBullet.Zer01HD.Utilities.DataTypes; @@ -8,7 +8,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace RhythmBullet.Zer01HD.Game.ContentResolvers +namespace RhythmBullet.Zer01HD.ContentResolvers { class ResolutionContentResolver : IContentPathModifier { diff --git a/RhythmBullet/Zer01HD/Game/Preferences/Controls.cs b/RhythmBullet/Zer01HD/Preferences/Controls.cs similarity index 88% rename from RhythmBullet/Zer01HD/Game/Preferences/Controls.cs rename to RhythmBullet/Zer01HD/Preferences/Controls.cs index 12254c6..f5e29d8 100644 --- a/RhythmBullet/Zer01HD/Game/Preferences/Controls.cs +++ b/RhythmBullet/Zer01HD/Preferences/Controls.cs @@ -1,7 +1,7 @@ using Microsoft.Xna.Framework.Input; using RhythmBullet.Zer01HD.Utilities.Persistence; -namespace RhythmBullet.Zer01HD.Game.Preferences +namespace RhythmBullet.Zer01HD.Preferences { public class Controls : Utilities.Persistence.Preferences { diff --git a/RhythmBullet/Zer01HD/Game/Preferences/General.cs b/RhythmBullet/Zer01HD/Preferences/General.cs similarity index 91% rename from RhythmBullet/Zer01HD/Game/Preferences/General.cs rename to RhythmBullet/Zer01HD/Preferences/General.cs index 8439f90..bc0f105 100644 --- a/RhythmBullet/Zer01HD/Game/Preferences/General.cs +++ b/RhythmBullet/Zer01HD/Preferences/General.cs @@ -3,7 +3,7 @@ using System.Xml.Serialization; using RhythmBullet.Zer01HD.Utilities.DataTypes; using RhythmBullet.Zer01HD.Utilities.Persistence; -namespace RhythmBullet.Zer01HD.Game.Preferences +namespace RhythmBullet.Zer01HD.Preferences { public class General : Utilities.Persistence.Preferences { diff --git a/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainPage.cs b/RhythmBullet/Zer01HD/Screens/MainMenu/MainPage.cs similarity index 87% rename from RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainPage.cs rename to RhythmBullet/Zer01HD/Screens/MainMenu/MainPage.cs index 9586854..0c8328c 100644 --- a/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainPage.cs +++ b/RhythmBullet/Zer01HD/Screens/MainMenu/MainPage.cs @@ -4,12 +4,12 @@ using RhythmBullet.Zer01HD.UI.Book; using RhythmBullet.Zer01HD.Utilities.ContentSystem; using RhythmBullet.Zer01HD.Utilities.UI.Modular.Modules; -namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu +namespace RhythmBullet.Zer01HD.Screens.MainMenu { internal class MainPage : Page { Image title; - internal MainPage(ContentSystem assets) : base(0, 0) + internal MainPage(ContentManagerController assets) : base(0, 0) { title = new Image(assets.Get("title")); AddModule(title); diff --git a/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs b/RhythmBullet/Zer01HD/Screens/MainMenu/MainScreen.cs similarity index 76% rename from RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs rename to RhythmBullet/Zer01HD/Screens/MainMenu/MainScreen.cs index 5bfe1bd..49b8f4b 100644 --- a/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs +++ b/RhythmBullet/Zer01HD/Screens/MainMenu/MainScreen.cs @@ -1,29 +1,28 @@ -using Microsoft.Xna.Framework; + + +using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; -using RhythmBullet.Zer01HD.Game.Screens.Transitions; -using RhythmBullet.Zer01HD.UI; -using RhythmBullet.Zer01HD.Utilities.ContentSystem; -using RhythmBullet.Zer01HD.Utilities.UI; -using RhythmBullet.Zer01HD.Utilities.ScreenSystem; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Microsoft.Xna.Framework.Input; +using RhythmBullet.Zer01HD.Screens.Transitions; using RhythmBullet.Zer01HD.UI.Book; using RhythmBullet.Zer01HD.Utilities.Camera; +using RhythmBullet.Zer01HD.Utilities.ContentSystem; +using RhythmBullet.Zer01HD.Utilities.ScreenSystem; +using System; -namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu +namespace RhythmBullet.Zer01HD.Screens.MainMenu { class MainScreen : Screen { + ContentManagerController assets; FadeAwayTransition fat; Texture2D background; Book book; MainPage mainPage; - public MainScreen(ContentSystem assets) : base(true) + + public MainScreen(ContentManagerController assets) : base(true) { + this.assets = assets; background = assets.Get("backgrounds/mainBG"); fat = new FadeAwayTransition(1.5f); book = new Book(); @@ -39,13 +38,13 @@ namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu public override void Show() { + Mouse.SetCursor(MouseCursor.FromTexture2D(assets.Get("cursor"), 256, 256)); Transitions.Add(fat); base.Show(); } public override void Draw(SpriteBatch spriteBatch) { - spriteBatch.Draw(background, ScreenSize, Color.White); book.Draw(spriteBatch); base.Draw(spriteBatch); diff --git a/RhythmBullet/Zer01HD/Game/Screens/Transitions/FadeAwayTransition.cs b/RhythmBullet/Zer01HD/Screens/Transitions/FadeAwayTransition.cs similarity index 97% rename from RhythmBullet/Zer01HD/Game/Screens/Transitions/FadeAwayTransition.cs rename to RhythmBullet/Zer01HD/Screens/Transitions/FadeAwayTransition.cs index 78b0cf3..710bbb5 100644 --- a/RhythmBullet/Zer01HD/Game/Screens/Transitions/FadeAwayTransition.cs +++ b/RhythmBullet/Zer01HD/Screens/Transitions/FadeAwayTransition.cs @@ -9,7 +9,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace RhythmBullet.Zer01HD.Game.Screens.Transitions +namespace RhythmBullet.Zer01HD.Screens.Transitions { internal class FadeAwayTransition : IDisposable, ITransition { diff --git a/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentSystem.cs b/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentManagerController.cs similarity index 89% rename from RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentSystem.cs rename to RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentManagerController.cs index 6a9d4b5..4f85b4c 100644 --- a/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentSystem.cs +++ b/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentManagerController.cs @@ -11,18 +11,17 @@ using System.Threading.Tasks; namespace RhythmBullet.Zer01HD.Utilities.ContentSystem { - public delegate void ContentSystemUpdate(String fileName, float completed); - - public class ContentSystem + public class ContentManagerController { - public event ContentSystemUpdate ContentSystemListeners; Thread thread; readonly ContentManager contentManager; readonly Queue queue; Dictionary assets; public readonly Dictionary contentPathModifier; volatile float progress; - public ContentSystem(ContentManager contentManager) + volatile bool running; + + public ContentManagerController(ContentManager contentManager) { this.contentManager = contentManager; assets = new Dictionary(); @@ -46,6 +45,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem public T Get(string assetName) { + Console.WriteLine("Attempt get"); lock (queue) { return (T)assets[assetName]; @@ -83,6 +83,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem private void LoadBatch() { + running = true; int totalTasks = queue.Count; int tasksCompleted = 0; while (queue.Count != 0) @@ -93,9 +94,9 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem Load(content.assetName, content.type, content.usePathModifier); tasksCompleted++; progress = (float)tasksCompleted / totalTasks; - OnProgress(content.assetName, progress); } } + running = false; } /// /// Removes the asset from the list of assets in the system. @@ -143,15 +144,10 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem { get { - return queue.Count == 0; + return !running && queue.Count == 0; } } - protected virtual void OnProgress(string fileName, float progress) - { - ContentSystemListeners?.Invoke(fileName, progress); - } - public float Progress { get diff --git a/RhythmBullet/Zer01HD/Utilities/Persistence/PreferencesManager.cs b/RhythmBullet/Zer01HD/Utilities/Persistence/PreferencesManager.cs index fc2e718..3c1ffab 100644 --- a/RhythmBullet/Zer01HD/Utilities/Persistence/PreferencesManager.cs +++ b/RhythmBullet/Zer01HD/Utilities/Persistence/PreferencesManager.cs @@ -1,14 +1,11 @@ -using RhythmBullet.Zer01HD.Utilities.Persistence; +using RhythmBullet.Zer01HD.Preferences; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Xml.Serialization; -namespace RhythmBullet.Zer01HD.Utilities +namespace RhythmBullet.Zer01HD.Utilities.Persistence { public class PreferencesManager { @@ -21,12 +18,13 @@ namespace RhythmBullet.Zer01HD.Utilities this.savePath = savePath; Directory.CreateDirectory(savePath); preferenceList = new Dictionary(); - + Debug.WriteLine("Preference manager setting up..."); Type[] preferenceTypes = new Type[preferences.Length]; for (int prefID = 0; prefID < preferences.Length; prefID++) { preferenceList.Add(preferences[prefID].GetType(), preferences[prefID]); preferenceTypes[prefID] = preferences[prefID].GetType(); + Debug.WriteLine(preferences[prefID] + " added to list of preferences"); } xmlSerializer = new XmlSerializer(typeof(Preferences), preferenceTypes); diff --git a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs index d3a8943..ac15ab3 100644 --- a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs +++ b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs @@ -1,15 +1,17 @@  using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using System; using System.Diagnostics; namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem { - class LoadingScreen : Screen, ITransition + public class LoadingScreen : Screen, ITransition { private const float ENTER_TIME = 2f; private const float EXIT_TIME = 1f; + Game game; readonly Texture2D texture; Color color; Rectangle textureBounds; @@ -22,12 +24,14 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem readonly bool rotate; Vector2 origin; - public LoadingScreen(Texture2D texture, float proportion, bool rotate = false) : base(true) + public LoadingScreen(Game game, Texture2D screenImage, float proportion, bool rotate = false) : base(true) { - this.texture = texture; + this.game = game; + this.texture = screenImage; this.proportion = proportion; this.rotate = rotate; Transitions.Add(this); + game.IsMouseVisible = false; } public void InitiateTransition(Rectangle dimensions) diff --git a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs index 47683cf..0c7d364 100644 --- a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs +++ b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs @@ -10,16 +10,17 @@ using System.Threading.Tasks; namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem { - public delegate void RequireNextScreen(Screen screen); + public delegate void FirstScreenChange(Screen screen); public class ScreenManager : IDisposable { - public event RequireNextScreen RequireNextScreenEvent; + public event FirstScreenChange RequireNextScreenEvent; private GraphicsDeviceManager graphics; private Screen previousScreen; private RenderTarget2D previousScreenRenderTarget; private Screen currentScreen; private Camera2D camera; + private bool firstScreenChangeComplete; public Screen Screen { get @@ -42,7 +43,6 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem graphics.GraphicsDevice.Clear(Color.Black); Debug.WriteLine("Showing " + value.GetType().Name); - Debug.WriteLine("Previous screen is " + previousScreen?.GetType().Name); Screen.Show(); } } @@ -67,9 +67,10 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem case ScreenState.ExitTransition: if (Screen.UseRenderTargetForExitTransition || Screen.UpdateTransition(gameTime.ElapsedGameTime.TotalSeconds, assetsDone)) { - if (Screen.NextScreen == null) + if (!firstScreenChangeComplete) { - OnRequireNextScreen(Screen); + firstScreenChangeComplete = true; + OnFirstScreenChange(Screen); } if (Screen.NextScreen != null) { @@ -109,10 +110,10 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem spriteBatch.End(); } - public void Resize(Texture2D loadingScreenSymbol) + public void Resize(LoadingScreen loadingScreen) { Screen.AssetLoadStateChange(true); - Screen = new LoadingScreen(loadingScreenSymbol, 0.3f, true); + Screen = loadingScreen; previousScreenRenderTarget.Dispose(); previousScreenRenderTarget = null; } @@ -122,7 +123,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem Screen.AssetLoadStateChange(false); } - public void OnRequireNextScreen(Screen screen) + public void OnFirstScreenChange(Screen screen) { RequireNextScreenEvent?.Invoke(screen); }