This has some consequences. First, LocalPlayer is no longer necessary
for rendering the UI, meaning the UI stays open even during loading
screens and other situations where there is no player.
Secondly, the sound effect will play even when the window is closed.
Thirdly, the history will update even when the window is closed.
The last two points will become config options in future.
I would also like to make TargetWatcher run in a task and run perhaps
every 100ms instead of every framework update.