* 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.
* i guess one big mega commit sorry
* cleanup and reviews
* mfw you cherrypick from an outdated commit on the other branch and its all fucked up and the world sees it..
* reviews
* added MidiLibraryManager together with tests.
* added error log when failing to add midi + minor formatting.
* additional error logging for midi library.
* fixed TestRemoveMidiFile failing due to new error logging.
* improved error logging.
* switched from string file names to ResPath
* renamed to MidiFileCollection and moved to Content.Client.Audio.Midi
* updated xml docs
* readded the Manager suffix that I totally didn't forget + some formatting.
* redundant members
* catch IonLawSystem instances
* return the ion law sawmill, fix LogMan instances
* SalvageSystem LogManager inst
* IonLawSystem: public Sawmill
* what even is initialization order?
* Remove all IPrototypeManager instances
* Remove redundant IComponentFactory instances too
* Found some stragglers
* DestructibleSystem.PrototypeManager: no dependency
* not based
* Fix usages of TryIndex()
Most usages of TryIndex() were using it incorrectly. Checking whether prototype IDs specified in prototypes actually existed before using them. This is not appropriate as it's just hiding bugs that should be getting caught by the YAML linter and other tools. (#39115)
This then resulted in TryIndex() getting modified to log errors (94f98073b0), which is incorrect as it causes false-positive errors in proper uses of the API: external data validation. (#39098)
This commit goes through and checks every call site of TryIndex() to see whether they were correct. Most call sites were replaced with the new Resolve(), which is suitable for these "defensive programming" use cases.
Fixes#39115
Breaking change: while doing this I noticed IdCardComponent and related systems were erroneously using ProtoId<AccessLevelPrototype> for job prototypes. This has been corrected.
* fix tests
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* i'm just gonna put this here.
* I'm just gonna do it.
* Update ShowHTNCommand.cs
* I feel dumb.
* may as well with this too.
* this does in fact not work
* :/
* Cleanup warnings in DamageMarkerSystem
* Cleanup warnings in CuffableSystem
* Cleanup warnings in DeployableTurretSystem
* Cleanup warnings in StorageContainerVisualsSystem
* Cleanup warnings in ItemMapperSystem
* Cleanup warnings in ItemCounterSystem
* Cleanup warnings in RandomSpriteSystem
* Cleanup warnings in PowerCellSystem
* Cleanup warnings in ParticleAcceleratorPartVisualizerSystem
* Cleanup warnings in PaperVisualizerSystem
* Cleanup warnings in PoweredLightVisualizerSystem
* Cleanup warnings in LightBulbSystem
* Cleanup warnings in EmergencyLightSystem
* Cleanup warnings in DoorSystem
* Cleanup warnings in ClockSystem
* Cleanup warnings in BuckleSystem
* Cleanup warnings in JukeboxSystem
* 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
* Added Jukebox, along with music for jukebox
* Fixed Jukebox meta.json copyright
* Removed songs I couldn't find a license for.
* Renamed files to solve check failures from spaces
* Added missing attributions.yml
* Fixed lack of description in Jukebox
* Jukebox is now constructable.
* Change Jukebox menu to FancyWindow
* Moved Jukebox messages out of jukebox component
* Removed Jukebox OnValueChanged.
* JukeboxComp now uses AutoGenerateComponentState
* Removed state code, since it's auto generated
* Fixed various Jukebox code to match conventions.
* Updated Standard.yml to match changed song list.
* fixes
* Jukebox workin
* Fix
* Polishing
* Finalising
* Revert
* bad
* jukey
* Reviews
* name
* Update submodule to 218.2.0
---------
Co-authored-by: iNVERTED <alextjorgensen@gmail.com>
* fix: lobby music volume will be changed on options change without restart (also lobby music not looped anymore)
* refactor: now lobby music is part of ContentAudioSystem. Lobby playlist is used instead of single track. Client now selects next lobby soundtrack after previous finished.
* refactor: incapsulated info on current lobby track in simple record
* refactor: fixed inconsistent naming between song and soundtrack for lobbymusic
* refactor: xml-doc for LobbyPlaylistChangedEvent
* fix: inverted invalid _audio.PlayGlobal check to return only if lobby soundtrack play call failed
---------
Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
* 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>
In which I'm a goober and don't clean up after
myself and accientally don't fix the issue I tried
to fix in my last round restart PR.
The audio is now maintained just like music during
restarts (yippee to ContentAudioSystem::OnRoundRestart)
This needs a refactor but at least the defect is fixed now.