Implemented scene events and callback handlers for those events. Manager defaults also added.

This commit is contained in:
2023-08-23 01:24:43 -04:00
parent f2b3f371c4
commit 5da470937e
6 changed files with 179 additions and 59 deletions

View File

@@ -11,13 +11,16 @@ import (
)
func main() {
//setup manager
manager := groovy.NewManager()
loadScenes(&manager)
manager.SetDimensions(groovy.Area{Width: 1280, Height: 720})
ebiten.SetWindowSize(manager.Info.Dimension.Width, manager.Info.Dimension.Height)
ebiten.SetWindowTitle(manager.Info.Name)
loadScenes(&manager)
//identification
fmt.Println(manager.Info.Name + ": v" + manager.Info.Version)
if err := ebiten.RunGame(&manager); err != nil {
@@ -28,14 +31,31 @@ func main() {
// Example loading of two scenes
func loadScenes(m *groovy.Manager) {
//call the loaders for each scene
loadSplash(m)
loadMenu(m)
//reset the manager to start scene 1
m.ResetScenes()
}
// creates splash screen, sets completion handler
func loadSplash(m *groovy.Manager) {
//create splash screen and append as first scene in manager
sceneSplash := splashmenu.NewSplash()
m.AddScene(&sceneSplash)
sceneMenu := splashmenu.NewMenu()
m.AddScene(&sceneMenu)
//sets current scene to the splash menu
m.SetCurrentScene(0)
m.SetDimensions(groovy.Area{Width: 1280, Height: 720})
}
// creates menu screen, populates the options, sets key event handler
func loadMenu(m *groovy.Manager) {
//create menu with defined options, append to manager
sceneMenu := splashmenu.NewMenu()
sceneMenu.SetOptions(map[int]splashmenu.MenuOption{
1: {Description: "splash", SelectionEvent: groovy.RESET, Mapping: ebiten.Key1},
2: {Description: "menu"},
3: {Description: "swing"},
4: {Description: "exit", SelectionEvent: groovy.ENDGAME, Mapping: ebiten.Key4},
})
m.AddScene(&sceneMenu)
}