Compare commits

..

2 Commits

Author SHA1 Message Date
49a8f2c768 Added new scene event type: LOAD. Added dimension setter. 2023-08-25 11:53:45 -04:00
8c7c9c0b8c Fixed next scene setup when adding scene. 2023-08-25 11:53:01 -04:00
2 changed files with 14 additions and 6 deletions

View File

@@ -17,9 +17,9 @@ type Area struct {
}
type GameInfo struct {
Name string
Version string
Dimension Area
Name string
Version string
Dimensions Area
}
type Manager struct {
@@ -37,7 +37,7 @@ func NewManager() Manager {
Info: GameInfo{
Name: "groovy",
Version: "1.0",
Dimension: Area{
Dimensions: Area{
Width: defaultWidth,
Height: defaultHeight,
},
@@ -70,12 +70,13 @@ func (m *Manager) Draw(screen *ebiten.Image) {
// ebitengine proxy for layout
func (m *Manager) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) {
return m.Info.Dimension.Width, m.Info.Dimension.Height
return m.Info.Dimensions.Width, m.Info.Dimensions.Height
}
// appends scene to the managed scenes
func (m *Manager) AddScene(s Scene) {
setDefaultHandlers(m, s)
s.SetDimensions(m.Info.Dimensions)
m.scenes = append(m.scenes, s)
}
@@ -110,6 +111,7 @@ func (m *Manager) SetCurrentScene(sceneId uint) {
}
m.currentSceneId = sceneId
m.currentScene = m.scenes[sceneId]
m.nextSceneId = m.currentSceneId + 1
}
// handle scene transition
@@ -124,10 +126,14 @@ func (m *Manager) SetNextScene(sceneId uint) {
// sets sene dimensions
func (m *Manager) SetDimensions(a Area) {
m.Info.Dimension = a
m.Info.Dimensions = a
}
// report number of total scenes
func (m *Manager) SceneCount() uint {
return uint(len(m.scenes))
}
func (m *Manager) GetScene(sceneId uint) Scene {
return m.scenes[sceneId]
}

View File

@@ -7,6 +7,7 @@ type SceneEvent int64
const (
NOOP SceneEvent = 0
RESET SceneEvent = 1 // reset to initial scene
LOAD SceneEvent = 2
RELOAD SceneEvent = 3 // reload current scene
COMPLETED SceneEvent = 4 // current scene has completed
ENDGAME SceneEvent = 5 // shutdown all scenes
@@ -16,4 +17,5 @@ type Scene interface {
Update() error
Draw(screen *ebiten.Image)
SetEventHandler(e SceneEvent, f func())
SetDimensions(a Area)
}