diff options
| author | physcik <mynameisgennadiy@vk.com> | 2026-04-06 18:29:34 +0500 |
|---|---|---|
| committer | physcik <mynameisgennadiy@vk.com> | 2026-04-06 18:29:34 +0500 |
| commit | e211798077de88fe39d1e1c0add7a0f460d1da5a (patch) | |
| tree | de3163568818116a2ca43d31c66947d918cea2fd /engine/CoreObjects/SceneManager.go | |
| parent | e75d107899617446add49f00fb03837cb46d2543 (diff) | |
Diffstat (limited to 'engine/CoreObjects/SceneManager.go')
| -rw-r--r-- | engine/CoreObjects/SceneManager.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/engine/CoreObjects/SceneManager.go b/engine/CoreObjects/SceneManager.go new file mode 100644 index 0000000..dc44dd9 --- /dev/null +++ b/engine/CoreObjects/SceneManager.go @@ -0,0 +1,54 @@ +package coreobjects + +import ( + rl "github.com/gen2brain/raylib-go/raylib" +) + +type SceneManager struct { + OverlayScene Scene + SelectedScene Scene + + balancer *balancer +} + +func InitSceneManager() SceneManager { + return SceneManager{ + OverlayScene: &OveralyScene{}, + SelectedScene: nil, + balancer: makeBalancer(), + } +} + +func (base *SceneManager) ChangeScene(newScene Scene) { + if base.SelectedScene != nil { + base.SelectedScene.Destroy() + } + base.SelectedScene = newScene + base.SelectedScene.Create(base) +} + +func (base *SceneManager) Update() { + if (base.SelectedScene != nil) { + base.SelectedScene.Update() + } + + if (base.OverlayScene != nil) { + base.OverlayScene.Update() + } + + base.balancer.Execute(base.SelectedScene.GetUpdateFunctions()) + + if rl.IsKeyDown(rl.KeyF11) { + rl.ToggleFullscreen() + } +} + +func (base *SceneManager) Draw() { + if (base.SelectedScene != nil) { + base.SelectedScene.Draw() + } + + if (base.OverlayScene != nil) { + base.OverlayScene.Draw() + } +} |
