From 62cd3db4d08cf43c81507921f866e01d06a62437 Mon Sep 17 00:00:00 2001 From: vinceh121 Date: Mon, 21 Aug 2023 22:31:58 +0200 Subject: [PATCH] feat: TTF font, use Gabriela from Google --- android/assets/preload.json | 3 +- android/assets/skins/pn/Gabriela-Regular.ttf | Bin 0 -> 69464 bytes android/assets/skins/pn/OFL.txt | 93 ++++++++ android/assets/skins/pn/uiskin.atlas | 201 ++++++++++++++++++ android/assets/skins/pn/uiskin.json | 71 +++++++ android/assets/skins/pn/uiskin.png | Bin 0 -> 28299 bytes build.gradle | 2 + .../vinceh121/wanderer/WandererConstants.java | 17 +- .../me/vinceh121/wanderer/ui/FontCache.java | 134 ++++++++++++ .../me/vinceh121/wanderer/ui/OptionsView.java | 8 +- core/src/me/vinceh121/wanderer/ui/WSkin.java | 67 ++++++ .../me/vinceh121/wanderer/ui/WSkinLoader.java | 59 +++++ .../wanderer/launcher/externalDownloads.json | 8 +- 13 files changed, 647 insertions(+), 16 deletions(-) create mode 100644 android/assets/skins/pn/Gabriela-Regular.ttf create mode 100644 android/assets/skins/pn/OFL.txt create mode 100644 android/assets/skins/pn/uiskin.atlas create mode 100644 android/assets/skins/pn/uiskin.json create mode 100644 android/assets/skins/pn/uiskin.png create mode 100644 core/src/me/vinceh121/wanderer/ui/FontCache.java create mode 100644 core/src/me/vinceh121/wanderer/ui/WSkin.java create mode 100644 core/src/me/vinceh121/wanderer/ui/WSkinLoader.java diff --git a/android/assets/preload.json b/android/assets/preload.json index 34bd102..bd04f83 100644 --- a/android/assets/preload.json +++ b/android/assets/preload.json @@ -34,7 +34,8 @@ "orig/locale/if_main.bmp" ], "skins": [ - "skins/default/uiskin.json" + "skins/default/uiskin.json", + "skins/pn/uiskin.json" ], "models": [ "orig/skybox01.n/model.obj", diff --git a/android/assets/skins/pn/Gabriela-Regular.ttf b/android/assets/skins/pn/Gabriela-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..aa70165d8536f4a0dfd23f54eebdfb76cb4147bc GIT binary patch literal 69464 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

SI1iuo-e}|NcU_#3Be1LEmzAX?F0e|C{@ir(o zNilY$U?&ZEiZY9D1-Y5ZR0Ge*E$}23q4h`LSz1X`(3XEtE!CmDBQzDht*2=kd4~Cw zK#el^q>R)=%BdN93oP(>G5_4xmi!H%}1Gfx$KU07v>@5)6pv2Vc*oSui5 zY&Ch2`Lf`fyA_&a2tKSZiO?Lrk0T0y*L&m}>OuPps24WEOVkHH<{I)cyh=szDEZ-` ztA|Ia6yBtAcZ(e z>4w)cOeyTGQ5u20u#HB^7I>Lz;ia5LzJi~ro=m3==-XFdshmJg#JJf3Z&NeId@pSw zeYBPI!^_l;{`?#4@L7s)jhuwBKb!kDPbDYAcQy^S)oJi&&LN+|qdSl7KcT&3KJ9}& z{w?i??{fk3vqAgcMQ4-U@MfMa{BrZ*OI!@^+(NpDGXLpPSVK$5{d6f=MwgKf=l~t0 z%dz&c0^Z0+$mQe;?#CN}Cy)8@*20Uo9^O3WvD*v}-WK7(+rd41C&6=fGQ4)D!b`Uc z9=hG|&Yc0z+*$C0|T{@QyqIpZQbFXHK7mU;R1w%%7((&_B}`;bH#^{NS&^ zSN$4&o&J^k+25iE;T?Ym-n_qYe;)JfeF%^BNAzR(TK-8trT?Ob;FbT3{)c`}zo3Wd zf8h)NihKROrAO!(y!J4Qu$4!aH1GjxB^^BVX_6iudm}u8X2~L1C7WcI(xnW^Avq-% z_Tv1Uq>~JIoSpE0XL1jCHpzkK{d4AtmE2MmR-tNmc;F;Qk)qx+wuf7)^^+EV6&LEG%N<9lJ13D=PKly$sM9lCTAA+CV z15ZW))*^m}wS)`d2OlEWl2-W3FJoQ|_~b7kzm%fnVp!9Ullvz4G@2&ZcO9yQCry>6 zeTTo}Jn{y7=|3R{;fH+(D-&UTD*SD|SynSeRcx2OdZO8Bso*>z}d1$+~li%q(h$EMXoTX$^SFtlU4u3srtJ6p*=J1Ku8s-453ywG4xt#)qWX|SeM zJC8TtG;czI^8}jn6f{%jZC$%*wRQn7$gp5|?bhKP8&_=@IVo+y%C#d~N4Blqrd_al z>(B`!hDC{o+C?0sUCdw8FOE|~JEV|&NYpYUNIsm%v63UH9pQ<7B>q4*BHkHECSWk6 zUmee)Sp!<9t*v5CTsX_6wd-_i#Y=0GUJ8a{g3dAR28C`L5|pV4wQDyi&`n9ua8w=v z^*2u-)@G%2Eu74(54R@ekHoawI8;!-PP;wvG+5K7-Jwu_$AkiR2y}M{>hIvxKam$? zI59!sv=ighKT)Cn&cs9QPKEj>^Vjqz$LS-l8eElvFu0b-8*sm!qZh6Th_pteL6L@( zG!W8vkL(!TzGLgA;hhSoD+Pyo-5rEuBjFGbs~RV7$$loRMcPaTI zH41)_8c}{oijeGySlq)oGvar4eNH%A2KQGt0>)EE=@F;PRE zD5*|hP$%-$i5go4C0avTh~@-0i`QF4_BK&Wn<%DDz}rQ`+XXu9f&d+&*baeChbXT@ zl+z)~=@4jih;lkb{!WpV7$$loRMcPaTIH41)_nvS%2;K-r1+lO~r z#FfgSX*=Ri#FhGljp$&YmNN@dUKdi{Mx?w>q`dQx^16}o&O^#^M#?)6DaR=oh$+k$ z5Ht+5DKrbTiSiTygnXjBm?$qM%8QBeVs%pcY%X*HLKX#DIT^cZyEu7*H8oL9=Z>wL zc{_qNN_jPkC=LdN$PBba41D?=-n?qoY3BHoQdTi27Ejq5kAhaJVd7I=a*vEHe1R>2PK zLz!Bvhf<_?1`j|X(nnzlWx{iC11yy*V3}M1JLhaz&nLrH-vm#=8hAFA;x`}IOoKO| z8D4}S-fNIeh|iVTitV}bZ9IOR$2ar%H6B0DKV1jvihOUxhSfFH>LPn-k(C!Pk7;zSP*g-EeS z!NKyefHlvI&qeqY>4ymKCc)HaYWfDFWAeHq*7Mlu9hHWR!X@}AtB(?YLdhLC!$irp zF{~1z>Im29aJX zQuVzn#Qnu0y}-T~^$`2n_T7k2wr{s@;`eJrxtT4e+O}k8$`zBE46nPh0Qc@SCjH@$^cOUMkX? ztQU#r=kb)6Z{1@(gVlrdW$URtJ;6F^U5BfcA{`LvLXplE=?sx}iL^ze>ihNLK5VVx z^_5t?Jk1fQQ>0dr>P4!tjPZOL%a<&*d?wOQMEbr+-xlfXmY0z0Im?qGeN?0mi1cpD zZI&C5<64nkA<~OQdcmaUd&Rx_-r3@Qw@6R6Z0C4w;^nWgtg!HLW|=S2nIc_b!FWTx z9pb*(avSbyEtAurrNRPVy2T^XERkl2)I2Fw^Q8*7`o3i5C!+_i`(%*>m7LlsY)l@uZZR79#dQ!ft&6n|K`$f9Xd@jG=XFiLk zyUZuy&8_AQB318qnOAYRdcWMfnCG8s#`wgO9+9?*bgsFP!=vIpU@qhLh2}hSrrB;b zic~97G7)b2TDdoUF5u!l)29Odp$W4GmL}d%#-W0=^&+4K;9 zey@p-N7GFry-uX}nywVjFXib)CO#fbdrW7b)Kinv6Zrk8X`N{$t_DQ9P^7a(I%CrF zE^*%?QuY0MaUVAE@n|YB@$qQN5vfz8)=6+Rzuq3?_-d5YI406BC&526euAU1?;GD1 z>FXkWNupi3kdH=juclTZpNyM$d25U-Sc-aii|2N(tX1nVs_&`K1-*^I ziTZ<4rR&|IKFs~>&sZ$z>EXA;$o7BY51VoM{HD^&n4!RpW|5|fRAQ-djp1A6K0a>= z`ENL^$Wa5AQl?W4AF+H$)q6F4Pmyniw?z7?NdK&qYk1c1IJ+`DEbi6xesTXBmKts` z{8~wI29C>x_&65*X1H46Uo|xeem7jk-`j84$5LP@#r2jltGd@B96PMnVnD!sV2gL)uMd40A{G-iymWAwMu4zC>-AYAR~6tEs9-*|#fl8XEEu zJfqmFjx+J}ZfN?He8plqhgksB#jjn=dcZz*>@vq{jDcPAw`#GXgj4A}Pd~RXKIGRI z@>om%ji(j-I)h&aczgqoQ+a$hi^-RK7w=ab;^J{Tw?96`suaaqB`c?&Vl zA9DDGJT~xJ3_Op4LnLm~NZ6MQ960198TJr$@%SVeb`ovm*Nx1sq8s@227Ybf*WdEE zo5!>1CCIakxB4V}i-6GwG1lAIbv2JidHfQOy;z-P)MHN@dAyv}h}GL6K<0DE29Co9 ze$97oQwzWTmdEwH-g=&=o1Hwcg0&qnv*fpYpxuIJdz{2s5h@G2?_$o-@qf4fA)y%$meg z@QhT)Y+kH8GrkJ5cgc;g&=7O1Zsb_q$jfBXlG0|`j5uZNE*`&toFDMEe86i-8E01M z2fUoic{zXQPyf!IV*Qx45od$(ZW)iC;$=R?uL~sDyR?Agyo{Gtz;Q0%I2R}oh81>R zFq{kcy9MlB*)(<-v76^__l{R+D#2RNQrX&mgDp2K4H zlpNqKE#&2}kqo~8gOH!`w|>NGBtK&{Vhs~?Mhv?gF>C2%JkK}WpTMLKgR^nk!pf&D zyyO^%#F)iTW4uQyS((@$z_9uif9qE~XBwwT8qc4`sgcIpmB!n32B$_E$1sh(i~R|p z60PFz=5h=VGuxZy^0#t1hKG6nT%O<0^ZWVr?HqnPzpmw!tmV8^%W=q&Qy?r4*1nMk`x#mOdHi~p437)l#pT2Oyv$u9W?1dwb?w6LOG@`} z_*WeNt-OR?yo55|?`0hSGLCs3=lQ&`7w}dghgb1;^BB+5LjG0@f2)N*oyMQG@G@JJ zGWm5GzkZ8fzs0XNGcOU{%(1WT>Bs!~c7_|doxO_~ zSRqC)kl%6$b~!Q#&wo2FZ4WPh4=-&Ghn&qJOe4eBO*mvF@Aqv-9spz|?+Z51;+j8Y zvmn00!mnF7Wm-Art^BQ4PLo#N-suc3>39#;@V8p|TbudQ&Ai^t9KM;um+=x}d_*kc zc~#Y9_!_}_3{#WdC9#Tw_e_&1su0iIBr9{ zgkF>&VJ8IpHVxt5ra6OukLF$M-8qC^KJ0rm?-TYtnh)_k8X4!zQm`xP3;tD_uPOT~ z&9~U;m3@^4r}pqY8tkOP_h_h(?*}Sk-=m>^x)i?} zzON_9_VqyK=nVKa4R$5r+cY@;#!lxovv1QtYT?^7nA!1F8k}{*S83>S z_Ej3pjyY%p)2^9j_N+*mZuzhXOrvDl+ASjd8tuLs;WE%*KYX!FLu6VZ3rzcCnjh2l zRM_NnE8fNTg%B$|x|{U}IhRAu<=1cGn=};r#Gw6PM+-9J94CuU<9VLt@h^CM6OVt( zh#lMj5)UkcyHmqJd(PsT33(@@iH{Fr<=6Y<&DrA7JaWp>7GFRu6DN6AIl zNhM=#B;Ryr= zyABlFH9k$+A{XMRju4lvz*baXE7(Q!nxpV*ufKR8@Ix<`?U3y5?7+u*Om;Uk;t<&W)KJt{&?Qxji zF}hq%ZA##SOoP#!mfrHb7JW+la@HgY- z?~mtiRP&F$BE2d-7l#Mv55~vh`CpI2>(%^>n(}RNcmsoj%AbvYApcN0gi+puFY@_| zeFdDT5rv|lph9JAD-OnDE{D!vCHZ__t-}!tMioGDvCrqoaE1Wj5E`<{TT%`AV@nK< zLigiyEZQ_pTKc_4m$Sr*$vQMY#||o|WtJ2U`Q4|xiqcava9bUj=k{+XEXhnmSKNJ_ z+hF!+4Fwgyxi}}^YILWvSF{;9(x}5^y2I!yEVkrUzm<_?Fx+T#`J6XbYcg@R6}BSWj>vDOz0GL9lTH=^ID6i6sM+Wj9R;Hc1zQ2i!*JkwL0Qv(!+<- zdi}r_d*@TURZ=7zN7LtxggJ}*yk-eRX4u7|z|xTcj;F)3PMYcW&pdf{+p4;zDu>0= zRo5`H#u*-JZyU&wHEAx{ztvp7>YU!*J*(@B+A6}W#uP_UPIZ0lvMsf9&YfLTsdcP8~o9vY|B`uvRcU@(RFPG{KY$|(f#a~7@%jUHI+pL*e_=gd>{TUT~glo|7b zUTtbYDgBBQyK(K=(}%BF9{R=p#x08@jJkE<2n+&t5?rY_7yIQ!y%AqH8Vf~KjyOi` zju3c+v9*H34!vpMyYTpZn)xPy%b#t9`VWtd&d1h5!{rPkMp1^5%qYsN0-aQgeeDb` zFqO2B$4tko9RC1kLl0r+e$vRaaRK;0k4DK7ABv7llZghufB30mkDk-iPtG|`!8woc_9$@HP6b|znL3f5$wmbpn*e8=qrijT0S`@pGnuL64+9RF zDez%3Q-L?C`5`k`N{8a`05y$|F*<|The2nIKb0@pB=dbVhHR`incNu}ZqT(PLDvO- z_l|^Eo1R_dGFt5gQ=4dG)6{|q^n5x_&qt~X4O(^*+Bf!*bU8*zKXCFgkrY*iJDcCQ zY>Hr<@CQjkf@kAWDiuwfXX6KAlGEDl00E4ec1n^9@}y z+`W6azND)<+?t|eQYF+9TeLbb`$w}1J)!DCz1C~BdwZI;uREij^E_*p%;rfC=aD+> zVCV2753u&e;Z>BdX-uJm%y>b`A7c4IA12wEmmxHb|tRoryAQQ;oQwM zCwE5Exf4DK|-teE6Nt9t%7GV{W2X2rSwHr z^sz*b3+kW`OU6Hw%_y&!pAggGeA5u`b6yXZ7scpPtrV$YoWP*4U9n+jDIrz8NHd~ zOkBqrf6<5{fE9+bVPIXI7*~Oc?CRV&OGO6E69aj9R$C-An>c?#Wno+{RaZALZ^{7!RyJ&7rE-Gi>-8rOrm5akz}C^5x7L z`!+4#{Wp`{oa;z8A2mQkxAUGHdyusUlnwBHsDhP+Ex=G;&pKz1Bn@rRdLK12C@Xq7*vOE%bYa+FylR7 z49w#2D%hJ0W4FKrsAt5R^?7-T z&i_)P0Ry3Of2#i_wG{@T0$&e2;E|EpT1~AOnX&X{sENGW)6*4JgsS352XiE>B3bsy z7=Mc3%QCo%^WV@S40k{G(msnZ-6qKyDS2MgUyUx08~*ecqAxh9EZNeH7Nvjp zYVy6QzT8x;cPx$m*J_6>(H0k{j(yrR#|w>IpP#RDrqZj%?DW&IXKiH#+Oj&BOpJ0~ zFgEkk`X|W}I;p>zfk73ntx|dMD!Pl&?jbh)=yWF2$k>@ocR_t|Nps{WdPjnCV{_6o z4R)&(8M}z9Ea*{QKkt9gjA^qtbICYBfis;%f!E^PCWnIqfNvaL1z;9uOQ%HBgjVXw*!lmbpp|7NMI)FYIBH{@hdNluo^Hd(WzfDK9uJG<8*^W`%j> z^{bhsP``Rl@9OJUHq80S{GtW(I?EPaxM<$Fvl%sbU7V`0s~A;r8ZH56vRi@2ghs36 zXL4GB2PeRpq*mZzz?tSYx%?=Ftcb&z1XuDmvU1=<@QptLP1=MVqF$!OxngSTUD$Fj zOgyh&CqpWxbDJ)m(*xpFcHWh{Z~>!4O@*T;Z_xtS7P#72RrO4MA*k_JP{vl`d&VE(0w;KK>VMHh~p03wx-3=|xB+z`i;af^ay1ILr~(FgKr z&@iL0vlZE=&Mn`kWX6R{Q7~p>hN`0B$!nPyiJ>!lE*zz!3FY%UZR)S174F7@#@PX9 z?HY*B<<|@kU$f%)x_yIN3Z*-1myXuXKYuQGp4lxe;50~eRZmW~shM8NCoQh0a;usf z(Q&;?F{7*3{GcJUZjLvanyPg;duJEVsP%gEOo>(oxMDoFZfI>@-(s_;S#&FAhUeBW zi*63rpZQF}F?kO3jAIg?19ejZ74R6+ zTGqEGu#3zK+Fbgvy^12pxza0JK&L|Z{d$x!>GvnA?R;$N_%x0=9+=9>gVe> zAo!U%TQG2?JIb0WZ2s&j>I|MXoGuTKzNa>Nw8JqqL(wvhsv*g?Cm#PO&fg zR!M8oyfl5%=w5McaC1qKiOJKYi}tF6ynS0~iasS+*L>c>nIu29rzN4VNVafe)(m}aZo26F`E$|tOzvR{QvEE9LHg&I?WxOjc12Aw zH`QL{wCiW@DXb2&qkgqSj&Kf^36lcUmC>f**=&U`8- zaRSPTAQ9ZM!W@dF<59vI?99T1(ZcI`-UWxXW zl=Ma?!e*}t0AF4|?~etdKgKw|3Y=NN3cLr(|D2K-IXfq4b503Djd=!>N@^DsgA z$rd7;S5#5VOa$ft;#Q%P+kbc7m|m4-`X{b!7TxOAifPEa^TqaCf0I$1t2{ENZd_+d zWmY5l$eBgu|76u;o4!`-GFv@{3oo5u7#$nKJuF%eA;DqW@|VX)n$$S z^MTqaG_B5Mm?7n<^R<1W# z+f>qW@lwh+2;D%g1Whq& z6BOkd9_YxGBgJv6EGj8FGSmmBD_Kuvt3C|KCnlZ~0|7Vj#U8u|74nt38Aavun~na` zoHT7(p0BJfCs5tdH+^cXAzPPfuUS~%Fp%e6-Bv%nsC?cOeNjz4y*s;B=eSpz%Q}k6`ok#(yD8Od@<#J~b(>c&T;+16>-GMEKzVtfti8Cj zFDNn;L~@E6M%OJ|m6NMU*QaO}wba(OfcxFxssilJ15Ysxk*~BVZfhI!R6)1pYAkO$ z+*xQQ*Uo8f{mR^oinQG6IcB>n=xOisHJ9eQQ?+Sn?vQ)R@@U5nvo}}T;>^nO+RaCn zTCJl4P0PY2bE;8mH8pSSo^|>()Q;Z57jDLw|4`^=tcIiXFdz~qrk3V)ZESAbIJI{; zR-SG&hRW-@=5+To%Gy+$>|18;IAQwC6I!P?l*bGy)`Fap>d__3HU?$8UMrWB3r?Va z;XHgAcvveHo|1rm3;s}`B`Y{|>@|j899rFx$jkUw$?H8OK0ZN7AG5I%+~nd*Rf41$ z-#19ZnrK0ZtX4Y zHaBnS?c36n<5}8WQ(UNXSA+rup5k<^zO5v`uBb84=`YllHJ^V@uy;#ybk&09fyjoX z4U4%qnT_FF zq447$ct3OT3ZbByY&O>4@aY~yRG{Z|K6v)i!#$7= zX0ykYQ?@YG+Ol+@buJedh51$fy{;V#KaB>8!v>8tCo|s{j7i39tHyf9&zoz6*zow5 zOr23_A8TESAuf?dtbp0kqm}qpF*)YiUNjP4+~Yi`&dORD6G23sifMNJj3Tj+S5;ab z$t+(`Jz;j=aOa!e&Q6Yt{` zEyY){;&6F-9A1eXS8=$+`cTR5#a=EpGy3oa)b;2A>|zBEM<5KubU4vfAmkcf&%{!t zBHrjXrG>?T^421=-Dtek;K;J7L(JANwRn01A7qWzVC|=&NXIF&s%x{Xmi!d0r$`DZ zqigJxiuU4#1D|;vP(v6tE`d$ccVlyG8Q}On%;u#UTUG3Kry4hW4~Fy)kO5Hz%QGMY zo=HL!)Q1n0mU3zy;3LiZwL(ik!97leo0I2QL9zQv3k4E3g*fJ5Efv*_oy^G)FP)7n zrS!tDSr4Z3I@yR-p#FCN#ouQXJLKcgf~Q#CW8fEuCd&26JTG{josLn;g$zbp{NyTr zf=4HLDKrMWn~Hj>B{r^=+AE%CP&dZ)!g%eIXvCq9 zf<_+v->SkDnLOgzb`Nz9)tZt9x7v4$#y*-jqBF!4`A;^289#p}g~88VoP(+*)lZjD z+JvQ*M)se3=VhHTpRp}EE{w>W16QrGqRk=$F+b1kNVy(I^U=QV=CNCk!DCXFpwc>($Dj|=eEbip#rV<$Uwd=4u>J(}R6Zj! zDAwNC86n=!53*Y0xvL6UUw(t!<-i3)7qfIE!c~rBt{1CsinIV;Y>`dn|IKNZ1@STP zY#8foCA30_g}Y){Wh+0Thy}JL`I&qPc&0;@3fyvIRw(9x@NwjoA{AT{WrJK=S~#t& zrAV^o7*C#dOzBnEUD(u|Vnfp2l;_G$&uYXt{d869jy_{xiq}G?t(qXts9V8%J%mJ0 zFQWOXNaMImqre@yq9R|v7u~pcl}Ksf{A1z=>DtwjgxGgt6GsGn$X2j%E(?8l1Mk~H z;h$6BOg~WICD{GT`kbw|0`oY$3OjN+oR`BaES6s@m7l=)vShqjGNGN=2TH%cORxrx zMK^e(=$)*EM-M07!pMl!H? z0A)n51H{98r^O6L>ObMS?P%#9T6s491fxNqzO4Bf}*c0yoIvW8r4|{{uH!j^j3V@Oa39BS1GZ=$6kVLxk;= zIkp1LRv?)U9d~EZo_tq<_FJuU1N`-mEu%t*XwEvBL#sLvF#RO_dY;T1P&v4rW*_ zbZU}Q3la*Xx(k?8s$R~dnaUATbbyHqLqbz%O4e+(w(hdhT5fZsn;qd|ruuT7HZGUi zXLAK5#hzogJ0hp7t&CyLXY!QQ&&T+Kiu7n_<4A!r>8n6X$~biFL56D_T2;pSIg0uA z2DBhy6)TnzGu?#?2Tpgf%B4D26eeU%ak{w8|6WahRaH@{$(UE+D2?O?a|)*g1GB?j zgVjY2OIA^OSye$auc$k)!JJoD?5#-AY2EI;VtZv_WBS`_p^|W3Wo;H)=;n)^EnB8GFUaacTkx3X>K+$@I?qN-JT{`pX?DvL*Kn*Lr(KUU7O>k2zFHm&1nD`-3^w z)N^3DK9ry3$?}#mda|Lg=Uga zy;W}V$6^WZ3dSwID?SSfT-Nk_vweB{^b{+&|Kwa(R=TSxtJk^2yrBPUp~Agz^7d6V zT@jbnVj5cv|4EK-c|{nw@LD;4Jk4<|#5c|u?h2gQvkJUa%!~@0&8`d%&+^VhZZ^9r z(1M`^lxa9h89sc?`e?XTD&jM=QZln>lrk#T@VxLh@8>+Jlo6m)xW8G+&HT*@yiC~7 z1T_B;R22Jq7#j)`#)X|;apsK01lJiuEyad>DOC?D_T*%zRHk_gDr&PGF1_(YNp4=qcBfMHgRYj0CD83LT^I;Tuwl;wEy zp8t#J`7e0yC~(%p3fzy=UWxpyj}>?Uz73v$vtCxlH6kIH4uE_{7W(D7nm%LLP4D-P>L=t2k&#O*j7B;B4>rZ`7xo>?ootv%REG zecgKC|=zo57Ulc69Bj=&~Bj3beoUA*+!=*@%Os zP3bt>rFLB361*@;X7GfusHMJ1o+a0k+U}X^m>f{YmLTk2s|MHWxb<73kDKU);CHSKAaF_eN!<0 zA^z{xG$!>@&=m!Kw)n<(CSZ(&oDLmZev8Fi4tk9d6?MQ2G%y0fluqW7|TpeI_I(Yy0eonBL3T2-IjQxS1Ls?9r=Q*-|A zZnwjkd6Z{!^%V`B#6Rnnq(CT?)InEybzqDG* z51L^;CoxwPV+%Grauz29$iT)RX!6};NUa;0TGHms?W<{>TU!Pfi_a6Bl5=y8&uSL# zGAw6i+*~m*om1rx8oN~+C_$Evsu;+U^BrXI<>nV8k)>%vw@zy}3wIm*Z!OL-l}Hu+ z9)Hy&5^=tePX~o&V5h~3|BXU|J0=oD(M*`<`u~A2{#IvpPi1x>-R?~@YZcE4$Wax- z;yN7NNkp+|1OD$NNqC`gCTC4~d*5PL`!PNH z=UkA}7(73r6$x$0SXq;v6Du6uu6p|U%7fI2KAn1;HYk3h$u4t!%MEX~8gB(DHpP_#R$72I9KdV8?fI+IJ!So!lhWRx0s-x15Fl zG0o4`8dTq}lP#Ni9T1mnTPl~R>gocQplpK!lN*kV^U7j;*H?Z32HvYc5FcTTLXQj!{#v!}r2 z$LxP^W9Mk%xL{Orp934GP##{JJvcaf_VVSuCDqZ2lByV8J2H3P%9Zoxj#PIywa%K} z+RXMAsb`>ZA`rS60`zH|x%?OY{~opz4;G2Cv8_Ov;NpjK*}+w?k{Aa{`{Qneh{@&7 zF=X(=faSGjyUmxP&n)q+@MpSwMV6jEe^($sTd&hK7R}hy7~Fz`(y4Zzhwg5ihQn)V z29xP_oWJ#3@~X!+RYx04lJRI#RqfHi!%>b_y7 zFdn^Ykm*zrZ2fUM8Fv1;x#?D4N@^xtm43G&$DN6DbU0E*8ylzMTw(^tq^Ou-(&+Ko zaY#X_n;zmjW&VY_*$(v=;y8@SyN|{}Ikb$U8_=!MHHvKqB(fZiEFfX3ig`_JLyH3c z>c}wT94-b9_y(+`@)A4mqIQyloqP0G#LP*({iu zmSa)QKy~G6e?Imh zC@oItg43~PqTX}v!#%h!3=d}FL@L{lrND#Svnj)Z{!IQ9Ei1wIAl7o5iu`PAVjzDydqB*j65Ml{`qS!I0Ft~hP^_0xT z)}U9GbY|zZHrZmZ-(+w(3p1V$v}O*b+D-a&z10!;_L1y>!)mbW&34^jW^3T-^dhIr zaFg9&k!{yH%{oc;*4P$jPWcvoEW0Vgp})guOt)HHI7b!?++9#;pgK9#`n)ri!FGFU z-0rclv~b{lvsIg#>$KaQI9g;i-yaC4QOWIQ8~3akG3WEvR9Qz2g#~v9g6yD~m(g4~ zQCffwQBGfiqg}AdQl$5j_NORq2ahI8KhTniN<~xVhJlNd4w;#^Mw}C&q;Xw)eYrvJ zYH6Q3+tXR=&Pp@pbGW~Chq55At zjeT7e)2p-@7L(Rc+ECcg=B$f34Nn-2x)gJ9Ut`nUOvkF3^^3v4@Y8^)pGB`@Z%48e z7e@+dyfam4Bs@)28G9~cCggWkai;MNeui}x%`S8rU$BQx9FxaFFvtgwR@&BN_zF|9IM_Jpr?%eG+jBt06yjz%8!Fzzu|oBVYXHr&h|el z@G$Wz|z$OTe2csV3Jo3TqlO8Ee+G zxCi2_dF17ZgkUW;hpHLVNon9YN9{3r4h+TTvt+6$9EJArcJT4b?0z8>=5-R6&$+BE*cOcQ+s$0{9}ytmk7 z?Dpqo7f2>=X{f;*4CZ+XZF#Hy{y;^AE`=RFjl`ElKiJPY|V(8^9(+Ch_yZYYryyrD^QSUFbA? zZgOS;_mb=5lQTc$&h><2qdj4!7N?1TDRg~-Df^xT`w|hm&j6-uZ$JA^4(o$A(FdCp z%+)@?=vBsgjEg`n;he5?rB66Z>13_;u5fdp$YIW~=T_!fKlX+4HQySYrLyz-p)6a8 z)A&1s+3q&pQ@Pk2D)rTwbRL&8tG=y}Zi&^KAhYyMg=62o+AxO?8h3Th*z(o=(9AeC zY=qEMV5gNlYZ#7SjlU{K@xP{`MJcM})hS0XxvcSd6(2hE&bVY}55!yxZc-;&p@`6I zV`fp7(LQBm{hEz>jnh`Wc4__6Uv8j!m(%c&(P(z0T>nu0(zVrAmo{zVn);P3b|d=6 zSmH}zA0qk0Y@~8<`Lx9+nklw2TJl;(x)$x~pk?(stdk^?Xt}0zzRn^_qU8zHL&Ox2j zt{lMGAvFVO~r*(EJ3ytNmzEU<53 zG0|jr?Bfx3_pz{^*89$_?p8}9kB9xg`HiHm>I&zcd+rI}J@?!VE4Inu;va!ORqm>J zp+Z73Id!BC;$!JbVB z+Uy*LTwg13KCeIfx?C8RYA$e+Z|&BzCjO+ky6s&qZ~mzUlQ#_|4z{05F+YEznhu)55D4lN=M4n+-`7 z?qGCmSsxKx0wqR~s10My5ZN^f-Kd9TAKRLl%GW8JJ2}*Q&3>+1_NBw&v`_vXS;0Wc zi)tH}MD+8zg5WAyi>DFY47Id{46uO&ld-;pW<93*Gr_nwXspg~Ivth54@oaDRxjt~ z5g1!V3k!_PO;#fs$YSl<;|Kz62+*FFm%< z6U9Hw|1hLk_@mLL3w>EnYq=9xf){MpTA7yhKJJ!KhPk-Vf~l;13$-d5Zg#~@hikut z*Be6VmQB6h+dun4!+|xdQOX5&kFs%SeWZo0n=~^2mazVlWn(v|!6|xZS?q}!p9I2* z1Z!mlE+W212*zEt|_i*o?lK?j5h1<52a%QJ2SO(|7_aG=7M(o38q#B8chCf6mc%YI% z)RSNf|3#6l(xlTy$fIGVX!!KhU{R6)b|pvlmxbEXl7=k2P~XmK*Rs=`!oq8p?4Kx} zzJDgObgm`PNtHuO_v~=AOZ~@IdiutE%EwrUbL;~rxBuA*Hva*=LRDnIyG+B6yRd>w zqs|Jh>SmsWd-b>ck1>9yp|hb^D0YWyN1kV6o}J+{Yr}a1dSt*B$Zuo!@cV{`M`lBE z1enoxp=I0(1gFDiGpAfmd!@jccSoEqf|fc`GafB}V0zC1iwbDV&c%oO3c5h@6u zuU_;F)bk&``juNuuO~_VKV*TFP~AImKV;c@-?1~Vnwxvo^)rV{de_qM?2%IEW!e>Q zztSi|w83m5aJc=@n+_g(|49@r7~1{nz1`Oz9Y65Uf!+7-q(}hR1Lp0&L-rp2bSs>| z#EHoYxZlLYn*BhXQ}?@#c$;Aj8h^qM=~i5l>JqQDI<@6()w@n~AKDRAhh#aF@yOp+ zu*y(Mr26OEm$&*nW~;@bgu}`~ce-0+NPsSX*5S9hZ=4&wYFKki8Jkwq8Kh<)ZjahL zj?RVd*}WFcX4cG-?tW)`f0%Ut>QnqrAUnX@DcgW0_0t$&A%7jQYEr-6C~QPdS-KU5 z5tj6{r)_4*?eug;7iLFxsJdVIv>{1dWFDH5)B>S)d9=eTSKijYZwS$m>?rJ?zWnmg zPZ*4~CQ40P(F&#hMfR547w%l3wm_5~653F0bqzUWs@@pHWz70DeQOcv92Kg`xQ1Pl zcgaT2I?y-uFsi=q8=|qG6#GH{K=<^P9h2bzbn9UI z`0?SJ?=W=!1DY+^;a48P0_{LCZzTm08q8s>_9KcvA3{gHXK845a?6rUvpVg?J)_H~ zQJ1uVZUun4j$*fViW$%={RDAU5a+NPRJGi z?}UW85&=}2NenN9*03+;ZhZOI#SyQ=;lgV5$p8EfbK{@Xf@(+R;2~8fswyRTA;aBinM@GA6j0_8!#Pc$z(I&8R>0w zZDqjcC5v*gA};rY5>cNw?X$UflN=Zg_}k+yM?MJW#1yq6Z#NfT|48vMkdeZCU=)VGx{uM*qb^iH5Qc-mIWCa;p&pp^8Tz?Ws%Hqov)AIwRDiCbJ z7LmlyzPBN5|0S>#edt3}L})3)Ca`{NrrqFJ9Ga;*Ce{KwFqZt9tIKL)#pLI16a zem(k6Lya_{2hq**G>WrWL$cs|g@)q0Ru@8WZ`wtb-(G^H*#@%j>mCW*iX$=nJ&Z|e z7b}YB^9B&we*ZU$?ZngW01O^0y=(FZYyWAB1b(VI8F1g%^(}`(yh^cte}m7_f++Bm zH6@r}ms8|LH=~2~2G~I9jGll}+%UYKp9hc1M6~MdOm+BSj+k4ASk3F)Abr!>UP-JEXLCw|MT&K z{3+lk{2$Pd$e?YV^E1NEjggSA1Xr&<@n^UuYoQNJb-gpzRj6E>20TQyaxSS(rDAK& z3$onNMu@|3D&bA&n@w@52DKZ#Bcq!@F9y;Yz3WB=w}nlc+KL01GDTfyU%q`1)26_u zFfjqR_<3Wr+b^77?q^+KbkQ2+F7WyN;Pb$GKEt1YSL$@PPN^D{QaAya$;&b(sJR!w za0M$?8ZfJAblD3bxjrr6HRh~|HmE{EmVw`-`(cCFa#8Yh8K%s%B7)i$eNYFM>%s_4 z2yMv8F1>*-4^^N6bA6t55c9t?6goJN5W^qa&9BFq_dw-|Y4?R-bGscRsifi#}Yxs(`a31#l{C=R|7PX0j2h%MmIR6#6P^l844@?0>Ra?{#bnl-1hBHv5v z7;tsHW<9V2%u_P726eJoi)nTpcb_oE;lJ`b;qOp;;Y}lIAUB#pHst0QJ`cge;P-lj z1YOFR=8g|wy;lE>Vv|$39fx;JTzQfc!h?H8kg8ANk5wmp^U^wM?Cu}{ki@IBPQ!SM~ak8jg(%n3StO6Z?8-at9S)HS6hLlJA4q=>|*6}cfr&N-HD zo=8lem_sF{w63aHeWh0lshR0yC~oJhLuaa|rmEK*?4C|JQq|n#Vr*PndhJzv-}Its zL9+Q>S$9u|X0?fP*GwI*T)T7It+NBwD=LZEk@l;vs2)OEH&64Tyn{QBDnr99whz-A z4H}J92HMnsp#Y>s>-jrSoHU4mk45>gx zW~j4~iJ4@==5Nnp6NY$!OQ_Zq7K?2iPmj2?k>b|rUcDoc?{wH*VyVzk)^ywN3q4*i z*{G%dabBi13x>y6SJ@jf)W9(4l|fmy>sH+-%m1G1)9m)BX!WKO1MNP4$|Kty?o26j z_uyO@Yuk`5^d8BROsT=be-vVp7^7as95z-xA$y#gM=t`hIr5*N0B`1A#y`9X1@%Oy zI$C0o(A6a2?Zv(XW`FHYSJ9cikc9YDuTTBCEURLZ1gg@p2nu9cD|zwO)~zUB{k(0q z$;D8@ny^0W z40(nVV&Fz~JO)I%z0@!Nnk#EqRW2%-QaSA%E$u$)>D=0%FKAXh*jsY+Pb7OJnffX+ z-oMsW4@mBeFIYIPUw=dA;T^qEpW88XjTdNN8XD9ZYRB3cETF}uU&krl7=TG^~B?!dN*iWU>4SmAsjE{Rdi0scSP5fv>_(i&;-{nNa4v(<+N zFp*`t3_gn?rc6*!d6EQ|G04z-mY??SA1K7Enl#i?9oaf80lo^3bd>vxvraLhI=}|K zCw26)<5L6OhqdrvK9)CIY~ElxQ>t{AI9XI=v(%lAbahre(tA|ZVp1jt4@UK^x%4bs zVF!)F--JHy-7vmb?BQw2>S#q`gD)_3XI|0`G0O)iJXTTEvAwORxj$s}H8 zukY=)2#J>p>AFyM3^q{9sU@t1`&i4{Sxpe5ZtVhE2>-80Nj207%4Si+ zU9=E`L)hrZZ_b$`G2Qz9*Szj-yXx|YN!c4yz9i{spEdW!*uxpK8wJ}|gFPE73S_(Sb;+~jYPLw=`576Y`L1}#P|B8JzxzHOats4JT~qv~^8 zgWv36V}GSkIoJzj?|R^K0lccOLcKR zdYXN%_bJxfK@U>}0E0@}eHqlY+O-WGNT`I-fsNru`?Kge1N) zTd8cCHKwhgt}2z*U9_0~el@HXDjiFSwAW^d!N~XJ9?zFmyCY_{dD|0;uKJTc#ZD6S z$wE-YiUm?ml67;hsJ;>qRDOq1X{^12W~i^Gi$OsE(Xahp!1CX=oj5Qu)#^dfno6bh zRrRn5D=8qMMn!_=s(&n^xL~r)K!~`CEW7O8Jwq$W{%9s9T1_@@f9&At%HfeML!#EN zl!myl ztf|5QPk4SY&{f2+awwnZ%j=#KOvst1VJHG7$*YU}Es*4HcnIY6)QMS})FaVlxk(#H zLDJejlRi9FyFms$c)u~^eC_Aj{m7wFzbMN-SAUwkotVX%tlL@k_RkhVq1I#adl)Tn zTkZob%_s;QBG?2+{+qi^7{gF=Yw-Y24d{?6OC=)vQ;?&#%Z{BHk;12?-Hy zfBWI~F#I3sDI(XGI-W-EfJgd!IvThn{yv#+lF#`6OtjAL)kFMA?sor}2UeU8zmLIIOBx}+bx%hNp=v0-v1R;aBxTc0B#XgPk0>Dq_u zasZTw$z-c`ZOB0s5pdn@YAOUH0!A?7Ndy83k4)Cw?M>xe<&o*ZM8IaTM2p@nS9EnA z-$UlF<9t5Z@cLd-8Vp#fo%yPyimF}APh|_!8S+RVjTunU)rO3OKZ%ab2N9TdA$i5> zcyEKe$^Bg?Zs7!*hnzBx?e8&wbYGl#UoSxL9*K6Juu=m#^w> zx7w6y=ipY;(^mCy+pdYl5#CD0ZjVs0TU2G5?MvkZAXc$>@#ro}H``71Zmk^Z-7>xV zJMKq_&w7|IUAOv1wi#JXRyPsG>;fc}V6y+!yT2bXnQ9x#O)Ojf$*O!#TpmF{W{Eo- zR+r@JNiAMKHh%rOaO~J#ds19Ev=)Y;Xx75H8SrM)>Vt#{Us$Q|d8!2d4DrGqcs`h? z12>t+Xl$xNTGnudQhoK^Aq~iwEj0ERAX{SvDfg3nd$v11koDNHnEWG{+j3m*J>c%N zMz*1v@y`PP;2PeBGL=X`^C0b_RQ*WbKyi9&w5v*WDp6Z0!+oSvpYa5PDVO~P?bcgQ z&Yu|`KC_S=Z&xGb?8MB3_R=$k@4Zp4CC=P2ZqzF)UojS&pX#{jFzS^VdW0{7!pY6E z#|R?@J2xbcK~n2pCZvWHKM)zPan#%41~4HhcI%)VbdJuPy|e3z<$ydON&ci)Vw%|& zPtHsZmc4G18uGd1ISA)N`^-6cxrfut=T|w?y%Bt3$EhGRCYR<^);LmKjR_*HQ z6P>b)S3Gy+7~0UbTH>c50pvxjL8LT}h&lpEDd1|#LSw7YR$-vel(~bMg5#Zph6U0S z`AB~{H(%76@}Nrl^)4~8Eo687H1Or%$)Wb?{&={u>#G@*Js!RL_<<`kxv9)tt4#Rf zwuVr2>Q8kKM`m8MZ~kRRtKc}I3#=-)ljb(8W8Jcdz|4%`qNTKlK*N$n8fX)BLrG)~ zF0F{R7*?FRh-O1BCmXKlaw4v=;G^4D&(omOYhmtP&ir(C>mGpdO|;C9 z-QcP~%o<)f!C!_6YUYOdC^-yd3#~XATx3!%^~5mPEt+Med@+iisqs`_v!ZysjyLH3 zh>iQBRnimgyA`iXe)5)EC6o3YN&dtd9EJeL>~e<`;9q<{L(}Al+hyq-@vXsUY;2tU zv_E90#jB~{J73K3EAAa{dZXg7*XHX8SRv-916~c-%n>UzP%_|zgjY~48GBp2Ub(Rz zWEnn{042&KjkThSr@CbBe2Bo9kaSRYeiMDyoOa!14+ z4(k~;xhYoK>+H{+pIsA+^(d)DX`rOuWaeFp+ZUAA;iOM^M^Kz6SV&(8mYO{bEIkwt ze)TP_NGU|Pj+A;_4WzWA-w&k5>WqcY7otiNE5%Y-roHslL)`meizlFYiF0gf)94=~ zh$ZjmlHgL&^HYm6u2+{Y4Km%i^Ie{)0Yw_=y=2(5v{!i*1dHM}SPP0UFdxSvw^Tn! zUnBn_2)V~d+#>DVz$6>+4(~GA$Hq*8D6}Gvytx&69MTf1tXXP;P4@*QDd=m39-qKu zN)>xvt-~K}PKIxbZU#V}4miyGcitBhZ4PuuBYG-fjPA84Qm7bZ@{t)(A!9=p$zhMy-7k?pT=0<_8W*?)g>p=9vcNW_Hyn~tQq$* z4E)OkBFnnN#EG(N*=_Ws8*RVQ6_=O9dfV%C6B6dOF(eES=RoFPj1JMzz$Tm=3DT1dwB_Un$^WK`;j)&@}A3=%fSKh3u82%F5?dTAgiTm%Q3+GA~N z!~*1bqdR_so)~NChX!NUsB9Q}EF&Oe-^|k@(b}9+q^`m~CQk zHsUm9Vr_0V6I*-k0_>J3##rAAz5;h|jp7?&CBxvGtb9SpR#KIun{jgKg@D^gLb8gC ziAKgwD|*Z5I>hz~p(u*X&H9uON)I6suP25yV<@D#7R-u2A6WaPV~}f-_X0?yq~!gKQI`NmX6%a0I0e2mkWoxxR{EK5 z2tLr@B}~+3XtPal(fT|9TrebF{n#co;L&0lnya^c9YFdcf>50uA#-GTFV}*S_H^(Q zify+Ty8tRR+MszYTNE3M`q)kah=?Czm^Q00j+)^XsxXf4+1x9e{Q{nite05Z*YKCn zjzxz0g5%GV^JJLJ&DsY)jLXHNJy!EY!QX9TWA-PMue#ih*d;)~+joFkmVH9hvg{KJ zA3If_Rpz&|S!K#e!L0Iu`dQjt2ra#%Ip^>_cCRt_97E~@jX59$yon?Wnz-Rll6T*_ z1re)uv<5^qmV;R=-x=PX>D)KoH35t!80#914wT2|d47Itaf`hkraOBxTdy0Nyjjal zrLiMW&|_1TL^;ygcg?XIju(gB(z{jFY*NNRajDBOLm(IiI zr&fAcE1~6XqH5IjS;}JDJw|KUdAb^t7IgKC8=UemP8s!~6H7GzUP4yhICyHuZm>u( zXhBL?a7=!+k>FHGz>6N-ac*Mb94c{7PM+I7zDwjf1Xr@ZIKJCb`?_VxKKqir`(83T z`;vWoUoy*`KeInRGu&PqJ#*mTX|&ClQK9Odm|+1`#Ra0uI7@Z^jI#;0&kvoAG%FvX zKIm4umW?@T0e9SJSEkMdA;Zohe*jXPX#26j1*6U}WZ*OGxL&0b$KPPbNW9^(#~O}L zt~)k%DMS6A1Ahw{;cLI=z77w+yHRDD)|)^J)*XExR&p3NuR?(cGM$Vt7|5f`u1AyD z@m>^}!|%7=80<~xKC5&qF9drgv(6wbhGug%qmhHBP8|p{-#=PA99-U?>Aoy&SJhB| zuzcg$qp8=k2^wl`ogVPu&sl3rZSmUsK&Oj*57-aPv9svBqNh;Afr{&jDOT-9Pl@n0 z#)NW$qCfnvk70`V9?wK9mG_lQf+X7CZ%O#gWBLR7aTmq;Sld z19LrQn=srxyghs5vVpTV-CXtcInatK_!Yrhp`_~L(Fj!7dl99>FLofS+d(RBZ>Cuf|8mUY|mOWM|NT{qojvog&Diu(=|GZ8t7+c zmuL6vekEJIIxN^so@6N56NrxYxchoy$Y;|;CEru>bW}opebfSFxVt=^$ZQ{)J{Z(b z%^W#_7LYqUg>Cczxga4I7vcpXl*d`;($2&22|l{m^QeI8mLrq8BngggzTXpB2e7 zUN7S?Crv+zs+zcc22w$kG^^WD-*U^dCudWc#T&N|9Vm}>dF=MV?#e>Z&FLq0%^ocF zpFT7>JvdeviVSE2NA8&2^}6dPQX@I+du#S2eBA>RCvP8C{PO7Xz-5Eur^mqT>BpR-C6o(_B z0j+&JpYK(~R4m_9-hFC73#sLakt6+``?nOvu6bbP=${|vPIqn1=C*ZrZ_VYlcGY#& zP3RG!t*ykBIj%5Y`#S%X^Sz|yHJIjUa5>9;6#bUP-$$8!6uFOaKVa61uAqLn@QROf zUtm|jTB7p!cX7oNsP$_+N8wbu0AidAe)*?i)Q* zSy$(-q3ZT*ad%(5!{h0Q#|v(ELCa0A~Iq6b{^@#Pun#=5x?6MlOnH_%4k}*deD}rv5YrjbqTq>34qn$#z zqughVEY&emd`9Tex|tr6KhiK=`uxEjXFd?3LGF;(JB9B<19B3()*t9UG&h1cb1S5eLR-ASv!o4oOk%vdr#Q_QD|#l4!ZGa1VW zvW++E_E0pFwPzv%&pBnuY)ho=@kA(uVn)1`Q!~*-hsWQOZZA9SW0{e0v;#cn&T>ys zjpuqynIbLBg7kG-_~Q!t;Oh^RoiD!2Y*ThttV)uXWLaT7A#r=`wO?&>dNs}VMl~#X z0ZBTWTzU+dn`>NZjIqW*5&>qQCsJ#=*IC1tB+{8kr@zMa=;2TF7mZ){<=W+@XdHv9Q$Fm#i-#`p-k# zvmJXTD)Sw2pDXN5cex#dnaPR8U5R8Qnn;AS>fyoZ>!y1$3CvHpyur}m!M<=}zJF*> zZ%;bj)0arn*cHLqQE+xmo2HuD6p}rNHFSR4HD7Q@+`x-Pi%ry#vg!A8UM1tKJ>`nZ zYFMP<$uc-kaGz=mz|(-|R&UFCWm?yzO+Q%4=&n*aUQPRY^QnFpbm}x`>P$y68NWB?{z*I%iKsqrrz@HR zfBV4S8^GT*Wf_Aeu$0XkF!c!~+0dPh>6{ibhD*LMw2+PY>@j~T=Wz9<^VM)_w%j$A zcBYs5L%D=MkdJAlTsW=*aq;*|yGr3mdN`4u>nv>9l^eNo=*NW|_E6213Z$VpKlfVb zFs7mO|Eh-K{1;JCq-~)c|BZi^7Y%KTGa)X{9YrM*=v(x39A~mzfIG;}Jb^P=oblkA zvxqyOPw5&O5uo-U|8*J>v=V(i+ZsCKPaYARpXq>$3<-<~y!l%2iH(T*yPLBQ|360r z=f8v@L1Ti;aHIUUX-w#Z_8|hf_?X}_&o?U2niKpF8l$4#p8vXiCZ)vbG{DA5sxRVsQ4YxNL$CeUM$~? zA}B&Ht=^0KZlQ{XKJ-$5UpJ4wGCXIo9ahQbGCQ@18p?F1?$8hVoo=V%7tLZc9h=BN z>e+jd-JjvU2+JJ$Z-h9?? zkyWeN-SWbxIu{;(#c7m$kDh+T!wa2Xzu-MJya)SAu=nV_zNp|q6p+P&)(Vv>XHAEb zz}|=VSk=aRG|}u ze>6I|lvQU23T4bC6eTpH;RH$^Rtov?RBowS zy=^?+71e*XvGo(RKXN}u>lsy?PZJEoK^l;)tRfGs-g?O1IKP1*+~5YX4v$r@1X-yp z$ZBOyfat0Q4Z55rd7wyiEe~!=7s)OFf=9S}ps`76DUZ9<_RY3uxcg`nRW|VE9!Dk| z$~v6cNF@8sNZ#e_h(x0_E5%nv%xcEro zg)ecQdL14lEoyLExVu#)kdYM>CRD@W!iYP(tLg}PdKUs_)D%u6P%7B$UnqM6_MzQj z_edeZz17mc7zix%TRME%Vcn#NPLD5c3TL&@u4*(|-4#-^VRO{ub%}~eAIe1tx*(r| ze>q}|5Mg`eN(x~T{gg%a1HY_{pHw9!>iA;+*fH0!^ikKb@%izO;^&xtERCPBEn^=W z+wsx#M}IK&@~NNTAO8H{2S4DFfKtKG)z5P`2`WV~o<$FZ@S>3%TOWSu>ubi+E-$I~i#CU@*OCc`_CXK*sg)(rw zKGrOYCE4;=apAHYy)1Xx*-qO8p156-7xBbNYv=kG;`w*s`6ugbc4CqbOkxO|=dNF_ zghQe5%30xDk7DwK&tDS;MuZeNgC?_ak2%$kp>Na}?JslY`c1z)+oPD>Vg8}8$Ao(t zcBSnW9^1aMs8(EkIag`BwJn2V@;RPvdkg;ZZAo6?cJejYH3+_rNmh?L2BpphCE8xO z;LKa=woZ*`Wa~b^{*bS&w|$f8j*TaXx;*Ad4)D*x^LrW;+{@_s4E}ONPunLLJ)2Oo z;oTR$tp4n_&*9nBMtU}l=6UXm+|Ll#A-yndgzKbcV7;O|X_*U8aX02lUU#X(UGz$w zl~AbCDS3-O#W_#U`g8M>JG)h-bLR}_i0A_&;qb_S9JE9xC3x3~0%P0r2p_B9$D+|15SMeW`>x#?L$N6feVp7Es( zG_YaR!j*Ska%(p}>%u17cgfTek23rSR}!XRU7&q+cpJRoZGb!E4YVHC>}IRoN{V09 zB=ZyNj`$J1edjh$H0qk!)1kM1hMeIYZLebQ*!YG67kLO;y81ZwR^s8!0NWSvA&i|!E6{99&jGm*KEc@)|UPc;5WJ& zDsAmIX*oz>>wmUN7w#=fon$#~IPgI{>i;eHV4xQD-%Q(+3Z`CK`;V6cFv1!3fzUDI zp=`>VGUr-f%4`4;(@GqaJR=%(XEWq97){#nyXBqaEkIMRqmE&iKCin${s2B0P21?d zWXt_!WHFSvbE?~6R?JSf&2EXC`CjwZxREXSCX*dE$$Vp7MEz1t+s%qC{D9PaF*hhC66S# zd8^ZE)kLe^CYVhY6F!MLCc`Xd&14o#W(Q}dTx!l`7C6BS1A?-4cB{>*nQT~^q>2t4 zijp0x0!=Eid7x4(X0yX=63jYh$9KGLGMmksMKsy0k|L@q@|jevqhl_gpEG{1EOvjW zbhVEUo3Js0H6)5ANpUGw-DN?me45QI$xcZNt6ryF5&fbK#Q8)kZ?=Ru-Xr55A3%Fy zNvu|^U-yfOs^d;4c06-hB{z~8ouE*cWr=F4iq-%TDC!(%a@ynrHc>^rP`e5L%uX{H zAiD7ehuLOQB}vp!HqRnE6*Nw>NoE(;a*1XKxMbFOht+E5+-4JJ#*G$}#f;)nGT0!< zZY;I6f=QA?BCen>HJd1y%^owXs^I4AJ33}N2nCug;6wY{M@LBuRaRdo%<}KXY|`G= znF&(U#!~i%ktB)6lnjJkt9$G;x*(?Hk}xr&^iayIgew8DCE?`WzVqHgy^}Y;<-pGW zcBnTruw$TaHnu%g-a2@6GJSd4YBNFBY$h(|ahFo#=l0B>+uJ>U>z?vHY{GeL%3bn0 z9WiHqAlP|b<>);N``&zRn*MfOwX1J>GM(GCbLqx0he>gmHR;f)9*xg+luj(~y>F>{ z;^o`-zGBH8=!nEPPc;5TRq9*H_aWWK*hTYg&})}7?4L#1lpmhKE`yzAkFao&n_hMK!HK2HbvwHkJG=58Pfrmz*VYomTimsn zn(CU`uSv3Q?df!iR;_zs*FtwN6jM7U+K1;7-eB>BcIN2xNuOiKZ0FAY=sBw0eq zOjmk1J~xMj%9`ioP-aW#+;k+Ta;5-^GDZSclbULex4SWp2D{Uxh$iR*vCIl4VfeP` z)d5~WoAdR`wv1x5tD()&C@379ZT2y|HSGLm)ZC$~d|YpRW2|C4U(F8ud8LGKaPm5~ z$8T!IH@`jD6YH#eX{=NnkWJ1+IG!zcr*@2ea`LwF(4HQzNp+zt+WE7E-4*UGZgl0S zzto;RH3{01t8LsHP%$+@nd9j-G8%nBEJtS$4a8kx4OeNQo`|P(ZE6!Y_?C`hYR62I z-rP{WucPa}=5fB7>+k3i>8h0vezNyi0Yo*e4WoNyymX`xs*SF1&B}Q1;X=q?zk~4E zV{QM){{=#PZMNGZ3A-y=Y)^Mt z^%rjIoFAnXxC}J9d8`;8c34#N4YCzhNK`B)s|Bm+Z;?I97kd(sycw}1-*$`(3;&Gl zfOs2fx9dg#!m=XzD^PE&hghejoQTlH@>=6{7T=Mdh%t-$>g~VeSA1;yDfWbztzfxLmF=tx#g{*?P^)F zSS0yso4B?1KGo(HLzR)3!}d&e0F)&AV0~Yx^Pp3yS1@&a(5aqdSG6=boastbK#XS;uz*`~K)r z?ny3H``-Eg$+g$MizjrhzJgB(BgTrWE>jkkgmey=y9p8kFGw?US&J1$&uoeu8-vd< zdR0UK0M?$?&7u&wY7~yd*wHA2!)&qMGIr)wkGyk1)NJ;YBSI(Rmu+`jB~#?Y z1ZbK(8MfQQCnrJi-S9uIIT{++2@cP5$ZzFktem`&sEIkdEL#T6?{hiZ2=YTVP-9_OFtK3d;<1pCg_ zcIkfE<>32k4~@=a13K=bla=9ZGsD%{cOejf*H5xnSbdcH2Z2?!@%6J1&PWJfv)F4^ zqIIbrWl{d`q5Y-P2jq6gmIK%XUQx=0>fF-g7JwgEsTbQ`klJ_sm2LLAxl{K${#=tj zZrVCns9;x@L^#)d^P&A`Xu+OENafA%P-Vz^plyWT&)Vb3tl~K8&~?X6{?t`{i@B-5O^V}$UDxgB^!oU__2Pjs+(&*@?ip(9xX7eUp@MTpbwCq(_6dNUq~vch~8f-h?e_5rT5;T^KS5oQG zty@Roa!r7f#cjp0PD!@gCo{QnATzdY+gRq*eyRPTOT;w8z>@ zTl)&ThD`Tp(j(@?V6JOKu$fWnqu3cQ1&h^OJkd4XyX|W0-C!}>@8@^OIs9(hijkd> ztuKT`T86PEvXLAH&bH8QEY-BQ$x&dF%4|(4wX8V~EZoWEvorQ9Bz27AxZRREYu|Ru zj)`6QYQ^F843sJh1?lsW_F;Val%&1amYyz0D=D8rTv*Ux$A`Xseg0A^nG$7Tpx8H?A}OYPH-72hb&~X zY0UFtu4YSzFvr?x3_6AI$iYBmRN&7_>Nd$$IoqqhK?f-hJ7%6| z?vS*X_x%q^`&0yb0kEPWaZr2|Kj%6J11NQB(RC@S{q>i8E^ml-vUB;W!COK1=M^@wC#1+X`)K?{L=j?1iGmH>%n4w=VOm8Joeb@9$kFwvBgK} zI&K^Y-Th?Kbd+8_%DtBxU&K;CuI+5w+qv_6k)D8sPuYqO2%%5R{>8w94-P!|+JV>N z|J&Jb<1=VD+IA=2xt-7OX3&tu9KtubXV?tbH{0%q<~Z8+Pk7hw@h-BGc$?XHW9#M!nLXPWPKZ>dx9@+F2duE7;)1bw_j&&FjtANn9Jy7yjs{^}|{3D1{k9*$_O{mr`bXz>N-tGM2@cAmB7 zV|b3wz#1{v2}GMxr=W0r9yqlKg*G|&x52Wzs}ig9RpR*6J<#~H@f>%*!?76GgSy?h zm~aQ&&#XUW9O00H!aYVgEStT3vo~?r2eI|3jIZxw{SPjr`xEF7?y1@%+PFTl)LvjnDIaqhsaSVsVy!%44H2QQYc}R%f_pg(~6R z!0`-a=rfkBI$7XqXq~JPWg+Z4k{n7RKgHXQWz<)!q^fHNp9yt_+(Bout24#F`NTQn zDAn1SI)C+vbJQy%klxR--8$OHJ!VJ%sc47=^Ok(@m3$sr1BuoXD_B@3UNx4ES}d3C zpL@+U*FG?}|1#9MNRNFXylbxe(AN3G-E+IbG0p0WC5o@wec<)`_PzeV?pGBPF`re7 zy(xeH;==9o^S3W7-k*OHQ`qu4wol%F5%fV z&iQK3aX+j*@E@4ceA%&4q|3cEJ6^k`_VOig{#&@~#X^Cq@cIO#Izfm$DdF$#U(w%p z&)+_A``3uBORzG4Td2G$DW^p3pxH-CMEUK%0ANin41O=1mQI#mf56VUwKV>%ZbTw z+2g+PxaX=nw}fNUr$>uhixZW?XvQ_6U2~{8-MWju*1JApGI)o;>k)Pqx4Mu~&0fb63~iTzm5*hZWbgf1_T_@AL{8$WHiwo^d@57kVn)qiB8I8ObbcwZs94) zr)xZqq#hR02!ES?$k&&T^u|yyFx}Ui$GYKY&mke%-Id5-33&6NW?LrF)s2=7@H@Ec zku}6-3EU^#oH)ksX!`+s2T{K6iSK;ghv2>e z*x2Xz|7e4)(%~YYffe7gH^c%y{cU`8(2n{)aogK)-8f(6%#G{FLxwAJdE{-n50y%) zskhm%LvhNEw$gQ9XV+0WXSRMNHhna1;R?n*wZGYT?_l#Gc-wz@&ZDgt@1NoSm3G+H zX~wFIc{4G)E8*?Qt06gG^2Sf`)o^C2TeNgdXT!UQcfF|iH-mXNx(72{P4PS1o)H!(qv*nU*H5pX zRuvX#78RNNm^;wY>DVNU7OLvk{<`h6s~=`hxF9EKc70A#?XTC*!%k%A36qSU;Uim<#w~{pc9ZeXsCjwPWa$@m9Tc}no8i>I6OlazP4dp zCtJt0;N38;IU$C7zO`Xo-`P5@h1iC1tqKXwB0PHGxPE1GTnmYoaqSn(ZT~5J`{LvJ zz76AAFmE=lSAQ-PxuWoq=O5S7rsG;DZXDOE|3{ePBElO<0)_gxmW**N%&m>S zPH@!wZ@`OLN3mE;deW-u;Is0#O{&vXU=^hs77Qy5nN@FC8w(GG1V5l*MX;?rJ8oDD z)Shl0lU2YvKX%;E(iTua_ct`Kg>^;k(&!V^mvsq^Y1PQe*5{PzRo#*BB`lzRZprBf!GL0mt_ZNw;9 z^nF7*Ej%I!c5FzVg$GiAb%7 literal 0 HcmV?d00001 diff --git a/android/assets/skins/pn/OFL.txt b/android/assets/skins/pn/OFL.txt new file mode 100644 index 0000000..9a4d59b --- /dev/null +++ b/android/assets/skins/pn/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2013 The Gabriela Project Authors (https://github.com/etunni/Gabriela), with Reserved Font Name "Gabriela". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/android/assets/skins/pn/uiskin.atlas b/android/assets/skins/pn/uiskin.atlas new file mode 100644 index 0000000..e51dee1 --- /dev/null +++ b/android/assets/skins/pn/uiskin.atlas @@ -0,0 +1,201 @@ + +uiskin.png +size: 256,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +check-off + rotate: false + xy: 11, 5 + size: 14, 14 + 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 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +cursor + rotate: false + xy: 23, 1 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default + rotate: false + xy: 1, 50 + size: 254, 77 + orig: 254, 77 + offset: 0, 0 + index: -1 +default-pane + rotate: false + xy: 11, 1 + size: 5, 3 + split: 1, 1, 1, 1 + orig: 5, 3 + offset: 0, 0 + index: -1 +default-rect-pad + rotate: false + xy: 11, 1 + size: 5, 3 + split: 1, 1, 1, 1 + orig: 5, 3 + offset: 0, 0 + index: -1 +default-pane-noborder + rotate: false + xy: 170, 44 + size: 1, 1 + split: 0, 0, 0, 0 + orig: 1, 1 + offset: 0, 0 + index: -1 +default-rect + rotate: false + xy: 38, 25 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default-rect-down + rotate: false + xy: 170, 46 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default-round + rotate: false + xy: 112, 29 + size: 12, 20 + split: 5, 5, 5, 4 + pad: 4, 4, 1, 1 + orig: 12, 20 + offset: 0, 0 + index: -1 +default-round-down + rotate: false + xy: 99, 29 + size: 12, 20 + split: 5, 5, 5, 4 + pad: 4, 4, 1, 1 + orig: 12, 20 + offset: 0, 0 + index: -1 +default-round-large + rotate: false + xy: 57, 29 + size: 20, 20 + split: 5, 5, 5, 4 + orig: 20, 20 + offset: 0, 0 + index: -1 +default-scroll + rotate: false + xy: 78, 29 + size: 20, 20 + split: 2, 2, 2, 2 + orig: 20, 20 + offset: 0, 0 + index: -1 +default-select + rotate: false + xy: 29, 29 + size: 27, 20 + split: 4, 14, 4, 4 + orig: 27, 20 + offset: 0, 0 + index: -1 +default-select-selection + rotate: false + xy: 26, 16 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default-slider + rotate: false + xy: 29, 20 + size: 8, 8 + split: 2, 2, 2, 2 + orig: 8, 8 + offset: 0, 0 + index: -1 +default-slider-knob + rotate: false + xy: 1, 1 + size: 9, 18 + orig: 9, 18 + offset: 0, 0 + index: -1 +default-splitpane + rotate: false + xy: 17, 1 + size: 5, 3 + split: 0, 5, 0, 0 + orig: 5, 3 + offset: 0, 0 + index: -1 +default-splitpane-vertical + rotate: false + xy: 125, 29 + size: 3, 5 + split: 0, 0, 0, 5 + orig: 3, 5 + offset: 0, 0 + index: -1 +default-window + rotate: false + xy: 1, 20 + size: 27, 29 + split: 4, 3, 20, 3 + orig: 27, 29 + offset: 0, 0 + index: -1 +selection + rotate: false + xy: 174, 48 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +tree-minus + rotate: false + xy: 140, 35 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +tree-plus + rotate: false + xy: 155, 35 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +white + rotate: false + xy: 129, 31 + size: 3, 3 + orig: 3, 3 + offset: 0, 0 + index: -1 + diff --git a/android/assets/skins/pn/uiskin.json b/android/assets/skins/pn/uiskin.json new file mode 100644 index 0000000..737332f --- /dev/null +++ b/android/assets/skins/pn/uiskin.json @@ -0,0 +1,71 @@ +{ +com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: Gabriela-Regular.ttf, size: 32, color: #bb7901 } }, +com.badlogic.gdx.graphics.Color: { + green: { a: 1, b: 0, g: 1, r: 0 }, + white: { a: 1, b: 1, g: 1, r: 1 }, + red: { a: 1, b: 0, g: 0, r: 1 }, + black: { a: 1, b: 0, g: 0, r: 0 }, +}, +com.badlogic.gdx.scenes.scene2d.ui.Skin$TintedDrawable: { + dialogDim: { name: white, color: { r: 0, g: 0, b: 0, a: 0.45 } }, +}, +com.badlogic.gdx.scenes.scene2d.ui.Button$ButtonStyle: { + default: { down: default-round-down, up: default-round }, + toggle: { down: default-round-down, checked: default-round-down, up: default-round } +}, +com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: { + default: { down: default-round-down, up: default-round, font: default-font, fontColor: white }, + toggle: { down: default-round-down, up: default-round, checked: default-round-down, font: default-font, fontColor: white, downFontColor: red } +}, +com.badlogic.gdx.scenes.scene2d.ui.ScrollPane$ScrollPaneStyle: { + default: { vScroll: default-scroll, hScrollKnob: default-round-large, background: default-rect, hScroll: default-scroll, vScrollKnob: default-round-large } +}, +com.badlogic.gdx.scenes.scene2d.ui.SelectBox$SelectBoxStyle: { + default: { + font: default-font, fontColor: white, background: default-select, + scrollStyle: default, + listStyle: { font: default-font, selection: default-select-selection } + } +}, +com.badlogic.gdx.scenes.scene2d.ui.SplitPane$SplitPaneStyle: { + default-vertical: { handle: default-splitpane-vertical }, + default-horizontal: { handle: default-splitpane } +}, +com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: { + default: { titleFont: default-font, background: default-window, titleFontColor: white }, + dialog: { titleFont: default-font, background: default-window, titleFontColor: white, stageBackground: dialogDim } +}, +com.badlogic.gdx.scenes.scene2d.ui.ProgressBar$ProgressBarStyle: { + default-horizontal: { background: default-slider, knob: default-slider-knob }, + default-vertical: { background: default-slider, knob: default-round-large } +}, +com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: { + default-horizontal: { background: default-slider, knob: default-slider-knob }, + default-vertical: { background: default-slider, knob: default-round-large } +}, +com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: { + default: { font: default-font, fontColor: white } +}, +com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: { + default: { selection: selection, background: textfield, font: default-font, fontColor: white, cursor: cursor } +}, +com.badlogic.gdx.scenes.scene2d.ui.CheckBox$CheckBoxStyle: { + default: { checkboxOn: check-on, checkboxOff: check-off, font: default-font, fontColor: white } +}, +com.badlogic.gdx.scenes.scene2d.ui.List$ListStyle: { + default: { fontColorUnselected: white, selection: selection, fontColorSelected: white, font: default-font } +}, +com.badlogic.gdx.scenes.scene2d.ui.Touchpad$TouchpadStyle: { + default: { background: default-pane, knob: default-round-large } +}, +com.badlogic.gdx.scenes.scene2d.ui.Tree$TreeStyle: { + default: { minus: tree-minus, plus: tree-plus, selection: default-select-selection } +}, +com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle: { + default: { + label: { font: default-font, fontColor: white }, + background: default-pane, wrapWidth: 150 + } +}, +} + diff --git a/android/assets/skins/pn/uiskin.png b/android/assets/skins/pn/uiskin.png new file mode 100644 index 0000000000000000000000000000000000000000..c1e5f1a210e11a24ba2065e93e665839852b6aed GIT binary patch literal 28299 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 CACHE = new HashMap<>(); + + public static BitmapFont get(FileHandle path, FontParameter parameters) { + FontCacheKey key = new FontCacheKey(path, parameters); + BitmapFont font = CACHE.get(key); + + if (font != null) { + return font; + } + + FreeTypeFontGenerator gen = new FreeTypeFontGenerator(path); + font = gen.generateFont(parameters); + gen.dispose(); + + CACHE.put(key, font); + + return font; + } + + private static class FontCacheKey { + private final FileHandle path; + private final FontParameter parameters; + + public FontCacheKey(FileHandle path, FontParameter parameters) { + this.path = path; + this.parameters = parameters; + } + + public FileHandle getPath() { + return path; + } + + public FontParameter getParameters() { + return parameters; + } + + @Override + public int hashCode() { + return Objects.hash(parameters, path); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + FontCacheKey other = (FontCacheKey) obj; + return Objects.equals(parameters, other.parameters) && Objects.equals(path, other.path); + } + + @Override + public String toString() { + return "FontCacheKey [path=" + path + ", parameters=" + parameters + "]"; + } + } + + public static class FontParameter extends FreeTypeFontParameter { + public FontParameter() { + this.characters += "АаБбВвГгДд†ЕеЁёЖжЗзИиЙйКкЛл‡МмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя"; + this.hinting = Hinting.AutoFull; + } + + @Override + public int hashCode() { + return Objects.hash(borderColor, + borderGamma, + borderStraight, + borderWidth, + characters, + color, + flip, + gamma, + genMipMaps, + hinting, + incremental, + kerning, + magFilter, + minFilter, + mono, + packer, + padBottom, + padLeft, + padRight, + padTop, + renderCount, + shadowColor, + shadowOffsetX, + shadowOffsetY, + size, + spaceX, + spaceY); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + FontParameter other = (FontParameter) obj; + return Objects.equals(borderColor, other.borderColor) + && Float.floatToIntBits(borderGamma) == Float.floatToIntBits(other.borderGamma) + && borderStraight == other.borderStraight + && Float.floatToIntBits(borderWidth) == Float.floatToIntBits(other.borderWidth) + && Objects.equals(characters, other.characters) && Objects.equals(color, other.color) + && flip == other.flip && Float.floatToIntBits(gamma) == Float.floatToIntBits(other.gamma) + && genMipMaps == other.genMipMaps && hinting == other.hinting && incremental == other.incremental + && kerning == other.kerning && magFilter == other.magFilter && minFilter == other.minFilter + && mono == other.mono && Objects.equals(packer, other.packer) && padBottom == other.padBottom + && padLeft == other.padLeft && padRight == other.padRight && padTop == other.padTop + && renderCount == other.renderCount && Objects.equals(shadowColor, other.shadowColor) + && shadowOffsetX == other.shadowOffsetX && shadowOffsetY == other.shadowOffsetY + && size == other.size && spaceX == other.spaceX && spaceY == other.spaceY; + } + } +} diff --git a/core/src/me/vinceh121/wanderer/ui/OptionsView.java b/core/src/me/vinceh121/wanderer/ui/OptionsView.java index 98eac73..5c5bae8 100644 --- a/core/src/me/vinceh121/wanderer/ui/OptionsView.java +++ b/core/src/me/vinceh121/wanderer/ui/OptionsView.java @@ -33,11 +33,15 @@ public class OptionsView extends Table { public OptionsView(Skin skin) { super(skin); - this.add(new Label(gettext("Options"), skin)).padBottom(64).colspan(2); + Label lblOptions = new Label(gettext("Options"), skin); + lblOptions.setFontScale(2); + this.add(lblOptions).padBottom(64).colspan(2); this.row(); ////// GENERAL - this.add(new Label(gettext("General"), skin)).padTop(32); + Label lblGeneral = new Label(gettext("General"), skin); + lblGeneral.setFontScale(1.5f); + this.add(lblGeneral).padTop(32); this.row(); this.add(new Label(gettext("Interface language"), skin)); diff --git a/core/src/me/vinceh121/wanderer/ui/WSkin.java b/core/src/me/vinceh121/wanderer/ui/WSkin.java new file mode 100644 index 0000000..476a09a --- /dev/null +++ b/core/src/me/vinceh121/wanderer/ui/WSkin.java @@ -0,0 +1,67 @@ +package me.vinceh121.wanderer.ui; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; +import com.badlogic.gdx.scenes.scene2d.ui.Skin; +import com.badlogic.gdx.utils.Json; +import com.badlogic.gdx.utils.Json.ReadOnlySerializer; +import com.badlogic.gdx.utils.Json.Serializer; + +import me.vinceh121.wanderer.ui.FontCache.FontParameter; + +import com.badlogic.gdx.utils.JsonValue; +import com.badlogic.gdx.utils.SerializationException; + +/** + * To add TTF font deserializer + */ +public class WSkin extends Skin { + + public WSkin() { + } + + public WSkin(FileHandle skinFile, TextureAtlas atlas) { + super(skinFile, atlas); + } + + public WSkin(FileHandle skinFile) { + super(skinFile); + } + + public WSkin(TextureAtlas atlas) { + super(atlas); + } + + @Override + protected Json getJsonLoader(final FileHandle skinFile) { + final Json json = super.getJsonLoader(skinFile); + + Serializer fontSer = json.getSerializer(BitmapFont.class); + + json.setSerializer(BitmapFont.class, new ReadOnlySerializer() { + @Override + public BitmapFont read(Json json, JsonValue jsonData, @SuppressWarnings("rawtypes") Class type) { + String path = json.readValue("file", String.class, jsonData); + if (path.endsWith(".ttf")) { + FileHandle fontFile = skinFile.parent().child(path); + if (!fontFile.exists()) + fontFile = Gdx.files.internal(path); + if (!fontFile.exists()) + throw new SerializationException("Font file not found: " + fontFile); + + FontParameter parameters = new FontParameter(); + parameters.size = json.readValue("size", int.class, 16, jsonData); + parameters.color = Color.valueOf(json.readValue("color", String.class, "#ffffff", jsonData)); + return FontCache.get(fontFile, parameters); + } else { + return fontSer.read(json, jsonData, type); + } + } + }); + + return json; + } +} diff --git a/core/src/me/vinceh121/wanderer/ui/WSkinLoader.java b/core/src/me/vinceh121/wanderer/ui/WSkinLoader.java new file mode 100644 index 0000000..484530c --- /dev/null +++ b/core/src/me/vinceh121/wanderer/ui/WSkinLoader.java @@ -0,0 +1,59 @@ +package me.vinceh121.wanderer.ui; + +import com.badlogic.gdx.assets.AssetDescriptor; +import com.badlogic.gdx.assets.AssetLoaderParameters; +import com.badlogic.gdx.assets.AssetManager; +import com.badlogic.gdx.assets.loaders.AsynchronousAssetLoader; +import com.badlogic.gdx.assets.loaders.FileHandleResolver; +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; +import com.badlogic.gdx.utils.Array; + +import me.vinceh121.wanderer.ui.WSkinLoader.WSkinParameters; + +public class WSkinLoader extends AsynchronousAssetLoader { + + public WSkinLoader(FileHandleResolver resolver) { + super(resolver); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public Array getDependencies(String fileName, FileHandle file, WSkinParameters parameter) { + Array deps = new Array(); + + deps.add(new AssetDescriptor(file.pathWithoutExtension() + ".atlas", TextureAtlas.class)); + + return deps; + } + + @Override + public void loadAsync(AssetManager manager, String fileName, FileHandle file, WSkinParameters parameter) { + } + + @Override + public WSkin loadSync(AssetManager manager, String fileName, FileHandle file, WSkinParameters parameter) { + String textureAtlasPath = file.pathWithoutExtension() + ".atlas"; + + TextureAtlas atlas = manager.get(textureAtlasPath, TextureAtlas.class); + WSkin skin = newSkin(atlas); + + skin.load(file); + return skin; + } + + /** + * Override to allow subclasses of Skin to be loaded or the skin instance to be + * configured. + * + * @param atlas The TextureAtlas that the skin will use. + * @return A new Skin (or subclass of Skin) instance based on the provided + * TextureAtlas. + */ + protected WSkin newSkin(TextureAtlas atlas) { + return new WSkin(atlas); + } + + public static class WSkinParameters extends AssetLoaderParameters { + } +} diff --git a/launcher/resources/me/vinceh121/wanderer/launcher/externalDownloads.json b/launcher/resources/me/vinceh121/wanderer/launcher/externalDownloads.json index 66b16e1..f319687 100644 --- a/launcher/resources/me/vinceh121/wanderer/launcher/externalDownloads.json +++ b/launcher/resources/me/vinceh121/wanderer/launcher/externalDownloads.json @@ -1,10 +1,6 @@ [ { - "url": "https://cdn.vinceh121.me/upload/Solstice-96662089bf95044cad27c5d9af70b8be5f591d6c1a3d879481d92a4d2409c2a6.png", - "outPath": "skins/pn/Solstice.png" - }, - { - "url": "https://cdn.vinceh121.me/upload/Solstice-96662089bf95044cad27c5d9af70b8be5f591d6c1a3d879481d92a4d2409c2a6.fnt", - "outPath": "skins/pn/Solstice.fnt" + "url": "https://cdn.vinceh121.me/upload/Solstice-7204130923cd9f3c77f63dc41dad39652ce0afefd0cd9f53b88f9871dc00c508.ttf", + "outPath": "skins/pn/Solstice.ttf" } ]