137 lines
3.3 KiB
Go
137 lines
3.3 KiB
Go
package game
|
|
|
|
import (
|
|
"image/color"
|
|
"openquell/assets"
|
|
|
|
"github.com/ebitenui/ebitenui"
|
|
"github.com/ebitenui/ebitenui/image"
|
|
"github.com/ebitenui/ebitenui/widget"
|
|
"github.com/hajimehoshi/ebiten/v2"
|
|
)
|
|
|
|
type WelcomeScene struct {
|
|
Game *Game
|
|
Next SceneName
|
|
Whoami SceneName
|
|
UseCache bool
|
|
Ui *ebitenui.UI
|
|
}
|
|
|
|
func NewWelcomeScene(game *Game) Scene {
|
|
scene := &WelcomeScene{Whoami: Welcome, Game: game, Next: Welcome}
|
|
scene.SetupUI()
|
|
return scene
|
|
}
|
|
|
|
func (scene *WelcomeScene) SetNext(next SceneName) {
|
|
scene.Next = next
|
|
}
|
|
|
|
func (scene *WelcomeScene) GetNext() SceneName {
|
|
return scene.Next
|
|
}
|
|
|
|
func (scene *WelcomeScene) Update() error {
|
|
switch {
|
|
case ebiten.IsKeyPressed(ebiten.KeyEnter):
|
|
scene.SetNext(Select)
|
|
}
|
|
|
|
scene.Ui.Update()
|
|
|
|
return nil
|
|
}
|
|
|
|
func (scene *WelcomeScene) Draw(screen *ebiten.Image) {
|
|
screen.Clear()
|
|
|
|
scene.Ui.Draw(screen)
|
|
/*
|
|
op := &ebiten.DrawImageOptions{}
|
|
|
|
background := assets.Assets["background-lila"]
|
|
screen.DrawImage(background, op)
|
|
|
|
blue := color.RGBA{0, 255, 128, 255}
|
|
|
|
assets.FontRenderer.Renderer.SetTarget(screen)
|
|
assets.FontRenderer.Renderer.SetColor(blue)
|
|
assets.FontRenderer.Renderer.SetAlign(etxt.YCenter, etxt.XCenter)
|
|
assets.FontRenderer.Renderer.SetSizePx(45)
|
|
assets.FontRenderer.Renderer.Draw("Welcome to Open Quell!", 320, 200)
|
|
|
|
assets.FontRenderer.Renderer.SetAlign(etxt.Top, etxt.Left)
|
|
assets.FontRenderer.Renderer.SetSizePx(32)
|
|
assets.FontRenderer.Renderer.Draw("[press enter to start]", 100, 300)
|
|
*/
|
|
}
|
|
|
|
func (scene *WelcomeScene) SetupUI() {
|
|
buttonImage, _ := loadButtonImage()
|
|
background := assets.Assets["background-lila"]
|
|
blue := color.RGBA{0, 255, 128, 255}
|
|
|
|
uiContainer := widget.NewContainer(
|
|
widget.ContainerOpts.BackgroundImage(
|
|
image.NewNineSlice(background, [3]int{0, 1, 639}, [3]int{0, 1, 479})),
|
|
widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
|
|
)
|
|
|
|
rowContainer := widget.NewContainer(
|
|
widget.ContainerOpts.WidgetOpts(
|
|
widget.WidgetOpts.LayoutData(widget.AnchorLayoutData{
|
|
HorizontalPosition: widget.AnchorLayoutPositionCenter,
|
|
VerticalPosition: widget.AnchorLayoutPositionCenter,
|
|
}),
|
|
),
|
|
widget.ContainerOpts.Layout(widget.NewRowLayout(
|
|
widget.RowLayoutOpts.Direction(widget.DirectionVertical),
|
|
widget.RowLayoutOpts.Padding(widget.NewInsetsSimple(20)),
|
|
widget.RowLayoutOpts.Spacing(20),
|
|
)),
|
|
)
|
|
|
|
button := widget.NewButton(
|
|
widget.ButtonOpts.WidgetOpts(
|
|
widget.WidgetOpts.LayoutData(widget.RowLayoutData{
|
|
Position: widget.RowLayoutPositionCenter,
|
|
Stretch: false,
|
|
MaxWidth: 200,
|
|
MaxHeight: 100,
|
|
}),
|
|
),
|
|
|
|
widget.ButtonOpts.Image(buttonImage),
|
|
|
|
widget.ButtonOpts.Text("Start", *assets.FontRenderer.FontNormal, &widget.ButtonTextColor{
|
|
Idle: color.NRGBA{0xdf, 0xf4, 0xff, 0xff},
|
|
}),
|
|
|
|
widget.ButtonOpts.TextPadding(widget.Insets{
|
|
Left: 30,
|
|
Right: 30,
|
|
Top: 5,
|
|
Bottom: 5,
|
|
}),
|
|
|
|
widget.ButtonOpts.ClickedHandler(func(args *widget.ButtonClickedEventArgs) {
|
|
scene.SetNext(Play)
|
|
}),
|
|
)
|
|
|
|
label := widget.NewText(
|
|
widget.TextOpts.Text("Welcome to OpenQuell", *assets.FontRenderer.FontBig, blue),
|
|
widget.TextOpts.Position(widget.TextPositionCenter, widget.TextPositionCenter),
|
|
)
|
|
|
|
rowContainer.AddChild(label)
|
|
rowContainer.AddChild(button)
|
|
|
|
uiContainer.AddChild(rowContainer)
|
|
|
|
scene.Ui = &ebitenui.UI{
|
|
Container: uiContainer,
|
|
}
|
|
}
|