fixed welcome layout and position
This commit is contained in:
parent
3069d77189
commit
87a15ba74e
@ -11,13 +11,17 @@ import (
|
|||||||
var FontRenderer = LoadFonts("fonts")
|
var FontRenderer = LoadFonts("fonts")
|
||||||
|
|
||||||
const (
|
const (
|
||||||
GameFont string = "x12y20pxScanLine"
|
GameFont string = "x12y20pxScanLine"
|
||||||
FontSize int = 16
|
FontSizeNormal int = 16
|
||||||
|
FontSizeBig int = 48
|
||||||
|
FontSizeSmall int = 8
|
||||||
)
|
)
|
||||||
|
|
||||||
type Texter struct {
|
type Texter struct {
|
||||||
Renderer *etxt.Renderer
|
Renderer *etxt.Renderer
|
||||||
Font *font.Face
|
FontNormal *font.Face
|
||||||
|
FontBig *font.Face
|
||||||
|
FontSmall *font.Face
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadFonts(dir string) *Texter {
|
func LoadFonts(dir string) *Texter {
|
||||||
@ -32,7 +36,19 @@ func LoadFonts(dir string) *Texter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
gameface := truetype.NewFace(gamefont, &truetype.Options{
|
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,
|
DPI: 72,
|
||||||
Hinting: font.HintingFull,
|
Hinting: font.HintingFull,
|
||||||
})
|
})
|
||||||
@ -58,7 +74,7 @@ func LoadFonts(dir string) *Texter {
|
|||||||
renderer.SetCacheHandler(glyphsCache.NewHandler())
|
renderer.SetCacheHandler(glyphsCache.NewHandler())
|
||||||
renderer.SetFont(fontlib.GetFont(GameFont))
|
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
|
// helper function used with FontLibrary.EachFont to make sure
|
||||||
|
|||||||
@ -61,7 +61,7 @@ func (scene *SelectScene) SetupUI() {
|
|||||||
|
|
||||||
widget.ButtonOpts.Image(buttonImage),
|
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},
|
Idle: color.NRGBA{0xdf, 0xf4, 0xff, 0xff},
|
||||||
}),
|
}),
|
||||||
|
|
||||||
@ -81,7 +81,6 @@ func (scene *SelectScene) SetupUI() {
|
|||||||
|
|
||||||
rootContainer := widget.NewContainer(
|
rootContainer := widget.NewContainer(
|
||||||
widget.ContainerOpts.BackgroundImage(
|
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})),
|
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{0x13, 0x1a, 0x22, 0xff})),
|
||||||
//widget.ContainerOpts.BackgroundImage(image.NewNineSliceColor(color.NRGBA{0xff, 0x80, 0x00, 0x00})),
|
//widget.ContainerOpts.BackgroundImage(image.NewNineSliceColor(color.NRGBA{0xff, 0x80, 0x00, 0x00})),
|
||||||
|
|||||||
@ -2,11 +2,12 @@ package game
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"image/color"
|
"image/color"
|
||||||
"log/slog"
|
|
||||||
"openquell/assets"
|
"openquell/assets"
|
||||||
|
|
||||||
|
"github.com/ebitenui/ebitenui"
|
||||||
|
"github.com/ebitenui/ebitenui/image"
|
||||||
|
"github.com/ebitenui/ebitenui/widget"
|
||||||
"github.com/hajimehoshi/ebiten/v2"
|
"github.com/hajimehoshi/ebiten/v2"
|
||||||
"github.com/tinne26/etxt"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type WelcomeScene struct {
|
type WelcomeScene struct {
|
||||||
@ -14,10 +15,12 @@ type WelcomeScene struct {
|
|||||||
Next SceneName
|
Next SceneName
|
||||||
Whoami SceneName
|
Whoami SceneName
|
||||||
UseCache bool
|
UseCache bool
|
||||||
|
Ui *ebitenui.UI
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewWelcomeScene(game *Game) Scene {
|
func NewWelcomeScene(game *Game) Scene {
|
||||||
scene := &WelcomeScene{Whoami: Welcome, Game: game, Next: Welcome}
|
scene := &WelcomeScene{Whoami: Welcome, Game: game, Next: Welcome}
|
||||||
|
scene.SetupUI()
|
||||||
return scene
|
return scene
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,31 +35,102 @@ func (scene *WelcomeScene) GetNext() SceneName {
|
|||||||
func (scene *WelcomeScene) Update() error {
|
func (scene *WelcomeScene) Update() error {
|
||||||
switch {
|
switch {
|
||||||
case ebiten.IsKeyPressed(ebiten.KeyEnter):
|
case ebiten.IsKeyPressed(ebiten.KeyEnter):
|
||||||
slog.Debug("welcome.Update() next")
|
|
||||||
scene.SetNext(Select)
|
scene.SetNext(Select)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scene.Ui.Update()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (scene *WelcomeScene) Draw(screen *ebiten.Image) {
|
func (scene *WelcomeScene) Draw(screen *ebiten.Image) {
|
||||||
screen.Clear()
|
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"]
|
background := assets.Assets["background-lila"]
|
||||||
screen.DrawImage(background, op)
|
|
||||||
|
|
||||||
blue := color.RGBA{0, 255, 128, 255}
|
blue := color.RGBA{0, 255, 128, 255}
|
||||||
|
|
||||||
assets.FontRenderer.Renderer.SetTarget(screen)
|
uiContainer := widget.NewContainer(
|
||||||
assets.FontRenderer.Renderer.SetColor(blue)
|
widget.ContainerOpts.BackgroundImage(
|
||||||
assets.FontRenderer.Renderer.SetAlign(etxt.YCenter, etxt.XCenter)
|
image.NewNineSlice(background, [3]int{0, 1, 639}, [3]int{0, 1, 479})),
|
||||||
assets.FontRenderer.Renderer.SetSizePx(45)
|
widget.ContainerOpts.Layout(widget.NewAnchorLayout()),
|
||||||
assets.FontRenderer.Renderer.Draw("Welcome to Open Quell!", 320, 200)
|
)
|
||||||
|
|
||||||
assets.FontRenderer.Renderer.SetAlign(etxt.Top, etxt.Left)
|
rowContainer := widget.NewContainer(
|
||||||
assets.FontRenderer.Renderer.SetSizePx(32)
|
widget.ContainerOpts.WidgetOpts(
|
||||||
assets.FontRenderer.Renderer.Draw("[press enter to start]", 100, 300)
|
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