From b2895f2e9f64cf7cc593130980747b045f6abee8 Mon Sep 17 00:00:00 2001 From: Physcik Date: Wed, 7 Jan 2026 02:42:09 +0500 Subject: Build system + world gen settings --- engine/Components/World.go | 68 ----------------------------------- engine/Components/World/Descriptor.go | 29 +++++++++++++++ engine/Components/World/Tile.go | 31 ++++++++++++++++ engine/Components/World/World.go | 62 ++++++++++++++++++++++++++++++++ 4 files changed, 122 insertions(+), 68 deletions(-) delete mode 100644 engine/Components/World.go create mode 100644 engine/Components/World/Descriptor.go create mode 100644 engine/Components/World/Tile.go create mode 100644 engine/Components/World/World.go (limited to 'engine/Components') diff --git a/engine/Components/World.go b/engine/Components/World.go deleted file mode 100644 index 015805d..0000000 --- a/engine/Components/World.go +++ /dev/null @@ -1,68 +0,0 @@ -package components - -import ( - coreobjects "github.com/DegustatorPonos/RuinesOfRafdolon/CoreObjects" - rl "github.com/gen2brain/raylib-go/raylib" -) - -var texture rl.Texture2D - -type Tile struct { -} - -type World struct { - 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.Camera = rl.Camera2D{} - base.Camera.Target = rl.Vector2 { X: 0, Y: 0 } - base.Camera.Offset = rl.Vector2 { X: 0, Y: 0 } - base.Camera.Rotation = 0 - base.Camera.Zoom = 2 -} - -func (base *World) Destroy() { - rl.UnloadTexture(texture) -} - -func (base *World) Update() { - if rl.IsKeyDown(rl.KeyW) { - base.Camera.Target.Y -= 0.3 - } - if rl.IsKeyDown(rl.KeyS) { - base.Camera.Target.Y += 0.3 - } - if rl.IsKeyDown(rl.KeyA) { - base.Camera.Target.X -= 0.3 - } - if rl.IsKeyDown(rl.KeyD) { - base.Camera.Target.X += 0.3 - } -} - -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) - } - } -} - -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, - } -} 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/World.go b/engine/Components/World/World.go new file mode 100644 index 0000000..47f776a --- /dev/null +++ b/engine/Components/World/World.go @@ -0,0 +1,62 @@ +package world + +import ( + coreobjects "github.com/DegustatorPonos/RuinesOfRafdolon/CoreObjects" + rl "github.com/gen2brain/raylib-go/raylib" +) + +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) { + 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 } + base.Camera.Rotation = 0 + base.Camera.Zoom = 2 +} + +func (base *World) Destroy() { + rl.UnloadTexture(Texture) +} + +func (base *World) Update() { + if rl.IsKeyDown(rl.KeyW) { + base.Camera.Target.Y -= 0.3 + } + if rl.IsKeyDown(rl.KeyS) { + base.Camera.Target.Y += 0.3 + } + if rl.IsKeyDown(rl.KeyA) { + base.Camera.Target.X -= 0.3 + } + if rl.IsKeyDown(rl.KeyD) { + base.Camera.Target.X += 0.3 + } +} + +func (base *World) Draw() { + rl.BeginMode2D(base.Camera) + defer rl.EndMode2D() + + for _, r := range base.Tiles { + for _, v := range r { + v.Draw() + } + } +} -- cgit v1.3