raylib-go/examples/core/basic_window_manager/main.go
2025-06-22 17:48:18 -04:00

106 lines
3 KiB
Go

package main
import (
"fmt"
rl "git.terah.dev/UnrealXR/raylib-go/raylib"
)
const screenW = int32(1280)
const screenH = int32(720)
type gameScreen int
const (
LOGO = iota
TITLE
GAMEPLAY
ENDING
)
func main() {
rl.InitWindow(screenW, screenH, "raylib [core] example - basic screen manager")
var currentScreen gameScreen
currentScreen = LOGO
frames := 0
rl.SetTargetFPS(60)
for !rl.WindowShouldClose() {
switch currentScreen {
case LOGO:
frames++
if frames > 240 {
currentScreen = TITLE
}
case TITLE:
if rl.IsKeyPressed(rl.KeyEnter) {
currentScreen = GAMEPLAY
}
case GAMEPLAY:
if rl.IsKeyPressed(rl.KeyEnter) {
currentScreen = ENDING
}
case ENDING:
if rl.IsKeyPressed(rl.KeyEnter) {
currentScreen = LOGO
frames = 0
}
}
rl.BeginDrawing()
rl.ClearBackground(rl.Black)
rec := rl.NewRectangle(0, 0, float32(screenW), float32(screenH))
switch currentScreen {
case LOGO:
txt := "YOUR LOGO GOES HERE"
txtlen := rl.MeasureText(txt, 50)
rl.DrawText(txt, screenW/2-txtlen/2-3, screenH/2-50+3, 50, rl.Magenta)
rl.DrawText(txt, screenW/2-txtlen/2-1, screenH/2-50+1, 50, rl.Black)
rl.DrawText(txt, screenW/2-txtlen/2, screenH/2-50, 50, rl.White)
txt = "this message disappears in " + fmt.Sprint(240-frames) + " frames"
txtlen = rl.MeasureText(txt, 30)
rl.DrawText(txt, screenW/2-txtlen/2-3, screenH/2+3, 30, rl.Magenta)
rl.DrawText(txt, screenW/2-txtlen/2-1, screenH/2+1, 30, rl.Black)
rl.DrawText(txt, screenW/2-txtlen/2, screenH/2, 30, rl.White)
case TITLE:
rl.DrawRectangleRec(rec, rl.DarkGreen)
txt := "AN AMAZING TITLE GOES HERE"
txtlen := rl.MeasureText(txt, 50)
rl.DrawText(txt, screenW/2-txtlen/2-2, screenH/2-50+2, 50, rl.Black)
rl.DrawText(txt, screenW/2-txtlen/2, screenH/2-50, 50, rl.White)
txt = "press enter to move to next screen"
txtlen = rl.MeasureText(txt, 30)
rl.DrawText(txt, screenW/2-txtlen/2-2, screenH/2+2, 30, rl.Black)
rl.DrawText(txt, screenW/2-txtlen/2, screenH/2, 30, rl.White)
case GAMEPLAY:
rl.DrawRectangleRec(rec, rl.DarkPurple)
txt := "FUN GAMEPLAY GOES HERE"
txtlen := rl.MeasureText(txt, 50)
rl.DrawText(txt, screenW/2-txtlen/2-2, screenH/2-50+2, 50, rl.Black)
rl.DrawText(txt, screenW/2-txtlen/2, screenH/2-50, 50, rl.White)
txt = "press enter to move to next screen"
txtlen = rl.MeasureText(txt, 30)
rl.DrawText(txt, screenW/2-txtlen/2-2, screenH/2+2, 30, rl.Black)
rl.DrawText(txt, screenW/2-txtlen/2, screenH/2, 30, rl.White)
case ENDING:
rl.DrawRectangleRec(rec, rl.DarkBlue)
txt := "A DRAMATIC ENDING GOES HERE"
txtlen := rl.MeasureText(txt, 50)
rl.DrawText(txt, screenW/2-txtlen/2-2, screenH/2-50+2, 50, rl.Black)
rl.DrawText(txt, screenW/2-txtlen/2, screenH/2-50, 50, rl.White)
txt = "press enter to move to next screen"
txtlen = rl.MeasureText(txt, 30)
rl.DrawText(txt, screenW/2-txtlen/2-2, screenH/2+2, 30, rl.Black)
rl.DrawText(txt, screenW/2-txtlen/2, screenH/2, 30, rl.White)
}
rl.EndDrawing()
}
rl.CloseWindow()
}