Skip to content

AtaraxiaSpaceFoundation/StyleSheet

Repository files navigation

StyleSheet

Дополнительная библиотека для манипуляции со стилями с помощью 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

Проверьте на работоспособность.

About

Well. Fuck.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages