From 91612eb45a4195484b43e446907317dbffbff730 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 3 Feb 2021 02:41:12 +0200 Subject: [PATCH] Controller menu --- gamefiles/TEXT/american.gxt | Bin 220176 -> 220474 bytes gamefiles/models/frontend_ds3.txd | Bin 0 -> 394024 bytes gamefiles/models/frontend_ds4.txd | Bin 0 -> 394024 bytes gamefiles/models/frontend_x360.txd | Bin 0 -> 394024 bytes gamefiles/models/frontend_xone.txd | Bin 0 -> 394024 bytes gamefiles/models/ps3btns.txd | Bin 0 -> 126760 bytes src/core/ControllerConfig.cpp | 38 ++- src/core/Frontend.cpp | 401 +++++++++++++++++++++++++++++ src/core/Frontend.h | 16 ++ src/core/MenuScreensCustom.cpp | 25 ++ src/core/Pad.cpp | 116 +++++++++ src/core/config.h | 5 + src/core/re3.cpp | 2 + src/render/Font.cpp | 31 ++- src/render/Font.h | 1 + utils/gxt/american.txt | 75 ++++-- 16 files changed, 670 insertions(+), 40 deletions(-) create mode 100644 gamefiles/models/frontend_ds3.txd create mode 100644 gamefiles/models/frontend_ds4.txd create mode 100644 gamefiles/models/frontend_x360.txd create mode 100644 gamefiles/models/frontend_xone.txd create mode 100644 gamefiles/models/ps3btns.txd diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index 756fafa301e5a9e12e6e0d9ed307629a277800bf..270d5b5b33c1ed6d7e4dfe18292cfdcfe5e4c015 100644 GIT binary patch delta 23138 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

ZlvN5J%qw zVUE6`Lt4&F`8y7zEhpi_~~E>zae#_Pnot+ErH7J=4iGK~ryY zy(1z{ap-EWpm%}4;;YcAI@Ka7H0xQISL?=c2F4<^JA4t2m(k|XezZ7n4x81q4%05? zD)bLM#jIv*G=LdkA(O+|sQxQtJTHU2rX=T+FJ<_cb2RcV-1Ux6-CENjST&3k5$Y{Z;U}V1&I`Q#f zL4QO2*rW8MjCF^lEb!@Q3m z%W`=Rx3@QP&?)z*5U)pf3g!yYw3SMZIW|VOcLtk2(p)zz_|ZpZJRX}PH)=^57yRo- zp02-YC0(?x5X_pNoicQdOX$f&Fwk6oL+2X7K-1l)6Gv)ow5l&SIDcJu-?z1hN9PHc zqjRz-rVB6M*I7i-?bm{-PUY#(8hMU}-WDubko9L}wTQ>cH{M}5LF*prWUZ)w zdY+M|s8JlokMzuZZBZQK+QerJH#btW zPLnVQQQ80lq5jw zzW4XR(OR>=>knX9&2xCYvU8*12;JCRN5w=opTLNF4owV8DEx==(WMm;ZTxpcF|VRA z!u}rQsdR}qGqx>e&M6-AEoQyaTDX(h_4rNfEpS>fRr3pJoQxjO7o}covo*Q6k>Q_I zKyP2w%oW^k7!|y47!_>l5gk48a% zacS{iiyU3TS;J^S^{z|X~Vd4?Y7AAfg#;A zH&BD^IwSQR{e?PZwc2VJ)U^ah>5%0Z4e8oIj!&6PKFK(}Y4Sm3Hk_BjP??j4QJEWH zA8v{8O0x5BMG3We#V~5qqiX{*@i$NDsNrR*Vbo^3VQ4M8AUcSZk$)$Q$1$zXaFhyn z4aa=CsA~}A8Z5C&aXM-eqXv%*qXx^gL8^ni(62I5v+~iqgkjJFBZomdE{YrmoiPl9 zt|+7ZM2uZJy{KFb#%HaTTWO5R2rhl34TVk{wfsUdg>i2bBrS~FX5?`16~jD-xg`4V z?s{DTk0(Y)eC&|m=(E;~LGIu*<|2Nm0fR9{KK|qb`--$sm^WYAM-vtCixKnCB6dCr z9egjs`!Ls^W9D{(b@v9%JP;iI17XzotYPG{0lF-9EemjHLwYRQbhSyr+yI8n5cA4W;YY1_AfraGZ{@L46pD;E8Dy3>WFH zkz;nY(8#-sv|~cu+mIlOAsZi#@k<1MYV_l@+HxD6w%ksk zgGL9R#cB34{0l?d%?(V8Zdi`c)bC0HY}Kr=9HXO_@jb8QIAvcn`fc>0<#ww7o{@LZ zV#C<-+cJo4iwZU(69|Q~Ut^^bri&i6e2?W7o)S{bF#3Xa!{`f+z8}-J1a`XdH+u@F zb=)ol&H$b(-bGB~>jhf7iP>}Vcsc6c()wGiKF&0QT|pFl@=MUkIF&pCYRz~h=ij%Xjg8DI^y#p$3nNyc zMO5-R)kQ3ayrELy?NyIXd=)p!1@&#f8=HcmrJepl1Z8DzRekF;5v{c1WRec|KWNop z91J>ijqQ?;&br>itiPFBG!@Qq%H8}sArF-tAC4g|7foZG9@W}!d=OmK`=dSVoGSm$ z$~=moTomi8kFSoSU|e`*c=r19_=qf#&X>^{?f-`1BrV-)IE87p;WTYPJUfXZM?W3d z!17{+`>~TE=b>t+VdP)g&iY=7f9mMhGTH3VN9jA8-5bg!~^C6v$fNPG5tTkJtz${`AJMD9lScnf6El35d3XX zj6(2tSTPF0-(Ea9CzZrP$)gA8LLB_gOaT?&{a*|xX#PHC-T7bFtTG+=V~k{wdh>$>zrO&+wg?s@b}K;zIOp;KsKG7eCn)I{((-!6%*2-PeNd%)JO0 z!xdiFqpRp?z*YX-W*NFN7vEguOL*@OW0#vjG~%xb69F9P=*Sl4{;o%}3dopdKf*UQ z>I)T}ON3c|T(b()9l|Vs#GLI@GmRVQ$lb0oKI+WTwW*MIRruWlI%F97H$DJ4I!8Vy ze5e_hScZQSBZ!M*PG0gf?=l>rLB}v&i*XHO=vn|SsMQR;^b9kc0?*A9=IPO_k7_wy zdZ!x;g%SOG2f^jU93DX~a|JMaNIwa8jX?Xsn}a-eqk~^#&SdaQRrK6ou>8{v{?)B4 za@238C3gwKw;P{Bek_OWAo$dNe+8A7OFgnREODT(kp&irb5`M3f&2zP56#zvC;gNEV!XHW|h*2uy}%ttX%9#SYzkR z)V#j_i-r?)#d4DFT29eEqmL-Nx=!>X*s=YR;Ut~X?Bo13MdwWdMBj_+MJbw~)n7J@ zZwNLRPSKEIRBs6y17@V^sA@|m8VZ=B{@Q9S=SUy*InBtP_6l=ApZeTFeS_QcRk^|K zxgyMMcmsB;I8*+azD67;G4ql9a16d)2H!fP%Z)3pst=#{y%R>@JhpFMKP`#`p;agA zDEQf`KWS{nfwPCcj2F`t!!U2xyMuL~b!K@XeH*JhIw;Jw3cW?kc`tQ}Fi)9Y7Umr| zZ&)y9u-QK`OsjGfzh)REjCxGVx&QAI=5FGy@Lcfp;abN5uMkF*(0*a`M>O(xv`!Tq z7w!Sy*ZiIuf`wjv7WT-FS!5k2&>irqb-}g4SL+{P&g2zq$tor@&Xd9EXFDUKwm?*d zyYM#)tp)EhtA_Xl0$VX!SKKmQZYD;=z^*xyt9jku?DRbD~Fy879M?HfxP0XLG=h)ebr^Z zV>ev03N25Vvs*9Bp>=sfFyV6zc>kdFb3gD`V~yFHDPSs@q0NX<{M29>oeFI}7oy&L zsfM5apqs*JtooK*&~nE`*ofT2t49m|TFZOVMY^;E`8ayz6kBRILyN``WY1MWR?Kg~kUKeJAmd@5X{Nn;gXZ!ks zE!vt8#>GWpHfUK=%h`x6!feDHVV+DcOlh4Q>^LdR9YteW%efP9gwY&mhj58cb?>Vh zaD<{Z>V`gzZOU+B-65?M<{IoXjDjy3M#1e_tFf*6Kh}+TY$74s7v}zB-8+DAy~3v_5*yn`Nh;(2`9_>t@NWv&cwdhk z{9C|(8PI>$!`&A?T6xRZCs~}M1QnrD!M|xF_Glg$4u9c`*|$9TdoIwUDnt_r)ujJ? z4V(V2YmSNke4nlR|JgDT1?8bxfo%zz_rj0TZ+UOL2cjelO`y2Es=)tio6el?mtePx G?EeF?YKh|j delta 22952 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 z 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


v!y4}{jgD7kX}E~Y=ruZQ^Zr}~QW+1M?S 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 Dfc&2c literal 0 HcmV?d00001 diff --git a/gamefiles/models/frontend_ds4.txd b/gamefiles/models/frontend_ds4.txd new file mode 100644 index 0000000000000000000000000000000000000000..08988f868321383396ddd7afee82b8f9027b6ec5 GIT binary patch literal 394024 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 BQx*UK literal 0 HcmV?d00001 diff --git a/gamefiles/models/frontend_x360.txd b/gamefiles/models/frontend_x360.txd new file mode 100644 index 0000000000000000000000000000000000000000..3d92cb43c4731a6763dc88f06e2de894d419ed5c GIT binary patch literal 394024 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 SKycVyKKM~l!*G?!-~R`FJ|7kU literal 0 HcmV?d00001 diff --git a/gamefiles/models/frontend_xone.txd b/gamefiles/models/frontend_xone.txd new file mode 100644 index 0000000000000000000000000000000000000000..58fcbe2db82a244dca5ac076516598db726b0d99 GIT binary patch literal 394024 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 l-~&ek{sDXdA2 literal 0 HcmV?d00001 diff --git a/gamefiles/models/ps3btns.txd b/gamefiles/models/ps3btns.txd new file mode 100644 index 0000000000000000000000000000000000000000..63d8565d95c06cf0c272300f48fd0638dd137b3b GIT binary patch literal 126760 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⁢_sOP>E>HuxXB_y>I7y!Zz%{(-M= za`~GIE%(k}IQ%gmjq?}o_NV6g9}ogz+28r)fAHcT==@FT?mO_}AI|6f7he3s`Hp{Z zou3Q+zB`|vBk>OANG=*K0shPT{)^(X zKY0F!668nq@;`X_A85eReCg$X@bW*1c*$Jri%p2XoOr*UGv3-s-*zhB`d!_B|zIGFxM_L+83B29o>T?mzk_X*4ptf7jyW(}OPiM{fi){QSUPpXw zYwMp0ydS*PxH=VVo+s$;@jv(zrfCsD6aLn=_T1;OCg7hf=P$DH(|Eu%D*NAzN0#x~ zbYDUuk=6wMy!$&R{__?8kd2@E8~rcwKM8$k4yJ7Szvs0`I-M5y|KhI3)$MK8^Lfi- zmfU|q`5e&SQh!bSlKz*y*dI=fN}Be|?a#lCc=WcmR#~1ue!73t^FMh02QU8v?f2xe zM{|{X_g`T1)D|D)l-C8He{zR+|K?Qv@6?A<)1Lpq^FLr+L>`|sb(#$Rgx1KDeK|IX~Ye={3@sr?To{&SXpvhe#iv+^ZlEi|KS{cFZup>6~AwlY2N*t-u;_X+slR8N1p#-YI%MH{14m7{weC`oxhm2 z|IhP3c>V_(dtUs*Ia*J7{)g=I6a~wpH0Lj7yZ^y;KeWjB2Rfg6L$y!Zvt-YI|2tN^ z57~Q^PeANXyS8ukSNC|f{aI@NgKPT}@*m`P{^EnT5a0FkhaU=j-Q(NV;Y32vqB;JA zpk3Q{!Cz|sgKPT}@Ruh3VYc}nro=xB?%(wM59jE6>G>ZX>ANEOXmx3&$jayJBvSo;rSmt{{tz%O}}%^ zKk#?r`6n+G8%B+q3ij3$nMo^A|pu?|Zh#KhXFt?fsiG>wh4B zNGanV2!Cns-^|8eYX5_YU;2w?-~F4}_`UcCe*Q$Br|`~Sl<0fv`5!$0!+n{?@e*GChgp(; zGTZ)~?ePzD&Hpgv{(n~f&C9U%&Ev=YJsopz7Vf zDgABU{hQwXn`V5(9E*SO?%$l_{s-^=P52*N*Gn$zH~GAG|7Ny*>D|AXEf3HC;E+dY z&R@v!muq~wlsoOOQpZ2I@>k^fi@6s6;EvzRKUwSfA9y~1NIV`#JbKUhxPQ|-e^H|N z2ABC&j{jL2|KRx_y!$u3`#1S{jM}+<{=&O|bB_BTy!Zz%{sHkHUi^a>|6twkz}IK0 zllJbv5cvhX`!BrvFN&HkW+?xIwD)q^gJ!wY|K`O%c;_#Q(&t?IHcR~vg^riJpZD(H ztmry1w3PhiiOnkVU1%5G;GMsa`4@7kCT5ln#Q}T1~J}YO!sc}3I4~}$gl8UB)*Ie zD*9qjdQslEnj!?P zd~fpkvA9BQkvw7=>Kh)q>Ez;Sjmxt=2Kn5gT*>?>G59I9Jajgan!g}U)eF44tClR| z{G`GGMer~Aby**9d|D(fou++=(D`kruFiIY6qVsTAp zpI5Go_|t;lLgj(}eWtUwuTs2^{@uMekn~agsbE;1ua@n*;B}TK9=f@yeNl6{!2kaL z+2HJWwV8N_rF@@%C{)+cl8A_MV|*wwe}ZfKu(#5zg7X`XXiR4j<=V7ziZD!uU*+@d z6LNme?5Vr?lGBlSgg2FHmiHmLwkPp^YdM;b{2q8H-1K;Jxx{ni(T7p4$?`if{(t!^ zE5Bh9&zCnZ+9L2CdGxirBdAc&36#Hw0V3#J{K)d#PxSon<6rM0eZc*Ftm$i3{L%Aa{PJy&@a)?4_9w;jgcsc{`KSIzcfT&m8&`j8Iej!Nx~z`+OVCF! zA1JgA%9^w8ZNik9wjf9P0@ao{m^7b}#$<{?JaLwCmofAoBXZN78m*W~}|?r_th$G6z@VcqXAX6gU) z(1+LGwB}2aCm_i7W&Jw9$CL)b5BMGTGJs$EN=V>^{wKc{eMZum!RHQNvb3+Qk@~;c zx(`#ov{i*RF; zZno*y=~}3Z)Q8vZK2-bRWb@_i#~*(5_@6H&{H?8RZS`y|kB<`go%7*YmWl`VT)LjV z#z9Pg8M0^nHGDo{Jw1Oc@Id}`<<)-q{c_Id=bEPR($Nx+aDG`;E%hJMURe$HFKT4| zRc?5l_;uEsTpS%ZB%aUcOOmX&uao5W?T4CE0{_+B&(f`%1e1`Dvh_$v;yi3EnUr7CS;>|_ttgOcOQgX2+4;E+3lZ&Z-B@mYKaE_02 zM(eCXf8x6#;zx_e+R)!sjfbyj5d7xCm#cgY<_G(JC+d$w9$ypnXLNs!Kf0T@uPjZe znK3Goyx4fY2sd-w1^$o{=1$N0{L zH{WuSH_RWjzbF}li9<}%`r<6Rq&E7@z+cPxW7r?xG4z`!iQjn#`F!$x7oI1Y4NgK2 zvNc0pC$FROeOpv@j6wVx|G9zIW38BvfcGyOZ0+UCui)=oKd-WteRlo97E_i!Iq5Yl zHs$J|ca)$b+ zi)Rx1v_JOAWt>OS$1(Q))zSVki(U||pOR*oD^MPx7wCQ15BnP^rJPAmm)}yq5B_$S zWvySMd#eIT?q3)UmrHxgx!!zwylI`PrsVo^74FAY)y;{_S*8$HdOm`GX7pQ>5RRPLed6LJd?Muakw5MDa?_ut!k?x`zXW$7*JqwTauT{BE&PXf zXk){5H}-c{@-tR6e__3l^o=C>`Zcfh8rBzACEhXC7x9kvvEk57P?$@kKZN-Egy1JY z{>t3^Vg984P}Q9goo!GWT9g$+9y;^Y(4U}1fARSW2@M6EcmLsh)CyJ=r}nr%Y>!{_ zX}(%nzwS@^dY|U_l)!sr-&C#mLvuZ~vt1qI{#xUMVaTs{fxp7Q+g$CJ^F`kLU_OOo zrYCUU1Sn`$j5z{nOh=>p$W@Xj}gkJ${Y+Jt4x|1_$CEHvYrVI&1yo z8TuZmFgeg&_!IIil+JhkS3G`W{YUuWKLq~Ltp5mq5Whn4I-mFO z)B1nlw9p@O{db7;zq~v+D%KA)pW+$0-gTvAJd64KU}XNm_}^Ve^~Kn^mrsvB`}?H+cK?I@ G-~T^1PJ7+} literal 0 HcmV?d00001 diff --git a/src/core/ControllerConfig.cpp b/src/core/ControllerConfig.cpp index 4115cd38..83d0f669 100644 --- a/src/core/ControllerConfig.cpp +++ b/src/core/ControllerConfig.cpp @@ -2619,11 +2619,6 @@ const char *XboxButtons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("~T~", "~O #define PS2_CIRCLE "|" #define PS2_CROSS "/" #define PS2_SQUARE "^" -#elif defined(BUTTON_ICONS) -#define PS2_TRIANGLE "~T~" -#define PS2_CIRCLE "~O~" -#define PS2_CROSS "~X~" -#define PS2_SQUARE "~Q~" #else #define PS2_TRIANGLE "TRIANGLE" #define PS2_CIRCLE "CIRCLE" @@ -2636,7 +2631,7 @@ const char *PlayStationButtons_noIcons[][MAX_CONTROLLERACTIONS] = #ifdef BUTTON_ICONS const char *PlayStationButtons[][MAX_CONTROLLERACTIONS] = - CONTROLLER_BUTTONS(PS2_TRIANGLE, PS2_CIRCLE, PS2_CROSS, PS2_SQUARE, "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "SELECT"); + CONTROLLER_BUTTONS("~T~", "~O~", "~X~", "~Q~", "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "SELECT"); #endif #undef PS2_TRIANGLE @@ -2653,11 +2648,36 @@ void CControllerConfigManager::GetWideStringOfCommandKeys(uint16 action, wchar * if (CPad::GetPad(0)->IsAffectedByController) { wchar wstr[16]; - // TODO: INI and/or menu setting for Xbox/PS switch + const char* (*Buttons)[MAX_CONTROLLERACTIONS]; + #ifdef BUTTON_ICONS - const char *(*Buttons)[MAX_CONTROLLERACTIONS] = CFont::ButtonsSlot != -1 ? XboxButtons : XboxButtons_noIcons; + #ifdef GAMEPAD_MENU + switch (FrontEndMenuManager.m_PrefsControllerType) + { + case CMenuManager::CONTROLLER_DUALSHOCK2: + case CMenuManager::CONTROLLER_DUALSHOCK3: + case CMenuManager::CONTROLLER_DUALSHOCK4: + Buttons = CFont::ButtonsSlot != -1 ? PlayStationButtons : PlayStationButtons_noIcons; + break; + default: + #endif + Buttons = CFont::ButtonsSlot != -1 ? XboxButtons : XboxButtons_noIcons; + #ifdef GAMEPAD_MENU + break; + } + #endif #else - const char *(*Buttons)[MAX_CONTROLLERACTIONS] = XboxButtons_noIcons; + switch (FrontEndMenuManager.m_PrefsControllerType) + { + case CMenuManager::CONTROLLER_DUALSHOCK2: + case CMenuManager::CONTROLLER_DUALSHOCK3: + case CMenuManager::CONTROLLER_DUALSHOCK4: + Buttons = PlayStationButtons_noIcons; + break; + default: + Buttons = XboxButtons_noIcons; + break; + } #endif assert(Buttons[CPad::GetPad(0)->Mode][action] != nil); // we cannot use these diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index bd72a15f..5e9f6d0d 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -141,6 +141,10 @@ int8 CMenuManager::m_nDisplayMSAALevel = 0; int8 CMenuManager::m_PrefsIslandLoading = ISLAND_LOADING_LOW; #endif +#ifdef GAMEPAD_MENU +int8 CMenuManager::m_PrefsControllerType = CONTROLLER_XBOXONE; +#endif + int32 CMenuManager::OS_Language = LANG_ENGLISH; int8 CMenuManager::m_PrefsUseVibration; int8 CMenuManager::m_DisplayControllerOnFoot; @@ -1161,6 +1165,16 @@ CMenuManager::Draw() CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = BIGTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = BIGTEXT_Y_SCALE)); CFont::SetCentreOn(); break; +#ifdef FIX_BUGS + case MENUPAGE_CONTROLLER_SETTINGS: + columnWidth = 50; + headerHeight = -50; + lineHeight = 20; + CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING)); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = MEDIUMTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = MEDIUMTEXT_Y_SCALE)); + CFont::SetRightJustifyOff(); + break; +#endif case MENUPAGE_SOUND_SETTINGS: case MENUPAGE_DISPLAY_SETTINGS: case MENUPAGE_MULTIPLAYER_CREATE: @@ -3622,6 +3636,10 @@ CMenuManager::LoadAllTextures() m_aFrontEndSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER); } +#ifdef GAMEPAD_MENU + LoadController(m_PrefsControllerType); +#endif + int menuTxdSlot = CTxdStore::FindTxdSlot("menu"); if (menuTxdSlot == -1) @@ -3653,6 +3671,71 @@ CMenuManager::LoadAllTextures() CTxdStore::PopCurrentTxd(); } +#ifdef GAMEPAD_MENU +const char* controllerTypesPaths[] = { + nil, + "MODELS/FRONTEND_DS3.TXD", + "MODELS/FRONTEND_DS4.TXD", + "MODELS/FRONTEND_X360.TXD", + "MODELS/FRONTEND_XONE.TXD", +}; + +void +CMenuManager::LoadController(int8 type) +{ + switch (type) + { + case CONTROLLER_DUALSHOCK2: + case CONTROLLER_DUALSHOCK3: + case CONTROLLER_DUALSHOCK4: + CFont::LoadButtons("MODELS/PS3BTNS.TXD"); + break; + default: + CFont::LoadButtons("MODELS/X360BTNS.TXD"); + break; + } + + // Unload current textures + for (int i = FE_CONTROLLER; i <= FE_ARROWS4; i++) + m_aFrontEndSprites[i].Delete(); + + // Unload txd + int frontend_controller = CTxdStore::FindTxdSlot("frontend_controller"); + if (frontend_controller != -1) + CTxdStore::RemoveTxd(frontend_controller); + + // Find the new txd to load + bool bTxdMissing = true; + if (controllerTypesPaths[type]) + if (int file = CFileMgr::OpenFile(controllerTypesPaths[type])) { + CFileMgr::CloseFile(file); + bTxdMissing = false; + } + + int txdSlot = -1; + + if (bTxdMissing) + // Not found, fall back to original textures + txdSlot = CTxdStore::FindTxdSlot("frontend"); + else { + // Found, load txd + txdSlot = frontend_controller; + if (txdSlot == -1) + txdSlot = CTxdStore::AddTxdSlot("frontend_controller"); + CTxdStore::LoadTxd(txdSlot, controllerTypesPaths[type]); + CTxdStore::AddRef(txdSlot); + } + + assert(txdSlot != -1); + // Load new textures + CTxdStore::SetCurrentTxd(txdSlot); + for (int i = FE_CONTROLLER; i <= FE_ARROWS4; i++) { + m_aFrontEndSprites[i].SetTexture(FrontendFilenames[i][0], FrontendFilenames[i][1]); + m_aFrontEndSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER); + } +} +#endif // GAMEPAD_MENU + void CMenuManager::LoadSettings() { @@ -5262,6 +5345,17 @@ CMenuManager::ProcessButtonPresses(void) if (changeValueBy != 0) { switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { +#ifdef FIX_BUGS + case MENUACTION_CTRLCONFIG: + CPad::GetPad(0)->Mode += changeValueBy; + if (CPad::GetPad(0)->Mode > 3) + CPad::GetPad(0)->Mode = 0; + else if (CPad::GetPad(0)->Mode < 0) + CPad::GetPad(0)->Mode = 3; + SaveSettings(); + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); + break; +#endif case MENUACTION_RADIO: m_PrefsRadioStation += changeValueBy; DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); @@ -5400,13 +5494,18 @@ CMenuManager::ProcessOnOffMenuOptions() TimeToStopPadShaking = CTimer::GetTimeInMillisecondsPauseMode() + 500; } DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); +#ifdef FIX_BUGS + SaveSettings(); +#endif // !FIX_BUGS break; +#ifndef FIX_BUGS case MENUACTION_CTRLCONFIG: CPad::GetPad(0)->Mode++; if (CPad::GetPad(0)->Mode > 3) CPad::GetPad(0)->Mode = 0; DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); break; +#endif // !FIX_BUGS case MENUACTION_CTRLDISPLAY: m_DisplayControllerOnFoot = !m_DisplayControllerOnFoot; DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); @@ -5676,6 +5775,12 @@ CMenuManager::UnloadTextures() int frontend = CTxdStore::FindTxdSlot("frontend"); CTxdStore::RemoveTxd(frontend); +#ifdef GAMEPAD_MENU + int frontend_controllerTxdSlot = CTxdStore::FindTxdSlot("frontend_controller"); + if (frontend_controllerTxdSlot != -1) + CTxdStore::RemoveTxd(frontend_controllerTxdSlot); +#endif + printf("REMOVE menu textures\n"); for (int i = 0; i < ARRAY_SIZE(MenuFilenames); ++i) m_aMenuSprites[i].Delete(); @@ -5717,6 +5822,301 @@ CMenuManager::WaitForUserCD() } } +#ifdef GAMEPAD_MENU +void +CMenuManager::PrintController(void) +{ + const float scale = 0.9f; + const float CONTROLLER_SIZE_X = 235.2f; + const float CONTROLLER_SIZE_Y = 175.2f; + const float CONTROLLER_POS_X = (DEFAULT_SCREEN_WIDTH - CONTROLLER_SIZE_X) / 2.0f; + const float CONTROLLER_POS_Y = 160.0f; + + float centerX = CONTROLLER_POS_X + CONTROLLER_SIZE_X / 2; + float centerY = CONTROLLER_POS_Y + CONTROLLER_SIZE_Y / 2; + +#define X(f) ((f)*scale + centerX) +#define Y(f) ((f)*scale + centerY) + + m_aFrontEndSprites[FE_CONTROLLERSH].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X((CONTROLLER_SIZE_X + 4.8f) * scale), MENU_Y((CONTROLLER_SIZE_Y + 4.8f) * scale), CRGBA(0, 0, 0, 255)); + m_aFrontEndSprites[FE_CONTROLLER].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255)); + if (m_DisplayControllerOnFoot) { + if (CTimer::GetTimeInMillisecondsPauseMode() & 0x400) + m_aFrontEndSprites[FE_ARROWS1].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255)); + else + m_aFrontEndSprites[FE_ARROWS3].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255)); + } else { + if (CTimer::GetTimeInMillisecondsPauseMode() & 0x400) + m_aFrontEndSprites[FE_ARROWS2].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255)); + else + m_aFrontEndSprites[FE_ARROWS4].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255)); + } + + CFont::SetFontStyle(FONT_LOCALE(FONT_BANK)); + CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * scale), MENU_Y(SMALLESTTEXT_Y_SCALE * scale)); // X + + // CFont::SetColor(CRGBA(128, 128, 128, FadeIn(255))); + CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255))); + CFont::SetDropShadowPosition(1); + CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255))); + CFont::SetWrapx(SCREEN_WIDTH); + + float TEXT_L2_X = 50.0f + CONTROLLER_POS_X - centerX, TEXT_L2_Y = -14.0f + CONTROLLER_POS_Y - centerY; + float TEXT_L1_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_L1_Y = 25.0f + CONTROLLER_POS_Y - centerY, TEXT_L1_Y_VEH = 3.0f + TEXT_L1_Y; + float TEXT_DPAD_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_DPAD_Y = 65.0f + CONTROLLER_POS_Y - centerY; + float TEXT_LSTICK_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_LSTICK_Y = 97.0f + CONTROLLER_POS_Y - centerY; + float TEXT_SELECT_X = 103.0f + CONTROLLER_POS_X - centerX, TEXT_SELECT_Y = 141.0f + CONTROLLER_POS_Y - centerY; + float TEXT_START_X = 130.0f + CONTROLLER_POS_X - centerX, TEXT_START_Y = 128.0f + CONTROLLER_POS_Y - centerY; + float TEXT_R2_X = 184.0F + CONTROLLER_POS_X - centerX, TEXT_R2_Y = -14.0f + CONTROLLER_POS_Y - centerY; + float TEXT_R1_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_R1_Y = 25.0f + CONTROLLER_POS_Y - centerY; + + float TEXT_SQUARE_X = 144.0f + CONTROLLER_POS_X - centerX, TEXT_SQUARE_Y = 18.0f + CONTROLLER_POS_Y - centerY; + float TEXT_TRIANGLE_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_TRIANGLE_Y = 52.0f + CONTROLLER_POS_Y - centerY; + float TEXT_CIRCLE_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_CIRCLE_Y = 65.0f + CONTROLLER_POS_Y - centerY; + float TEXT_CROSS_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_CROSS_Y = 78.0f + CONTROLLER_POS_Y - centerY; + float TEXT_RSTICK_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_RSTICK_Y = 94.0f + CONTROLLER_POS_Y - centerY; + float TEXT_R3_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_R3_Y = 109.0f + CONTROLLER_POS_Y - centerY; + float TEXT_L3_X = 84.0f + CONTROLLER_POS_X - centerX, TEXT_L3_Y = 162.0f + CONTROLLER_POS_Y - centerY; + float TEXT_L2R2_X = 74.0f + CONTROLLER_POS_X - centerX, TEXT_L2R2_Y = -6.0f + CONTROLLER_POS_Y - centerY; + + switch (m_PrefsControllerType) + { + case CONTROLLER_DUALSHOCK4: + TEXT_L1_Y += 7.0f; + TEXT_L1_Y_VEH = TEXT_L1_Y; + TEXT_R1_Y += 7.0f; + TEXT_TRIANGLE_Y -= 1.0f; + TEXT_CIRCLE_Y -= 1.0f; + TEXT_CROSS_Y -= 1.0f; + TEXT_RSTICK_Y -= 4.0f; + TEXT_R3_Y -= 4.0f; + TEXT_DPAD_Y -= 1.0f; + TEXT_LSTICK_Y -= 6.0f; + TEXT_L3_X -= 2.0f; + break; + case CONTROLLER_XBOXONE: + TEXT_L2_X -= 2.0f; + TEXT_R2_X += 2.0f; + TEXT_L1_Y += 15.0f; + TEXT_L1_Y_VEH = TEXT_L1_Y; + TEXT_R1_Y += 15.0f; + TEXT_TRIANGLE_Y += 4.0f; + TEXT_CIRCLE_Y += 4.0f; + TEXT_CROSS_Y += 4.0f; + TEXT_RSTICK_Y += 1.0f; + TEXT_R3_Y += 1.0f; + TEXT_DPAD_Y += 29.0f; + TEXT_LSTICK_Y -= 22.0f; + TEXT_L3_X -= 36.0f; + TEXT_L2R2_Y += 5.0f; + TEXT_SELECT_X += 4.0f; + break; + case CONTROLLER_XBOX360: + TEXT_L2_X += 8.0f; + TEXT_R2_X -= 8.0f; + TEXT_L1_Y += 15.0f; + TEXT_L1_Y_VEH = TEXT_L1_Y; + TEXT_R1_Y += 15.0f; + TEXT_TRIANGLE_Y += 4.0f; + TEXT_CIRCLE_Y += 4.0f; + TEXT_CROSS_Y += 4.0f; + TEXT_RSTICK_Y += 4.0f; + TEXT_R3_Y += 4.0f; + TEXT_DPAD_Y += 30.0f; + TEXT_LSTICK_Y -= 21.0f; + TEXT_L3_X -= 36.0f; + TEXT_L2R2_Y += 5.0f; + TEXT_SELECT_X += 3.0f; + break; + }; + + if (m_DisplayControllerOnFoot) { + switch (CPad::GetPad(0)->Mode) { + case 0: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_MOV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_ENV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3")); + break; + case 1: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_ENV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3")); + break; + case 2: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_ENV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_MOV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3")); + break; + case 3: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_TAR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3")); + break; + default: + return; + } + } else { + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2R2_X)), MENU_Y(Y(TEXT_L2R2_Y)), TheText.Get("FEC_LB")); + switch (CPad::GetPad(0)->Mode) { + case 0: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_RSC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_VES")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_HO3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HAB")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3")); + break; + case 1: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_HOR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_RSC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HAB")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3")); + break; + case 2: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_VES")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_RS3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HOR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_HAB")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3")); + break; + case 3: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_HAB")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_TUC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_HO3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_CAW")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_SMT")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RSC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_BRA")); + break; + default: + return; + } + } + + CFont::SetDropShadowPosition(0); // X + +#undef X +#undef Y +} +#else void CMenuManager::PrintController(void) { @@ -5937,6 +6337,7 @@ CMenuManager::PrintController(void) CFont::SetDropShadowPosition(0); // X } +#endif #ifdef MENU_MAP diff --git a/src/core/Frontend.h b/src/core/Frontend.h index b0100fdc..9c666809 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -725,6 +725,19 @@ public: #define ISLAND_LOADING_ISNT(p) #endif +#ifdef GAMEPAD_MENU + enum + { + CONTROLLER_DUALSHOCK2 = 0, + CONTROLLER_DUALSHOCK3, + CONTROLLER_DUALSHOCK4, + CONTROLLER_XBOX360, + CONTROLLER_XBOXONE, + }; + + static int8 m_PrefsControllerType; +#endif + public: static void BuildStatLine(Const char *text, void *stat, bool itsFloat, void *stat2); static void CentreMousePointer(); @@ -784,6 +797,9 @@ public: void PageDownList(bool); int8 GetPreviousPageOption(); void ProcessList(bool &goBack, bool &optionSelected); +#ifdef GAMEPAD_MENU + void LoadController(int8 type); +#endif }; #ifndef IMPROVED_VIDEOMODE diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 3eee8dd2..357f136b 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -74,6 +74,12 @@ #define INVERT_PAD_SELECTOR #endif +#ifdef GAMEPAD_MENU + #define SELECT_CONTROLLER_TYPE MENUACTION_CFO_SELECT, "FEC_TYP", { new CCFOSelect((int8*)&CMenuManager::m_PrefsControllerType, "Controller", "Type", controllerTypes, ARRAY_SIZE(controllerTypes), false, ControllerTypeAfterChange) }, +#else + #define SELECT_CONTROLLER_TYPE +#endif + const char *filterNames[] = { "FEM_NON", "FEM_SIM", "FEM_NRM", "FEM_MOB" }; const char *off_on[] = { "FEM_OFF", "FEM_ON" }; @@ -346,6 +352,14 @@ void DetectJoystickGoBack() { } #endif +#ifdef GAMEPAD_MENU +const char* controllerTypes[] = { "FEC_DS2", "FEC_DS3", "FEC_DS4", "FEC_360", "FEC_ONE" }; +void ControllerTypeAfterChange(int8 before, int8 after) +{ + FrontEndMenuManager.LoadController(after); +} +#endif + CMenuScreenCustom aScreens[MENUPAGES] = { // MENUPAGE_NONE = 0 { "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, nil, nil, }, @@ -369,10 +383,16 @@ CMenuScreenCustom aScreens[MENUPAGES] = { }, // MENUPAGE_CONTROLLER_SETTINGS = 4 +#ifdef GAMEPAD_MENU + { "FET_AGS", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, nil, nil, +#else { "FET_CON", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, nil, nil, +#endif MENUACTION_CTRLCONFIG, "FEC_CCF", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, MENUACTION_CTRLDISPLAY, "FEC_CDP", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, + INVERT_PAD_SELECTOR MENUACTION_CTRLVIBRATION, "FEC_VIB", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, + SELECT_CONTROLLER_TYPE MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, }, @@ -643,6 +663,9 @@ CMenuScreenCustom aScreens[MENUPAGES] = { MENUACTION_CTRLMETHOD, "FET_CME", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC }, #endif MENUACTION_KEYBOARDCTRLS,"FET_RDK", { nil, SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS }, +#ifdef GAMEPAD_MENU + MENUACTION_CHANGEMENU, "FET_AGS", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, +#endif #ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS MENUACTION_CHANGEMENU, "FEC_JOD", { nil, SAVESLOT_NONE, MENUPAGE_DETECT_JOYSTICK }, #endif @@ -798,7 +821,9 @@ CMenuScreenCustom aScreens[MENUPAGES] = { { "FET_MTI", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, nil, nil, MENUACTION_MOUSESENS, "FEC_MSH", { nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS }, MENUACTION_INVVERT, "FEC_IVV", { nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS }, +#ifndef GAMEPAD_MENU INVERT_PAD_SELECTOR +#endif MENUACTION_MOUSESTEER, "FET_MST", { nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS }, MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, }, diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index 95a107ee..9bcac613 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -2336,6 +2336,121 @@ bool CPad::ShiftTargetRightJustDown(void) return !!(NewState.RightShoulder2 && !OldState.RightShoulder2); } +#ifdef FIX_BUGS +// FIX: fixes from VC for the bug of double switching the controller setup +bool CPad::GetAnaloguePadUp(void) +{ + static int16 oldfStickY = 0; + + int16 leftStickY = CPad::GetPad(0)->GetLeftStickY(); + + if ( leftStickY < -15 && oldfStickY >= -5 ) + { + oldfStickY = leftStickY; + return true; + } + else + { + oldfStickY = leftStickY; + return false; + } +} + +bool CPad::GetAnaloguePadDown(void) +{ + static int16 oldfStickY = 0; + + int16 leftStickY = CPad::GetPad(0)->GetLeftStickY(); + + if ( leftStickY > 15 && oldfStickY <= 5 ) + { + oldfStickY = leftStickY; + return true; + } + else + { + oldfStickY = leftStickY; + return false; + } +} + +bool CPad::GetAnaloguePadLeft(void) +{ + static int16 oldfStickX = 0; + + int16 leftStickX = CPad::GetPad(0)->GetLeftStickX(); + + if ( leftStickX < -15 && oldfStickX >= -5 ) + { + oldfStickX = leftStickX; + return true; + } + else + { + oldfStickX = leftStickX; + return false; + } +} + +bool CPad::GetAnaloguePadRight(void) +{ + static int16 oldfStickX = 0; + + int16 leftStickX = CPad::GetPad(0)->GetLeftStickX(); + + if ( leftStickX > 15 && oldfStickX <= 5 ) + { + oldfStickX = leftStickX; + return true; + } + else + { + oldfStickX = leftStickX; + return false; + } +} + +bool CPad::GetAnaloguePadLeftJustUp(void) +{ + static int16 oldfStickX = 0; + + int16 X = GetPad(0)->GetPedWalkLeftRight(); + + if ( X == 0 && oldfStickX < 0 ) + { + oldfStickX = 0; + + return true; + } + else + { + oldfStickX = X; + + return false; + } +} + +bool CPad::GetAnaloguePadRightJustUp(void) +{ + static int16 oldfStickX = 0; + + int16 X = GetPad(0)->GetPedWalkLeftRight(); + + if ( X == 0 && oldfStickX > 0 ) + { + oldfStickX = 0; + + return true; + } + else + { + oldfStickX = X; + + return false; + } +} + +#else bool CPad::GetAnaloguePadUp(void) { static int16 oldfStickY = 0; @@ -2447,6 +2562,7 @@ bool CPad::GetAnaloguePadRightJustUp(void) return false; } } +#endif bool CPad::ForceCameraBehindPlayer(void) { diff --git a/src/core/config.h b/src/core/config.h index bb1ca5e3..2973caf0 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -313,6 +313,11 @@ enum Config { //# define PS2_MENU_USEALLPAGEICONS #else # define MENU_MAP // VC-like menu map. Make sure you have new menu.txd + +# ifdef XINPUT +# define GAMEPAD_MENU // Add gamepad menu +# endif + # define SCROLLABLE_STATS_PAGE // only draggable by mouse atm # define TRIANGLE_BACK_BUTTON //# define CIRCLE_BACK_BUTTON diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 474a4644..62d963ca 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -369,6 +369,7 @@ bool LoadINISettings() ReadIniIfExists("Controller", "HorizantalMouseSens", &TheCamera.m_fMouseAccelHorzntl); ReadIniIfExists("Controller", "InvertMouseVertically", &MousePointerStateHelper.bInvertVertically); ReadIniIfExists("Controller", "DisableMouseSteering", &CVehicle::m_bDisableMouseSteering); + ReadIniIfExists("Controller", "Vibration", &FrontEndMenuManager.m_PrefsUseVibration); ReadIniIfExists("Audio", "SfxVolume", &FrontEndMenuManager.m_PrefsSfxVolume); ReadIniIfExists("Audio", "MusicVolume", &FrontEndMenuManager.m_PrefsMusicVolume); ReadIniIfExists("Audio", "Radio", &FrontEndMenuManager.m_PrefsRadioStation); @@ -455,6 +456,7 @@ void SaveINISettings() StoreIni("Controller", "HorizantalMouseSens", TheCamera.m_fMouseAccelHorzntl); StoreIni("Controller", "InvertMouseVertically", MousePointerStateHelper.bInvertVertically); StoreIni("Controller", "DisableMouseSteering", CVehicle::m_bDisableMouseSteering); + StoreIni("Controller", "Vibration", FrontEndMenuManager.m_PrefsUseVibration); StoreIni("Audio", "SfxVolume", FrontEndMenuManager.m_PrefsSfxVolume); StoreIni("Audio", "MusicVolume", FrontEndMenuManager.m_PrefsMusicVolume); StoreIni("Audio", "Radio", FrontEndMenuManager.m_PrefsRadioStation); diff --git a/src/render/Font.cpp b/src/render/Font.cpp index 7eed0933..7dba8094 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -348,11 +348,26 @@ CFont::Initialise(void) SetDropShadowPosition(0); CTxdStore::PopCurrentTxd(); +#if !defined(GAMEPAD_MENU) && defined(BUTTON_ICONS) + // loaded in CMenuManager with GAMEPAD_MENU defined + LoadButtons("MODELS/X360BTNS.TXD"); +#endif +} + #ifdef BUTTON_ICONS - if (int file = CFileMgr::OpenFile("MODELS/X360BTNS.TXD")) { +void +CFont::LoadButtons(const char* txdPath) +{ + if (int file = CFileMgr::OpenFile(txdPath)) { CFileMgr::CloseFile(file); - ButtonsSlot = CTxdStore::AddTxdSlot("buttons"); - CTxdStore::LoadTxd(ButtonsSlot, "MODELS/X360BTNS.TXD"); + if (ButtonsSlot == -1) + ButtonsSlot = CTxdStore::AddTxdSlot("buttons"); + else { + for (int i = 0; i < MAX_BUTTON_ICONS; i++) + ButtonSprite[i].Delete(); + CTxdStore::RemoveTxd(ButtonsSlot); + } + CTxdStore::LoadTxd(ButtonsSlot, txdPath); CTxdStore::AddRef(ButtonsSlot); CTxdStore::PushCurrentTxd(); CTxdStore::SetCurrentTxd(ButtonsSlot); @@ -374,8 +389,16 @@ CFont::Initialise(void) ButtonSprite[BUTTON_R3].SetTexture("r3"); CTxdStore::PopCurrentTxd(); } -#endif // BUTTON_ICONS + else { + if (ButtonsSlot != -1) { + for (int i = 0; i < MAX_BUTTON_ICONS; i++) + ButtonSprite[i].Delete(); + CTxdStore::RemoveTxdSlot(ButtonsSlot); + ButtonsSlot = -1; + } + } } +#endif // BUTTON_ICONS #ifdef MORE_LANGUAGES void diff --git a/src/render/Font.h b/src/render/Font.h index 621375d6..9316ed34 100644 --- a/src/render/Font.h +++ b/src/render/Font.h @@ -109,6 +109,7 @@ public: static CSprite2d ButtonSprite[MAX_BUTTON_ICONS]; static int PS2Symbol; + static void LoadButtons(const char *txdPath); static void DrawButton(float x, float y); #endif // BUTTON_ICONS diff --git a/utils/gxt/american.txt b/utils/gxt/american.txt index 3b010736..aebb1273 100644 --- a/utils/gxt/american.txt +++ b/utils/gxt/american.txt @@ -2440,33 +2440,6 @@ Accelerate [FEC_SMT] Special mission trigger -[FEC_CCF] -Configuration: - -[FEC_CF1] -Setup1 - -[FEC_CF2] -Setup2 - -[FEC_CF3] -Setup3 - -[FEC_CF4] -Setup4 - -[FEC_CDP] -Controller Display: - -[FEC_ONF] -On Foot - -[FEC_INC] -In Car - -[FEC_VIB] -Vibration: - [FEA_OUT] Output: @@ -8073,6 +8046,54 @@ Toggle Waypoint [FEA_FMN] RADIO OFF +[FEC_DS2] +DUALSHOCK 2 + +[FEC_DS3] +DUALSHOCK 3 + +[FEC_DS4] +DUALSHOCK 4 + +[FEC_360] +XBOX 360 CONTROLLER + +[FEC_ONE] +XBOX ONE CONTROLLER + +[FEC_TYP] +GAMEPAD TYPE + +[FEC_CCF] +CONFIGURATION + +[FEC_CF1] +SETUP 1 + +[FEC_CF2] +SETUP 2 + +[FEC_CF3] +SETUP 3 + +[FEC_CF4] +SETUP 4 + +[FEC_CDP] +CONTROLLER DISPLAY + +[FEC_ONF] +ON FOOT + +[FEC_INC] +IN CAR + +[FEC_VIB] +VIBRATION + +[FET_AGS] +GAMEPAD SETTINGS + { end of file } [DUMMY]