summaryrefslogtreecommitdiff
path: root/engine/CoreObjects
diff options
context:
space:
mode:
Diffstat (limited to 'engine/CoreObjects')
-rw-r--r--engine/CoreObjects/Object.go8
-rw-r--r--engine/CoreObjects/OverlayScene.go60
-rw-r--r--engine/CoreObjects/Scene.go48
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()
+ }
+}