Compare commits
2 Commits
fbfe87137e
...
49a8f2c768
| Author | SHA1 | Date | |
|---|---|---|---|
| 49a8f2c768 | |||
| 8c7c9c0b8c |
18
manager.go
18
manager.go
@@ -17,9 +17,9 @@ 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]
|
||||||
|
}
|
||||||
|
|||||||
2
scene.go
2
scene.go
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user