summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhyscik <mynameisgennadiy@vk.com>2026-01-12 00:41:09 +0500
committerPhyscik <mynameisgennadiy@vk.com>2026-01-12 00:41:09 +0500
commit2cf8b5cad01cb67b71d51834ca8d048cfddd69e6 (patch)
tree409ba57e7a372b9834cd89048427019b991ea78c
parent4c614ef14ebf4c3cd16c1e96283dc3763b9b0d0a (diff)
Character creation start
-rw-r--r--engine/Components/Player.go50
-rw-r--r--engine/Components/World.go31
-rw-r--r--engine/Components/World/Tile.go1
-rw-r--r--engine/Components/World/World.go1
-rw-r--r--engine/CoreObjects/Image.go7
-rw-r--r--engine/Dynamic/Common.go1
-rw-r--r--engine/Dynamic/Descriptors/World.go3
-rw-r--r--engine/Packages/TestPackage/Textures/Meta.json4
-rw-r--r--engine/Packages/TestPackage/Textures/TestWorld.pngbin0 -> 1930 bytes
-rw-r--r--engine/Packages/TestPackage/Worlds/Main.json4
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
new file mode 100644
index 0000000..dc552ea
--- /dev/null
+++ b/engine/Packages/TestPackage/Textures/TestWorld.png
Binary files differ
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"
}
]
}