2024-02-06 15:26:20 +01:00
|
|
|
package game
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/hajimehoshi/ebiten/v2"
|
|
|
|
|
)
|
|
|
|
|
|
2024-02-06 19:02:25 +01:00
|
|
|
const (
|
2024-02-19 19:05:48 +01:00
|
|
|
Welcome = iota // startup
|
|
|
|
|
Menu // main top level menu
|
|
|
|
|
Play // actual playing happens here
|
|
|
|
|
About // about the game
|
|
|
|
|
Settings // options
|
|
|
|
|
Popup // in-game options
|
|
|
|
|
Select // select which level to play
|
|
|
|
|
Nextlevel // displayed after loose or win
|
2024-02-06 19:02:25 +01:00
|
|
|
)
|
|
|
|
|
|
2024-02-06 15:26:20 +01:00
|
|
|
// Wrapper for different screens to be shown, as Welcome, Options,
|
2024-02-18 18:19:34 +01:00
|
|
|
// About, Menu Level and of course the actual Levels.
|
2024-02-06 15:26:20 +01:00
|
|
|
// Scenes are responsible for screen clearing! That way a scene is able
|
|
|
|
|
// to render its content onto the running level, e.g. the options scene
|
|
|
|
|
// etc.
|
|
|
|
|
type Scene interface {
|
2024-02-14 19:35:36 +01:00
|
|
|
SetNext(SceneName)
|
|
|
|
|
GetNext() SceneName
|
2024-02-18 12:32:18 +01:00
|
|
|
ResetNext()
|
2024-02-18 18:19:34 +01:00
|
|
|
Clearscreen() bool
|
2024-02-06 15:26:20 +01:00
|
|
|
Update() error
|
|
|
|
|
Draw(screen *ebiten.Image)
|
|
|
|
|
}
|
2024-02-14 19:35:36 +01:00
|
|
|
|
|
|
|
|
type SceneName int
|