Дополнительная библиотека для манипуляции со стилями с помощью YAML.
Пишутся они в Prototypes и выглядят примерно так:
- type: styleSheet
id: shared
typeDefinition:
PanelContainer: "Robust.Client.UserInterface.Controls.PanelContainer"
styles:
PanelContainer.ChatMainPanel:
panel:
valueType: Robust.Client.Graphics.StyleBoxTexture
value:
texture: "/Textures/_White/NovaUI/Chat/panel.png"
patchMargin: 3,5,3,5
expandMargin: 3,5,3,5
textureScale: 2,2
modulate-self: "#FFFFFF"где в typeDefinition пишутся типы ui классов
в styles прописываются правила стилей
styles:
<TypeDefinition>.<Class>:[PseudoClass]:
<FieldOfControl>:
valueType: <Тип поля класса контроля>
value: <data for serializing value>в styles можно прописать множества правил, селектор которых не совпадает друг с другом.
в TypeDefinition прописывается то, что прописали выше в typeDefinition:
в Class прописывается класс стиля
PseudoClass необязателен, но используется для указания правил при нажатии кнопки стилей, либо hover.
ContainerButton.APCControlButton:
stylebox:
valueType: Robust.Client.Graphics.StyleBoxTexture
value:
texture: "/Textures/_White/NovaUI/APC/button-panel-inactive.png"
patchMargin: 1,3,1,1
expandMargin: 1,1,1,3
textureScale: 4,4
modulate-self: "#FFFFFF"
ContainerButton.APCControlButton:pressed:
stylebox:
valueType: Robust.Client.Graphics.StyleBoxTexture
value:
texture: "/Textures/_White/NovaUI/APC/button-panel-active.png"
patchMargin: 1,3,1,1
expandMargin: 1,3,1,1
textureScale: 4,4
modulate-self: "#FFFFFF"
ContainerButton.APCControlButton:hover:
modulate-self: "#FFFFFF"
ContainerButton.APCControlButton:normal:
modulate-self: "#FFFFFF"Поля стилей можно найти в классах стилей Space Station 14, либо в самих Control
Пример вы можете найти в репозитории WWDP
находясь в корневой папке проекта, добавляем сабмодуль
git submodule add https://github.com/Cinkafox/StyleSheetДобавляем как зависимость на стороне клиента Content.Client.csproj
<ItemGroup>
<ProjectReference Include="..\RobustToolbox\Lidgren.Network\Lidgren.Network.csproj" />
...
<ProjectReference Include="..\StyleSheet\Content.StyleSheet.Client\Content.StyleSheet.Client.csproj" />
<ProjectReference Include="..\StyleSheet\Content.StyleSheet.Shared\Content.StyleSheet.Shared.csproj" />
</ItemGroup>Добавляем как зависимость на серверной стороне тоже для регистрации Content.Server.csproj
<ItemGroup>
<ProjectReference Include="..\Content.Packaging\Content.Packaging.csproj" />
...
<ProjectReference Include="..\StyleSheet\Content.StyleSheet.Client\Content.StyleSheet.Server.csproj" />
<ProjectReference Include="..\StyleSheet\Content.StyleSheet.Shared\Content.StyleSheet.Shared.csproj" />
</ItemGroup>Измените код в Content.Client/Stylesheets/StylesheetManager.cs как тут
Теперь пропишите где то в прототипах тестовый стиль и соберите проект
dotnet buildПроверьте на работоспособность.