- support dumping the timer state to disk
- as well as reloading the state from disk
- make these functions only available when the timer is not running (as well as config reload)
- Support memory font source for e.g. macOS
- This removes the ability to reload fonts when config is reloaded!
- Better font locating and handling
- Can now determine whether a split was skipped or not while also knowing the time
- New config options: window size, millisecond size
- Platform config directories
- Fix several calculations of colors and comparisons
- Various code cleanups
- Fix some subtraction overflows (#14)
- Actually run the timer when started with an offset
- Reduce title changes
- fix the display of CurrentSplitDiff when golds is false
- Wow, this ended up being the state machine update also.
- Adds unsplitting support
- use a custom implementation of
Instant
- begin properly handling times of 0 as empty
- add system font finding
- add two-line splits
- error dialog on panic so that the user can report crashes easier
- arbitrary time frame rounding
- new font so that i am no longer breaking the law
- let you actually write to your split files
- fix some crust in the timing system. no longer relies on multiple instants for timing different things
- skipping splits support
- small optimizations (i.e. remove unnecessary
map_err
and use existing variables rather than shadowing) - panels! sum of best, current run pace, current split diff
- set pb/split pb/gold if the previous one in the run was 0, so that empty split files are handled properly (ish)
- fix keybind for loading splits
- add config file reloading
- fix crash on resize with no splits (#4, fixed in #5)
- add in a title set that was missing
- add comparison to average splits
- require you to press R to restart the timer
- customizeable keybinds
- change the window title to be descriptive
- use an empty run if opened with no split file
- fix yet more crashes with 0-split files
- mist-core is a thing now
- components, timing, config, moved from mainline to mist-core.
- run parsing moved from the terrible run utils to mist-core
- also made the error handling a billion times better
- remove redundant TimerState variant
- fix crashes with 0 splits (again)
- add features to disable gfx/image necessity
- fix (read: completely rebuild) the old, esoteric scrolling system to make slightly more sense and crash slightly less
- make all split rows the same height so that the lines don't move when scrolling
- move error macro to components, replace some errors i missed in 1.9.1
- add configurable bg color which i meant to add ages ago
- custom error macro to reduce repeated code in unwraps
- reduce duplicated render code
- fix a crash when scrolling super fast
- fixed some warnings that have been around forever
- fixed an issue where diffs would never be set to gold
- added dialog boxes that pop up when unwrap is called on an err
- background image finally added
- added config field for whether to crop the center of the image or to scale the image to fit the window
- implement large timer font rendering from a cache texture of all the characters to avoid recreating a new texture each frame
- make millisecond display on large timer smaller so that longer times fit better on the screen and look nicer
- finally get rid of text jitter when updating large timer on some weird fonts
- fix incorrect color calculation after pausing and unpausing
- fix weird diff calculation after pausing
- prompt to save run on exit if a gold occurred
- fix crash when timer offset is None
- fix incorrect behavior when a new split file is loaded that has a different number of splits than the previous
- fix timer overlapping splits when window is shrunk vertically
- rearrange some code in App::init() and run()
- patch index-related issues when hot-reloading a split file with a different number of splits
- fix an issue where splits decreased when increasing the window size
- make config loading more logical
- only reads
assets/mist.cfg
now for consistency - removed terrible config select dialog boxes on startup
- dynamically determine max splits on startup based on the window size and font size
- finally add customizable colors from config file
- turn off kerning in order to fix timer jitter with certain fonts
- increment index variables in loops when ending a run so it doesn't get stuck (i'm stupid)
- move check to save run to after user has closed program
- add comparisons to PB, golds, and empty
- calculate colors for timer based on comparison
- switch comparisons with arrow keys
- change displayed split times with comparison swap
- convert to using run from mist-split-utils
- clean up the code used to open and validate split files on startup
- patch issues with 0-split files
- add font size field in config
- allow user selected config, default to assets/default.mts if none
- create config file if missing
- add separate fields for timer and split font in config struct
- use font paths from config in app.rs
- add configuration file and cfg file parsing
- config file holds last opened run, colors for timer, path to font
- colors dont work yet but they will soon
- custom config not yet selectable
- will be selectable along with new run when context menu is implemented
- properly save golds on run end
- first crates.io published working version
- had to increment version cause i'm stupid
- hopefully patch windows file filtering
- add golds for real
- reset to top of splits on timer reset
- add preliminary golds suppord
- add proper error handling to msf file parsing
- ask to save after rendering last frame (looks much nicer this way)
- on pb, properly update current and pb times and textures of Splits in memory
- only actually save times to chosen file if user agrees to
- fix zero padding, remove extraneous decimals on split times
- require split file input path
- patch issue where all splits would happen instantly if you hold down split key
- add tinyfiledialog dependency
- add yes/no save splits dialog for writing to msf file
- save run on run end not on splits scroll like a fool
- fix highlighting the current split when scrolling
- display the proper time when the run ends
- condense some match patterns
- properly calculate diffs
- tweak color values
- patch color calculation hopefully for the last time
- render diff textures with '+' when behind
- account for pausing in color calculation
- properly clear old textures on timer reset
- add split time diff rendering
- currently no way to handle horizontal resize
- dynamic color might still be wrong unfortunately
- fix dynamic timer color calculation
- now properly uses making up time color and losing time color
- still breaks after a pause, will be fixed in a later patch as pausing isnt horribly common
- use instant everywhere instead of SDL timer
- this reduces the number of u32 -> u128 casts
- also just feels nicer
- massive internal changes to split system
- now uses a wrapper struct for splits to reduce clutter
- no longer requires large numbers of lifetime-dodging kludges
- properly implemented
Split
struct field accessing
- Basic speedrun timing functionality
- Start offset support
- Read run from split file (file currently locked to "run.msf" in directory where executable is stored)
- If completed run is a PB, save run data to split file
- Change timer color according to run status (not sure if this all works properly)
- Spacebar to start, split, stop; Enter to pause/unpause; R key to reset timer
- Convert time to 30fps values on stop (non-configurable)
- Doesnt crash when you resize the window vertically (yay!) (horizontal resizes probably still bad)