Git Product home page Git Product logo

Comments (8)

TomNCatz avatar TomNCatz commented on July 19, 2024 1

This functionality would be incredibly useful. Even just one ring button on controller would make this a viable solution.

This mostly looks like it's written in C#, maybe I'll take a look at it over the weekend and see if I can figure it out.

from tpie.

TomNCatz avatar TomNCatz commented on July 19, 2024 1

I got a first pass implementation of controllers working with some caveats. Since I can't submit to this repo I've forked and put them in the gh10-controller-support branch here : https://github.com/TomNCatz/TPie
I've not set up packages yet, but I can look into that if people really want it and Tischel does not express interest in pulling it in at some point(the work I've done is rather small compared to the original plugin and it doesn't really feel right to publish an alternative version of their work without talking to them)

If you pull this down and load it up I recommend exporting your ring settings and backing them up somewhere. The conversion from the main plugin to this branch has been tested and should be fine, but I have not tested conversion back.

As for the state of the work I did it:

  • adds two fields to the keybind window for setting a controller binding and if the controller binding is a toggle
  • makes it so the controller binding field will detect L2 and R2 as if they were modifier keys
  • supports L1, L3, R1, R3, Start, Select, and all of the D-pad and action buttons as keys that can be set, plus their held modifiers(note, action keys are denoted as cardinal directions, so triangle on a PS controller is 'North')
  • gamepad controls set for a ring will open that ring and nested rings as the keyboard binds do
  • Right analog stick input can be used to control selection in a ring(it prioritizes gamepad input if there is any, but otherwise uses the mouse input like before)
  • old ring settings data should import correctly and update to include support for gamepads.

Known Issues:

  • Mouse and gamepad input both want to be in control, so if you don't have the mouse set in the center of the ring it will try to make selections until you move the right stick. There are various settings already in TPie that can mange this, just be aware of it
  • Dalamud does not currently give plugins access to gamepad input blocking, so any buttons you press or movement of the analog stick is still detected by the game(it can be a bit nauseating) I have spoken with the Dalamud devs and this seems to partially be a result of a core game issue, and partially be intentional. I'm working with them for a long term solution, but there is a short term work around. If you press L1 and L3 at the same time it blocks all controller input to the game, pressing it again will unlock it. If you do this and then use your TPie gestures they will not affect the gameplay, but it is slower then just doing the action.

from tpie.

Tischel avatar Tischel commented on July 19, 2024

Very unlikely that this will ever happen.

from tpie.

Drew-L avatar Drew-L commented on July 19, 2024

I know owner said no but I would also love for this to be implemented.

I'm thinking that there can be a combination of controller buttons/triggers not yet used by the game

Following up on the button combo, most controllers nowadays have a home, select, and start button, plus the touchpad for Playstation controllers, but the game leaves at least one unused (share button and home on DS4 for me). A Select + R-stick combo isn't too uncomfortable for me not to get used to. Can't hurt to dream amirite...

from tpie.

ryankhart avatar ryankhart commented on July 19, 2024

I got a first pass implementation of controllers working with some caveats. Since I can't submit to this repo I've forked and put them in the gh10-controller-support branch here : https://github.com/TomNCatz/TPie

That's great! I don't see a pull request from you yet on this repo. Does it not let you even pull request?

I've not set up packages yet, but I can look into that if people really want it and Tischel does not express interest in pulling it in at some point(the work I've done is rather small compared to the original plugin and it doesn't really feel right to publish an alternative version of their work without talking to them)

It's an open-source project under the AGPL-3.0 license, so you can do what you want, as long as your derivative work is also under the AGPL-3.0 license even if a pull request is not accepted.

Anyway, this motivates me to get back into the game and build your project for myself to test out.

from tpie.

Tischel avatar Tischel commented on July 19, 2024
  • Dalamud does not currently give plugins access to gamepad input blocking, so any buttons you press or movement of the analog stick is still detected by the game(it can be a bit nauseating) I have spoken with the Dalamud devs and this seems to partially be a result of a core game issue, and partially be intentional. I'm working with them for a long term solution, but there is a short term work around. If you press L1 and L3 at the same time it blocks all controller input to the game, pressing it again will unlock it. If you do this and then use your TPie gestures they will not affect the gameplay, but it is slower then just doing the action.

This is the main reason why I never even bothered with controller support. To me this defeats the entire purpose.

That being said I'm not against adding the functionality behind some kind of warning message to the user describing the known issues of using a controller with the plugin.

Feel free to open a PR and I'll take a look when I have the time.
The PR could be merged as is or I could also use it as the foundation to build the feature myself if there's stuff I don't like about it.
I'm not gonna make any promises on timing because all of this is a lot of work so it can take a while.

You could also make your own version of the plugin with a more hacky approach for controller support and distribute it as 3rd party. I would personally prefer to ultimately have the feature added to TPie but for that to happen I need to be happy with it.

from tpie.

ryankhart avatar ryankhart commented on July 19, 2024

Oh I must have read about that issue too quickly to notice. Perhaps there's a way to emulate the L1+L3 gamepad controls so it triggers to gamepad blocking feature of Dalamud while the ring is showing and gamepad support is active in the TPie settings? Then, when the ring is dismissed, another L1+L3 could be triggered again? It's a shot in the dark, and I don't know if that is feasible or not or if I'm even using the right terminology with the word 'emulate'.

from tpie.

TomNCatz avatar TomNCatz commented on July 19, 2024

Pull request submitted.

This is just a first pass, so I would not expect you to pull it in 'as is' anyway. one big code callout I will make is that right now the gamepad bindings just copy all of the keybind info about jobs. This is unfavorable in several ways, but all of the solutions I could think of would have stood a large chance of disrupting the way keybinds currently work.

from tpie.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.