summaryrefslogtreecommitdiff
path: root/engine/Components
diff options
context:
space:
mode:
Diffstat (limited to 'engine/Components')
-rw-r--r--engine/Components/Player.go23
1 files changed, 19 insertions, 4 deletions
diff --git a/engine/Components/Player.go b/engine/Components/Player.go
index cb8d459..0b01184 100644
--- a/engine/Components/Player.go
+++ b/engine/Components/Player.go
@@ -8,6 +8,11 @@ import (
rl "github.com/gen2brain/raylib-go/raylib"
)
+// TODO: Change this to be determined by package
+const playerHeight int32 = 32
+// TODO: Change this to be determined by package
+const playerWidth int32 = 32
+
type Player struct {
ParentScene *World
Position rl.Vector2
@@ -24,7 +29,8 @@ func (base *Player) Init(manager coreobjects.SceneManager) {
base.Collider = (&coreobjects.BoxCollider{}).Init(
base.Position.X,
base.Position.Y,
- 32, 32) // TODO: Change this to player description
+ float32(playerWidth),
+ float32(playerHeight))
}
// Tries to set a parent scene as a world and returns an error if failed
@@ -69,9 +75,10 @@ func (base *Player) Update() {
}
func (base *Player) Draw() {
+ var xOffset, yOffset = base.getSpriteOffset()
rl.DrawTexture(base.Texture,
- int32(base.Position.X),
- int32(base.Position.Y),
+ int32(base.Position.X) - xOffset,
+ int32(base.Position.Y) - yOffset,
rl.White)
if settings.State.DrawColliders {
base.Collider.Draw()
@@ -79,7 +86,7 @@ func (base *Player) Draw() {
}
// Centers the camera center to the player
-func (base Player) SnapCamera(camera *rl.Camera2D) {
+func (base *Player) SnapCamera(camera *rl.Camera2D) {
var offset = rl.Vector2 {
X: float32(base.Texture.Width) / 2,
Y: float32(base.Texture.Height) / 2,
@@ -88,3 +95,11 @@ func (base Player) SnapCamera(camera *rl.Camera2D) {
camera.Offset.X = float32(int32(rl.GetScreenWidth() / 2))
camera.Offset.Y = float32(int32(rl.GetScreenHeight() / 2))
}
+
+// If the player model size doesn't align with the sprite this function will
+// return the offset
+func (base *Player) getSpriteOffset() (int32, int32) {
+ var y = base.Texture.Height - playerHeight
+ var x = (base.Texture.Width - playerWidth) / 2
+ return x, y
+}