Installer/ui.go
2024-12-20 18:58:53 +01:00

118 lines
3.4 KiB
Go

package main
import rl "github.com/gen2brain/raylib-go/raylib"
type ColorOption struct {
Name string
Color rl.Color
}
type ThemeOption struct {
Name string
}
type LayoutOption struct {
Name string
}
func drawRoundedRect(r rl.Rectangle, roundness float32, col rl.Color) {
segments := int32(8)
rl.DrawRectangleRounded(r, roundness, segments, col)
}
func drawRoundedRectButton(r rl.Rectangle, text string, alpha float32, hovered bool) {
r.X += 0.5
r.Y += 0.5
r.Width -= 1.0
r.Height -= 1.0
col := applyAlpha(rl.White, 0.1)
if hovered {
col = applyAlpha(rl.White, 0.3)
}
lineCol := applyAlpha(rl.White, 1.0)
textCol := applyAlpha(rl.RayWhite, alpha)
roundness := float32(0.3)
rl.DrawRectangleRounded(r, roundness, 8, col)
rl.DrawRectangleRoundedLines(r, roundness, 8, lineCol)
txW := rl.MeasureText(text, 20)
rl.DrawText(text, int32(r.X+(r.Width-float32(txW))/2),
int32(r.Y+(r.Height-20)/2), 20, textCol)
}
func drawRectButtonAlpha(r rl.Rectangle, text string, alpha float32) {
hovered := overRect(rl.GetMousePosition(), r)
drawRoundedRectButton(r, text, alpha, hovered)
}
func drawButton(text string, x, y, w, h int32, mousePos rl.Vector2) {
r := rl.Rectangle{X: float32(x), Y: float32(y), Width: float32(w), Height: float32(h)}
hovered := overRect(mousePos, r)
drawRoundedRectButton(r, text, 1.0, hovered)
}
func drawColorCircleAlpha(x, y float32, col rl.Color, selected bool, alpha float32) {
baseCol := applyAlpha(col, alpha)
darkCol := applyAlpha(rl.Color{
R: uint8(float32(col.R) * 0.8),
G: uint8(float32(col.G) * 0.8),
B: uint8(float32(col.B) * 0.8),
A: col.A,
}, alpha)
rl.DrawCircleGradient(int32(x), int32(y), 8, baseCol, darkCol)
if selected {
rl.DrawCircleLines(int32(x), int32(y), 8, applyAlpha(rl.White, alpha))
} else if overCircle(rl.GetMousePosition(), rl.Vector2{X: x, Y: y}, 8) {
rl.DrawCircleLines(int32(x), int32(y), 8, applyAlpha(rl.Fade(rl.White, 0.5), alpha))
}
}
func drawThemeBoxAlpha(x, y float32, label string, selected bool, alpha float32) {
rect := rl.Rectangle{X: x - 50, Y: y - 20, Width: 100, Height: 40}
hovered := overRect(rl.GetMousePosition(), rect)
col := applyAlpha(rl.White, 0.1*alpha)
if hovered {
col = applyAlpha(rl.White, 0.3*alpha)
}
lineCol := applyAlpha(rl.White, alpha)
textCol := applyAlpha(rl.RayWhite, alpha)
drawRoundedRect(rect, 0.3, col)
rl.DrawRectangleRoundedLines(rect, 0.3, 8, lineCol)
txW := rl.MeasureText(label, 20)
rl.DrawTextEx(rl.GetFontDefault(), label,
rl.Vector2{X: float32(int32(x) - txW/2), Y: float32(int32(y) - 10)}, 20, 1, textCol)
if selected {
rl.DrawRectangleRoundedLines(rect, 0.3, 8, lineCol)
}
}
func drawLayoutOptionAlpha(x, y float32, label string, selected bool, alpha float32) {
rect := rl.Rectangle{X: x - 60, Y: y - 20, Width: 120, Height: 40}
hovered := overRect(rl.GetMousePosition(), rect)
col := applyAlpha(rl.White, 0.1*alpha)
if hovered {
col = applyAlpha(rl.White, 0.3*alpha)
}
lineCol := applyAlpha(rl.White, alpha)
textCol := applyAlpha(rl.RayWhite, alpha)
drawRoundedRect(rect, 0.3, col)
rl.DrawRectangleRoundedLines(rect, 0.3, 8, lineCol)
txW := rl.MeasureText(label, 20)
rl.DrawTextEx(rl.GetFontDefault(), label,
rl.Vector2{X: float32(int32(x) - txW/2), Y: float32(int32(y) - 10)}, 20, 1, textCol)
if selected {
rl.DrawRectangleRoundedLines(rect, 0.3, 8, lineCol)
}
}
func applyAlpha(c rl.Color, alpha float32) rl.Color {
c.A = uint8(float32(c.A) * alpha)
return c
}