raylib-go/examples/_gui/basic_controls/main.go
2023-03-07 12:18:32 +01:00

90 lines
2.4 KiB
Go

package main
import (
"fmt"
"strings"
gui "github.com/gen2brain/raylib-go/raygui"
rl "github.com/gen2brain/raylib-go/raylib"
)
func main() {
screenWidth := int32(800)
screenHeight := int32(450)
rl.SetConfigFlags(rl.FlagVsyncHint)
rl.InitWindow(screenWidth, screenHeight, "raylib [gui] example - basic controls")
buttonToggle := true
buttonClicked := false
checkboxChecked := false
spinnerValue := int32(5)
sliderValue := float32(10)
sliderBarValue := float32(70)
progressValue := float32(0.5)
comboActive := int32(0)
comboLastActive := int32(0)
toggleActive := int32(0)
toggleText := "Item 1;Item 2;Item 3"
comboText := []string{
"ashes", "bluish", "candy", "cherry", "cyber", "dark",
"default", "enefete", "jungle", "lavanda", "sunny", "terminal",
}
comboList := strings.Join(comboText, ";")
rl.SetTargetFPS(60)
for !rl.WindowShouldClose() {
if buttonClicked {
progressValue += 0.1
if progressValue >= 1.1 {
progressValue = 0.0
}
}
rl.BeginDrawing()
rl.ClearBackground(rl.Beige)
gui.Label(rl.NewRectangle(50, 50, 80, 20), "Label")
buttonClicked = gui.Button(rl.NewRectangle(50, 70, 80, 40), "Button")
checkboxChecked = gui.CheckBox(rl.NewRectangle(50, 140, 20, 20), "Checkbox", checkboxChecked)
gui.ProgressBar(rl.NewRectangle(50, 210, 200, 20),
fmt.Sprintf("%.1f", progressValue),
"ProgressBar",
progressValue, 0, 1)
sliderValue = gui.Slider(rl.NewRectangle(50, 280, 200, 20), "Slider", "", sliderValue, 0, 100)
gui.Label(rl.NewRectangle(200+50+5, 280, 20, 20), fmt.Sprintf("%.0f", sliderValue))
buttonToggle = gui.Toggle(rl.NewRectangle(50, 350, 100, 40), "ButtonToggle", buttonToggle)
toggleActive = gui.ToggleGroup(rl.NewRectangle(500, 70, 60, 30), toggleText, toggleActive)
sliderBarValue = gui.SliderBar(rl.NewRectangle(500, 140, 200, 20), "SliderBar", "", sliderBarValue, 0, 100)
gui.Label(rl.NewRectangle(500+200+5, 140, 20, 20), fmt.Sprintf("%.0f", sliderBarValue))
_ = gui.Spinner(rl.NewRectangle(500, 210, 200, 20), "Spinner", &spinnerValue, 0, 100, true)
gui.Label(rl.NewRectangle(500, 260, 200, 20), "ComboBox")
comboActive = gui.ComboBox(rl.NewRectangle(500, 280, 200, 20), comboList, comboActive)
if comboLastActive != comboActive {
ch := comboText[comboActive] // choosed name
filename := fmt.Sprintf("styles/%s/%s.rgs", ch, ch)
gui.LoadStyle(filename)
comboLastActive = comboActive
}
rl.EndDrawing()
}
rl.CloseWindow()
}