fixed welcome layout and position
This commit is contained in:
parent
3069d77189
commit
87a15ba74e
@ -11,13 +11,17 @@ import (
|
||||
var FontRenderer = LoadFonts("fonts")
|
||||
|
||||
const (
|
||||
GameFont string = "x12y20pxScanLine"
|
||||
FontSize int = 16
|
||||
GameFont string = "x12y20pxScanLine"
|
||||
FontSizeNormal int = 16
|
||||
FontSizeBig int = 48
|
||||
FontSizeSmall int = 8
|
||||
)
|
||||
|
||||
type Texter struct {
|
||||
Renderer *etxt.Renderer
|
||||
Font *font.Face
|
||||
Renderer *etxt.Renderer
|
||||
FontNormal *font.Face
|
||||
FontBig *font.Face
|
||||
FontSmall *font.Face
|
||||
}
|
||||
|
||||
func LoadFonts(dir string) *Texter {
|
||||
@ -32,7 +36,19 @@ func LoadFonts(dir string) *Texter {
|
||||
}
|
||||
|
||||
gameface := truetype.NewFace(gamefont, &truetype.Options{
|
||||
Size: float64(FontSize),
|
||||
Size: float64(FontSizeNormal),
|
||||
DPI: 72,
|
||||
Hinting: font.HintingFull,
|
||||
})
|
||||
|
||||
biggameface := truetype.NewFace(gamefont, &truetype.Options{
|
||||
Size: float64(FontSizeBig),
|
||||
DPI: 72,
|
||||
Hinting: font.HintingFull,
|
||||
})
|
||||
|
||||
smallgameface := truetype.NewFace(gamefont, &truetype.Options{
|
||||
Size: float64(FontSizeSmall),
|
||||
DPI: 72,
|
||||
Hinting: font.HintingFull,
|
||||
})
|
||||
@ -58,7 +74,7 @@ func LoadFonts(dir string) *Texter {
|
||||
renderer.SetCacheHandler(glyphsCache.NewHandler())
|
||||
renderer.SetFont(fontlib.GetFont(GameFont))
|
||||
|
||||
return &Texter{Renderer: renderer, Font: &gameface}
|
||||
return &Texter{Renderer: renderer, FontNormal: &gameface, FontBig: &biggameface, FontSmall: &smallgameface}
|
||||
}
|
||||
|
||||
// helper function used with FontLibrary.EachFont to make sure
|
||||
|
||||
@ -61,7 +61,7 @@ func (scene *SelectScene) SetupUI() {
|
||||
|
||||
widget.ButtonOpts.Image(buttonImage),
|
||||
|
||||
widget.ButtonOpts.Text("Start new Game", *assets.FontRenderer.Font, &widget.ButtonTextColor{
|
||||
widget.ButtonOpts.Text("Start new Game", *assets.FontRenderer.FontNormal, &widget.ButtonTextColor{
|
||||
Idle: color.NRGBA{0xdf, 0xf4, 0xff, 0xff},
|
||||
}),
|
||||
|
||||
@ -81,7 +81,6 @@ func (scene *SelectScene) SetupUI() {
|
||||
|
||||
rootContainer := widget.NewContainer(
|
||||
widget.ContainerOpts.BackgroundImage(
|
||||
// FIXME: see https://github.com/ebitenui/ebitenui/issues/118
|
||||
image.NewNineSlice(assets.Assets["background-transparent"], [3]int{0, 1, 639}, [3]int{0, 1, 479})),
|
||||
//widget.ContainerOpts.BackgroundImage(image.NewNineSliceColor(color.NRGBA{0x13, 0x1a, 0x22, 0xff})),
|
||||
//widget.ContainerOpts.BackgroundImage(image.NewNineSliceColor(color.NRGBA{0xff, 0x80, 0x00, 0x00})),
|
||||
|
||||
@ -2,11 +2,12 @@ package game
|
||||
|
||||
import (
|
||||
"image/color"
|
||||
"log/slog"
|
||||
"openquell/assets"
|
||||
|
||||
"github.com/ebitenui/ebitenui"
|
||||
"github.com/ebitenui/ebitenui/image"
|
||||
"github.com/ebitenui/ebitenui/widget"
|
||||
"github.com/hajimehoshi/ebiten/v2"
|
||||
"github.com/tinne26/etxt"
|
||||
)
|
||||
|
||||
type WelcomeScene struct {
|
||||
@ -14,10 +15,12 @@ type WelcomeScene struct {
|
||||
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
|
||||
}
|
||||
|
||||
@ -32,31 +35,102 @@ func (scene *WelcomeScene) GetNext() SceneName {
|
||||
func (scene *WelcomeScene) Update() error {
|
||||
switch {
|
||||
case ebiten.IsKeyPressed(ebiten.KeyEnter):
|
||||
slog.Debug("welcome.Update() next")
|
||||
scene.SetNext(Select)
|
||||
}
|
||||
|
||||
scene.Ui.Update()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (scene *WelcomeScene) Draw(screen *ebiten.Image) {
|
||||
screen.Clear()
|
||||
|
||||
op := &ebiten.DrawImageOptions{}
|
||||
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"]
|
||||
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)
|
||||
uiContainer := widget.NewContainer(
|
||||
widget.ContainerOpts.BackgroundImage(
|
||||
image.NewNineSlice(background, [3]int{0, 1, 639}, [3]int{0, 1, 479})),
|
||||
widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
|
||||
)
|
||||
|
||||
assets.FontRenderer.Renderer.SetAlign(etxt.Top, etxt.Left)
|
||||
assets.FontRenderer.Renderer.SetSizePx(32)
|
||||
assets.FontRenderer.Renderer.Draw("[press enter to start]", 100, 300)
|
||||
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,
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user