summaryrefslogtreecommitdiff
path: root/engine/CoreObjects/Scene.go
diff options
context:
space:
mode:
authorPhyscik <mynameisgennadiy@vk.com>2026-01-06 18:53:57 +0500
committerPhyscik <mynameisgennadiy@vk.com>2026-01-06 18:53:57 +0500
commitd804d0467399c821a05832a96ae4780ef69fb1bf (patch)
tree69a51d854684625af082202f6687587d9343c10b /engine/CoreObjects/Scene.go
parent41a6f340e6d455444aecf216271a09cce192e0e9 (diff)
Project init
Diffstat (limited to 'engine/CoreObjects/Scene.go')
-rw-r--r--engine/CoreObjects/Scene.go48
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()
+ }
+}