Adding splash screen.
This commit is contained in:
3
main.go
3
main.go
@@ -33,6 +33,7 @@ func main() {
|
|||||||
|
|
||||||
func loadScreens(m *screenmanager.Manager) {
|
func loadScreens(m *screenmanager.Manager) {
|
||||||
assets.LoadImages()
|
assets.LoadImages()
|
||||||
m.AddScene(&screens.Game{})
|
m.AddScene(screens.NewStartScreen())
|
||||||
|
m.AddScene(screens.NewGame())
|
||||||
m.ResetScenes()
|
m.ResetScenes()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Game struct {
|
type Game struct {
|
||||||
|
events map[ScreenManagerEvent]func()
|
||||||
background *ebiten.Image
|
background *ebiten.Image
|
||||||
collisionMask *ebiten.Image
|
collisionMask *ebiten.Image
|
||||||
projectileMask *ebiten.Image
|
projectileMask *ebiten.Image
|
||||||
@@ -54,6 +55,13 @@ type Game struct {
|
|||||||
//pressedButtons map[ebiten.GamepadID][]string
|
//pressedButtons map[ebiten.GamepadID][]string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewGame() *Game {
|
||||||
|
g := &Game{
|
||||||
|
events: make(map[ScreenManagerEvent]func()),
|
||||||
|
}
|
||||||
|
return g
|
||||||
|
}
|
||||||
|
|
||||||
func (g *Game) Initialize() {
|
func (g *Game) Initialize() {
|
||||||
|
|
||||||
origin := gamedata.Coordinates{X: 640 / 2, Y: 480 / 2}
|
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) {
|
func (g *Game) Draw(screen *ebiten.Image) {
|
||||||
|
|
||||||
screen.Clear()
|
screen.Clear()
|
||||||
|
|
||||||
|
if g.initialized {
|
||||||
screen.DrawImage(g.background, nil)
|
screen.DrawImage(g.background, nil)
|
||||||
|
|
||||||
g.hero.Draw()
|
g.hero.Draw()
|
||||||
@@ -192,7 +202,7 @@ func (g *Game) Draw(screen *ebiten.Image) {
|
|||||||
|
|
||||||
/*for _, gamepad ebiten.StandardGamepadAxisValue(id, ebiten.StandardGamepadAxisRightStickHorizontal),
|
/*for _, gamepad ebiten.StandardGamepadAxisValue(id, ebiten.StandardGamepadAxisRightStickHorizontal),
|
||||||
ebiten.StandardGamepadAxisValue(id, ebiten.StandardGamepadAxisRightStickVertical))*/
|
ebiten.StandardGamepadAxisValue(id, ebiten.StandardGamepadAxisRightStickVertical))*/
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Game) Layout(width, height int) (int, int) {
|
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()) {
|
func (g *Game) SetEventHandler(e ScreenManagerEvent, f func()) {
|
||||||
|
g.events[e] = f
|
||||||
}
|
}
|
||||||
|
|||||||
45
screens/start.go
Normal file
45
screens/start.go
Normal 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
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user