summaryrefslogtreecommitdiff
path: root/engine/Components
diff options
context:
space:
mode:
Diffstat (limited to 'engine/Components')
-rw-r--r--engine/Components/World/Descriptor.go29
-rw-r--r--engine/Components/World/Tile.go31
-rw-r--r--engine/Components/World/World.go (renamed from engine/Components/World.go)40
3 files changed, 77 insertions, 23 deletions
diff --git a/engine/Components/World/Descriptor.go b/engine/Components/World/Descriptor.go
new file mode 100644
index 0000000..553aa5b
--- /dev/null
+++ b/engine/Components/World/Descriptor.go
@@ -0,0 +1,29 @@
+package world
+
+import rl "github.com/gen2brain/raylib-go/raylib"
+
+type Descriptor struct {
+ TileSize rl.Vector2
+ Textures map[int]string `json:"textures"`
+ WorldMap [][]TileDescriptor `json:"worldmap"`
+}
+
+func (base *Descriptor) GenerateMap() *World {
+ var outp = &World {
+ TileSize: base.TileSize,
+ TextureNames: base.Textures,
+ Tiles: make([][]Tile, len(base.WorldMap)),
+ }
+ for x := range base.WorldMap {
+ outp.Tiles[x] = make([]Tile, len(base.WorldMap[x]))
+ for y, tile := range base.WorldMap[x] {
+ outp.Tiles[x][y] = &StandardTile {
+ X: float32(x),
+ Y: float32(y),
+ ParentWorld: outp,
+ Descriptor: tile,
+ }
+ }
+ }
+ return outp
+}
diff --git a/engine/Components/World/Tile.go b/engine/Components/World/Tile.go
new file mode 100644
index 0000000..203d40d
--- /dev/null
+++ b/engine/Components/World/Tile.go
@@ -0,0 +1,31 @@
+package world
+
+import rl "github.com/gen2brain/raylib-go/raylib"
+
+// The square that will be displayed at the screen
+type Tile interface {
+ Update()
+ Draw()
+}
+
+type StandardTile struct {
+ X float32
+ Y float32
+ ParentWorld *World
+ Descriptor TileDescriptor
+}
+
+func (base *StandardTile) Update() {
+}
+
+func (base *StandardTile) Draw() {
+ rl.DrawTexture(base.ParentWorld.Textures[base.Descriptor.TextureId],
+ int32(base.X) * int32(base.ParentWorld.TileSize.X),
+ int32(base.Y) * int32(base.ParentWorld.TileSize.Y),
+ rl.White)
+}
+
+
+type TileDescriptor struct {
+ TextureId int `json:"textureid"`
+}
diff --git a/engine/Components/World.go b/engine/Components/World/World.go
index 015805d..47f776a 100644
--- a/engine/Components/World.go
+++ b/engine/Components/World/World.go
@@ -1,25 +1,29 @@
-package components
+package world
import (
coreobjects "github.com/DegustatorPonos/RuinesOfRafdolon/CoreObjects"
rl "github.com/gen2brain/raylib-go/raylib"
)
-var texture rl.Texture2D
-
-type Tile struct {
-}
+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) {
- var image = rl.LoadImage("tile.png")
- texture = rl.LoadTextureFromImage(image)
- rl.UnloadImage(image)
-
+ 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 }
@@ -28,7 +32,7 @@ func (base *World) Create(_ coreobjects.SceneManager) {
}
func (base *World) Destroy() {
- rl.UnloadTexture(texture)
+ rl.UnloadTexture(Texture)
}
func (base *World) Update() {
@@ -50,19 +54,9 @@ func (base *World) Draw() {
rl.BeginMode2D(base.Camera)
defer rl.EndMode2D()
- for x, r := range base.Tiles {
- for y, _ := range r {
- rl.DrawTexture(texture, (int32(x) * 32), int32(y) * 32, rl.White)
+ for _, r := range base.Tiles {
+ for _, v := range r {
+ v.Draw()
}
}
}
-
-func CreateWorld(x int, y int) World {
- var tiles = make([][]Tile, x)
- for i := range tiles {
- tiles[i] = make([]Tile, y)
- }
- return World {
- Tiles: tiles,
- }
-}