Godot made it very easy to implement full controller support, that seamlessly switches between gamepad and keyboard+mouse for inputs. Whenever an input of the respective type is received, both the controls and the UI change to support it.
A key to solve this was using a listener construct, where every element that might react to a gamepad is inside a group. If the Input System detects a change in input device, every element of the group is notified and can properly react.
Godot's UI System also made it pretty easy to support focussing plain old buttons with the gamepad. My Input System is self made in a chain of responsibility pattern like manner.
Be sure to check out the amazing and 100% free Godot Engine, if you'd like to make games or are open for a change from your current engine: https://godotengine.org/
I will write small articles about making games with Godot here, from time to time: https://bippinbits.com/blog/
If you want to see more of the game, check out https://store.steampowered.com/app/14...