diff options
Diffstat (limited to 'engine/Components/World/World.go')
| -rw-r--r-- | engine/Components/World/World.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/engine/Components/World/World.go b/engine/Components/World/World.go new file mode 100644 index 0000000..47f776a --- /dev/null +++ b/engine/Components/World/World.go @@ -0,0 +1,62 @@ +package world + +import ( + coreobjects "github.com/DegustatorPonos/RuinesOfRafdolon/CoreObjects" + rl "github.com/gen2brain/raylib-go/raylib" +) + +var Texture rl.Texture2D + +// The scene full of tiles +type World struct { + TileSize rl.Vector2 + TextureNames map[int]string + Textures map[int]rl.Texture2D + Tiles [][]Tile + Camera rl.Camera2D +} + +func (base *World) Create(_ coreobjects.SceneManager) { + base.Textures = map[int]rl.Texture2D{} + for k, v := range base.TextureNames { + var image = rl.LoadImage(v) + base.Textures[k] = rl.LoadTextureFromImage(image) + rl.UnloadImage(image) + } + + base.Camera = rl.Camera2D{} + base.Camera.Target = rl.Vector2 { X: 0, Y: 0 } + base.Camera.Offset = rl.Vector2 { X: 0, Y: 0 } + base.Camera.Rotation = 0 + base.Camera.Zoom = 2 +} + +func (base *World) Destroy() { + rl.UnloadTexture(Texture) +} + +func (base *World) Update() { + if rl.IsKeyDown(rl.KeyW) { + base.Camera.Target.Y -= 0.3 + } + if rl.IsKeyDown(rl.KeyS) { + base.Camera.Target.Y += 0.3 + } + if rl.IsKeyDown(rl.KeyA) { + base.Camera.Target.X -= 0.3 + } + if rl.IsKeyDown(rl.KeyD) { + base.Camera.Target.X += 0.3 + } +} + +func (base *World) Draw() { + rl.BeginMode2D(base.Camera) + defer rl.EndMode2D() + + for _, r := range base.Tiles { + for _, v := range r { + v.Draw() + } + } +} |
