mirror of https://github.com/aseprite/aseprite.git
				
				
				
			
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
| -- Copyright (C) 2023  Igara Studio S.A.
 | |
| --
 | |
| -- This file is released under the terms of the MIT license.
 | |
| -- Read LICENSE.txt for more information.
 | |
| 
 | |
| do
 | |
|   local spr = Sprite(4, 4, ColorMode.INDEXED)
 | |
|   spr.gridBounds = Rectangle(0, 0, 2, 2)
 | |
|   app.command.NewLayer{ tilemap=true }
 | |
|   local tilemap = spr.layers[2]
 | |
|   local tileset = tilemap.tileset
 | |
| 
 | |
|   app.useTool{
 | |
|     tool='pencil',
 | |
|     color=1,
 | |
|     layer=tilemap,
 | |
|     tilesetMode=TilesetMode.STACK,
 | |
|     points={ Point(0, 0), Point(4, 3) }}
 | |
|   assert(#tileset == 3)
 | |
| 
 | |
|   -- Tileset properties
 | |
|   tileset.properties.kind = "terrain"
 | |
|   assert(tileset.properties.kind == "terrain")
 | |
|   assert(#tileset.properties == 1)
 | |
| 
 | |
|   -- Tiles user data
 | |
|   local tile1 = tileset:tile(1)
 | |
|   tile1.color = Color(255, 0, 0)
 | |
|   assert(tile1.color == Color(255, 0, 0))
 | |
|   tile1.data = "solid"
 | |
|   assert(tile1.data == "solid")
 | |
|   tile1.data = nil
 | |
|   assert(tile1.data == "")
 | |
| 
 | |
|   tile1.properties.center = Point(2, 2)
 | |
|   tile1.properties("ext").pivot = Point(5, 5)
 | |
|   assert(tile1.properties.center == Point(2, 2))
 | |
|   assert(tile1.properties("ext").pivot == Point(5, 5))
 | |
|   assert(#tileset.properties == 1) -- Check that tileset properties are not set
 | |
| 
 | |
|   local tile2 = tileset:tile(2)
 | |
|   tile2.properties.center = Point(3, 2)
 | |
|   tile2.properties.extra = 32
 | |
|   assert(tile2.properties.center == Point(3, 2))
 | |
|   assert(tile2.properties.extra == 32)
 | |
|   assert(tile1.properties.center == Point(2, 2))
 | |
|   assert(tile1.properties("ext").pivot == Point(5, 5))
 | |
|   assert(#tileset.properties == 1) -- Check that tileset properties are not set
 | |
|   assert(#tile1.properties == 1)
 | |
|   assert(#tile1.properties("ext") == 1)
 | |
|   assert(#tile2.properties == 2)
 | |
|   app.undo()
 | |
|   assert(#tile2.properties == 1)
 | |
|   app.undo()
 | |
|   assert(#tile2.properties == 0)
 | |
|   app.redo()
 | |
|   app.redo()
 | |
|   assert(#tile2.properties == 2)
 | |
| 
 | |
|   -- Undoable Tile.color and Tile.data
 | |
|   assert(tile2.color == Color())
 | |
|   tile2.color = Color(0, 0, 255)
 | |
|   assert(tile2.color == Color(0, 0, 255))
 | |
|   app.undo()
 | |
|   assert(tile2.color == Color())
 | |
| 
 | |
|   assert(tile2.data == "")
 | |
|   tile2.data = "B"
 | |
|   assert(tile2.data == "B")
 | |
|   app.undo()
 | |
|   assert(tile2.data == "")
 | |
| 
 | |
|   -- Set all properties at once
 | |
|   tile1.properties = { a=1, b=2.1 }
 | |
|   assert(#tile1.properties == 2)
 | |
|   assert(tile1.properties.a == 1)
 | |
|   assert(tile1.properties.b == 2.1)
 | |
| 
 | |
|   assert(#tile1.properties("ext") == 1)
 | |
|   tile1.properties("ext", { x=2, y=3 })
 | |
|   assert(#tile1.properties("ext") == 2)
 | |
|   assert(tile1.properties("ext").x == 2)
 | |
|   assert(tile1.properties("ext").y == 3)
 | |
| 
 | |
| end
 |