Input replay
There is no established world-history protocol, so it's too early for the game replays.
The goal is to be able to replay the player's perspective by replaying the input. It's supposed to be a part of the real replay functionality.
Will do:
- [x] replay of actions
- [x] mouse movements
- [x] camera movements
- [ ] camera movements with keys
- [ ] testing GUI for starting/restarting the replay
- [ ] testing GUI for specifying I/O files
- [ ] doc overview (copy-paste several sentences from this PR description)
Related to the #277
Dumps ActionMode events to out.txt while playing from in.txt.
Problems: ~~held buttons~~, constness of the events, SDL_SetRelativeMouseMode.
Future work that needs real replays to be done first:
- GUI to switch between players
- handling switches between different players and the 'free mode' during the replays
~The curve system from #740 and #530 should address this.~
Most of this PR is GUI and input adaptations to actually show the replay.
Also, just to make sure that we understand correctly: this is not a network replay. It's mouse movement, viewport movement (like jumping to units or locations with hotkeys) and action invocation. Should mention this somewhere in #740 or #530 (store and transfer as curves too?).
It seems that there is no GitHub issue on general gameplay replays. It's indeed important to store local graphical input besides the world state in curves if we want to achieve completely accurate replays from the player's perspective. I'm unsure of the format though, curves seem a bit overkill.