// Styling of Lemur components
// For documentation, see:
// https://github.com/jMonkeyEngine-Contributions/Lemur/wiki/Styling

import com.simsilica.lemur.*
import com.simsilica.lemur.component.QuadBackgroundComponent

def bgColor = color(1, 1, 1, 1)
def buttonEnabledColor = color(0.8, 0.9, 1, 1)
def buttonDisabledColor = color(0.8, 0.9, 1, 0.2)
//def buttonBgColor = color(0, 0.75, 0.75, 1)
def sliderColor = color(0.6, 0.8, 0.8, 1)
def sliderBgColor = color(0.5, 0.75, 0.75, 1)
def gradientColor = color(1, 1, 1, 1)
def tabbuttonEnabledColor = color(0.4, 0.45, 0.5, 1)
def playButtonBorderColor = color(1, 0.6, 0, 1) // For "Spielen" button
def blackColor = color(0, 0, 0, 1) // Define black color for border

def playButtonBorderColor = color(1, 0.6, 0, 1) // Orange border for "Spielen" button
def playButtonTextColor = color(0, 0, 0, 1) // Black text color for "Spielen" button
def buttonBgColor = color(1, 1, 1, 1) // White background for "Spiel beenden" and "Einstellungen" buttons
def buttonTextColor = color(0, 0, 0, 1) // Black text color for "Spiel beenden" and "Einstellungen" buttons
def borderColor = color(0, 0, 0, 1) // Black border for "Spiel beenden" and "Einstellungen"


def gradient = TbtQuadBackgroundComponent.create(
        texture(name: "/com/simsilica/lemur/icons/bordered-gradient.png", generateMips: false),
       1, 1, 1, 126, 126, 1f, false)

def doubleGradient = new QuadBackgroundComponent(gradientColor)
doubleGradient.texture = texture(name: "/com/simsilica/lemur/icons/double-gradient-128.png", generateMips: false)

// Hauptstil für die Schriftart
selector("pp") {
    font = font("Interface/Fonts/Metropolis/Metropolis-Regular-32.fnt")
}

// Titel für "Einstellungen"
selector("settings-title", "pp") {
    color = color(1, 1, 1, 1)
    fontSize = 48
    textHAlignment = HAlignment.Center
    insets = new Insets3f(5, 5, 5, 5)
}

// Container Stil
selector("container", "pp") {
    background = gradient.clone()
    background.setColor(bgColor)
}

// Slider Stil
selector("slider", "pp") {
    insets = new Insets3f(5, 10, 5, 10) // Abstand
    background = new QuadBackgroundComponent(sliderBgColor)
}

selector("play-button", "pp") {
    color = playButtonTextColor // Black text color
    background = new QuadBackgroundComponent(playButtonBorderColor) // Orange border background
    insets = new Insets3f(15, 25, 15, 25) // Padding for larger button size
    background.setMargin(5, 5) // Thin border effect around the background color
    fontSize = 36 // Larger font size for prominence
}

selector("menu-button", "pp") {
    color = buttonTextColor // Black text color
    background = new QuadBackgroundComponent(buttonBgColor) // White background
    insets = new Insets3f(10, 20, 10, 20) // Padding
    background.setMargin(1, 1) // Thin black border
    background.setColor(borderColor) // Set black border color

    fontSize = 24 // Standard font size
}

def pressedCommand = new Command<Button>() {
    void execute(Button source) {
        if (source.isPressed())
            source.move(1, -1, 0)
        else
            source.move(-1, 1, 0)
    }
}

def enabledCommand = new Command<Button>() {
    void execute(Button source) {
        if (source.isEnabled())
            source.setColor(buttonEnabledColor)
        else
            source.setColor(buttonDisabledColor)
    }
}

def stdButtonCommands = [
        (ButtonAction.Down)    : [pressedCommand],
        (ButtonAction.Up)      : [pressedCommand],
        (ButtonAction.Enabled) : [enabledCommand],
        (ButtonAction.Disabled): [enabledCommand]
]

selector("button", "pp") {
    background = gradient.clone()
    color = buttonEnabledColor
    insets = new Insets3f(2, 2, 2, 2)
    buttonCommands = stdButtonCommands
}
