diff options
Diffstat (limited to 'engine/Components')
| -rw-r--r-- | engine/Components/Player.go | 50 | ||||
| -rw-r--r-- | engine/Components/World.go | 31 | ||||
| -rw-r--r-- | engine/Components/World/Tile.go | 1 | ||||
| -rw-r--r-- | engine/Components/World/World.go | 1 |
4 files changed, 61 insertions, 22 deletions
diff --git a/engine/Components/Player.go b/engine/Components/Player.go new file mode 100644 index 0000000..38a4636 --- /dev/null +++ b/engine/Components/Player.go @@ -0,0 +1,50 @@ +package components + +import ( + coreobjects "github.com/DegustatorPonos/RuinesOfRafdolon/CoreObjects" + rl "github.com/gen2brain/raylib-go/raylib" +) + +type Player struct { + Position rl.Vector2 + Texture rl.Texture2D +} + +func (base *Player) Create(_ coreobjects.SceneManager) { +} + +func (base *Player) Destroy() { +} + +func (base *Player) Update() { + var speed = 150 * rl.GetFrameTime() + if rl.IsKeyDown(rl.KeyW) { + base.Position.Y -= speed + } + if rl.IsKeyDown(rl.KeyS) { + base.Position.Y += speed + } + if rl.IsKeyDown(rl.KeyA) { + base.Position.X -= speed + } + if rl.IsKeyDown(rl.KeyD) { + base.Position.X += speed + } +} + +func (base *Player) Draw() { + rl.DrawTexture(base.Texture, + int32(base.Position.X), + int32(base.Position.Y), + rl.White) +} + +func (base Player) SnapCamera (camera *rl.Camera2D) { + var offset = rl.Vector2 { + X: float32(base.Texture.Width) / 2, + Y: float32(base.Texture.Height) / 2, + } + camera.Target = rl.Vector2Add(base.Position, offset) + camera.Offset.X = float32(rl.GetScreenWidth()) / 2 + camera.Offset.Y = float32(rl.GetScreenHeight()) / 2 +} diff --git a/engine/Components/World.go b/engine/Components/World.go index 0605703..7e6e8e3 100644 --- a/engine/Components/World.go +++ b/engine/Components/World.go @@ -11,6 +11,8 @@ type World struct { Name string Floor []FloorTile + Player *Player + Camera *rl.Camera2D } @@ -22,30 +24,14 @@ func (base *World) Destroy() { } func (base *World) Update() { - base.handleFreecam() + base.Player.Update() + base.Player.SnapCamera(base.Camera) + base.handleZoom() } -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) handleZoom() { + var zoomSpeed = 50 * rl.GetFrameTime() + base.Camera.Zoom += zoomSpeed * rl.GetMouseWheelMove() } func (base *World) Draw() { @@ -54,6 +40,7 @@ func (base *World) Draw() { for _, v := range base.Floor { v.Draw() } + base.Player.Draw() } // The single texture drawn at level 0 of the world diff --git a/engine/Components/World/Tile.go b/engine/Components/World/Tile.go index 0ef3a00..a8ee827 100644 --- a/engine/Components/World/Tile.go +++ b/engine/Components/World/Tile.go @@ -1,3 +1,4 @@ +// DEPRECATED package world import ( diff --git a/engine/Components/World/World.go b/engine/Components/World/World.go index d360adc..8809409 100644 --- a/engine/Components/World/World.go +++ b/engine/Components/World/World.go @@ -1,3 +1,4 @@ +// DEPRECATED package world import ( |
