From 6cba50dbf41e4b4669526a0a7dfed4dbccd3e610 Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Sun, 28 Apr 2024 00:57:23 +0200 Subject: [PATCH] Controller support --- mod/Cyberware.esm | Bin 300108 -> 310903 bytes mod/Menus/prefabs/cyberware/cw_implants.xml | 81 +++++++++++- src/CWxPanelOnButtonDown.gek | 132 ++++++++++++++++++++ src/CWxPanelQuestScript.gek | 17 ++- src/CWxPanelSelectFirstSlot.gek | 33 +++++ 5 files changed, 258 insertions(+), 5 deletions(-) create mode 100644 src/CWxPanelOnButtonDown.gek create mode 100644 src/CWxPanelSelectFirstSlot.gek diff --git a/mod/Cyberware.esm b/mod/Cyberware.esm index 5addf980e2c8c3c7b1423461ef1f73692ebff71c..6d575b79d794dfb4525a8eb64c3446b018ce4ce8 100644 GIT binary patch delta 12772 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

K6KQVjf(FNPZH|n3sgbth9+T>v%)b@5dVw3mV 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%0D*K6A{7TrjU@fRv5gK z#=-u5fC}PbbsDWx7@g(y)zG%ZKh6ZfuDukHXN4@ zmp0QemPy3ra8<dNXhepFKz0{nT=QZ&UkQ&s|1#TaXD^R>)b}z=9k65>9 zGRu0YWaonZmNNHEH89XiC-gl^!{JOX&D0(uAhD0e`cNaHp8YR{!fkytM|-eC_aoE@ z$NQ*Nw4g4W@1q&^f2;@$Z%@Qg!~#vT7vB+RX+jK6ppy*ftk4j|zz(2cv~yCAwJI83 z0h&xZ^R(wkF!y^CS=vu+dbKi9fY%m;Nz@K#N)mnW{eEhNedwnQ=YxJ4U+P~zVI@u< z`n$^KHX2FW%;lY(H@ACBos0cW{HI^q6y|Qhv({gQ{L!ZpOm1JSr zq|M7J8p&Ga(+eUUZFgvL#X2$6n-yom*)4QJ&-_JV&*~RNuxzC%$|OzON|VLz;kYZ{ zx~()rS?mvPrD^)}|K>Y+(cx`~=#k%x{~@&XS{R&uf?k|IUC5HEat!>0oBzY53H^(%?`Xi-41}**%kEj6~q| zD6ea(Hxg&8KWYd-jRD97_s?PRuyzhJ!yUZ2kvG?3lQ=Jc*b;!QhFI?I?caZ zQ*Dm9j`}d=X@41y=ihVoGd?w`uw*kkWnP#^NJUMV19QN|4c0?!8<*R6h(&Y#*AB6l zg*aXlo@Gs4Wj!ZK68>FV8_gYdJ;!JB zPcW&3_M@!r@`N|uQWU;>nO%Q*!jMXEzs43^p0HOXe07}N%J{J7zoQPj>m9aO>G=4B z+VRr~cJt*W_NfxxA0UBCe0y5;FrH!UyhH99X1|6;Ys;$PDp%9J`~`$pr5y$bg-F!yeg2qGVjJiboM3zI*YD$cPfqFv!QCWkBFrx5wVLh+0! zceIH28KZgRQ}}{%&T8}?kvy_|e1mw@0PpmR3Ghpwmi;diD zl)qUoRts?d29&#V12T*7NpAa-`1jzE%yoB#C6;E85Q`zvSxYH=V zG$2-s3S$wLwz1qf%g1mW6pt98{V!se{MH`v?hpt)tke<`4~s38T=i%?9s#o)-d#vY z`srB0`#tGaOO$@Q2ykiqdmm{Gi9)-0aKnTU3%SJj{yK6i*gqDQkq!P3DlV(nA6UY~0D5 z0RdNGK>XjoBu96$Q|g?VvUR0(PG4=;QVb|R!mMh*=dM(jEf2VHzK>SHFyQBp`f4(L z7dxlanpi7z;RRn9^jbf7!UM&Ru?FwzfsK!`6dM`oQcTdSK(;5d&L_LR`yF==Z(sdqwEt`L}hU zl!G>1XfKvJ;+YXb^`nJWJ>#v=>pL#!LXE4#b)nLaJaF4S-z2}ikG-ixmb#La)0?lO zcm3AU($gN0_p=86W-tvhm!Q>l(E;XGYTKESuXtWU&o3%{wRN1u+O|E*I^f3xtWzF- dmZj>>;z72Qzf0Q>vS 0 <_PNxCyberboyLeftImplant2State> 0 +<_PNxCyberboyRightImplant1Active> 0 +<_PNxCyberboyRightImplant2Active> 0 +<_PNxCyberboyLeftImplant1Active> 0 +<_PNxCyberboyLeftImplant2Active> 0 + <_PNxCyberboyRightImplant1Path> <_PNxCyberboyRightImplant2Path> <_PNxCyberboyLeftImplant1Path> @@ -443,6 +448,7 @@ &-sAccept; UIMenuPrevNext <_PCButtonText> &-sPCMenuHintA; + <_xbox_button> &xbuttony; 2 @@ -476,7 +482,48 @@ <_line_alpha> - + + + + + + + 0 + + + + + &default_accept; + 1 + + + Interface\InterfaceShared.tai + + + + 75 + 75 + + + + + + 10 + + + + + + + +

2
+ + + + <_filename_4> general_button_y.dds + <_filename_17> glow_general_button_y.dds + + @@ -654,6 +701,10 @@ &hudmain; + + + + &nosystemcolor; @@ -691,6 +742,10 @@ + + + + 0 @@ -806,6 +861,10 @@ &nosystemcolor; + + + + @@ -839,6 +898,10 @@ + + + + 0 @@ -949,6 +1012,10 @@ &hudmain; + + + + &nosystemcolor; @@ -986,6 +1053,10 @@ + + + + 0 @@ -1093,6 +1164,10 @@ &hudmain; + + + + &nosystemcolor; @@ -1130,6 +1205,10 @@ + + + + 0 diff --git a/src/CWxPanelOnButtonDown.gek b/src/CWxPanelOnButtonDown.gek new file mode 100644 index 0000000..afdf9a1 --- /dev/null +++ b/src/CWxPanelOnButtonDown.gek @@ -0,0 +1,132 @@ +scn CWxPanelOnButtonDown + +int keyCode + +int selectedRegion +int bHasPerks +int iCurrentSlot +int n + +array_var slots +array_var toggles + +begin function { keyCode } + + if MenuMode == 0 || MenuMode 4 + RemoveEventHandler "OnButtonDown:4111" (GetCurrentScript) + return + endif + + if GetActiveMenuMode != 1059 || MenuMode 1001 + return + endif + + selectedRegion := CWxImplantsPanel.selectedRegion + + if keyCode == 1 ; UP + + if selectedRegion == 0 + call CWxPanelSelectFirstSlot 6 "TutorialMenu\_PNxCyberboyLeftLegSelected" + elseif selectedRegion == 6 + call CWxPanelSelectFirstSlot 5 "TutorialMenu\_PNxCyberboyRightLegSelected" + elseif selectedRegion == 5 + call CWxPanelSelectFirstSlot 4 "TutorialMenu\_PNxCyberboyLeftArmSelected" + elseif selectedRegion == 4 + call CWxPanelSelectFirstSlot 2 "TutorialMenu\_PNxCyberboyTorsoSelected" + elseif selectedRegion == 2 + call CWxPanelSelectFirstSlot 3 "TutorialMenu\_PNxCyberboyRightArmSelected" + elseif selectedRegion == 3 + call CWxPanelSelectFirstSlot 1 "TutorialMenu\_PNxCyberboyHeadSelected" + elseif selectedRegion == 1 + SetUIFloat "TutorialMenu\_PNxCyberboyHeadSelected" 0 + endif + + elseif keyCode == 2 ; DOWN + + if selectedRegion == 0 + call CWxPanelSelectFirstSlot 1 "TutorialMenu\_PNxCyberboyHeadSelected" + elseif selectedRegion == 1 + call CWxPanelSelectFirstSlot 3 "TutorialMenu\_PNxCyberboyRightArmSelected" + elseif selectedRegion == 3 + call CWxPanelSelectFirstSlot 2 "TutorialMenu\_PNxCyberboyTorsoSelected" + elseif selectedRegion == 2 + call CWxPanelSelectFirstSlot 4 "TutorialMenu\_PNxCyberboyLeftArmSelected" + elseif selectedRegion == 4 + call CWxPanelSelectFirstSlot 5 "TutorialMenu\_PNxCyberboyRightLegSelected" + elseif selectedRegion == 5 + call CWxPanelSelectFirstSlot 6 "TutorialMenu\_PNxCyberboyLeftLegSelected" + elseif selectedRegion == 6 + SetUIFloat "TutorialMenu\_PNxCyberboyLeftLegSelected" 0 + endif + + elseif eval keyCode == 8 || keyCode == 4 ; RIGHT/LEFT + + if selectedRegion <= 0 + return + endif + + slots := ar_list "PNxCyberboyRightSlot2", "PNxCyberboyRightSlot1", "PNxCyberboyLeftSlot1", "PNxCyberboyLeftSlot2" + toggles := ar_list "TutorialMenu\_PNxCyberboyRightImplant2Active", "TutorialMenu\_PNxCyberboyRightImplant1Active", "TutorialMenu\_PNxCyberboyLeftImplant1Active", "TutorialMenu\_PNxCyberboyLeftImplant2Active" + + let iCurrentSlot := -1 + + let n := 0 + while n < 4 + if GetUIFloat (toggles[n]) + let iCurrentSlot := n + let n := 4 + endif + n += 1 + loop + + if iCurrentSlot == -1 + return + endif + + SetUIFloat (toggles[iCurrentSlot]) 0 + + let n := 0 + while n < 4 + if IsButtonPressed 8 ; RIGHT + let iCurrentSlot += 1 + + if iCurrentSlot == 4 + let iCurrentSlot := 0 + endif + else ; LEFT + let iCurrentSlot -= 1 + + if iCurrentSlot == -1 + let iCurrentSlot := 3 + endif + endif + + if GetUIFloat ("TutorialMenu\PNxImplantsPanel\" + slots[iCurrentSlot] + "\visible") + SetUIFloat (toggles[iCurrentSlot]) 1 + let n := 4 + endif + + n += 1 + loop + + elseif keyCode == 4096 ; BUTTON_A + + if GetUIFloat "TutorialMenu\_PNxCyberboyRightImplant1Active" + set CWxImplantsPanel.selectedSlot to 1 + elseif GetUIFloat "TutorialMenu\_PNxCyberboyLeftImplant1Active" + set CWxImplantsPanel.selectedSlot to 2 + elseif GetUIFloat "TutorialMenu\_PNxCyberboyRightImplant2Active" + set CWxImplantsPanel.selectedSlot to 3 + elseif GetUIFloat "TutorialMenu\_PNxCyberboyLeftImplant2Active" + set CWxImplantsPanel.selectedSlot to 4 + else + set CWxImplantsPanel.selectedSlot to 0 + endif + + if CWxImplantsPanel.selectedSlot > 0 + set CWxImplantsPanel.currentSlot to CWxImplantsPanel.selectedSlot + endif + + endif + +end diff --git a/src/CWxPanelQuestScript.gek b/src/CWxPanelQuestScript.gek index b851d75..d8d23ee 100644 --- a/src/CWxPanelQuestScript.gek +++ b/src/CWxPanelQuestScript.gek @@ -118,6 +118,8 @@ begin GameMode rimod CWxControlPanelISFX + RemoveEventHandler "OnButtonDown:4111" CWxPanelOnButtonDown + if bPerformSurgery set bPerformSurgery to 0 @@ -238,7 +240,14 @@ Begin MenuMode 1059 call CWxPanelUpdatePrice set selectedRegion to 0 - + + SetEventHandler "OnButtonDown:4111" CWxPanelOnButtonDown + + if CWxPanelGamepadHintShown == 0 && GetController + MessageBoxEx "Use D-pad to navigate:%rUP/DOWN - select a body part%rLEFT/RIGHT - select an implant slot%rA - show an implant menu" + set CWxPanelGamepadHintShown to 1 + endif + if ListGetCount CWxImplantsAllList != ListGetCount CWxImplantsDescList print "Cyberware: Number of elements in CWxImplantsAllList and CWxImplantsDescList is not equal!" endif @@ -302,7 +311,7 @@ Begin MenuMode 1059 return - elseif (GetUIFloat "TutorialMenu\_PNxImplantsPanelAcceptSelected") || (isKeyPressed 30 && GetUIFloat "TutorialMenu\_PNxImplantsPanelAcceptEnabled" && menuMode 1059) + elseif (GetUIFloat "TutorialMenu\_PNxImplantsPanelAcceptSelected") || (GetUIFloat "TutorialMenu\_PNxImplantsPanelAcceptEnabled" && MenuMode 1059 && (isKeyPressed 30 || IsButtonPressed 32768)) printd "Accept confirmation" @@ -562,9 +571,9 @@ Begin MenuMode 1059 printd "Cyberware: Current message was not empty, but not processed." - set rCurrentMessage to 0 + let rCurrentMessage := 0 + - else diff --git a/src/CWxPanelSelectFirstSlot.gek b/src/CWxPanelSelectFirstSlot.gek new file mode 100644 index 0000000..5817392 --- /dev/null +++ b/src/CWxPanelSelectFirstSlot.gek @@ -0,0 +1,33 @@ +scn CWxPanelSelectFirstSlot + +begin function { int selectedRegion, string_var sNode } + + SetUIFloat "TutorialMenu\_PNxCyberboyHeadSelected" 0 + SetUIFloat "TutorialMenu\_PNxCyberboyLeftArmSelected" 0 + SetUIFloat "TutorialMenu\_PNxCyberboyRightArmSelected" 0 + SetUIFloat "TutorialMenu\_PNxCyberboyTorsoSelected" 0 + SetUIFloat "TutorialMenu\_PNxCyberboyLeftLegSelected" 0 + SetUIFloat "TutorialMenu\_PNxCyberboyRightLegSelected" 0 + + SetUIFloat (sNode) 1 + + if eval sNode == "TutorialMenu\_PNxCyberboyLeftArmSelected" || sNode == "TutorialMenu\_PNxCyberboyLeftLegSelected" + SetUIFloat "TutorialMenu\_PNxCyberboyLeftImplant1Active" 1 + SetUIFloat "TutorialMenu\_PNxCyberboyLeftImplant2Active" 0 + SetUIFloat "TutorialMenu\_PNxCyberboyRightImplant1Active" 0 + SetUIFloat "TutorialMenu\_PNxCyberboyRightImplant2Active" 0 + return + endif + + SetUIFloat "TutorialMenu\_PNxCyberboyLeftImplant1Active" 0 + SetUIFloat "TutorialMenu\_PNxCyberboyLeftImplant2Active" 0 + + if eval (selectedRegion == 1 && playerRef.hasPerk CWxExtraHeadSlotsPerk) || (selectedRegion == 2 && playerRef.hasPerk CWxExtraTorsoSlotsPerk) || (selectedRegion == 3 && playerRef.hasPerk CWxExtraArmSlotsPerk) || (selectedRegion == 4 && playerRef.hasPerk CWxExtraArmSlotsPerk) || (selectedRegion == 5 && playerRef.hasPerk CWxExtraLegSlotsPerk) || (selectedRegion == 6 && playerRef.hasPerk CWxExtraLegSlotsPerk) + SetUIFloat "TutorialMenu\_PNxCyberboyRightImplant2Active" 1 + SetUIFloat "TutorialMenu\_PNxCyberboyRightImplant1Active" 0 + else + SetUIFloat "TutorialMenu\_PNxCyberboyRightImplant1Active" 1 + SetUIFloat "TutorialMenu\_PNxCyberboyRightImplant2Active" 0 + endif + +end