diff options
| author | Physcik <mynameisgennadiy@vk.com> | 2026-01-06 18:53:57 +0500 |
|---|---|---|
| committer | Physcik <mynameisgennadiy@vk.com> | 2026-01-06 18:53:57 +0500 |
| commit | d804d0467399c821a05832a96ae4780ef69fb1bf (patch) | |
| tree | 69a51d854684625af082202f6687587d9343c10b /engine/CoreObjects/Scene.go | |
| parent | 41a6f340e6d455444aecf216271a09cce192e0e9 (diff) | |
Project init
Diffstat (limited to 'engine/CoreObjects/Scene.go')
| -rw-r--r-- | engine/CoreObjects/Scene.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/engine/CoreObjects/Scene.go b/engine/CoreObjects/Scene.go new file mode 100644 index 0000000..bcb8c63 --- /dev/null +++ b/engine/CoreObjects/Scene.go @@ -0,0 +1,48 @@ +package coreobjects + +type SceneManager struct { + OverlayScene Scene + SelectedScene Scene +} + +type Scene interface { + Create(SceneManager) + Destroy() + Update() + Draw() +} + +func InitSceneManager() SceneManager { + return SceneManager{ + OverlayScene: &OveralyScene{}, + SelectedScene: nil, + } +} + +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() + } +} + +func (base *SceneManager) Draw() { + if (base.SelectedScene != nil) { + base.SelectedScene.Draw() + } + + if (base.OverlayScene != nil) { + base.OverlayScene.Draw() + } +} |
