Welcome back to this weird series where I refuse to just use Unity's Input System and crunch before jam for no reason. Luckily, I have made good progress this day, so I hope the pain will go away soon :)
Reading input
Finally, I am able to read device input. It was surprisingly easy, as I had all of the device code already written. I just had to modify a couple lines of code to make it work with the recent changes and here we are.

For reading gamepads I'm using Unity's Input Manager, which isn't great. The main issue with it is that it changes it's mappings between operating systems. It's working ok on my windows computer, but I have no idea what will happen if someone plays my game on a macbook. This is why I need XInput, because I do not have the resources nor time to worry about this (also, you can't use vibration for some reason).

Gamepad deadzones are also working. Even my drunk xbox360 controllers stay on 0,0 when I'm not touching them. This was also quite easy to setup, as I just copied code from Unity's own Input System.
Saving & loading
I have managed to add a very temporary save system. In the old version of Cablebox, you can select how the preferences get saved. In this version I want to allow people to even make custom providers. However: I don't have time for this, so I settled on a basic json serializer.

Cablebox also has multiplayer support, which means that there can be multiple players with different inputs and bindings. I temporary forced Cablebox to add every device to the first player, because of saving. It's not like I'm gonna be making a multiplayer game any time soon (and especially on LD).
Remaining systems
I am really close to finishing and I have 2 main features remaining:
- input remapping
- xinput gamepads
Input remapping should be easy (famous last words) and I will have to look into how xinput works. For now, that's all I have. See you tomorrow
