Adding splash screen.

This commit is contained in:
2024-11-11 10:25:02 -05:00
parent 6f794b7bb2
commit e10bf47427
3 changed files with 116 additions and 60 deletions

View File

@@ -33,6 +33,7 @@ func main() {
func loadScreens(m *screenmanager.Manager) {
assets.LoadImages()
m.AddScene(&screens.Game{})
m.AddScene(screens.NewStartScreen())
m.AddScene(screens.NewGame())
m.ResetScenes()
}

View File

@@ -26,6 +26,7 @@ const (
)
type Game struct {
events map[ScreenManagerEvent]func()
background *ebiten.Image
collisionMask *ebiten.Image
projectileMask *ebiten.Image
@@ -54,6 +55,13 @@ type Game struct {
//pressedButtons map[ebiten.GamepadID][]string
}
func NewGame() *Game {
g := &Game{
events: make(map[ScreenManagerEvent]func()),
}
return g
}
func (g *Game) Initialize() {
origin := gamedata.Coordinates{X: 640 / 2, Y: 480 / 2}
@@ -124,6 +132,8 @@ func (g *Game) Update() error {
func (g *Game) Draw(screen *ebiten.Image) {
screen.Clear()
if g.initialized {
screen.DrawImage(g.background, nil)
g.hero.Draw()
@@ -192,7 +202,7 @@ func (g *Game) Draw(screen *ebiten.Image) {
/*for _, gamepad ebiten.StandardGamepadAxisValue(id, ebiten.StandardGamepadAxisRightStickHorizontal),
ebiten.StandardGamepadAxisValue(id, ebiten.StandardGamepadAxisRightStickVertical))*/
}
}
func (g *Game) Layout(width, height int) (int, int) {
@@ -497,5 +507,5 @@ func (g *Game) SetDimensions(a gamedata.Area) {
}
func (g *Game) SetEventHandler(e ScreenManagerEvent, f func()) {
g.events[e] = f
}

45
screens/start.go Normal file
View File

@@ -0,0 +1,45 @@
package screens
import (
"image/color"
"mover/fonts"
"mover/gamedata"
"github.com/hajimehoshi/ebiten/v2"
"github.com/hajimehoshi/ebiten/v2/inpututil"
"github.com/hajimehoshi/ebiten/v2/text"
)
type StartScreen struct {
eHandler map[ScreenManagerEvent]func()
dimensions gamedata.Area
}
func NewStartScreen() *StartScreen {
s := &StartScreen{
eHandler: make(map[ScreenManagerEvent]func()),
}
return s
}
func (s *StartScreen) Update() error {
if inpututil.IsKeyJustPressed(ebiten.KeyEnter) {
s.eHandler[EventCompleted]()
}
return nil
}
func (s *StartScreen) Draw(screen *ebiten.Image) {
screen.Clear()
text.Draw(screen, "survive", fonts.SurviveFont.ArcadeLarge, 40, 80, color.White)
}
func (s *StartScreen) SetEventHandler(e ScreenManagerEvent, f func()) {
s.eHandler[e] = f
}
func (s *StartScreen) SetDimensions(a gamedata.Area) {
s.dimensions = a
}