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 | |
| parent | 41a6f340e6d455444aecf216271a09cce192e0e9 (diff) | |
Project init
Diffstat (limited to 'engine/CoreObjects')
| -rw-r--r-- | engine/CoreObjects/Object.go | 8 | ||||
| -rw-r--r-- | engine/CoreObjects/OverlayScene.go | 60 | ||||
| -rw-r--r-- | engine/CoreObjects/Scene.go | 48 |
3 files changed, 116 insertions, 0 deletions
diff --git a/engine/CoreObjects/Object.go b/engine/CoreObjects/Object.go new file mode 100644 index 0000000..6f0a808 --- /dev/null +++ b/engine/CoreObjects/Object.go @@ -0,0 +1,8 @@ +package coreobjects + +type Object interface { + Create(SceneManager) + Destroy() + Update() + Draw() +} diff --git a/engine/CoreObjects/OverlayScene.go b/engine/CoreObjects/OverlayScene.go new file mode 100644 index 0000000..5c43e11 --- /dev/null +++ b/engine/CoreObjects/OverlayScene.go @@ -0,0 +1,60 @@ +package coreobjects + +import ( + "fmt" + + settings "github.com/DegustatorPonos/RuinesOfRafdolon/Settings" + rl "github.com/gen2brain/raylib-go/raylib" +) + +type OveralyScene struct { + FPS FpsMeter +} + +func (base *OveralyScene) Create(_ SceneManager) { +} + +func (base *OveralyScene) Destroy() { +} + +func (base *OveralyScene) Update() { + base.FPS.Update() +} + +func (base *OveralyScene) Draw() { + var appendix = "" + if settings.Current.Version.IsBeta { + appendix = " b" + } + var version = fmt.Sprintf("%d.%d.%d%s", settings.Current.Version.MajorVersion, settings.Current.Version.MinorVersion, settings.Current.Version.Patch, appendix) + rl.DrawText(version, 2, int32(rl.GetScreenHeight()) - 20, 20, rl.Black) + base.FPS.Draw() +} + +// =============== FPS METER =============== + +type FpsMeter struct { + deltaTime float32 + Value float32 + FramesElapsed uint +} + +func (base *FpsMeter) Create(SceneManager) { +} + +func (base *FpsMeter) Destroy() { +} + +func (base *FpsMeter) Update() { + base.deltaTime += rl.GetFrameTime() + base.FramesElapsed++ + if base.deltaTime >= 1 { + base.Value = float32(base.FramesElapsed) + base.deltaTime = 0 + base.FramesElapsed = 0 + } +} + +func (base *FpsMeter) Draw() { + rl.DrawText(fmt.Sprintf("%v FPS", base.Value), 0, 0, 20, rl.Green) +} 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() + } +} |
