Caraxi / SimpleTweaksPlugin

GNU Affero General Public License v3.0
161 stars 140 forks source link

[Feature Request] Swap gamepad inputs for WXHB and EXHB #286

Closed ItsBexy closed 2 years ago

ItsBexy commented 2 years ago

I spent a few days poking around seeing if I can learn to make this myself, but as a total beginner I'm only giving myself headaches, so here's the request: A tweak that swaps which gamepad inputs are used to select each of the additional XHBs.

The Double Cross Hotbars (WXHB) are activated by double-tapping a gamepad trigger, and can be set to always be visible. The Expanded Hold Controls (EXHB) are activated by holding both triggers at once, but are hidden while inactive, and they replace the main bars while in use.

I like the way the EXHB feels, but hate the way it displays. I like the way the WXHB displays, but hate the way it feels. So a tweak to swap their inputs would be excellent. IE, being able to hold R2->L2 to select the Right WXHB, and so forth.

wxhbExample exhbExample

(You can see that I've set the WXHB and EXHB to the same thing, as my stopgap way to get the best of both worlds. But the look is quite clunky)

ryankhart commented 2 years ago

Hey I'm glad I stumbled upon someone else who wants this exact same feature as I do. I left this feature request on the official FFXIV forums, and it only really got two +1's.

If you'd like to bump my thread, that'd be much appreciated to bring it more visibility. https://forum.square-enix.com/ffxiv/threads/452696-Request-for-option-to-using-expanded-controls-for-WXHB

LydieSuelle commented 2 years ago

I have suggested this feature a few times on the official forums in the past few years as well, and would LOVE to see it implemented here at least. The chances that it will become an official feature are close to zero unfortunately.

Having the EXHB and WXHB show the same takes away so much hotbar space. If the inputs were the other way around it would feel so much better.

(An alternative would be to make the EXHB always visible and hide the WXHB instead = swap the way they are displayed.)

ryankhart commented 2 years ago

An alternative that I've been using the for the past couple months is to use 4 of my hotbars and overlap them in such a way (above my cross-hotbars) that I can drop duplicate abilities onto there in the cross/+ shape to mirror the ability layout of my EXHB. Then I hid the always on WXHB and just put my non-combat options on there for the functionality where I don't mind taking the extra quarter of a second delay to double pull a trigger for.

It's been a little tedious to maintain, and it has discouraged me from experimenting with other jobs due to the effort it takes to set up my abilities (almost 2x the time commitment), but I've been finding it super comfy to play like this now.

A little tip if anyone wants to try this is that, if you're having trouble getting your abilities to settle on the overlapping hotbar you intended, first put the ability on either the top row or the bottom row to tell it which hotbar you want it to be on (in terms of alignment). Then, move it to the row you want it to, and it will prioritize staying on the hotbar that it is currently on instead of the one overlapping it.

HUD Layout: image

In Action: Pay no heed to my horrible ability layout, I don't know how I got used to it. Every time I try to make my cross-hotbar ability layout make more sense, I end up playing worse, getting stressed out, and then take a long break from FFXIV. Animation

ItsBexy commented 2 years ago

(An alternative would be to make the EXHB always visible and hide the WXHB instead = swap the way they are displayed.)

Unfortunately, as this was the first angle I investigated, I can say that this is actually very difficult. The main reason being that the EXHB is not actually its own separate entity. It's not just a hidden node that can be toggled to show all the time. Instead, whenever an EXHB is highlighted, it borrows and repurposes the nodes for the 8 middle buttons of the main XHB (and hides/deactivates the other 8). So there's no simple way to extricate it and display both the EXHBs and the XHB all at once; they're made from the same parts.

That's how I concluded instead that the cleanest method, IF it's achievable (and I'll cop that I don't know whether it is), would be to use the WXHB as the EXHB, and vice versa. Hooking the function that pulls up one bar upon player input, and redirecting it to select the other instead.

ryankhart commented 2 years ago

I just had a thought based on the previous comment here. This feature might be more feasible to develop this feature in a XIVCombo fork since that code swaps out abilities on hotbars and cross-hotbars when certain conditions are met. Those conditions could be various different gamepad/controller trigger modifiers. But I'm going to take a while guess that the official XIVCombo probably won't accept a pull request like that, and the more cheaty one might, but that definitely won't get approved in the official Dalamud repos. So, it'd probably best to be a new project for a new plugin.

ryankhart commented 2 years ago

Someone in the Discord in the #plugin-dev channel is apparently working on nearly this exact feature, and appears to have something functional, albeit "janky" in their words. https://discord.com/channels/581875019861328007/653504487352303619/968245923094347859

https://user-images.githubusercontent.com/3673962/165195656-90cb8331-8c72-48d1-b94b-59cd4152d2e0.mp4

And here within the last hour: https://discord.com/channels/581875019861328007/653504487352303619/968301063725797416

https://user-images.githubusercontent.com/3673962/165196097-fef0730d-c70d-421e-a3a0-faa24c45091e.mp4

ItsBexy commented 2 years ago

That's actually me! I was about to post here about it.

I'd call it a shaky prototype right now, and it involves a fair bit of sleight-of-hand and some compromises to other bars. But I'm a bit more optimistic that it could be doable and that those downsides could be ironed out.

The way this implementation works is: -The EXHB and WXHB are set to the same thing -Whenever an EXHB is selected, the corresponding WXHB node is hidden, and pretty much the entire main XHB moves up to its position, creating the illusion that the WXHB has just been selected. -This leaves an empty space along the bottom where the main XHB originally was. To complete the illusion, I've borrowed 16 buttons from Hotbars 2 and 3, automatically filled them with the same actions, and arranged them to create a facsimile of the real XHB whenever it's not actually there.

To put it more clearly, this is what now happens whenever Extended Hold Controls are used:

exhbRealFake

I doubt this is the best possible implementation, but it is A possible implementation.

Some of the issues that would have to be resolved: -The reverse use-case (being able to set the WXHB to something different and access it as well) is not yet possible, since this implementation requires it to be set the same way as the EXHB. Could be solvable by using some more fake bars, though. -The animation needs cleanup. Right now there's phantom icons flickering in/out of view when switching between the different bars. The challenge here is that the game animates these bars when selected, and in my limited experience, setting the properties of an animating node means your changes don't necessarily stick or show up as intended. Someone who knows more about altering UI nodes may know a workaround. -Sacrificing two whole standard hotbars is something I can stomach, since as a controller player I don't really use those much. But I don't think it'd be appropriate for a plugin or tweak to require that of the player. So I think there needs to be a different solution to creating the "Fake" XHB.

LydieSuelle commented 2 years ago

I'm super happy that there are other people that actually want this feature; it gives me hope that it might someday get implemented!

Personally, for me it would be important that I can use both the WXHB and EXHB as different hotbars though, or else I can just use the WXHB to display my EXHB.

An alternative that I've been using the for the past couple months is to use 4 of my hotbars and overlap them in such a way (above my cross-hotbars) that I can drop duplicate abilities onto there in the cross/+ shape to mirror the ability layout of my EXHB. Then I hid the always on WXHB and just put my non-combat options on there for the functionality where I don't mind taking the extra quarter of a second delay to double pull a trigger for.

I had it set up like this for some time, but as you say, it's so tedious to maintain it. And it just looks different. I'm using the regular WXHB now since it's somewhat usable for me since I have a PS5 controller instead of the PS4 one (the triggers of the PS4 controller are harder to tap), but it's much easier, faster and comfortable to use the EXHB.

ItsBexy commented 2 years ago

So since this discussion has definitely grown beyond the scope of the original request (my bad, I get carried away), I just thought I'd reset the focus:

-IF a toggle for the requested input swap is reasonably within the scope of what SimpleTweaks can do, I'd still absolutely love to see it. It would definitely be a clean way to handle my own use-cases.

-In terms of more complex functionality, I THINK I've got an achievable roadmap brewing for a standalone plugin that could allow separate display of the EXHB without compromising the WXHB. But that's bigger than a Tweak, and this obviously isn't the place to talk about a separate project like that, so I don't wanna further clutter Caraxi's backlog with those convos.

And yes, I'm also happy to find that there's interest in these sorts of XHB improvements. Cheers!