Splash screen update, gamepad cleanup on main game.

This commit is contained in:
2024-11-11 10:48:44 -05:00
parent e10bf47427
commit 56d1f62020
2 changed files with 73 additions and 54 deletions

View File

@@ -2,6 +2,7 @@ package screens
import (
"image/color"
"math"
"mover/fonts"
"mover/gamedata"
@@ -11,29 +12,48 @@ import (
)
type StartScreen struct {
eHandler map[ScreenManagerEvent]func()
dimensions gamedata.Area
eHandler map[ScreenManagerEvent]func()
dimensions gamedata.Area
target gamedata.Coordinates
current gamedata.Coordinates
targetreached bool
}
func NewStartScreen() *StartScreen {
s := &StartScreen{
eHandler: make(map[ScreenManagerEvent]func()),
eHandler: make(map[ScreenManagerEvent]func()),
target: gamedata.Coordinates{X: 640/2 - 150, Y: 480 / 2},
current: gamedata.Coordinates{X: 640/2 - 150, Y: -100},
targetreached: false,
}
return s
}
func (s *StartScreen) Update() error {
if inpututil.IsKeyJustPressed(ebiten.KeyEnter) {
if inpututil.IsKeyJustPressed(ebiten.KeyEnter) ||
ebiten.IsStandardGamepadButtonPressed(0, ebiten.StandardGamepadButtonCenterRight) {
s.eHandler[EventCompleted]()
}
s.current.X += (s.target.X - s.current.X) / 8
s.current.Y += (s.target.Y - s.current.Y) / 8
if math.Abs(s.current.Y-s.target.Y) < 1 && !s.targetreached {
s.targetreached = true
}
return nil
}
func (s *StartScreen) Draw(screen *ebiten.Image) {
screen.Clear()
text.Draw(screen, "survive", fonts.SurviveFont.ArcadeLarge, 40, 80, color.White)
text.Draw(screen, "survive", fonts.SurviveFont.ArcadeLarge, int(s.current.X), int(s.current.Y), color.White)
if s.targetreached {
text.Draw(screen, "press start", fonts.SurviveFont.Arcade, 640/2-25, 300, color.White)
}
}
func (s *StartScreen) SetEventHandler(e ScreenManagerEvent, f func()) {