From 9c10e3ab194115f50f0d67044ef34d386be7fa9a Mon Sep 17 00:00:00 2001 From: Physcik Date: Thu, 29 Jan 2026 02:55:19 +0500 Subject: Dynamic objects overlay --- engine/Components/Player.go | 6 +++--- engine/Components/ResourceManager.go | 1 + engine/Components/World.go | 14 +++++++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) (limited to 'engine/Components') diff --git a/engine/Components/Player.go b/engine/Components/Player.go index c06820e..fe8c5ef 100644 --- a/engine/Components/Player.go +++ b/engine/Components/Player.go @@ -89,12 +89,12 @@ func (base *Player) Draw() { // Centers the camera center to the player func (base *Player) SnapCamera(camera *rl.Camera2D) { var offset = rl.Vector2 { - X: float32(base.Texture.Width) / 2, + X: float32(base.Texture.Width) / 2, Y: float32(base.Texture.Height) / 2, } camera.Target = rl.Vector2Add(base.Position, offset) - camera.Offset.X = float32(int32(rl.GetScreenWidth() / 2)) - camera.Offset.Y = float32(int32(rl.GetScreenHeight() / 2)) + camera.Offset.X = float32(rl.GetScreenWidth()) / 2 + camera.Offset.Y = float32(rl.GetScreenHeight()) / 2 } // If the player model size doesn't align with the sprite this function will diff --git a/engine/Components/ResourceManager.go b/engine/Components/ResourceManager.go index cbccf5f..b33acc0 100644 --- a/engine/Components/ResourceManager.go +++ b/engine/Components/ResourceManager.go @@ -35,6 +35,7 @@ func (base *ResourceManager) RegisterObject(PackageName string, obejctName strin if _, exists := base.objects[displayName]; exists { return fmt.Errorf("Failed to register the obejct: another obejct with that name already exists") } + new.PrototypeName = displayName base.objects[displayName] = new return nil } diff --git a/engine/Components/World.go b/engine/Components/World.go index 0c322ba..26c1a83 100644 --- a/engine/Components/World.go +++ b/engine/Components/World.go @@ -27,6 +27,9 @@ type World struct { func (base *World) Create(manager coreobjects.SceneManager) { base.Manager = manager base.Player.Init(manager) + for _, v := range base.StaticObjects { + v.Init(manager) + } base.layersStatic = layering{} base.generateStaticLayers() } @@ -36,6 +39,9 @@ func (base *World) Destroy() { } func (base *World) Update() { + for _, v := range base.StaticObjects { + v.Update() + } base.Player.Update() base.Player.SnapCamera(base.Camera) base.handleZoom() @@ -68,7 +74,10 @@ func (base *World) Draw() { for _, v := range base.Floor { v.Draw() } + base.drawObjects() +} +func (base *World) drawObjects() { var playerDrawn = false var layer = base.layersStatic.firstLayer var i = 0 @@ -78,7 +87,6 @@ func (base *World) Draw() { } if !playerDrawn && base.Player.Position.Y < layer.Index { playerDrawn = true - // fmt.Printf("Player drawn at layer %d\n", i) base.Player.Draw() } for _, v := range layer.Objects { @@ -99,6 +107,10 @@ func (base *World) generateStaticLayers() { } } +func (base *World) GetMousePosition() rl.Vector2 { + return rl.GetScreenToWorld2D(rl.GetMousePosition(), *base.Camera) +} + // The single texture drawn at level 0 of the world type FloorTile struct { Position rl.Vector2 -- cgit v1.3