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

@@ -19,7 +19,7 @@ type Area struct {
type GameInfo struct { type GameInfo struct {
Name string Name string
Version string Version string
Dimension Area Dimensions Area
} }
type Manager struct { type Manager struct {
@@ -37,7 +37,7 @@ func NewManager() Manager {
Info: GameInfo{ Info: GameInfo{
Name: "groovy", Name: "groovy",
Version: "1.0", Version: "1.0",
Dimension: Area{ Dimensions: Area{
Width: defaultWidth, Width: defaultWidth,
Height: defaultHeight, Height: defaultHeight,
}, },
@@ -70,12 +70,13 @@ func (m *Manager) Draw(screen *ebiten.Image) {
// ebitengine proxy for layout // ebitengine proxy for layout
func (m *Manager) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) { 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 // appends scene to the managed scenes
func (m *Manager) AddScene(s Scene) { func (m *Manager) AddScene(s Scene) {
setDefaultHandlers(m, s) setDefaultHandlers(m, s)
s.SetDimensions(m.Info.Dimensions)
m.scenes = append(m.scenes, s) m.scenes = append(m.scenes, s)
} }
@@ -110,6 +111,7 @@ func (m *Manager) SetCurrentScene(sceneId uint) {
} }
m.currentSceneId = sceneId m.currentSceneId = sceneId
m.currentScene = m.scenes[sceneId] m.currentScene = m.scenes[sceneId]
m.nextSceneId = m.currentSceneId + 1
} }
// handle scene transition // handle scene transition
@@ -124,10 +126,14 @@ func (m *Manager) SetNextScene(sceneId uint) {
// sets sene dimensions // sets sene dimensions
func (m *Manager) SetDimensions(a Area) { func (m *Manager) SetDimensions(a Area) {
m.Info.Dimension = a m.Info.Dimensions = a
} }
// report number of total scenes // report number of total scenes
func (m *Manager) SceneCount() uint { func (m *Manager) SceneCount() uint {
return uint(len(m.scenes)) 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 ( const (
NOOP SceneEvent = 0 NOOP SceneEvent = 0
RESET SceneEvent = 1 // reset to initial scene RESET SceneEvent = 1 // reset to initial scene
LOAD SceneEvent = 2
RELOAD SceneEvent = 3 // reload current scene RELOAD SceneEvent = 3 // reload current scene
COMPLETED SceneEvent = 4 // current scene has completed COMPLETED SceneEvent = 4 // current scene has completed
ENDGAME SceneEvent = 5 // shutdown all scenes ENDGAME SceneEvent = 5 // shutdown all scenes
@@ -16,4 +17,5 @@ type Scene interface {
Update() error Update() error
Draw(screen *ebiten.Image) Draw(screen *ebiten.Image)
SetEventHandler(e SceneEvent, f func()) SetEventHandler(e SceneEvent, f func())
SetDimensions(a Area)
} }