* PR time
* am dum dont make PRs at 3am
* file scoped. I pushed this to the wrong branch initially because I'm stupid
* Revert "file scoped. I pushed this to the wrong branch initially because I'm stupid"
This reverts commit 9a911caa77.
* Review
* Update API used by content to actually use the default values
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
This is a gigantic kerfuffle because Chromium expects a very specific directory & app bundle layout. Have to change a bunch of resource loading code to account for content development being launched from an app bundle, and also had to make automatic MSBuild tooling & a python script to generate such an app bundle
This means we don't have to JIT a bunch of UIs that you might not open, reducing memory usage and startup overhead.
One (1) UI is always JITed in another thread before prototype UIs are loaded, so as to warm up the JIT machinery. Said type is DropDownDebugConsole which always gets used anyways so there's no harm in it.
In total, these changes save more than a second of startup time for me.
* Added basic loading screen
* Make it look better!
* I forgor xD
* Fix test fails
* Add comment
* Removed unused import
* Only write to file if the number of sections changed
* Servers can now have their own settings
* Minor optionzation and rare colors
* Remove some of the cvars
* debug only loading messages
* Added a few more steps
* Only one section at a time
* nullable section name
* Lock out functions if finished
* Get rid of saving the ccvar
* Cleanup
* Forgot!
* A few tweaks
* Disable vsync
* remove colors
* remove outdated vsync functions
* Silly me xD
* What I get for trying to be clever... ;(
* Better seconds display
* Simplify drawing logic + it looks better
* Type does not need to be partial
* Make interface to expose to content
* Use correct define to gate showing debug info
Should be TOOLS instead of DEBUG
* Use appropriate exception type in BeginLoadingSection
* Fix exception when closing window during loading screen
Would try to stop the main loop before it exists.
* Rename CVars, put debug info behind CVar instead of conditional compilation.
* Add to RELEASE-NOTES.md
* Add UI scaling support
* Make ILoadingScreenManager fully internal
Didn't realize content can't touch it as it'd break the total amount of sections
* Don't re-enable vsync manually, GameController does it at the end of init
* Add command to show top load time usage.
* Improve verbosity of debug time tracking
More steps and some steps named better
---------
Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
* Created Debug Version Panel and Version Info Printer similar to DebugSystemPanel
* dependency injection
* remove VersionInformationPrinter
* Fix sorting
Copy TableContainer from content into engine. It's internal though.
Add various stuff to Clyde to allow the UI to access it. Includes a new IClydeInternal.RenderNow() which seems to not completely explode in my face.
We were relying on a global PopupRoot & ModalRoot, which only existed in the main window. This means things like OptionButton would pop out on the *main* window when put on secondary windows.
These two roots are now on the UIRoot instead. WindowRoot needs to have a function called to create these if you're using it manually, OSWindow supports it automatically.
Lays items out sequentially, wrapping them onto different rows/columns if they stop fitting.
Has multiple options and should be very useful, in both content and engine.
Uses the new Axis system to implement layout on 4 axis, re-uses BoxContainer's code so BoxContainer also got a mild refactor.
Vector3, Vector4, Matrix4, and Quaternion are now gone. Use System.Numerics instead.
This commit is just replacing usages, cleaning up using declarations, and moving over the (couple) helpers that are actually important.
* Find PlacementModes by attribute
* Let modes specify priority
* Make some PlacementManager dependencies public so Content can use them
* Space out the priorities a bit more
* xmldoc for attribute
* Revert "xmldoc for attribute"
This reverts commit f1f0299c55.
* Revert "Space out the priorities a bit more"
This reverts commit 549eac1eb2.
* Revert "Make some PlacementManager dependencies public so Content can use them"
This reverts commit c060f6cb2d.
* Revert "Let modes specify priority"
This reverts commit f113b40c7f.
* Revert "Find PlacementModes by attribute"
This reverts commit 27efb6c5cf.
* Completely redo to use PlacementManager's mode dictionary
* Backwards compat
* Cache the value of AllModeNames
* add: IColorSelectorStrategy class
defines some common variables and functions that depend on the slider type
my hope is to kill all the switch statements in here
* add: IColorSelectorStrategy FromColorData method
* add: RGB and HSV color slider strategies
* add: initialize ColorSelectorStrategy
* refactor: rename IColorSelectorStrategy to IColorSliderStrategy
this makes more sense i think
* refactor: nuke switch statements, use strategy in colorselectorsliders
* remove: remove GetSliderLabels in favor of strategy
* refactor: better abstraction for slider InputBox.ValueChanged
* refactor: rename OnColorSet to OnSliderValueChanged
more intuitive
* refactor: turn alpha slider max value into a const
no magic numbers
* tweak: make color sliders update channels individually
* fix: add braces around this callback
* tweak: move some variables around
i realize there's an Order to this so
* add: throw error if UpdateSlider is called with invalid value
* add: documentation comments to ColorSelectorSliders
* refactor: simplify UpdateSlider
* refactor: simplify GetColorValueDivisor
* fix: solved the color slider stack overflow
* fix: ensure _strategy is set before other functions use it
* tweak: rename Update to UpdateAllSliders
clearer
* fix: update slider colors on update
accidentally removed it and forgot to put it back
* remove: redundant comment
false alarm
* fix: prevent inputbox infinite event loop
this was also erroneously changing the color whenever the slider type changed
* fix: reviews part 1
- changed ColorSliderStrategy into abstract class
- fixed "strategy" typo
- changed NotImplementedException into ArgumentOutOfRangeException
* fix: make selector strategy static instances
* Fix incorrect saved window positions
As of however many UI PRs ago windows store their last position on the client and it re-opens windows at that position.
The issue is that the code to avoid windows being able to go off-screen was immediately bulldozing this value, at least if the x <= 0. Now we just don't run it until we have a valid measure (probably the frame after) and avoid unnecessarily having an incorrect position applied.
* Explainer
File dialog requests can now specify the share and access mode they want out of the opened file. This means read-only access is now possible.
While doing this I noticed that the SDL3 backend had a memory leak *and* didn't match the behavior of the other backends. Cleaned up the code to avoid that.
In-engine commands that *can* specify read-only access on file open now do.
* Stopped recursive updates for controls that are not visible, as it violates framerate in large menus.
* Update Robust.Client/UserInterface/Control.cs
---------
Co-authored-by: Cam <Nop>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>