Files
Documentation/content/ui-systems/ui-styles.en.md
2026-01-20 20:33:59 +01:00

8.9 KiB

title, type, weight
title type weight
UI Styles docs 14

This page documents the styling system for Hytale UI widgets.

Style States

Interactive widgets support multiple states:

State When Applied
Default Normal state
Hovered Mouse over widget
Pressed Mouse button held
Disabled Widget is disabled
Style: (
  Default: (Background: "Button.png"),
  Hovered: (Background: "ButtonHovered.png"),
  Pressed: (Background: "ButtonPressed.png"),
  Disabled: (Background: "ButtonDisabled.png")
);

LabelStyle

Text styling for Label widgets.

@MyLabelStyle = LabelStyle(
  FontSize: 16,
  FontName: "Default",           // or "Secondary"
  TextColor: #ffffff,
  RenderBold: true,
  RenderUppercase: false,
  LetterSpacing: 0,
  Wrap: false,
  HorizontalAlignment: Center,   // Start, Center, End
  VerticalAlignment: Center,     // Top, Center, Bottom
  OutlineColor: #000000(0.5)
);

Label {
  Style: @MyLabelStyle;
}

LabelStyle Properties

Property Type Description
FontSize number Text size
FontName string Font family ("Default", "Secondary")
TextColor color Text color
RenderBold bool Bold text
RenderUppercase bool Force uppercase
LetterSpacing number Space between characters
Wrap bool Enable text wrapping
HorizontalAlignment enum Start, Center, End
VerticalAlignment enum Top, Center, Bottom
OutlineColor color Text outline color
Alignment enum Shorthand for both alignments (Center)

ButtonStyle

Styling for Button widgets (without text).

@MyButtonStyle = ButtonStyle(
  Default: (Background: (TexturePath: "Button.png", Border: 12)),
  Hovered: (Background: (TexturePath: "ButtonHovered.png", Border: 12)),
  Pressed: (Background: (TexturePath: "ButtonPressed.png", Border: 12)),
  Disabled: (Background: (TexturePath: "ButtonDisabled.png", Border: 12)),
  Sounds: @ButtonSounds
);

Button {
  Style: @MyButtonStyle;
}

Button State Properties

Property Type Description
Background PatchStyle Background appearance

TextButtonStyle

Styling for TextButton widgets.

@MyTextButtonStyle = TextButtonStyle(
  Default: (
    Background: (TexturePath: "Button.png", Border: 12),
    LabelStyle: (FontSize: 17, TextColor: #bfcdd5, RenderBold: true)
  ),
  Hovered: (
    Background: (TexturePath: "ButtonHovered.png", Border: 12),
    LabelStyle: (FontSize: 17, TextColor: #ffffff, RenderBold: true)
  ),
  Pressed: (
    Background: (TexturePath: "ButtonPressed.png", Border: 12),
    LabelStyle: (FontSize: 17, TextColor: #aaaaaa, RenderBold: true)
  ),
  Disabled: (
    Background: (TexturePath: "ButtonDisabled.png", Border: 12),
    LabelStyle: (FontSize: 17, TextColor: #797b7c, RenderBold: true)
  ),
  Sounds: @ButtonSounds
);

TextButton State Properties

Property Type Description
Background PatchStyle Background appearance
LabelStyle LabelStyle Text styling

PatchStyle

9-patch texture configuration for stretchable backgrounds.

@MyPatchStyle = PatchStyle(
  TexturePath: "Panel.png",
  Border: 16                    // Uniform border
);

@MyPatchStyle2 = PatchStyle(
  TexturePath: "Button.png",
  HorizontalBorder: 80,         // Left/right border
  VerticalBorder: 12            // Top/bottom border
);

// With color tint
@ColoredPatch = PatchStyle(
  Color: #ff0000(0.5)           // Semi-transparent red
);

PatchStyle Properties

Property Type Description
TexturePath string Path to texture file
Border number Uniform 9-patch border
HorizontalBorder number Left/right 9-patch border
VerticalBorder number Top/bottom 9-patch border
Color color Solid color (instead of texture)

InputFieldStyle

Styling for text input fields.

@MyInputStyle = InputFieldStyle(
  TextColor: #ffffff,
  FontSize: 16
);

@MyPlaceholderStyle = InputFieldStyle(
  TextColor: #6e7da1
);

TextField {
  Style: @MyInputStyle;
  PlaceholderStyle: @MyPlaceholderStyle;
}

SliderStyle

Styling for slider controls.

@MySliderStyle = SliderStyle(
  Background: (TexturePath: "SliderBackground.png", Border: 2),
  Handle: "SliderHandle.png",
  HandleWidth: 16,
  HandleHeight: 16,
  Sounds: (
    Activate: (SoundPath: "SliderTick.ogg", Volume: 10),
    MouseHover: (SoundPath: "Hover.ogg", Volume: 6)
  )
);

SliderStyle Properties

Property Type Description
Background PatchStyle Track background
Handle string Handle texture path
HandleWidth number Handle width
HandleHeight number Handle height
Sounds object Sound effects

CheckBoxStyle

Styling for checkbox controls.

@MyCheckBoxStyle = CheckBoxStyle(
  Unchecked: (
    DefaultBackground: (Color: #00000000),
    HoveredBackground: (Color: #ffffff20),
    PressedBackground: (Color: #ffffff10),
    DisabledBackground: (Color: #424242),
    ChangedSound: (SoundPath: "Untick.ogg", Volume: 6)
  ),
  Checked: (
    DefaultBackground: (TexturePath: "Checkmark.png"),
    HoveredBackground: (TexturePath: "Checkmark.png"),
    PressedBackground: (TexturePath: "Checkmark.png"),
    ChangedSound: (SoundPath: "Tick.ogg", Volume: 6)
  )
);

DropdownBoxStyle

Styling for dropdown menus.

@MyDropdownStyle = DropdownBoxStyle(
  DefaultBackground: (TexturePath: "Dropdown.png", Border: 16),
  HoveredBackground: (TexturePath: "DropdownHovered.png", Border: 16),
  PressedBackground: (TexturePath: "DropdownPressed.png", Border: 16),
  DefaultArrowTexturePath: "DropdownCaret.png",
  HoveredArrowTexturePath: "DropdownCaret.png",
  PressedArrowTexturePath: "DropdownCaretPressed.png",
  ArrowWidth: 13,
  ArrowHeight: 18,
  LabelStyle: (TextColor: #96a9be, FontSize: 13),
  EntryLabelStyle: (TextColor: #b7cedd),
  SelectedEntryLabelStyle: (TextColor: #b7cedd, RenderBold: true),
  HorizontalPadding: 8,
  PanelBackground: (TexturePath: "DropdownBox.png", Border: 16),
  PanelPadding: 6,
  PanelAlign: Right,                // or Bottom
  PanelOffset: 7,
  EntryHeight: 31,
  EntriesInViewport: 10,
  HoveredEntryBackground: (Color: #0a0f17),
  PressedEntryBackground: (Color: #0f1621),
  Sounds: @DropdownBoxSounds,
  EntrySounds: @ButtonSounds
);

ScrollbarStyle

Styling for scrollbars.

@MyScrollbarStyle = ScrollbarStyle(
  Spacing: 6,
  Size: 6,
  Background: (TexturePath: "Scrollbar.png", Border: 3),
  Handle: (TexturePath: "ScrollbarHandle.png", Border: 3),
  HoveredHandle: (TexturePath: "ScrollbarHandleHovered.png", Border: 3),
  DraggedHandle: (TexturePath: "ScrollbarHandleDragged.png", Border: 3),
  OnlyVisibleWhenHovered: false
);

TabNavigationStyle

Styling for tab navigation.

@TabStyle = TabStyleState(
  Background: "Tab.png",
  Overlay: "TabOverlay.png",
  IconAnchor: (Width: 44, Height: 44),
  Anchor: (Width: 82, Height: 62)
);

@MyTabsStyle = TabNavigationStyle(
  TabStyle: (
    Default: @TabStyle,
    Hovered: (...@TabStyle, Background: "TabHovered.png"),
    Pressed: (...@TabStyle, Background: "TabPressed.png")
  ),
  SelectedTabStyle: (
    Default: (
      ...@TabStyle,
      Overlay: "TabSelectedOverlay.png"
    )
  ),
  TabSounds: @TabSounds,
  SeparatorAnchor: (Width: 5, Height: 34),
  SeparatorBackground: "TabSeparator.png"
);

TextTooltipStyle

Styling for text tooltips.

@MyTooltipStyle = TextTooltipStyle(
  Background: (TexturePath: "TooltipBackground.png", Border: 24),
  MaxWidth: 400,
  LabelStyle: (Wrap: true, FontSize: 16),
  Padding: 24
);

Sound Definitions

Sounds are defined as objects with audio properties.

@ButtonSounds = (
  Activate: (
    SoundPath: "Sounds/ButtonActivate.ogg",
    Volume: 6,
    MinPitch: -0.2,
    MaxPitch: 0.2
  ),
  MouseHover: (
    SoundPath: "Sounds/ButtonHover.ogg",
    Volume: 6
  )
);

@DropdownBoxSounds = DropdownBoxSounds(
  Activate: (SoundPath: "Tick.ogg", Volume: 6),
  MouseHover: (SoundPath: "Hover.ogg", Volume: 6),
  Close: (SoundPath: "Untick.ogg", Volume: 6)
);

Sound Properties

Property Type Description
SoundPath string Path to audio file
Volume number Volume level (can be negative)
MinPitch number Minimum pitch variation
MaxPitch number Maximum pitch variation

Style Inheritance

Use the spread operator to extend styles:

@BaseButtonStyle = TextButtonStyle(
  Default: (Background: @DefaultBg, LabelStyle: @DefaultLabel),
  Hovered: (Background: @HoveredBg, LabelStyle: @DefaultLabel),
  Pressed: (Background: @PressedBg, LabelStyle: @DefaultLabel),
  Sounds: @ButtonSounds
);

@DestructiveButtonStyle = TextButtonStyle(
  ...@BaseButtonStyle,
  Default: (...@BaseButtonStyle.Default, Background: @DestructiveBg),
  Sounds: @DestructiveSounds
);