diff options
| -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 | ||||
| -rw-r--r-- | engine/CoreObjects/Image.go | 7 | ||||
| -rw-r--r-- | engine/Dynamic/Common.go | 1 | ||||
| -rw-r--r-- | engine/Dynamic/Descriptors/World.go | 3 | ||||
| -rw-r--r-- | engine/Packages/TestPackage/Textures/Meta.json | 4 | ||||
| -rw-r--r-- | engine/Packages/TestPackage/Textures/TestWorld.png | bin | 0 -> 1930 bytes | |||
| -rw-r--r-- | engine/Packages/TestPackage/Worlds/Main.json | 4 |
10 files changed, 76 insertions, 26 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 ( diff --git a/engine/CoreObjects/Image.go b/engine/CoreObjects/Image.go new file mode 100644 index 0000000..96c2da8 --- /dev/null +++ b/engine/CoreObjects/Image.go @@ -0,0 +1,7 @@ +package coreobjects + +import rl "github.com/gen2brain/raylib-go/raylib" + +type Image interface { + DrawAt(rl.Vector2) +} diff --git a/engine/Dynamic/Common.go b/engine/Dynamic/Common.go deleted file mode 100644 index 4cd440b..0000000 --- a/engine/Dynamic/Common.go +++ /dev/null @@ -1 +0,0 @@ -package dynamic diff --git a/engine/Dynamic/Descriptors/World.go b/engine/Dynamic/Descriptors/World.go index 25e52ef..ec02935 100644 --- a/engine/Dynamic/Descriptors/World.go +++ b/engine/Dynamic/Descriptors/World.go @@ -35,6 +35,9 @@ func (base WorldDescriptor) Parse() components.World { var outp = components.World { Name: base.Name, Floor: make([]components.FloorTile, 0, len(base.FloorMap)), + Player: &components.Player{ + Texture: *components.Resources.Textures.Textures[3], + }, Camera: &rl.Camera2D{ Offset: rl.Vector2 {X: 0, Y: 0}, diff --git a/engine/Packages/TestPackage/Textures/Meta.json b/engine/Packages/TestPackage/Textures/Meta.json index 8a5a57b..2fd3d34 100644 --- a/engine/Packages/TestPackage/Textures/Meta.json +++ b/engine/Packages/TestPackage/Textures/Meta.json @@ -1,6 +1,8 @@ { "Avaliable": [ "common.png", - "water.png" + "TestWorld.png", + "water.png", + "tree.png" ] } diff --git a/engine/Packages/TestPackage/Textures/TestWorld.png b/engine/Packages/TestPackage/Textures/TestWorld.png Binary files differnew file mode 100644 index 0000000..dc552ea --- /dev/null +++ b/engine/Packages/TestPackage/Textures/TestWorld.png diff --git a/engine/Packages/TestPackage/Worlds/Main.json b/engine/Packages/TestPackage/Worlds/Main.json index dc1637a..3030640 100644 --- a/engine/Packages/TestPackage/Worlds/Main.json +++ b/engine/Packages/TestPackage/Worlds/Main.json @@ -2,8 +2,8 @@ "Name": "MainWorld", "FloorMap": [ { - "Position": { "X": 1, "Y": 0 }, - "Texture": "testPackage/water.png" + "Position": { "X": 0, "Y": 0 }, + "Texture": "testPackage/TestWorld.png" } ] } |
