openquell/game/welcome_scene.go

82 lines
1.6 KiB
Go
Raw Normal View History

package game
import (
"openquell/assets"
"openquell/config"
"openquell/gameui"
2024-02-17 19:28:56 +01:00
"github.com/ebitenui/ebitenui"
"github.com/ebitenui/ebitenui/widget"
"github.com/hajimehoshi/ebiten/v2"
)
type WelcomeScene struct {
Game *Game
Next SceneName
Whoami SceneName
UseCache bool
2024-02-17 19:28:56 +01:00
Ui *ebitenui.UI
}
func NewWelcomeScene(game *Game) Scene {
scene := &WelcomeScene{Whoami: Welcome, Game: game, Next: Welcome}
2024-02-17 19:28:56 +01:00
scene.SetupUI()
return scene
}
func (scene *WelcomeScene) SetNext(next SceneName) {
scene.Next = next
}
func (scene *WelcomeScene) GetNext() SceneName {
return scene.Next
}
func (scene *WelcomeScene) ResetNext() {
scene.Next = scene.Whoami
}
func (scene *WelcomeScene) SetLevel(level int) {}
2024-02-18 18:19:34 +01:00
func (scene *WelcomeScene) Clearscreen() bool {
return true
}
func (scene *WelcomeScene) Update() error {
switch {
2024-04-16 19:10:32 +02:00
case scene.Game.Input.AnyKeyJustPressed():
2024-02-18 18:19:34 +01:00
scene.SetNext(Menu)
}
2024-02-17 19:28:56 +01:00
scene.Ui.Update()
return nil
}
func (scene *WelcomeScene) Draw(screen *ebiten.Image) {
screen.Clear()
2024-02-17 19:28:56 +01:00
scene.Ui.Draw(screen)
}
func (scene *WelcomeScene) SetupUI() {
rowContainer := gameui.NewRowContainer()
2024-02-17 19:28:56 +01:00
button := gameui.NewMenuButton("Start", *assets.FontRenderer.FontNormal,
func(args *widget.ButtonClickedEventArgs) {
2024-02-18 18:19:34 +01:00
scene.SetNext(Menu)
})
2024-02-17 19:28:56 +01:00
label := widget.NewText(
widget.TextOpts.Text("Welcome to OpenQuell", *assets.FontRenderer.FontBig, config.FontColorFG),
2024-02-17 19:28:56 +01:00
widget.TextOpts.Position(widget.TextPositionCenter, widget.TextPositionCenter),
)
rowContainer.AddChild(label)
rowContainer.AddChild(button)
scene.Ui = &ebitenui.UI{
Container: rowContainer.Container(),
2024-02-17 19:28:56 +01:00
}
}