need the run field because without it, you lose some of
the information that has already been set in the Run before
the end. also added dialogs function to open a statedump filepath
and then moved the parsing of the state dump to an associated fn,
rather than just doing it in TimerState
have to calculate full time diffs for already-completed splits
rather than using the existing ones in run_diffs since they
are per-split.
this means i can use it for diffs also
also adds convert_color function for converting from
status to the associated color
previously bailed on any time value where val() was 0,
meaning that skipped times would be lost and anything after
a skipped time was also down the drain
i am not considering this a breaking change, as this is
really just a config issue, and the config doesn't care if it
is underspecified and replaces such fields with default.
replace statedump print with write to a file, add
dialog box for getting dump save path
have to use serde(default) on individual struct member types
as well as the whole thing if the members are structs, obnoxiously
enough.
idk why i did that before, it doesn't even make sense,
and it indeed breaks the renderer when this is restored
from a dump.
previously was somehow using individual split times for
the current texture, instead of the total time. also added
the ability to regenerate the gold color of diffs that should
be gold
use the actual ones from the runstate instead of whatever happens to
randomly be the case when the dump is created