* fixed MIDI percussion channel filter being overwritten by AllowPercussion property
* one-based channel indexes
* fixed percussion channel not being shown in UI for supported instruments
* always display all channels for MIDI input
* Added base type for UI panels of MIDI input sources.
* Renamed BandMenu into BandMidiSource.
* Implemented the UI overhaul, skipping channels dialog functionality for now.
* Refactored for conventions and reordered type members.
Got rid of SetInstrument/ClearInstrument again.
* Decreased background opacity for UnavailableOverlay to improve readability.
* Localization
* Added text to InputMidiSource so players know what it does.
* Changed window MinSize to SetSize. Allows players to reduce window size if desired.
* Improved button looks by adding style classes.
* cleanup
* leftover cleanup
* Reverted fetching InstrumentSystem via IoCManager (crashes it, woops).
* added filter bar to file list
* refactored almost all system/manager interaction into instrument BUI
* text changed for instruments-component-menu-input-notice-label
* fixed InstrumentBoundUserInterface.Dispose not unsubscribing from everything
* minor cleanup
* finished configuration menu & cleanup
* Comments and fixes for InstrumentMidiSourceBase
* Fixed RA0051
* Removed unncecessary null check
* Added methods for accessing the selected track.
* Limited depth of search for instrument master to prevent deadlock.
* Cached system access
* Storing midis asynchronously
* Actual MIDI data now only loaded before playback.
* async removed from InstrumentBoundUserInterface.LoadStoredUserMidis
* Replaced GetComponent calls with TryGetComponent
* Localized MIDI playback track timer
* Searching for next track using raw index now
* Fixed CS0168
* XML comments, minor fixes and disabled MIDI library management while a track is playing.
* removed timers with simple watchdog and switched to MidiFileCollectionManager
* Missed one (timer)
* Changed access for MidiFileCollectionManager.UserMidiDirectory field to public.
* Added instrument config control for MIDI collection utilities.
* redesigned instrument config menu
* Removed rename function, updated adding implementation
* more redesigns
* fixed _isMidiFileDialogueWindowOpen not resetting correctly in certain cases.
* file scoped namespaces
* replaced EntityUid with Entity<InstrumentComponent>
* if spaces
* returning Tooltip instead of Control
* replaced SetEntity with public field
* readonly system fields
* InstrumentMenu MinSize
* xml comment for InstrumentMidiSourceBase
* small refactor
* more cleanup
* TryGetComponent to GetComponent on Open()
* more formatting issues
* switched to [Dependency] for systems
* playback improvements
* disable playback button if no file selected and playing
* activating shuffle now selects track if none is selected
* rearranged playback buttons
* channels overhauled
* Play/Stop label to Play only
* Removed all channel on/off
* Program now default channel name display selection
* improved RemoveButton.Disable behavior
* channels now toggable by clicking anywhere
* Shuffle no longer selects already selected track.
* Loop & Shuffle no longer both selectable at once
* minor improvements to channel item visuals
* minor channel toggle fixes
* xml docs & code cleanup
* `RefreshBandRequest` now sent automatically when band source becomes visible
* converted 5 items tuple to MidiChannelInfo record
* added markup support to instrument menu configuration header
* added note to midi channels config header explaining update behavior.
* Initial toggle switch styling
* tweak toggle switch textures
* Simplify toggle SVG images a bit
* Better name for switch button
* Update CheckButtons that were already just regular buttons
* Match checkbox/text field outline colour instead of slider outline colour
* Use switch button for APC power
* Update switch button styling; add separate style for power buttons
* Use new switch button in midi channels menu
* Add spacer
* adjust switch button icon proportions, position
* Add disabled toggle switch styles, use improved pressed style setup, make APC breaker state visible to all
* Use Janet Blackquill's icon design; remove StyleClassPowerSwitchButton. Co-authored-by: Janet Blackquill <uhhadd@gmail.com>
* Style switch children directly instead of with propagated styles
* Add attributions file
* Turns out source is a required field
* Move SwitchButton out of engine
* Move styles to sheetlet
* Make workaround for child controls not updating work in content
* Icon layers
* Set up ISwitchButtonConfig
* Fix disabled switch label font color
* Don't redefine base pseudostyles
* Use pseudoclass helpers for better readability
* Use margin instead of padding element
* Remove unused using statements
* Remove extra image file
* Update attributions for changed files
* Add the instrument to the MIDI channel selector
* Reviews
Adds support for chained masters
Makes the channel UI update on its own when the midi changes (Works with bands too!)
* add to admin logs and limit track count
* Limit track names by length too
* remove left over comment
* Requested changes
* Reviews
* Remove some BUI boilerplate
- The disposals overrides got removed due to the helper method handling it.
- Replace window creation with CreateWindow helper.
- Fixed some stinky code which would cause exceptions.
* More
* moar
* weh
* done
* More BUIs
* More updates
* weh
* moar
* look who it is
* weh
* merge
* weh
* fixes
* Use new Subs.CVar helper
Removes manual config OnValueChanged calls, removes need to remember to manually unsubscribe.
This both reduces boilerplate and fixes many issues where subscriptions weren't removed on entity system shutdown.
* Fix a bunch of warnings
* More warning fixes
* Use new DateTime serializer to get rid of ISerializationHooks in changelog code.
* Get rid of some more ISerializationHooks for enums
* And a little more
* Apply suggestions from code review
Co-authored-by: 0x6273 <0x40@keemail.me>
---------
Co-authored-by: 0x6273 <0x40@keemail.me>
SS14-1148 Fix MIDI Loading Failing Whilst a MIDI is playing
The behaviour of the button event handling did some wonky
async handling that got PJB swearing repeatedly in the contributor
VC.
Improve switching MIDI songs by:
0. Add a bool that tracks if we're currently waiting for the MIDI file
browser to terminate. Use this bool to short-circuit the
MidiFileButtonOnPressed function, ensuring you don't have to close
a morbillion file windows if you spam-clicked the button or forgot
you'd opened the window.
1. Remove a four-year-old hack involving waiting 100ms to load a MIDI
after trying to stop the last MIDI, because _the rot consumes_ or some shit