From db5d26d9a0a5a733225abc7b86d1350ccc905df8 Mon Sep 17 00:00:00 2001 From: Maschell Date: Sun, 7 May 2017 18:44:34 +0200 Subject: [PATCH] Added Settings menu. In the Settings you can: - disable/ enable the music - disable/ enable rumble - set the language --- data/images/gameSettingsButton.png | Bin 4309 -> 3819 bytes data/images/gameSettingsButtonEx.png | Bin 3714 -> 18122 bytes data/images/gameSettingsButtonExEnd.png | Bin 0 -> 18160 bytes .../gameSettingsButtonExEndHighlighted.png | Bin 0 -> 18179 bytes .../gameSettingsButtonExHighlighted.png | Bin 7023 -> 18132 bytes data/images/gameSettingsButtonExSelected.png | Bin 3700 -> 18132 bytes data/images/gameSettingsButtonSelected.png | Bin 7301 -> 3685 bytes data/images/switchIconBase.png | Bin 1152 -> 18159 bytes data/images/switchIconOff.png | Bin 1138 -> 18585 bytes data/images/switchIconOn.png | Bin 1846 -> 18141 bytes languages/english.lang | 49 ++++-- languages/german.lang | 27 ++- languages/spanish.lang | 19 ++- src/Application.cpp | 5 +- src/gui/GuiElement.cpp | 4 +- src/gui/GuiElement.h | 4 +- src/gui/GuiSelectBox.cpp | 24 +-- src/gui/GuiSelectBox.h | 4 +- src/gui/GuiSwitch.cpp | 8 + src/gui/GuiSwitch.h | 21 ++- src/main.cpp | 1 + src/menu/drc/MenuElementInfo.cpp | 2 + src/menu/drc/MenuListDRC.cpp | 3 + src/menu/drc/MenuListDRC.h | 1 + src/menu/drc/content/ContentSettings.cpp | 158 ++++++++++++++++++ src/menu/drc/content/ContentSettings.h | 60 +++++++ src/menu/drc/content/ContentTemplate.h | 1 + src/resources/filelist.h | 10 +- src/settings/CSettings.cpp | 8 +- src/version.h | 2 +- 30 files changed, 363 insertions(+), 48 deletions(-) create mode 100644 data/images/gameSettingsButtonExEnd.png create mode 100644 data/images/gameSettingsButtonExEndHighlighted.png create mode 100644 src/menu/drc/content/ContentSettings.cpp create mode 100644 src/menu/drc/content/ContentSettings.h diff --git a/data/images/gameSettingsButton.png b/data/images/gameSettingsButton.png index 28f59b7adfe04149f796039fba73714ac591fb63..d6b4a6dfa7775c8c8d40e3ed50f465807fc518d1 100644 GIT binary patch delta 1119 zcmV-l1fcuXA?qC>iBL{Q4GJ0x0000DNk~Le0003j0000u2m$~A0LU*=8?hmt3V#F^ zNklP zhY+6f6^cl=+qH2VtLhWKR)7VlDt|LS@hgnuSnyE+JaRq6EdW3W0T4ofb@YFk=|Bhp z5JCWi5MV8PQM97~cqT*$0T4m}KnMYzI*VHX&;FS(a9I5YhQLC^2q7SZ1^!DSFP7C8 z%uKN{jcCp~D>5cR2+x}FlTnhM{P;^Al}$cbK@0<1ALpS`SQYvx?LI}@0sLX1jt=7)4`fB7}ijJ2YP^DDq zpKX2KQHesa-HezW1>`V_roFV&}4vtHn+;86%6tZgq^e0Ee#^5W`f za9|s`>pul4Mq|w@AKU=sM1{U_SMr+Ub$y|dVgs{%V zu=qP>RHBXR}5)w9>$x&=;(5CYt6O0Ag<8?9Z@qBAssMRe9^?V8yzutf*~mhNFqT&(luR`0>4!EwD9yoVNF6iM0)c5a2d7aixD+zj$-+ zGoH7ue(|Q#KUEVie1AHG5a8?jW{5)CZn{z1+tT+FSaPFw+HMksd6y*+LV$Z>=&dV_ zv$VZOfxa2Az=i_V+k2&P=B-=e%WeoEz<1=<)h^#w`X_3lZ?&vZrGK({`8Ho@Spp%1 zXJN_TMGI_1^R3p7`01@pNr74XbgQ)^nlICcB7^|M=nAL>s$$!e*dp<@QwDaoefkhQ6LH`*3Jfv_MQa4k^~`y0CyL|*bUqD>_AP4 zNQgvDsh%CUVM`@m$te&*SlcqVlHbY>EXuZ?HOu|e+`8Pla{sKJHI?m>+wc)WfWpPl zB=Mw|cJ`T+Nq^JMemv=^NmeyJUi1WTe>u#f^5*5ym-Hth+PwTdkIKs|3?hW^j5^ZQ z4JJhX<@s+n{zM1?9<~^&Sl2%%qJO4I2_Xb{$Vx~=6vX@&*NKT4KnNchLI{8m0w9C{ zXh#u308~PNwJU?DgaCjL0-gyGLI6Mr0T4m}xRaeur!+~Ds4DIS;F<8DYoN$W0 lZ8RF;0|R&zwOZ}Z0RR~=t-ip^lw1G+002ovPDHLkV1oNR3;F;6 delta 1613 zcmXX{dpMJO9DldTZO!nU8g-J(nYMad;GtJBG&CR(9lZJk_JQ%2*s)y~Uv{`p-$-{0r+`+R>F&5CY2yWHKufdtcK zrT_pCpdi{_0Kn+bc7U-VT5i6<+$}<<@)Flyszs$GUPAqvZAlIqL^>r$xgkX)ciRs=~QG372$Ea zh~V=F5frP-ycL6!s<)h>lgeD>x9`L)P9C|&u}-oc3y)NqiLEe~KW#a3p5G#cF)Bh7 zQR^RN_8NHniEalWqRAuVl{jK%BF|a6NEN|6l+aFbPtJ|1SamDK_fnJSc3s_mN~Pau zb)K>P^?=9N0j_GRWlqo}rh3;l3E_$nQ#2L011TRBNKI=D`mdh(rU6~3+$9#n{6?#R z3BFns`X*eo=Coy1*hRlS0W7a=T@)B}(XqLphWL6!&jTUXBMhb6Nj7d07nnJVDZ+ja z(1tmZXV@g3kHxQ4?LJ9mMqFq5M42WzQaN5k{0I}8@gtrC2$5Y z3*qGnrz2OgdzaIn#dR(z6WmQ@?lUXoM*^*^c8=66#u<{+VUyXA%usp_z)lplh0dhi zj{BU(IowfAzqG$6%f`)X&ERL@p6U2p@1e!=t!F^6eB0R#Fjk`#E zbs<|aDd5yN@w3IFaQDP#e^t%b0+1EU#&FHpJH~C2yxOaS1ej0aiX0D%JC%atje>Em zL0hKcBfLEZ0e6)cr{UV%KQ{GjOcj?rl?^t{r5|;$=!NGR{(%>l42Yerj*TH>mtbeIdfgKXP#RrY-gtnRS5X~NIFZuI3 zysVe~O(UIbj~+M;Ld(v)C|6Wtl09d+o2Smz6`Ru>X)kOljj==y@Esaj*z_TEn#Trxs^Jd$3mS#@h<|~Q3RNcZvN02Y)U~6YNp6cjb4u}Nw5t{Ajd_q zJk|8){-~$nSV1i9K3)d+@IFPLz!bM za)qryKvt6&$dj&81+2UAVw1|ThV(jm-h!Q7dXr+KrE!%L8?>>H>{M=U!}+M4r!HkC zVxI%OvDV%2SE(3!PsA~JNx|qr6dOo{_h#4D9LQ}X(h9wIJ=WwWZmcD~9%x3xHb2X! zc=6UFo2qxLrW(dUx z&o$G(kEYJ(O~wzZ=vjDka%MJd&f9*HR#=i>%}_3uxl5i!2X}7mUW&H<# CYy5x! diff --git a/data/images/gameSettingsButtonEx.png b/data/images/gameSettingsButtonEx.png index c88b255f99592718c877b77a2259103b705a323d..288ffae3fcd3873f9c9be3b32fcc3f72a75c5189 100644 GIT binary patch literal 18122 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 R%-D?t;3_)GRZyGI{{eyJ1t$Oi diff --git a/data/images/gameSettingsButtonExEnd.png b/data/images/gameSettingsButtonExEnd.png new file mode 100644 index 0000000000000000000000000000000000000000..f09e8c534aa619e68b265926e4b7d50788ce9c48 GIT binary patch literal 18160 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 literal 0 HcmV?d00001 diff --git a/data/images/gameSettingsButtonExEndHighlighted.png b/data/images/gameSettingsButtonExEndHighlighted.png new file mode 100644 index 0000000000000000000000000000000000000000..de059aa418504698c47457b0f3de5b9a6f2a5367 GIT binary patch literal 18179 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 Xl#-V5^S2SgUkO`MZA}YTZQA)Ct9AN2 literal 0 HcmV?d00001 diff --git a/data/images/gameSettingsButtonExHighlighted.png b/data/images/gameSettingsButtonExHighlighted.png index e716e4076e37f78ca54b669ee821105c6f3aa84a..f088e548bfba5a52f990bbc083d3bb781021ea72 100644 GIT binary patch literal 18132 zcmeI33pAAL*T7#AQMq(+tC*%JG3LfF(@wNYXM+)5CHTX1^{9g0I1aQh!Ft*AcJR`nmRamv-xbEH=6^qGBt&9xNI+` z4;=t3Yf=*eTwMNAJlIef5S(!rCGK?KNyQ&Pb4a`=iJYXeZRHGEtX}cbOmPL0*-5yi z!_BZJhvlwj#qtYWilmm$T8UOBx#+OXTMri&TzNYE8?7c zjo2_dsn6-B-FtTJ?M?y|PF=*S=qM;f8fsX_=$1AdN>WYK@lw|Cy1LRt;Z78u96Q%| zOy@#Y(!;aF(#UFj&PC^kl)i;;N^O=}+>AUQIU8G+qNC70uh{$$>V$TuLFWS(S?mm8 zft8OE$1MtuQ$R;j%zN^jlyXrsLi`4xshwQQxaZOAbT9eJVnDI~gFB}4?`9IIRIjA;cRf8U=3}12XTKr#`bTY~ zV3l`e4Eb}P55GSDp;;B!Ru{GX;?QA4p-fmk0{HXs80DTJ5OzA3z2vW|ayeTfGD_T} zJi2(Nt80Qn;tk9^rD3^`_6Msn&R=CLH|{$&*yw?OV?#a^rdzm38=+zQXAa{u)_rk# zNBY5c>QbNl)Fe$(0%g;0%qQ)SI&G` z-XK=#?ahXHzln)iim!^1y1jNuH(kzoC?=v}zHytL~KMN5gZVR9GNsy&d9 zF+o3&9tqp-Af;-8^`2Q{vchm?eYo{g)yrb6@Ud+RY{D4Z6t76mmX{ze#hC4VzI37G z{N{soFiDzRnaNcL`32I|>!ju7=B*2A^vYFU6`q$7oU8I)jUb(RuyAd7qlfpLlLtZ% zKDjo_X5ZPOc?B~U-IxQ$+iUuC14sOdWPQZ!r%N~*j{xxA$eb2qlFDO^pKD?c)xp?~$_r+aEL1Xm9Mf_g7R)Y@ zEK%FAFVB35x!-TWjs}j@T=y0WJ(Y8jtrl&+RW>SgOYjxTUVC+6h%B()$7>n-Yf4f zJ|<~#^X$_)PT%E~i{%oJ<^QqdTI#jA9hy652Wnl>d?ML@jPZ;&kp0elm%%4OsCd=d z7)|f_y|b3?Uw&P4okqq9PV7L~K%C|BJcV;nd(CurE-Q`;JQA2}XuiujZfQ^K7R#pP zOPNwV@;!@tbbBGES_myAturmbXI0O}J1ukKH7{T~Gxzkk^vvs7*1Yj_4y_2Y z3B$tpB#S49W0YvOv}Tb~JJ*pNan7os;e3}l8&16>*=8y_S7pgMFz9qzV(o!iuRE=O zrX?)NUaE&Usf37dUBB9H(V5E4nZMs;N;7IlG|pKcNT|DmIKeyq?9YX@CAE(eLRQ!( z2E^MZv}?3$eRdGb{w+s7HzvDiYe(kwI;WRTZP^9cBP;n<6qP=dW+j+KA5|Jg#dUkeSn{-BUU2zJavC zenZCg%9mj;_nj==l)LHbrc-~L`t2i_8hKW3skGSbYD&6czsx?1^ej!&Gd?3Zw`}7@ zd!DEDX6-FI@?CRUkC&#DCi)lpA0C;p|hrRm77=)q`0blRdF$`&g9m_F<$ zZwfh%((KJ`ce&Nlrq}*^+i(EZ2%F#@{Sd*sP*yQ2Iix$JbZ0nmXTs~P{x$n39gO1p znKhl^*(WsGFWl$;z5d3k*1Xp3`%UN)sP)Q;=bBpUTNf4ByH}MI|E}<0@uktbt&O;c zBayFLxUaiXx}xvYyl&}D^8eRAYlJ`MHa24g<)l|?z4_Py8meYqs@;PMmogS;FKY=koSRo zgNxrd4N`*iL+%D|4mv;7_wUkCi7}Tk;>i7>t}*|yYoSjfvP+^)VSdr#{RSeU?(_t%0!%*{`<-jZXe`1fw-Vb=56LfW_Zv0 zo`{~T9X_qS?$|qTI}GS+Rq`?A5-v>*E>#W|mq~^R%yjqoQB7@~S7xPr9I|4K1(Fd` zPb&=RyR^e`hx?9@L6;$1SM)jFrj1oH7o$Zhrv(@mzeg7SgaV@yM(!H-=wB?uX(V-}LAaGiRD?_(l zUsd)#y2s!|`>wwgs;IxUT;PAUtFwDj-{B!!A)9EG*p(37KhpNt(GH1RwWnl-SHp=z z^o4#Q(jgHc7TUYDEAsU6{9P;0+Z9~(c(&!9Yrb1WrGKb;NPA;w&Bt?o>;0$E#_ao^f0e%G_o_cS@AOI z0cN+}`|jxeEmg0!>-(HzXO%2epHZ{FCM{Hb?Bl@B^k+sZlvixp)A%8yG_~2YMa=Ix zzs_IN|ENF7e{R~a@xyz*ZI3@?H61%>cQ!2#j|eFrp3`A-E!m#IYp74PUSq&B?)VUB zZ`1H`wt^DtU&#^KEyHDjqj6)|vv=F=W+2-I)806b zg>|j1@ymbZVNk&4%jv2UvCmQbPiJ1;wZ3$Py#>E_we2!p82*{3mTc>tiOA$W^fIV~RmfYq~@E^d4`TN?tE?W;?su_<)jKwl0x8$5xo z3FMHeJLr5Eh0b8IjNtthRd5)SW(41;Z;P_!n9{wOmcd-QbFiHYHFyUVPlK;9mLUcb zKnK2bJ{cD1>%-y^0*&C~ehJ{UU>FI9jZfk4FoK&10>a#E9bl$xE*++?i$hS+SVNcr zUKg#8H^k`az%VE@4vE4e(Rv6Jnt;L+P-xhf7u;9|ydrXGUIZsI^Dp5*$q4Sv=W_^1 zWI#ZGZU9!7&1E3bcsw47!XPmi1ULi13u5uffe03F*@Tm?e$41RDwoOOGubSdz%QA? z_TwAD;etTlUSIO^<$Mdo;(cKUQbY!lIY_iF3i%TwTU+5~zP>-SwsWb|fu7^X9Cpq2xJJ)7xs-K_^K-Uu+pT?$w?!T24 zfl8s^XjnZ%1Qv_dN1)Mk0|Z_lk3txt3=AoBi~*U9qJ9lD#o2d(?72*^FOhww%n{^5 z1B2C^NvUf`hD#Damj{J_n3p)8p^u$qFVR2f)n zVPB(+P zCn5#C+K2hSun;`5|Nm?mer;F%zgULJDyDjqSqwVO82Pn;zYhG`%1x~2^quv!A$-3R ziIbh>YbP)PJDXs`@}^hB_=a6aW=tOy-1e9H`EkGU!eDU*6f8~9uk?P}uYOd56NyZZ zNJReH{Z2{ClB+?Q>?)M5;{!$lhBywWU&rrMKZ;q@i-g;qYL)& z$(xumZ;BrpmEgtZ`jYv^OkXmCj^wZyMC9b)l$nC>Zb1_TH#B*?d4b-)8-vbw6Es5~ zzw!A77!>$Iq6ME{OsA@$rtZQ`r>dc*la?D;OujMZOEk#v6f402gD}q789WQqjltBQ zL(tg{%s{%2n;8@Q3gih|xxOH&aU-bahnDV>mIl)drzpM{PE^;FBkOowPmF>GV(=`E z{B{`suH?UcgZwuyCNuhPdWHBB1%Ut&E{bpo=L6A-a6y0w7e%;)^MPnZxFA4;iy~aY z`9QQHTo53_MG-FHd>~p8E(j3eq6n98J`k-47X*lKQG`o4ABa|j3j##AD8eP24@4`% z1py*l6yXxi2ci|>f&dXNif{?%1JR0bL4XJsMYx3XfoMgzAV7qRB3#1xK(r!U5Fo-u z5ia3;AX*VF2oT|-2$yg^5UmIo1c-1^giAOdh*pFP0z|kd!X=y!L@UAt0U}%!;S$aV zq7~tS01+;Va0%xF(TZ?EfCv{wxP6)q zXIcZmhgYq%SMCHKe0^hOX5td)`ML!?_d2iuXtI}5+&3d7EOM2}oRb_gH)WaG@Zj2z zHkHday2?YhUK-O$e+%?B`4jJsjwW@r0~HLnwFk&zDhFoLloeyh|K|k-?3&vzXDM={ S#9s&=`?Vt3nH8?vw(mb3^4CZJ literal 7023 zcmYj#Wmr^E*Y-iWLmEN4BppI(kdO{(kj^25p;M3!Dd}=Zksb-@?jB0Iq(KBEhvvoi z{hsIgew=;pYoC4gTI;^oIcM!1^;S(DABP$T004YN1zAl1K>7OE7skSPY-I+)?;io% zS;4>!0B}kET_}^w0k;5vqi!c7^Y*PR)E(+(3w5Sfl#!u#c7@v5y|)Gc?**6^L|bc* zTmrdrCaoM9n5+!dB*UWDl#UK0O$Y}gyQN5Ou2uzV>~cgSZv&Hjg>jS27op9 zfQfr9-WuvaF^oXR`+Sx|G+PtgTn}WlO*P@`S|E3CLGRT0A2)CEJ~z(KZ*6YQDfLJj znh)vu-$S}gJM`|}Uj>NYBF}%dtuqI`G!BwSyZqHPa;8%FY%CEw)M9BnUjDWo_u-ay zim^x0qEVldbVGy0B~CUo=JaJDW0Z6vM=#6dgVp*f*9|IoRS>AO2c!5Ua2Fd}qFyMo z5$U^ktRn&7q#4@zlN}2+&^Bak%89EivNTQkP2O~)} z7?l$Q75FtjY18W{(4I)RJ`ss9l50v38vtGg--fry^Ct&YYe@XWtCeXi7N!oB%f}tJ za_7&CC(q3qcl|*v5hIkhGhSv(xDXGP>F4X%rNjjFyyxTT>z1y1#f6<@Ib6k9j#t)4 zU8!4++8lLmIacL`MiTU<16v5qOPb!CPD(*vMPF@Bp_u*|vjFh|wlFqos74nXV^Xp5 z57s8)s~$>=m;4d>3S3MxB=JvqiTomEdW4xtqGVpOHGY1gSoKwVl4MeD(n*tPkEh^Hp&C;pnT!6#K-ea1vwIV?NwdjtVu%B?c8a$Z7FP#cHej1n~0ZF z=+x52^(Ke+9adsrt3~g!%W=cQObw zpgQ`Tb(|l_5{7V6lu}qzXgGPbOG>|$u9V{Hoazi~$CsFB`NQROKw29m*gsRtbV^}w z_qAxWASGhO5v7n~sJ7(S0E4?I41;c!ZgrWj8o5=b8!dhGxRz8k-dqe0_+{Z9L4rN3 zRipDCJUN@w?`WH&B}z;3L}WlpAiWyR(_|Y-%#C!H%P;O~*gNb+X{Q07R!EOH);Vat z38*ykTN^o)rlzIpmnoEKl*#Y63c(MGVBcEbG#lIm5lHnbu^F++L*fzWupO;=t>q$| zB63v;(Q`OYsY4-6UbC!MyHn9&dUl&hV73ahXvL>>=lYpH@16FY<8{%wJf1#A4IVSb zA|8TLyjRc#Do)GWzj&-6W8D2(rqDdaJZ&vBp>aaIU|KF#jxffq&uD{r!?Dk?uYeVU zm4Q`R^|$I_rlxA+H;!*&Dq<@Aqa&mFqca(TSrYuSFL$zbvSzbZ>&@PIzvHSau4}MX ztloV0&ET-E#VPEah(V#g&O758xe8bX%S>}ca}jY-qgs+$S@sO1yYjehu&$(@s&Z=% zV-a5GSm$pJv7ms|_rkjmlUkGfoBU(%Brx$K<_XGZ-_ZuR{ct4})fHXIM0`1v^zS`O z-Q$Jmj}eW{fi~)%4s-O_!L+ibCade9c=7w8(4pO7#8S?PKn_Q?0myBPsk;)5%Kw>m2rYzO{)u3$j! zq$3g#b_8K>19oS|G0nHlqq_s}*uo;h^ui_MoFnzAC-~C@y(X4q+*W0;Wm9EWvLO8G zBHy`{1UbQ_Joe%X!c78Al6^cj1|!q@Fnz`M%Fjf2IN?H0@7q>y4^AW2Ve7aXeiZ4v z1IErid5EsFup;sj9uh9m)YmGJYOj+2N)d4ulgF@}JoRFU!|~~&?Se4!P6$mz&dC^Y z(y5&&aH{$y{z+&N^kMD=6>@DghO(7>Zc)KkSFFVjng9o&-`l>nvnRE^Xch;gf?BnX-Y=!ynFU=kptLyU`tk#-ehr?*VWKo~s zq>B`3WFP0)m%O)VBA`R<8B57OO3Hc~t;TF7ZT7ZTxU&rjQcKge(+HgK=NEq9uj>9d zIKOza$eT9GzSta6C(~HaF5b{$T{MUo6_eEds(q$?tu1soxm;^Ld+9WBNaNRXA@FB< z(Xa)12Oex&)Irfvowk{_zEQlXK}y1-O7|{PZyb#))Er$7`cWrQ?=YDN>Sh~%PSZ|G zXlusLyx5l~=zrdJ4?FVW#uviZiT%>I&g3lXv$==FUPaR3i!OM^_?53=PCfUeh0yZa zOJ|;B%4KO~-WXaKHmQ$*CuV-H_}|8%i-D!U`~!Hd zmdqCO>-=^s5v%ru(4!_I_qEA4579efEn*0xlLq&b>cy?6dJTG+-$hLwf4lz{zfYP{ z?{EInoC$9TTx;r-Iw(b7lz4zJwPi6wa?Mp($$eZqM>p$vL_M*MI% ze)xX&E3k;jx}@vf-ffZ0nAI3-HpPAZ{V<$@oHyWddVdx%kv@@^c9NFV?)ahb?svyN z)%V4|u0Fc9L2nSh$(ioWL8sS}7wu8ODxv!32l|if54KlT=UU@MH%U}UNe^hK>8H1r zAnwJ-dXwH#K~og~d|3b>Fa!Xu9v*QI06h2r;I|n7h^7Mo1vJsLR}KJ(G8JW|w7nPp zEc-YoTW5D1AKiF*U8{M8;L(+f)*y<-m_}lL`Qmr|E(XPk?#66*({pmll1M8kba7w} z4kn@xeMXc>ge7w0e?eG@mQk_*t5_~&X*ZoNnl$!l zn$%I>y4&9Stt8{VU>P$+S*$)UI&`wviC*{GxalreW3yaa-Ut%=Qm?}0r;g<_muvw7 zv3RQ0SMiiAa2dIT8#9MC2l-LX{iZ|(|Gqk~?6pJ>;%7SPcYgCH(niR>*pRA?U*0^$ z-Og1Ck^6?q!~%aJWK6qztjfrD+WD;p58L8?Jhg=NavQ*1&ns?{U4Hs>v3t<*E5Qm& zdo(Dys-fUCO9K!0jEf0GRm>=rg8MHQxyz5ee}61eX1kzHWaRa*it+n5F!i; z5@3jsS{?XF>cx0XI8Lh>yZWiMYWT?)VeMTJnXqgv&L0{j<60H5@B^KUI-MKKGs2Sx zSR@`V|IyxvkFuo++6eKws4(wsB1E^tKkDy*C<7dd{2mhd-E0UWcEUh6{KkJF`O8g( z1A)4S|FZjtRzWhdMKf$3+ZL85?SQ`px5X7D6#Th>)J=H@io+avp+sS?<=Og1 zdpjhQzw@0y48uwZjcIy1%jf0D! zFQ0ht;MXUx02XI?{w1a!4>)9krOxIx_Jqh%DSe#`n{RZ+-&%&y!X=AL&A-VW#`8~* z_kAR$T9q5mJ$j0gPkvBJA&*m){M2e!TYh-wgE@|T9JO_!7Eio>u?u=O#?cHdez2=L z`hY@xN{z;R{!!sci%)!u7u-e^Cq@MvGl?Ku;8JS06ZDN>e(sZ8}& zK}ZFQ0j@>O9y<$i2P+8^r`fTvE)G{F(=A++bx<#jkXa&GB`bT*thJi1M+x_lZzCo;6rh8^2d!# zaie60j!_Xab8Vu0v(+u^D*}+6vTMJ2LeR@A&n^;i*+Rpp(HdvJRvsGGP@-9%JoCqSFU-aVhs_yHtF{6JRuWe^v4_D_$F_`{&$P%pO8mua+`e|%#ba^=LW}PnW z5W{L{qx#M6I*zypgRVbdj@><*FL|d6iQ5{knJqfKcG+~^V6A#3>OX`ajv4r%Nt3x0 z&7fFMlIn@tT`hsPx^5wx4f{)qON{F-&Guv?2pPJI)`z+g$l0h6h1f~m;Pb5ROLqsk zJw1p~bAFoe+cLeK=IHCnP_trdZIusHUpJY%{>Yvay8^fFGWqzfv;XaoF>Q+(uC}9) zDless(JzBPEPWdpS;DmdObsgX6=gx< z)ZEkWwbb8l1nG{#VpMj%NH@NULKOK4j`(Am7!evT2xgD|jC!00vti)rMO1D&^;n$= zjV|2OaTk6_+1EeChW1ahF?-dzbfy~A&I`1fJ#!I3t)wV{A)qNILjDiiVLaiQE1-i| zc<{pe;mP&2n8Bv3yg?xoMPYuQCk#&%E{`N~lE>P5nSVhoyMBx1dfQ~wny z9llYMBt1T(>#uwJ*u5;3&0nX_{RSu}JgTL+IyfMMYdDr2@F082=!)tp>5Y)n!KD1L=pzT@i z1lw~Ho-pKgNP$`~Gm}&zZu0IQscU~Ad)aT#^FbRHrZtK;R{Iq8Gi74Foo{UEJl|t9 zA^usjy{mYNYS9N(C7)8f?gV3)Lw1!!@Z8A#tNPgr_X9h2S2CgGS6CnGNI(rC0S^Ngw`8{=#!vrp4 zV<+KE?&n=;}xegAg8dk(FrCCRWdw`xim=pn*D)Dn>woOYPRO2R|N-DbfY z$}}xmJW`1X^wWBv9-zEe)4~;6ucsllHDrzP7_${yZSHd&i2nY$o52;7#n50P7+bO@I?dIT1 znqp4i5HNSP5DEyf+NlhNXgI7jo{Ns@?25lD={{vymGrI%?!-BK5zbHZE6=o(2`TlE zM8Zr(g`G(BVD*`V2a|)$Mm54ik&lItwIVoM?7R14YRWyT6Z&8HKa0};g~zb|H?IEx z{osJY=g`mp0maW&|3~lt17?MnFG-jg?pHDPUZ98IUHUMzb0 z9wb%Qy|yB`y#P1z3_h;4%XMG)EcNjKB*B009tz4^+$)=HIS~=xj>s{--zmiu?mT%@ zSqqRmh5JP3d99Ge`?x$`(k6gY>w9A`hW!0)?tO>rz0To%??d?(t9{;;1N`wQsx=i; z{r38VcPFF+)bUi>Xon7!4n1z5SJ52|KP3{wzi*;$@%TF|?QGKEJ1W!ocPDn77u`gU zNT0B~iy?pnZvhjvzN2C_(6G}Ohq4;ItEdYzr#pJz41qppfVm8jxztQ=CRoWK6i$Bl zgtNzQ#;hk9)`!m~fgqY#d0{ zU~%Vwqs#g0z{uN@F6JF!NTT`0n}M>3j~SRU+Z{1meA`d|>fHZ|Fb1|!X~&^7w+xCx z@>mR_NzH^^E#`ci&@`~rZKfbMpFe91XP}9n`R!`%FzqbH9y+?)gS?de6Wu2mXTxca z3Hhk(qr60qf=ZD{V__$vDPsL+jD-0yFaE!=|K50<{NE>zKazeGK3$uRr?&~|>mW_{ zKsgzcjyHJJIF#t&M(R2`_zEWyE1jxwM0UxZ@(YkO)^)8Edm}mF?I-%-l0W83``=>g zIe3$vm(yyL5>Er}^22XTa!~?G%sO1W*8=-`Y-sz6F4HroQZCU5H5Apls$sG=Vi`ov ze4Eiktd0Ww0eRs^$^ZQB`N*U&%IEW~uSGky$ZJ1F-`sqij^@az&IMAHa?B<(uwu(* z5tS8bM3LI-7x28=_GmGc1(T5r7YB1MNeIcpx$#)Yw1z^OB1dYESEzB-x6}DJRR7n% zQhNM*N~e;*0FlSa?yR*9oqBBaC2`eE*Ug@8e$q3%F)S9&l4h_Va%X$YEk}TN;Uv-S zHV%@Jj&xX0g7y;^r|%7wAv}(t;@dpsyg!PPxrKP=Bowk5uFU1ES9%9xvLaQyK$coq zP}oevF^%)j;3Cxb|47_Dlk(lrYG}n-mO`N_XalTSDb#UTr0A~*;ueK1elc%Rina6QPl<*G1@3Z3;(=dab%TlcVk zYKl63Rx&f8Y-uBHdLGiLNIeGo=?zw8vkys1*sI^0!nrooBkg~6@*+t*WwfY;HjR2i zOUXwxx%#Mt=jG@MIH{pruaZ?4TDda=!>MrE+kG^DvfLG|B=Tu7&JZjikTnn!L3NoD zFEywuM;=aO_@1#&Wv4DhRKS!#v-*7;k+eJOgDxH}6T=@6Y{xUxXBx`tS`d}K#k!(+ zK?Gaw7l)dDWqO;jS@Iry0BVEAsB>&#b9U?M8|RPBx1~3f=jm(N3oV?E>4xdnqkYHG ztkH~{yx<(pEO7Y2F9JPr8VZRSXvj*Km!M2rXSh(Nky6#pHgKUl({8Rd-=zKgM)r%zQo_@p46vWM$0T~miSvH>bMEHp)tRAD`cbn*Y zDCB5W#!MKj{j)!Jy3Yw0VW@qvWxs1%ohC$AyQK}Sb>cL2Ft{3ZKaCJGos=s)XMXRm z$LMO*V=Z=RmJ(KUEBY-u^Zld#?ijS=AJd|Cb%esANN z*M{hQQZ%!NTPl=%XmrN?^J^y){5dD8EBTb-S8s_DI3yxhh=wlRUlg2j;~6;RE2qdl zW&<4ZjojP17V#rR*P=#Tmf3>|u{zaaJ4V!BN8P^T-tPlFou)m$dreW8tVcBzP`OBd}dSJNr%IM=r5j?d$fYdoXKy{=-R6nn#Nm>f^9Pn$`{?Qt`_jS{qv72 zLHn1JpL_jGEZh%`V^p0_rd&m6u^D>K5%Z<|^u`;!iqr*ePW+?ur`1f&tP_UQxf^QJru^#ZJ z6}0eAxvsF6$z@${|MhbIyv-|Gh#4Q65%MzFP(&hzv=Ekx#St*TS@80|M}s z%igE&ic7y+n*hXNSnbMW>(>|FIJXnuK~~LCQYg4pcJ&$Ce|)A7zt8>RabkCSZeQ$~ zIy3u9nHnLgj1X)h5EN=`b9~&(G>-qiy|_h(DEh}*LRIY)d=2ae64&jnZ?3)*)9k9N z*r-P;-e5CL`tmd05&K&l4yP9OCY39al{p%YLFPSw9916R9oCVdc`f3Idd}g#J3YAC zar@%qF^FjSO%^v|nN(5s$#kMIICz&;=QqlSuywVuDjoQ)ti}f`80!e(Yl3eoh#qPz9DAA zp$vhn_8F*h$pUG0-JhqYllh7Zm{(AeoIA9H`xV)5%Y(%ubPpmxE2HVa^RIeQk0%;{ N;u|$txU^aD{{T|8k3awb diff --git a/data/images/gameSettingsButtonExSelected.png b/data/images/gameSettingsButtonExSelected.png index abe6ce8a84ec534f61a5a74804182940679c09d7..f088e548bfba5a52f990bbc083d3bb781021ea72 100644 GIT binary patch literal 18132 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 S#9s&=`?Vt3nH8?vw(mb3^4CZJ literal 3700 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 G=>Gv*yW(O1 diff --git a/data/images/gameSettingsButtonSelected.png b/data/images/gameSettingsButtonSelected.png index 2c0fda768305755ebceeb425000619a1d98ae4e5..e5c3d8907d43ef1ce82e812eebdc1d0351fb3248 100644 GIT binary patch literal 3685 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 diff --git a/data/images/switchIconOff.png b/data/images/switchIconOff.png index 0c14a52b59ed094a443d28b22cc2ad57e6797ef3..7ec097fb582b17480a661e9be867ded74994b933 100644 GIT binary patch literal 18585 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 delta 724 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 delta 1472 zcmZuxX;4#F6b_0atFo0HW5AZh2YE?eAOV7e5KSzItb(W{?>!)37LpW05EG&WK^?$= ziV8T03Zk^21goMIY7qxPtFjaq+$sn~OhshS(x=s#{^*^#_ndpqoNvDG+&kyNUIU#4 zw=gndmAQ$d2@Z!d=d5N$Vb&Adz@mlNNq)^7#*BkJY`r{MoFd=KlcKl~M9fF=93d|i zjY4@yc4ikEh{Mg-Xvtu%GjzBlzT!z+YaL^8Te9)+f8Z)3q^Gm8b7??%ventEd3rHk#EK?H?R z;)4hfdI~}z^H7)skZ3#-08%MrfJPU4426+H$P|h{n-ALsXdXxgPnCHr~hAp<@wDhU5zy zI><*-U=jpjt$`5$1W`x@@MvTrfKVWq4Eez{3JMZ@F_OMgB!$jGWw2BrkqgA4FQF(F z`=hI%V=9EGoQGY46%rntfy(iy2nixc3BioaW0gkOSKxA3Au)>I?^di6-ytsPe3jHH zSW~c5$6dW^E5k&5X%Z?OE>#s@wZ5eJdYK~GMyC^4A3jGHcizhy?+bPN&2wE}()O9z zEsq{7d6=jeDbUOf->SIMsd=SazU;PaufrtOpvTqJ^Kot7`HAS8MHwRd9ruFN&fEn( z_K^cd=)6>m3|YCH*t4+vU9Pd0f%)0}4$ZR(T<(-}nZ-eUU3!o@{O3fK@(1H-;auE*G+dm z#QkzYZ=O@V?~r#kHE*U?rP&>=t9WexN2=|SxyI>aA8M;%QGJeIetyn&17GfV!L!tM zzH&I>hNfhsuxqH0T-AQos^qCd;K@Qi!kn`nzb&TSM;7o*Y4#$l`H)GKA})V;;7qm)L;(Ck`e^wZ1BGcTT)Fh(2#p^n^^y1MkT1he9kZOjLQb;5XH zQ%8T#n1-8VEclS~{88nm&4a|68UZ1F!m}Y70hb3$Lpv@as+MW=@!#`QV>o*>AH^f8p zStkfZXgBE=TMjr{7I&Qq_I`3hx!>J(bZtH(?yW~Sj@VG>Rq*g?YiWe|##dvr??xWF zIEie8e48f6kPQ7$Rd~BnIXW05`x|GHsz54u\n" "Language-Team: LANGUAGE \n" @@ -139,23 +139,17 @@ msgstr "" #: src/menu/drc/content/ContentHome.cpp:23 #: src/menu/drc/content/ContentHome.cpp:23 -msgid "" -"HID to VPAD allows you to use your USB controller on your WiiU. Currently " -"you can emulate the Gamepad or a Pro Controller." +msgid "HID to VPAD allows you to use your USB controller on your WiiU. Currently you can emulate the Gamepad or a Pro Controller." msgstr "" #: src/menu/drc/content/ContentHome.cpp:24 #: src/menu/drc/content/ContentHome.cpp:24 -msgid "" -"Before you use your controller, you may need to provide a valid config. More " -"information and config files can be found in the help section or on gbatemp." -"net (gbatemp.net/threads/424127/)." +msgid "Before you use your controller, you may need to provide a valid config. More information and config files can be found in the help section or on gbatemp.net (gbatemp.net/threads/424127/)." msgstr "" #: src/menu/drc/content/ContentHome.cpp:25 #: src/menu/drc/content/ContentHome.cpp:25 -msgid "" -"To map a device, select a controller from the list on the left hand side." +msgid "To map a device, select a controller from the list on the left hand side." msgstr "" #: src/menu/drc/content/ContentNetworkHelp.cpp:20 @@ -227,8 +221,7 @@ msgstr "" #: src/menu/drc/content/ContentNetworkHelp.cpp:126 #: src/menu/drc/content/ContentNetworkHelp.cpp:126 -msgid "" -"quality of your signal. If it's possible, connect everything via Ethernet." +msgid "quality of your signal. If it's possible, connect everything via Ethernet." msgstr "" #: src/menu/drc/content/ContentNetworkHelp.cpp:133 @@ -295,7 +288,8 @@ msgstr "" msgid "Other" msgstr "" -#: src/menu/drc/MenuListDRC.cpp:42 src/menu/drc/MenuListDRC.cpp:42 +#: src/menu/drc/MenuListDRC.cpp:42 src/menu/drc/MenuListDRC.cpp:43 +#: src/menu/drc/MenuListDRC.cpp:43 msgid "About" msgstr "" @@ -314,3 +308,32 @@ msgstr "" #: src/menu/tv/TVControllerBanner.cpp:44 src/menu/tv/TVControllerBanner.cpp:44 msgid "Press to apply patches" msgstr "" + +#: src/menu/drc/content/ContentSettings.cpp:26 +#: src/menu/drc/content/ContentSettings.cpp:43 +#: src/menu/drc/content/ContentSettings.cpp:44 +#: src/menu/drc/content/ContentSettings.cpp:48 +msgid "Language" +msgstr "" + +#: src/menu/drc/content/ContentSettings.cpp:31 src/menu/drc/MenuListDRC.cpp:42 +#: src/menu/drc/content/ContentSettings.cpp:32 src/menu/drc/MenuListDRC.cpp:42 +msgid "Settings" +msgstr "" + +#: src/menu/drc/content/ContentSettings.cpp:61 +#: src/menu/drc/content/ContentSettings.cpp:66 +msgid "" +msgstr "" + +#: src/menu/drc/content/ContentSettings.cpp:44 +#: src/menu/drc/content/ContentSettings.cpp:45 +#: src/menu/drc/content/ContentSettings.cpp:49 +msgid "Rumble" +msgstr "" + +#: src/menu/drc/content/ContentSettings.cpp:45 +#: src/menu/drc/content/ContentSettings.cpp:46 +#: src/menu/drc/content/ContentSettings.cpp:50 +msgid "Music" +msgstr "" diff --git a/languages/german.lang b/languages/german.lang index 870c464..045c3d6 100644 --- a/languages/german.lang +++ b/languages/german.lang @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-07 12:39+0200\n" +"POT-Creation-Date: 2017-05-07 18:37+0200\n" "PO-Revision-Date: 2017-04-13 16:51+0200\n" -"Last-Translator: \n" +"Last-Translator: Maschell\n" "Language-Team: German\n" "Language: de\n" "MIME-Version: 1.0\n" @@ -247,16 +247,33 @@ msgstr " zurück zum HBL." #: src/menu/tv/TVControllerBanner.cpp:44 msgid "Press to apply patches" -msgstr "Drücke zum starten." +msgstr " zum starten." #: src/menu/drc/content/ContentSettings.cpp:26 +#: src/menu/drc/content/ContentSettings.cpp:43 +#: src/menu/drc/content/ContentSettings.cpp:44 +#: src/menu/drc/content/ContentSettings.cpp:48 msgid "Language" -msgstr "" +msgstr "Sprache" #: src/menu/drc/content/ContentSettings.cpp:31 src/menu/drc/MenuListDRC.cpp:42 +#: src/menu/drc/content/ContentSettings.cpp:32 msgid "Settings" -msgstr "" +msgstr "Einstellungen" #: src/menu/drc/content/ContentSettings.cpp:61 +#: src/menu/drc/content/ContentSettings.cpp:66 msgid "" msgstr "" + +#: src/menu/drc/content/ContentSettings.cpp:44 +#: src/menu/drc/content/ContentSettings.cpp:45 +#: src/menu/drc/content/ContentSettings.cpp:49 +msgid "Rumble" +msgstr "" + +#: src/menu/drc/content/ContentSettings.cpp:45 +#: src/menu/drc/content/ContentSettings.cpp:46 +#: src/menu/drc/content/ContentSettings.cpp:50 +msgid "Music" +msgstr "Musik" diff --git a/languages/spanish.lang b/languages/spanish.lang index 05fdf77..efd02bb 100644 --- a/languages/spanish.lang +++ b/languages/spanish.lang @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-07 12:39+0200\n" +"POT-Creation-Date: 2017-05-07 18:37+0200\n" "PO-Revision-Date: 2017-04-13 16:51+0200\n" "Last-Translator: Victormr21\n" "Language-Team: Spanish\n" @@ -250,13 +250,30 @@ msgid "Press to apply patches" msgstr "Pulsa para aplicar cambios" #: src/menu/drc/content/ContentSettings.cpp:26 +#: src/menu/drc/content/ContentSettings.cpp:43 +#: src/menu/drc/content/ContentSettings.cpp:44 +#: src/menu/drc/content/ContentSettings.cpp:48 msgid "Language" msgstr "" #: src/menu/drc/content/ContentSettings.cpp:31 src/menu/drc/MenuListDRC.cpp:42 +#: src/menu/drc/content/ContentSettings.cpp:32 msgid "Settings" msgstr "" #: src/menu/drc/content/ContentSettings.cpp:61 +#: src/menu/drc/content/ContentSettings.cpp:66 msgid "" msgstr "" + +#: src/menu/drc/content/ContentSettings.cpp:44 +#: src/menu/drc/content/ContentSettings.cpp:45 +#: src/menu/drc/content/ContentSettings.cpp:49 +msgid "Rumble" +msgstr "" + +#: src/menu/drc/content/ContentSettings.cpp:45 +#: src/menu/drc/content/ContentSettings.cpp:46 +#: src/menu/drc/content/ContentSettings.cpp:50 +msgid "Music" +msgstr "" diff --git a/src/Application.cpp b/src/Application.cpp index 098f0f5..4aeb00f 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -79,6 +79,7 @@ Application::~Application(){ log_printf("Application::~Application(line %d): Stop sound handler\n",__LINE__); SoundHandler::DestroyInstance(); + } s32 Application::exec(){ @@ -151,14 +152,16 @@ void Application::executeThread(void){ FreeTypeGX *fontSystem = new FreeTypeGX(Resources::GetFile("font.ttf"), Resources::GetFileSize("font.ttf"), true); GuiText::setPresetFont(fontSystem); - log_printf("Application::executeThread(line %d): Initialize main window\n",__LINE__); reloadUIflag = true; bgMusic->SetLoop(true); bgMusic->SetVolume(50); + while(reloadUIflag){ reloadUIflag = false; exitCode = EXIT_RELAUNCH_ON_LOAD; + log_printf("Application::executeThread(line %d): Initialize the language\n",__LINE__); loadLanguageFromConfig(); + log_printf("Application::executeThread(line %d): Initialize main window\n",__LINE__); mainWindow = MainWindow::getInstance(video->getTvWidth(), video->getTvHeight()); log_printf("Application::executeThread(line %d): Entering main loop\n",__LINE__); diff --git a/src/gui/GuiElement.cpp b/src/gui/GuiElement.cpp index ac26d0a..ace8f0d 100644 --- a/src/gui/GuiElement.cpp +++ b/src/gui/GuiElement.cpp @@ -120,11 +120,11 @@ f32 GuiElement::getTop() //! TODO: the conversion from int to float and back to int is bad for performance, change that if(alignment & ALIGN_MIDDLE) { - y = pTop + pHeight * 0.5f * pScaleY - height * 0.5f * getScaleY(); + y = pTop + pHeight * 0.5f * pScaleY - getHeight() * 0.5f * getScaleY(); } else if(alignment & ALIGN_BOTTOM) { - y = pTop + pHeight * pScaleY - height * getScaleY(); + y = pTop + pHeight * pScaleY - getHeight() * getScaleY(); } return y + yoffset; diff --git a/src/gui/GuiElement.h b/src/gui/GuiElement.h index 7b313a9..e6232ff 100644 --- a/src/gui/GuiElement.h +++ b/src/gui/GuiElement.h @@ -162,7 +162,7 @@ class GuiElement : public AsyncDeleter::Element pScale = parentElement->getScaleY(); } - pCenterY += pHeight * 0.5f * pScale - height * 0.5f * getScaleY(); + pCenterY += pHeight * 0.5f * pScale - getHeight() * 0.5f * getScaleY(); } else if(alignment & ALIGN_BOTTOM) { @@ -175,7 +175,7 @@ class GuiElement : public AsyncDeleter::Element pScale = parentElement->getScaleY(); } - pCenterY -= pHeight * 0.5f * pScale - height * 0.5f * getScaleY(); + pCenterY -= pHeight * 0.5f * pScale - getHeight() * 0.5f * getScaleY(); } return pCenterY; } diff --git a/src/gui/GuiSelectBox.cpp b/src/gui/GuiSelectBox.cpp index 7353777..6ebccef 100644 --- a/src/gui/GuiSelectBox.cpp +++ b/src/gui/GuiSelectBox.cpp @@ -94,7 +94,7 @@ void GuiSelectBox::SelectValue(u32 value){ const wchar_t* w_text = valueButtons[value].valueButtonText->getText(); std::wstring ws(w_text); std::string text(ws.begin(), ws.end()); - topValueText.setText(getCaptionWithValue(text).c_str()); + topValueText.setText(text.c_str()); std::string real_value = buttonToValue[valueButtons[value].valueButton]; if(real_value.compare(std::string()) == 0) real_value = ""; @@ -103,12 +103,6 @@ void GuiSelectBox::SelectValue(u32 value){ ShowHideValues(false); } } -std::string GuiSelectBox::getCaptionWithValue(std::string value){ - u32 pad = (38 - captionText.size() -2); - if(pad > value.size()) - value.insert(0, pad - value.size(), ' '); - return strfmt("%s: %s",captionText.c_str(),value.c_str()); -} void GuiSelectBox::OnTopValueClicked(GuiButton *button, const GuiController *controller, GuiTrigger *trigger) { @@ -169,7 +163,7 @@ void GuiSelectBox::Init(std::map values, s32 valueID) std::map::iterator itr; for(itr = values.begin(); itr != values.end(); itr++) { if(i == valueID){ - topValueText.setText(getCaptionWithValue(itr->first).c_str()); + topValueText.setText(itr->first.c_str()); } valueButtons[i].valueButtonImg = new GuiImage(valueImageData); @@ -196,12 +190,13 @@ void GuiSelectBox::Init(std::map values, s32 valueID) //valueButtons[i].valueButton->setState(STATE_HIDDEN); //Wont get disabled soon enough buttonToValue[valueButtons[i].valueButton] = itr->second; - - valueButtons[i].valueButton->setPosition(0, (((valueButtons[i].valueButtonImg->getHeight()*getScale()) * (i))+ (topValueImage.getHeight()-5)*getScale())*-1.0f); + s32 ypos = (((valueButtons[i].valueButtonImg->getHeight()*getScale()) * (i))+ (topValueImage.getHeight()-5)*getScale())*-1.0f; + valueButtons[i].valueButton->setPosition(0, ypos); valuesFrame.append(valueButtons[i].valueButton); i++; } + //Collapse the thing! showValues = false; bChanged = true; @@ -258,6 +253,15 @@ f32 GuiSelectBox::getTopValueWidth() { return topValueImage.getWidth(); } +f32 GuiSelectBox::getHeight(){ + return getTopValueHeight(); +} + +f32 GuiSelectBox::getWidth(){ + return getTopValueWidth(); +} + + void GuiSelectBox::OnValueOpenEffectFinish(GuiElement *element) { valuesFrame.effectFinished.disconnect(this); diff --git a/src/gui/GuiSelectBox.h b/src/gui/GuiSelectBox.h index deb12bd..feb7e47 100644 --- a/src/gui/GuiSelectBox.h +++ b/src/gui/GuiSelectBox.h @@ -42,6 +42,9 @@ class GuiSelectBox : public GuiFrame, public sigslot::has_slots<> virtual f32 getTopValueHeight(); virtual f32 getTopValueWidth(); + virtual f32 getHeight(); + virtual f32 getWidth(); + protected: void DeleteValueData(); void update(GuiController * c); @@ -86,7 +89,6 @@ class GuiSelectBox : public GuiFrame, public sigslot::has_slots<> GuiSound* buttonClickSound; - std::string getCaptionWithValue(std::string value); typedef struct { GuiImage *valueButtonImg; diff --git a/src/gui/GuiSwitch.cpp b/src/gui/GuiSwitch.cpp index 206a456..1124691 100644 --- a/src/gui/GuiSwitch.cpp +++ b/src/gui/GuiSwitch.cpp @@ -70,3 +70,11 @@ void GuiSwitch::draw(CVideo *v){ switchOff_img.draw(v); } } + +f32 GuiSwitch::getHeight(){ + return switchOn_img.getHeight(); +} + +f32 GuiSwitch::getWidth(){ + return switchbase_img.getWidth(); +} diff --git a/src/gui/GuiSwitch.h b/src/gui/GuiSwitch.h index 4988d2d..296564f 100644 --- a/src/gui/GuiSwitch.h +++ b/src/gui/GuiSwitch.h @@ -31,21 +31,24 @@ class GuiSwitch : public GuiToggle //!Destructor virtual ~GuiSwitch(); + f32 getHeight(); + f32 getWidth(); + protected: - GuiImageData * switchbase_imgdata; - GuiImage switchbase_img; + GuiImageData * switchbase_imgdata; + GuiImage switchbase_img; - GuiImageData * switchbase_highlighted_imgdata; - GuiImage switchbase_highlighted_img; + GuiImageData * switchbase_highlighted_imgdata; + GuiImage switchbase_highlighted_img; - GuiImageData * switchOn_imgdata; - GuiImage switchOn_img; + GuiImageData * switchOn_imgdata; + GuiImage switchOn_img; - GuiImageData * switchOff_imgdata; - GuiImage switchOff_img; + GuiImageData * switchOff_imgdata; + GuiImage switchOff_img; - void draw(CVideo * v); + void draw(CVideo * v); }; #endif diff --git a/src/main.cpp b/src/main.cpp index ee91446..aa7f4a6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -105,6 +105,7 @@ extern "C" s32 Menu_Main(void){ log_printf("Menu_Main (line %d): Release memory\n",__LINE__); memoryRelease(); ControllerPatcher::destroyConfigHelper(); + CSettings::destroyInstance(); } diff --git a/src/menu/drc/MenuElementInfo.cpp b/src/menu/drc/MenuElementInfo.cpp index 58b1ab4..2a78a35 100644 --- a/src/menu/drc/MenuElementInfo.cpp +++ b/src/menu/drc/MenuElementInfo.cpp @@ -19,6 +19,7 @@ #include "content/ContentHome.h" #include "content/ContentNetworkHelp.h" #include "content/ContentHelp.h" +#include "content/ContentSettings.h" #include "content/ContentAbout.h" /** @@ -73,6 +74,7 @@ ContentTemplate * MenuElementInfo::createNewContent(){ case ContentTemplate::CONTENT_HOME: { return new ContentHome(); break;} case ContentTemplate::CONTENT_ABOUT: { return new ContentAbout(); break;} case ContentTemplate::CONTENT_NETWORK_HELP: { return new ContentNetworkHelp(); break;} + case ContentTemplate::CONTENT_SETTINGS: { return new ContentSettings(); break;} case ContentTemplate::CONTENT_HELP: { return new ContentHelp(); break;} default: return NULL; } diff --git a/src/menu/drc/MenuListDRC.cpp b/src/menu/drc/MenuListDRC.cpp index d26384a..685f193 100644 --- a/src/menu/drc/MenuListDRC.cpp +++ b/src/menu/drc/MenuListDRC.cpp @@ -39,6 +39,7 @@ MenuListDRC::MenuListDRC(s32 w, s32 h,MainWindowContent * _contentWindow) , otherSeperator(gettext("Other")) , elementHelp(gettext("Help"), "helpIcon.png", ContentTemplate::CONTENT_HELP) , elementNetworkHelp( gettext("Network Client"), "netbtn.png", ContentTemplate::CONTENT_NETWORK_HELP) + , elementSettings( gettext("Settings"), "settingsbtn.png", ContentTemplate::CONTENT_SETTINGS) , elementAbout(gettext("About"), "aboutIcon.png", ContentTemplate::CONTENT_ABOUT) , buttonUpTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_UP | GuiTrigger::STICK_L_UP, true) , buttonDownTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_DOWN | GuiTrigger::STICK_L_DOWN, true) @@ -65,6 +66,7 @@ MenuListDRC::MenuListDRC(s32 w, s32 h,MainWindowContent * _contentWindow) listAppend(&otherSeperator); listAppend(&elementNetworkHelp); listAppend(&elementHelp); + listAppend(&elementSettings); listAppend(&elementAbout); sizeListElementsAll = listElementsAll.size(); @@ -258,5 +260,6 @@ MenuListDRC::~MenuListDRC(){ remove(&otherSeperator); remove(&elementNetworkHelp); remove(&elementHelp); + remove(&elementSettings); remove(&elementAbout); } diff --git a/src/menu/drc/MenuListDRC.h b/src/menu/drc/MenuListDRC.h index 4f9e84f..eede402 100644 --- a/src/menu/drc/MenuListDRC.h +++ b/src/menu/drc/MenuListDRC.h @@ -48,6 +48,7 @@ private: MenuSeperator otherSeperator; MenuElementInfo elementHelp; MenuElementInfo elementNetworkHelp; + MenuElementInfo elementSettings; MenuElementInfo elementAbout; GuiTrigger buttonUpTrigger; diff --git a/src/menu/drc/content/ContentSettings.cpp b/src/menu/drc/content/ContentSettings.cpp new file mode 100644 index 0000000..9f0c4ab --- /dev/null +++ b/src/menu/drc/content/ContentSettings.cpp @@ -0,0 +1,158 @@ +/**************************************************************************** + * Copyright (C) 2016,2017 Maschell + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ****************************************************************************/ +#include "ContentSettings.h" +#include "fs/DirList.h" +#include "settings/CSettings.h" +#include "common/common.h" +#include "Application.h" +#include "utils/StringTools.h" + +ContentSettings::ContentSettings():ContentTemplate() + , touchTrigger(GuiTrigger::CHANNEL_1, GuiTrigger::VPAD_TOUCH) + , wpadTouchTrigger(GuiTrigger::CHANNEL_2 | GuiTrigger::CHANNEL_3 | GuiTrigger::CHANNEL_4 | GuiTrigger::CHANNEL_5, GuiTrigger::BUTTON_A) + , languageSelectBox("",NULL) + , rumbleSwitch(CSettings::instance()->getValueAsBool(CSettings::RumbleActivated)) + , musicSwitch(CSettings::instance()->getValueAsBool(CSettings::MusicActivated)) + , buttonClickSound(Resources::GetSound("settings_click_2.mp3")) + { + headLine.setText(gettext("Settings")); + headLine.setFontSize(60); + headLine.setAlignment(ALIGN_TOP_CENTER); + headLine.setPosition(0,-110); + headLine.setColor(glm::vec4(0.3f,0.3f,0.3f,1.0f)); + append(&headLine); + + settingsFrame.setAlignment(ALIGN_TOP_CENTER); + settingsFrame.setPosition(0,-80); + settingsFrame.setSize(getWidth(),getHeight()); + append(&settingsFrame); + + settings[gettext("Language")] = &languageSelectBox; + settings[gettext("Rumble")] = &rumbleSwitch; + settings[gettext("Music")] = &musicSwitch; + + settingsOrder.push_back(gettext("Language")); + settingsOrder.push_back(gettext("Rumble")); + settingsOrder.push_back(gettext("Music")); + + rumbleSwitch.setTrigger(&touchTrigger); + rumbleSwitch.setTrigger(&wpadTouchTrigger); + rumbleSwitch.setSoundClick(buttonClickSound); + rumbleSwitch.valueChanged.connect(this, &ContentSettings::OnRumbleValueChanged); + + musicSwitch.setTrigger(&touchTrigger); + musicSwitch.setTrigger(&wpadTouchTrigger); + musicSwitch.setSoundClick(buttonClickSound); + musicSwitch.valueChanged.connect(this, &ContentSettings::OnMusicValueChanged); + + DirList dirList(DEFAULT_LANG_PATH, LANGUAGE_FILE_EXT, DirList::Files); + dirList.SortList(); + + //Fill in the values for the select box + languagesNames[gettext("")] = "none"; + int selectedID = 0; + std::string setting = CSettings::instance()->getValueAsString(CSettings::AppLanguage); + for(int i = 0; i < dirList.GetFilecount(); i++){ + const char *filename = dirList.GetFilename(i); + std::string name(filename); + + name = name.substr(0,name.length()-strlen(LANGUAGE_FILE_EXT)); + std::string displayname = name; + displayname[0] = toupper(displayname[0]); + languagesNames[displayname] = name; + if(name.compare(setting) == 0) selectedID = i+1; + } + + languageSelectBox.Init(languagesNames,selectedID); + languageSelectBox.valueChanged.connect(this, &ContentSettings::OnSelectBoxValueChanged); + + f32 frameoffset = 0; + f32 frameheight = 80.0f; + for (std::vector::iterator it = settingsOrder.begin() ; it != settingsOrder.end(); ++it){ + std::string name = *it; + GuiElement * element =settings[*it]; + GuiFrame * frame = new GuiFrame(); + + GuiFrame * left = new GuiFrame(); + GuiFrame * right = new GuiFrame(); + + frame->append(left); + frame->append(right); + frame->setAlignment(ALIGN_TOP_CENTER); + frame->setSize(getWidth()*0.80f,frameheight); + + GuiText * text = new GuiText(strfmt("%s:",name.c_str()).c_str()); + text->setColor(glm::vec4(0.3f,0.3f,0.3f,1.0f)); + text->setFontSize(40); + text->setAlignment(ALIGN_LEFT); + left->append(text); + left->setAlignment(ALIGN_LEFT); + right->setAlignment(ALIGN_RIGHT); + element->setAlignment(ALIGN_RIGHT); + element->setPosition(0,10); + + right->append(element); + + frameoffset -= frameheight; + frame->setPosition(0,frameoffset); + settingsFrame.append(frame); + settingsFrames[element] = frame; + + toDelete.push_back(frame); + toDelete.push_back(left); + toDelete.push_back(right); + toDelete.push_back(text); + } + settingsFrame.bringToFront(settingsFrames.at(&languageSelectBox)); +} + +ContentSettings::~ContentSettings(){ + remove(&headLine); + Resources::RemoveSound(buttonClickSound); + + if(bChanged){ + CSettings::instance()->Save(); + } + + for (std::vector::iterator it = toDelete.begin() ; it != toDelete.end(); ++it){ + GuiElement * element = *it; + delete element; + } +} + + +void ContentSettings::OnSelectBoxValueChanged(GuiSelectBox * selectBox, std::string value){ + if(selectBox == &languageSelectBox){ + if(CSettings::getValueAsString(CSettings::AppLanguage).compare(value) != 0){ + CSettings::setValueAsString(CSettings::AppLanguage,value); + bChanged = true; + Application::instance()->reloadUI(); + } + } +} + +void ContentSettings::OnMusicValueChanged(GuiToggle * toggle,bool value){ + CSettings::setValueAsBool(CSettings::MusicActivated,value); + bChanged = true; +} + + +void ContentSettings::OnRumbleValueChanged(GuiToggle * toggle,bool value){ + CSettings::setValueAsBool(CSettings::RumbleActivated,value); + bChanged = true; +} + diff --git a/src/menu/drc/content/ContentSettings.h b/src/menu/drc/content/ContentSettings.h new file mode 100644 index 0000000..f8535d7 --- /dev/null +++ b/src/menu/drc/content/ContentSettings.h @@ -0,0 +1,60 @@ +/**************************************************************************** + * Copyright (C) 2016,2017 Maschell + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ****************************************************************************/ +#ifndef _CONTENT_SETTINGS_H +#define _CONTENT_SETTINGS_H + +#include + +#include "gui/Gui.h" +#include "ContentTemplate.h" +#include "language/gettext.h" + +class ContentSettings : public ContentTemplate{ +public: + ContentSettings(); + virtual ~ContentSettings(); + +private: + GuiTrigger touchTrigger; + GuiTrigger wpadTouchTrigger; + GuiSelectBox languageSelectBox; + + std::map languagesNames; + + GuiFrame settingsFrame; + + GuiText headLine; + GuiSwitch rumbleSwitch; + GuiSwitch musicSwitch; + GuiSound *buttonClickSound; + + std::map settings; + std::vector settingsOrder; + std::map settingsFrames; + + std::vector toDelete; + + bool bChanged = false; + + void OnSelectBoxValueChanged(GuiSelectBox * selectBox, std::string value); + + void OnMusicValueChanged(GuiToggle * toggle,bool value); + void OnRumbleValueChanged(GuiToggle * toggle,bool value); + +}; + +#endif //_CONTENT_SETTINGS_H diff --git a/src/menu/drc/content/ContentTemplate.h b/src/menu/drc/content/ContentTemplate.h index fa8b1b0..bcf0ba7 100644 --- a/src/menu/drc/content/ContentTemplate.h +++ b/src/menu/drc/content/ContentTemplate.h @@ -26,6 +26,7 @@ public: CONTENT_HOME, CONTENT_HELP, CONTENT_NETWORK_HELP, + CONTENT_SETTINGS, CONTENT_ABOUT, }; diff --git a/src/resources/filelist.h b/src/resources/filelist.h index 2b6772b..d0afa23 100644 --- a/src/resources/filelist.h +++ b/src/resources/filelist.h @@ -1,7 +1,7 @@ /**************************************************************************** * Loadiine resource files. * This file is generated automatically. - * Includes 109 files. + * Includes 111 files. * * NOTE: * Any manual modification of this file will be overwriten by the generation. @@ -224,6 +224,12 @@ extern const u32 gameSettingsButton_png_size; extern const u8 gameSettingsButtonEx_png[]; extern const u32 gameSettingsButtonEx_png_size; +extern const u8 gameSettingsButtonExEnd_png[]; +extern const u32 gameSettingsButtonExEnd_png_size; + +extern const u8 gameSettingsButtonExEndHighlighted_png[]; +extern const u32 gameSettingsButtonExEndHighlighted_png_size; + extern const u8 gameSettingsButtonExHighlighted_png[]; extern const u32 gameSettingsButtonExHighlighted_png_size; @@ -417,6 +423,8 @@ static RecourceFile RecourceList[] = {"gamepadIcon.png", gamepadIcon_png, gamepadIcon_png_size, NULL, 0}, {"gameSettingsButton.png", gameSettingsButton_png, gameSettingsButton_png_size, NULL, 0}, {"gameSettingsButtonEx.png", gameSettingsButtonEx_png, gameSettingsButtonEx_png_size, NULL, 0}, + {"gameSettingsButtonExEnd.png", gameSettingsButtonExEnd_png, gameSettingsButtonExEnd_png_size, NULL, 0}, + {"gameSettingsButtonExEndHighlighted.png", gameSettingsButtonExEndHighlighted_png, gameSettingsButtonExEndHighlighted_png_size, NULL, 0}, {"gameSettingsButtonExHighlighted.png", gameSettingsButtonExHighlighted_png, gameSettingsButtonExHighlighted_png_size, NULL, 0}, {"gameSettingsButtonExSelected.png", gameSettingsButtonExSelected_png, gameSettingsButtonExSelected_png_size, NULL, 0}, {"gameSettingsButtonSelected.png", gameSettingsButtonSelected_png, gameSettingsButtonSelected_png_size, NULL, 0}, diff --git a/src/settings/CSettings.cpp b/src/settings/CSettings.cpp index 9b764f9..45c4191 100644 --- a/src/settings/CSettings.cpp +++ b/src/settings/CSettings.cpp @@ -24,6 +24,7 @@ #include "fs/CFile.hpp" #include "fs/fs_utils.h" #include "utils/StringTools.h" +#include "utils/logger.h" #include "language/gettext.h" #define VERSION_LINE "# HID to VPAD - Main settings file v" @@ -36,7 +37,6 @@ CSettings::CSettings(){ bChanged = false; memset(&nullValue, 0, sizeof(nullValue)); nullValue.strValue = new std::string(); - configPath = DEFAULT_HID_TO_VPAD_PATH; this->SetDefault(); } @@ -81,18 +81,22 @@ bool CSettings::Load(){ std::string filepath = configPath; filepath += CONFIG_FILENAME; + log_printf("CSettings::Load(line %d): Loading Configuration from %s\n",__LINE__,filepath.c_str()); + CFile file(filepath, CFile::ReadOnly); if (!file.isOpen()) return false; + std::string strBuffer; strBuffer.resize(file.size()); file.read((u8 *) &strBuffer[0], strBuffer.size()); file.close(); + //! remove all windows crap signs size_t position; - while(1) + while(1 && !strBuffer.empty()) { position = strBuffer.find('\r'); if(position == std::string::npos) diff --git a/src/version.h b/src/version.h index 894d283..be32cd6 100644 --- a/src/version.h +++ b/src/version.h @@ -1,2 +1,2 @@ -#define APP_VERION "v0.9i" +#define APP_VERION "v0.9j"