summaryrefslogtreecommitdiff
path: root/engine/Components
diff options
context:
space:
mode:
authorPhyscik <mynameisgennadiy@vk.com>2026-01-29 02:55:19 +0500
committerPhyscik <mynameisgennadiy@vk.com>2026-01-29 02:55:19 +0500
commit9c10e3ab194115f50f0d67044ef34d386be7fa9a (patch)
tree87f8cee46e734c2dea0cf55421e545a3f217afb4 /engine/Components
parentbc11ae4b42547ace656381fb0ed0b3604350fcb1 (diff)
Dynamic objects overlay
Diffstat (limited to 'engine/Components')
-rw-r--r--engine/Components/Player.go6
-rw-r--r--engine/Components/ResourceManager.go1
-rw-r--r--engine/Components/World.go14
3 files changed, 17 insertions, 4 deletions
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