Advanced Tiled Loader, originally by Casey Baxter, updated by monolified aka ingsoc451 (monolified's repo is lost)

monolifed b17beacbbc xml and formatting 4 سال پیش
LICENSE e69f15fb04 Update LICENSE 5 سال پیش
Loader.lua 3654af96b7 for pre 11.3 4 سال پیش
Map.lua b17beacbbc xml and formatting 4 سال پیش
Object.lua b17beacbbc xml and formatting 4 سال پیش
ObjectLayer.lua c426c20407 small fix 4 سال پیش
README.md 6e8fe61213 rm VERSION, update readme 4 سال پیش
TileLayer.lua eb7f3d1fe7 use init not new 4 سال پیش
TileSet.lua eb7f3d1fe7 use init not new 4 سال پیش
init.lua 1afcbf6db5 major rewrite 4 سال پیش
xml.lua b17beacbbc xml and formatting 4 سال پیش

README.md

#Advanced Tiled Loader

Advanced Tiled Loader (ATL) loads and renders Tiled maps inside of the Löve2D game framework.

This fork of ATL is actively developed. However, do not expect anything to work. Consider using STI.

Supported features include:

  • Directly loading TMX files
  • Multiple Layers
  • Some object types (polygon/line, rect, ellipse, text and tile)
  • Properties
  • Transparent colors
  • Margins and spacing
  • External tilesets
  • zlib/gzip compression
  • Isometric maps
  • Flipped and rotated tiles
  • ~~ Saving loaded maps ~~

Example files can be found at https://github.com/Kadoba/Advanced-Tiled-Loader-Examples


Quick Example


-- Gets the loader
loader = require("AdvTiledLoader/loader.lua")

 -- Path to the tmx files. The file structure must be similar to how they are saved in Tiled
loader.path = "maps/"

 -- Loads the map file and returns it
map = loader.load("desert.tmx")

-- Draws the map
map:draw()

-- Limits the drawing range of the map. Important for performance
map:setDrawRange(0,0,love.graphics.getWidth(), love.graphics.getHeight())

-- Automatically sets the drawing range to the size of the screen.
map:autoDrawRange(tx, ty, scale, padding)

-- Accessing individual layers
map.layers["layer name"]

-- A shortcut for accessing specific layers
map("layer name")

-- Finding a specific tile
map.layers["layer name"]:get(5,5)

-- A shortcut for finding a specific tile
map("layer name")(5,5)

-- Iterating over all tiles in a layer
for x, y, tile in map("layer name"):iterate() do
   print( string.format("Tile at (%d,%d) has an id of %d", x, y, tile.id) )
end

-- Iterating over all objects in a layer
for i, obj in pairs( map("object layer").objects ) do
	print( "Hi, my name is " .. obj.name )
end

-- Find all objects of a specific type in all layers
for _, layer in pairs(map.layers) do
   if layer.class == "ObjectLayer" then
		for _, obj in pairs(player.objects) do
			if obj.type == "enemy" then print(obj.name) end
		end
   end
end

-- draw the tile with the id 4 at (100,100)
map.tiles[4]:draw(100,100)

-- Access the tile's properties set by Tiled
map.tiles[4].properties

-- Turns off drawing of non-tiled objects.
map.drawObjects = false