It took a lot of effort, but I implemented configurable controls!
Supporting controllers is something completely new for me, so it seemed really daunting. In the end it wasn't as much the complexity, but more the integration part that really took a lot of time.
I now created a central place where button presses are caught and checked. When a configured button press or release is detected, an event is fired to listening classes.
Here's a glimpse of the result!
I've worked in UI navigation as well. I completely underestimated the work that goes into this.
I expected the navigational part of correctly moving between buttons and such when pressing the right directional keys to be complicated, but I did not foresee the additional complexity of sub-navigation inside a complex element such as a dropdown.
I've created a class that will manages a grid of elements and automatically decides what element to highlight after pressing a directional key based on the element position in the grid.
This element makes my life much easier so I don't have to manually program each directional possibility for each menu.
Anyway. here's some gifs of my progress so far: