diff --git a/client/scenes/in_world.cpp b/client/scenes/in_world.cpp index 78cb8d8..028d5bd 100644 --- a/client/scenes/in_world.cpp +++ b/client/scenes/in_world.cpp @@ -71,7 +71,7 @@ InWorld::InWorld( //load the tilesheet //TODO: add the tilesheet to the map system? //TODO: Tile size and tile sheet should be loaded elsewhere - tileSheet.Load(config["dir.tilesets"] + "terrain.bmp", 32, 32); + tileSheet.Load(config["dir.tilesets"] + "overworld.bmp", 32, 32); //send this player's character info CharacterPacket newPacket; diff --git a/rsc/graphics/tilesets/overworld.bmp b/rsc/graphics/tilesets/overworld.bmp new file mode 100644 index 0000000..d9cc0c6 Binary files /dev/null and b/rsc/graphics/tilesets/overworld.bmp differ diff --git a/rsc/scripts/map_maker.lua b/rsc/scripts/map_maker.lua index ccbd0a8..3c1ca18 100644 --- a/rsc/scripts/map_maker.lua +++ b/rsc/scripts/map_maker.lua @@ -1,7 +1,37 @@ local mapMaker = {} -function mapMaker.foo() - print("--> Hello map maker! <--") +--utility functions +function mapMaker.sqr(x) return x*x end +function mapMaker.dist(x, y, i, j) return math.sqrt(mapMaker.sqr(x - i) + mapMaker.sqr(y - j)) end + +--tile macros, mapped to the tilesheet "overworld.bmp" +mapMaker.edges = {} +mapMaker.edges.north = -16 +mapMaker.edges.south = 16 +mapMaker.edges.east = 1 +mapMaker.edges.west = -1 + +mapMaker.water = 18 + 3 * 0 +mapMaker.sand = 18 + 3 * 1 +mapMaker.plains = 18 + 3 * 2 +mapMaker.grass = 18 + 3 * 3 +mapMaker.dirt = 18 + 3 * 4 + +--custom generation systems here +function mapMaker.debugIsland(region) + for i = 1, Region.GetWidth(region) do + for j = 1, Region.GetHeight(region) do + local dist = mapMaker.dist(0, 0, i + Region.GetX(region) -1, j + Region.GetY(region) -1) + if dist < 10 then + Region.SetTile(region, i, j, 1, mapMaker.plains) + elseif dist < 12 then + Region.SetTile(region, i, j, 1, mapMaker.sand) + else + Region.SetTile(region, i, j, 1, mapMaker.water) + Region.SetSolid(region, i, j, true) + end + end + end end return mapMaker \ No newline at end of file diff --git a/rsc/scripts/setup_server.lua b/rsc/scripts/setup_server.lua index 4b24ba9..7190910 100644 --- a/rsc/scripts/setup_server.lua +++ b/rsc/scripts/setup_server.lua @@ -1,55 +1,11 @@ print("Lua script check") mapMaker = require "map_maker" -mapMaker.foo() ---uber lazy declarations -function math.sqr(x) return x*x end -function math.dist(x, y, i, j) return math.sqrt(math.sqr(x - i) + math.sqr(y - j)) end - ---tile macros, mapped to the tilesheet -local base = 14 -local shift = 36 -tiles = { - plains = base + shift * 0, - grass = base + shift * 1, - dirt = base + shift * 2, - sand = base + shift * 3, - water = base + shift * 4 -} - ---custom generation systems here -function islandGenerator(region) --- io.write("Generating (", Region.GetX(region), ", ", Region.GetY(region), ")\n") - for i = 1, Region.GetWidth(region) do - for j = 1, Region.GetHeight(region) do - local dist = math.dist(0, 0, i + Region.GetX(region) -1, j + Region.GetY(region) -1) - if dist < 10 then - Region.SetTile(region, i, j, 1, tiles.plains) - elseif dist < 12 then - Region.SetTile(region, i, j, 1, tiles.sand) - else - Region.SetTile(region, i, j, 1, tiles.water) - Region.SetSolid(region, i, j, true) - end - end - end -end - ---Get some regions --BUG: #35 The server fails without at least one room --TODO: Create rooms with names? newRoom = RoomManager.CreateRoom() pager = Room.GetPager(newRoom) -RegionPager.SetOnCreate(pager, islandGenerator) - ---[[ -regionTable = { - RegionPager.GetRegion(pager, Region.GetWidth() * 0, Region.GetHeight() * 0), - RegionPager.GetRegion(pager, Region.GetWidth() *-1, Region.GetHeight() * 0), - RegionPager.GetRegion(pager, Region.GetWidth() * 0, Region.GetHeight() *-1), - RegionPager.GetRegion(pager, Region.GetWidth() *-1, Region.GetHeight() *-1) -} -]] +RegionPager.SetOnCreate(pager, mapMaker.debugIsland) print("Finished the lua script")