From 4c614ef14ebf4c3cd16c1e96283dc3763b9b0d0a Mon Sep 17 00:00:00 2001 From: Physcik Date: Sun, 11 Jan 2026 20:43:46 +0500 Subject: World rendering --- engine/Components/World.go | 72 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 engine/Components/World.go (limited to 'engine/Components/World.go') diff --git a/engine/Components/World.go b/engine/Components/World.go new file mode 100644 index 0000000..0605703 --- /dev/null +++ b/engine/Components/World.go @@ -0,0 +1,72 @@ +package components + +import ( + coreobjects "github.com/DegustatorPonos/RuinesOfRafdolon/CoreObjects" + rl "github.com/gen2brain/raylib-go/raylib" +) + +// The scene implimetation that represents one playable scene +type World struct { + Manager coreobjects.SceneManager + Name string + Floor []FloorTile + + Camera *rl.Camera2D +} + +func (base *World) Create(manager coreobjects.SceneManager) { + base.Manager = manager +} + +func (base *World) Destroy() { +} + +func (base *World) Update() { + base.handleFreecam() +} + +func (base *World) handleFreecam() { + var speed = 150 * rl.GetFrameTime() + var zoomSpeed = 0.2 * rl.GetFrameTime() + if rl.IsKeyDown(rl.KeyW) { + base.Camera.Target.Y -= speed + } + if rl.IsKeyDown(rl.KeyS) { + base.Camera.Target.Y += speed + } + if rl.IsKeyDown(rl.KeyA) { + base.Camera.Target.X -= speed + } + if rl.IsKeyDown(rl.KeyD) { + base.Camera.Target.X += speed + } + if rl.IsKeyDown(rl.KeyEqual) { + base.Camera.Zoom += zoomSpeed + } + if rl.IsKeyDown(rl.KeyMinus) { + base.Camera.Zoom -= zoomSpeed + } +} + +func (base *World) Draw() { + rl.BeginMode2D(*base.Camera) + defer rl.EndMode2D() + for _, v := range base.Floor { + v.Draw() + } +} + +// The single texture drawn at level 0 of the world +type FloorTile struct { + Position rl.Vector2 + Texture *rl.Texture2D +} + +func (base *FloorTile) Draw() { + rl.DrawTexture( + *base.Texture, + int32(base.Position.X), + int32(base.Position.Y), + rl.White, + ) +} -- cgit v1.3