* Apply patch 1777eea9a4..6b32bb2b14
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* make red squiggly line go away
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Add todo list
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Add palette to `TextureButton`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Rename `PalettedButtonSheetlet` to `NTButtonSheetlet` and move useful methods to `ButtonSheetlet`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* migrate `ContextMenu` styles
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Update todo
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* tweak NT colors
* New stylesheet: `InterfaceStylesheet` & `InterfaceTooltipSheetlet`
* Move inheritance of `IButtonConfig` to `NanotransenStylesheet.Buttons`
* move `MenuButtonSheetlet` & actually implement `InterfaceStylesheet` correctly
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* tweak color & update todo
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* chat is this real (update chat palette)
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Update todo
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* `SmallButton` and remove some obsolete things from `StyleNano`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* rename `StyleClasses` to `StyleClass` so `Stylesheets.Redux.StyleClasses` syntax is dead
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* replace `ButtonColorGreen` with `Positive`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* `Placeholder`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Examine popup buttons
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* move over more things & cleanup `StyleNano` more (under 1000 lines!!!!)
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Remove some more redundant stuff
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Undo style change for chat window
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* paper editing works now
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* `OptionButton` styles
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* `ListContainer`, move `DefaultWindow` styles (for now) & more cleanup
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* fix `ActionButton` not having highlighting
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* remove imports of `Robust.Client.UserInterface.StylesheetHelpers` & format
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* `ButtonBig` and more cleanup
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Move items inheriting from `ISheetletConfig` into their own directory
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Cleanup & move `Label` styles
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Action search box styles
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Moved, stuff is
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* rename `LabelSubtext` to `LabelSubText` & move more stuff (were almost there!!)
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* yap & move over MORE stuff (just like one thing left!!!)
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Change status classes to appropriate existing classes
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* remove remaining references to `StyleNano`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Fix some hardcoding & broken code, `GetFromControl`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Scrollbars!
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* chores
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* clean up `StyleClass.cs`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* `ItemListSheetlet` refactor
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* more chores!
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Consistency w/ directory structure
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Move `MainMenuSheetlet`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* `ColorPalette`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* whoopsie
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Remove most sheet-specific sheetlets
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* fix warnings, cleanup, & fix scrollbar (this is why we fix warnings boys)
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* yap
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* MASSIVE resharper skill issue
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* actually use `ISheetletConfig`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* have specific sheetlet be specific
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* `GetResourceOr`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* cleanup & move / remove `IPalette`s
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* actually do specific stylesheets correctly & fix tooltips
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* cleanup & logging
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* Move `FontKind` and `FontKindExtensions` to their own files
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* rename `InterfaceStylesheet` to `SystemStylesheet`
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* change `ButtonHovered` etc to `PseudoHovered` etc
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* give the palettes fun names
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* `StyleSpace` is no more
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* It should compile now! I am now going to bed (fr) if it fails it fails
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* make squiggly red line go away
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
* add additional type restrictions to sheetlets
* `CommonStylesheet`
* minor cleanup
* Make `GetSheetletRules` not horrible
* wait this was duplicating style rules. oops!
* move some sheetlets to their associated xamls
* oh wait apparently that was important
* review pass 1
* review pass 2 (font & color stuff)
* review pass 3: remove unused stuff / filename fix
* fix warnings & "replace cast with explicit variable type"
* move `Palette` stuff to its own directory
* tweak colors (they're different now that I actually fixed the OKlab thing)
* review pass 4: little things
* make window close button grey before hovering
* refactor `HLine` to make it less terrible and allow it to be styled
* fix `NanoHeading` (it's been broken for a while whoops) and cleanup hardcoding
* band-aid missing references in `StyleNano`
* move `StyleBox` generating functions out of `IButtonSheetlet` into `StyleBoxHelper`
* remove dictionary field from `IStylesheetManager`
* Add check for unloaded sheetlets
* style tweaks to satisfy OCD
* I somehow missed this: `Caution` styleclass replaced with `negative`, refactor `PowerChargeWindow`
* tweak palettes for like the fourth time
* construct `StyleNano` / `StyleSpace` in `StylesheetManager` and mark them as obsolete
* rename `BackgroundPanel` classes for consistency
* tweak window / `ListContainer`
* oh right you use `///` not `/**`
* font system is bad, make it temporary
* acknowledge Divider funkyness
* remove use of class `Disabled`
* `ColorPalette` allow overriding colors with brace initialization
* review pass again
* tweak disabled button colors
* `StatusPalette` tweaks
* typo
* Make squiggly red line go away
* Delete `Redux`
* Remove all references to `Redux`
* make red less radioactive
* Store stylesheet name inside stylesheet class
* fix merge errors
* use RT's Oklab support instead
* shuffle around `StylesheetManager` fields
* apply stylesheets based off `StylesheetComponent`
* simplify `ColorPalette` construction
* add todo for `SheetletConfigType`
* `OptionButton` has a background color now
* fix disabled buttons
* sigh (red color palette fixed)
* make `ItemList` use primary palette
* Revert "apply stylesheets based off `StylesheetComponent`"
This reverts commit c05b147da845f6e04ff33d1cbd91a18a92c676d7.
* dead code removal
* buttons are green when pressed (we need togglebuttons)
---------
Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
Co-authored-by: Janet Blackquill <uhhadd@gmail.com>
* 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>
* 1 warning in MechAssemblyVisualizerSystem
* 2 warnings in RecyclerVisualizerSystem
* 1 warning in ClusterGrenadeVisualizerSystem
* 2 warnings in BarSignSystem
* 4 warnings in AlertControl
* 1 warning in ToolSystem
* 2 warnings in PinpointerSystem
* 2 warnings in ClientSpriteMovementSystem
* 2 warnings in OptionsVisualizerSystem
* 1 warning in FlatpackSystem
* 1 warning in ZombieSystem
* 1 warning in StackSystem
* 1 warning in MiningOverlay
* 1 warning in FlippableClothingVisualizerSystem
* Guard clause for MechAssemblyVisualizerSystem
* Get SpriteSystem in AlertControl constructor
* Fix broken layer hiding on clothes with multiple equipment slots
* Refactor ToggleVisualLayers, HideLayerClothingComponent, and ClothingComponent to allow more
precise layer hide behavior and more CPU efficient layer toggling.
* Adjust HumanoidAppearaceSystem to track which slots are hiding a given layer (e.g. gas mask and welding mask)
Add documentation
Change gas masks to use the new HideLayerClothingComponent structure as an example of its usage
* Fix the delayed snout bug
* Misc cleanup
* Make `bool permanent` implicit from SlotFlags
any non-permanent visibility toggle with `SlotFlags.None` isn't supported with how its set up. And similarly, the slot flags argument does nothing if permanent = true. So IMO it makes more sense to infer it from a nullable arg.
* Split into separate system
Too much pasta
* Remove (hopefully unnecessary) refresh
* Fisk mask networking
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
* Keep old behaviour, use clearer names?
I'm just guessing at what this was meant to do
* english
* Separate slot name & flag
* dirty = true
* fix comment
* Improved SetLayerVisibility with dirtying logic suggested by @ElectroJr
* Only set mask toggled if DisableOnFold is true
* FoldableClothingSystem fixes
* fix bandana state
* Better comment
---------
Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
* V1 commit
* Remove PDA name and unnecessary pda state
* Adds PDA to Chameleon backpack & thief toolbox
* Change to use AppearanceDataInit
* Add basic PDA state to ensure there's always a sprite before AppearanceData can be applied
* Revert PDA name (this will be changed to another way later)
* Update PDA name updating to new system
* Fix yaml, and fix Agent ID chameleon
* Updated based on review
* Borg type switching.
This allows borgs (new spawn or constructed) to select their chassis type on creation, like in SS13. This removes the need for the many different chassis types, and means round-start borgs can actually play the game immediately instead of waiting for science to unlock everything.
New borgs have an additional action that allows them to select their type. This opens a nice window with basic information about the borgs and a select button. Once a type has been selected it is permanent for that borg chassis.
These borg types also immediately start the borg with specific modules, so they do not need to be printed. Additional modules can still be inserted for upgrades, though this is now less critical. The built-in modules cannot be removed, but are shown in the UI.
The modules that each borg type starts with:
* Generic: tools
* Engineering: advanced tools, construction, RCD, cable
* Salvage: Grappling gun, appraisal, mining
* Janitor: cleaning, light replacer
* Medical: treatment
* Service: music, service, clowning
Specialized borgs have 3 additional module slots available on top of the ones listed above, generic borgs have 5.
Borg types are specified in a new BorgTypePrototype. These prototypes specify all information about the borg type. It is assigned to the borg entity through a mix of client side, server, and shared code. Some of the involved components were made networked, others are just ensured they're set on both sides of the wire.
The most gnarly change is the inventory template prototype, which needs to change purely to modify the borg hat offset. I managed to bodge this in with an API that *probably* won't explode for specifically for this use case, but it's still not the most clean of API designs.
Parts for specific borg chassis have been removed (so much deleted YAML) and specialized borg modules that are in the base set of a type have been removed from the exosuit fab as there's no point to printing those.
The ability to "downgrade" a borg so it can select a new chassis, like in SS13, is something that would be nice, but was not high enough priority for me to block the feature on. I did keep it in mind with some of the code, so it may be possible in the future.
There is no fancy animation when selecting borg types like in SS13, because I didn't think it was high priority, and it would add a lot of complex code.
* Fix sandbox failure due to collection expression.
* Module tweak
Fix salvage borg modules still having research/lathe recipes
Engie borg has regular tool module, not advanced.
* Fix inventory system breakage
* Fix migrations
Some things were missing
* Guidebook rewordings & review
* MinWidth on confirm selection button
* split logic into own system
* add support for different size displacement maps
* some clothes may not use displacement maps
* displacement maps spport hand sprites
* Update DisplacementMapSystem.cs
* rename things
* fuck stencilmask
* fix bugs
* no masks
* Update jumpsuits.yml
* fix species specific sprites
* Update ClothingSystem.cs
* shoes + ears displacement, some bugfix
* Update DisplacementMapSystem.cs
* 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
Requires https://github.com/space-wizards/RobustToolbox/pull/5023
This uses the new engine features (above) to add a displacement map shader. This allows deforming a sprite based on another sprite.
Primary use case is automatically adapting human clothing sprites to different species, something we want to make species like Vox a reality.
A basic example of wiring this up with Vox has been added. The system is however incredibly simple and **will** need more work by a content developer to select and toggle displacement maps when appropriate. I am leaving that to somebody else. For example right now the displacement map is applied even if a species already has custom-fit sprites for a piece of clothing, such as the grey jumpsuit for Vox.
Basic Aseprite plugins to help with authoring displacement maps have also been made.
* Clown shoes make you waddle, as God intended
* OOPS
* Toned down, client system name fix
* Tidy namespacing for @deltanedas
* Refactor to handle prediction better, etc.
* Resolve PR comments.
* remove deprecated entity coordinate extension functions. Reduces warning count by approximately 50
* final toCoords Removed
* Remove all unused variables and dead code paths
* remove always true variable, should be a cvar or something instead
* remove superfluous variables from tests
* add color field to clothing layers
* add support to randomsprite
* bababa
* finalize spriting work
* add to game
* fix
* remove space
* edit patelle, +1 decor variant
* added only pants, some sprite fix
* inflation
* fix mixed
* not tested commit
* Revert "not tested commit"
This reverts commit 4a904df3452263e87c9cb819ab5d8cf411ebe468.
* naked human is fun
* update
* add new style
* some sprite pixel tweak
* Update meta.json