2
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
1 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
2 -- -= Map =-
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
3 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
4 -- Setup
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
5
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
6 -- Import the other classes
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
7 TILED_LOADER_PATH = TILED_LOADER_PATH or ({...})[1]:gsub("[%.\\/][Mm]ap$", "") .. '.'
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
8 local Tile = require( TILED_LOADER_PATH .. "Tile")
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
9 local TileSet = require( TILED_LOADER_PATH .. "TileSet")
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
10 local TileLayer = require( TILED_LOADER_PATH .. "TileLayer")
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
11 local Object = require( TILED_LOADER_PATH .. "Object")
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
12 local ObjectLayer = require( TILED_LOADER_PATH .. "ObjectLayer")
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
13
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
14 -- Localize some functions so they are faster
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
15 local love = love
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
16 local table = table
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
17 local ceil = math.ceil
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
18 local floor = math.floor
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
19
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
20 -- Make our map class
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
21 local Map = {class = "Map"}
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
22 Map.__index = Map
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
23
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
24 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
25 -- Returns a new map
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
26 function Map:new(name, width, height, tileWidth, tileHeight, orientation, path, prop)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
27
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
28 -- Our map
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
29 local map = setmetatable({}, Map)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
30 prop = prop or {}
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
31
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
32 -- Public:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
33 map.name = name or "Unnamed Map" -- Name of the map
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
34 map.width = width or 0 -- Width of the map in tiles
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
35 map.height = height or 0 -- Height of the map in tiles
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
36 map.tileWidth = tileWidth or 0 -- Width in pixels of each tile
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
37 map.tileHeight = tileHeight or 0 -- Height in pixels of each tile
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
38 map.orientation = orientation or "orthogonal" -- Type of map. orthogonal or isometric
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
39 map.properties = prop or {} -- Properties of the map set by Tiled
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
40 map.useSpriteBatch = prop.atl_useSpriteBatch -- True = TileLayers use sprite batches
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
41 map.visible = true -- False = the map will not be drawn
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
42 map.drawObjects = prop.atl_drawObjects -- True = object layers will be drawn
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
43
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
44 map.viewX = prop.atl_viewX or 0 -- X coord of the viewing screen.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
45 map.viewY = prop.atl_viewY or 0 -- Y coord of the viewing screen.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
46 map.viewW = prop.atl_viewW or love.graphics.getWidth() -- The width of the viewing screen
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
47 map.viewH = prop.atl_viewH or love.graphics.getHeight() -- The height of the viewing screen
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
48 map.viewScaling = 1 -- The game scaling
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
49 map.viewPadding = 10 -- Padding for the view
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
50
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
51 map.offsetX = prop.atl_offsetX or 0 -- Drawing offset X
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
52 map.offsetY = prop.atl_offsetY or 0 -- Drawing offset Y
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
53
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
54 map.layers = {} -- Layers of the map indexed by name
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
55 map.tilesets = {} -- Tilesets indexed by name
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
56 map.tiles = {} -- Tiles indexed by id
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
57 map.layerOrder = {} -- The order of the layers. Callbacks are called in this order.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
58
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
59 -- Private:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
60 map._widestTile = 0 -- The widest tile on the map.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
61 map._highestTile = 0 -- The tallest tile on the map.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
62 map._forceRedraw = false -- If true then the next redraw is forced
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
63 map._previousUseSpriteBatch = false -- The previous useSpiteBatch.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
64 map._tileClipboard = nil -- The value that stored for tile copying and pasting.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
65 map._directory = path -- The directory the map is in
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
66
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
67 -- Return the new map
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
68 return map
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
69 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
70
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
71 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
72 -- Creates a new tileset and adds it to the map. The map will then auto-update its tiles.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
73 function Map:newTileSet(...)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
74 if not name then
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
75 error("Map:newTileSet - The name parameter is invalid")
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
76 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
77 self.tilesets[name] = TileSet:new(...)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
78 self:updateTiles()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
79 return self.tilesets[name]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
80 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
81
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
82 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
83 -- Creates a new TileLayer and adds it to the map. The position parameter is the position to insert
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
84 -- the layer into the layerOrder.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
85 function Map:newTileLayer(position, ...)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
86 if self.layers[name] then
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
87 error( string.format("Map:newTileLayer - The layer name \"%s\" already exists.", name) )
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
88 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
89 self.layers[name] = TileLayer:new(self, ...)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
90 table.insert(self.layerOrder, position or #self.layerOrder + 1, self.layers[name])
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
91 return self.layers[name]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
92 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
93
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
94 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
95 -- Creates a new ObjectLayer and inserts it into the map
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
96 function Map:newObjectLayer(position, ...)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
97 if self.layers[name] then
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
98 error( string.format("Map:newObjectLayer - The layer name \"%s\" already exists.", name) )
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
99 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
100 self.layers[name] = ObjectLayer:new(self, ...)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
101 table.insert(self.layerOrder, position or #self.layerOrder + 1, self.layers[name])
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
102 return self.layers[name]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
103 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
104
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
105 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
106 -- Add a custom layer to the map. You can include a predefined layer table or one will be created.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
107 function Map:newCustomLayer(name, position, layer)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
108 if self.layers[name] then
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
109 error( string.format("Map:newCustomLayer - The layer name \"%s\" already exists.", name) )
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
110 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
111 self.layers[name] = layer or {name=name}
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
112 self.layers[name].class = "CustomLayer"
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
113 table.insert(self.layerOrder, position or #self.layerOrder + 1, self.layers[name])
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
114 return self.layers[name]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
115 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
116
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
117 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
118 -- Cuts tiles out of tilesets and stores them in the tiles tables under their id
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
119 -- Call this after the tilesets are set up
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
120 function Map:updateTiles()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
121 self.tiles = {}
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
122 self._widestTile = 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
123 self._highestTile = 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
124 for _, ts in pairs(self.tilesets) do
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
125 if ts.tileWidth > self._widestTile then self._widestTile = ts.tileWidth end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
126 if ts.tileHeight > self._highestTile then self._highestTile = ts.tileHeight end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
127 for id, val in pairs(ts:getTiles()) do
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
128 self.tiles[id] = val
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
129 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
130 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
131 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
132
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
133 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
134 -- Forces the map to redraw the sprite batches.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
135 function Map:forceRedraw()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
136 self._forceRedraw = true
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
137 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
138
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
139 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
140 -- Performs a callback on all map layers.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
141 local layer
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
142 function Map:callback(cb, ...)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
143 if cb == "draw" then self:_updateTileRange() end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
144 for i = 1, #self.layerOrder do
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
145 layer = self.layerOrder[i]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
146 if layer[cb] then layer[cb](layer, ...) end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
147 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
148 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
149
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
150 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
151 -- Draw the map.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
152 function Map:draw()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
153 if self.visible then self:callback("draw") end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
154 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
155
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
156 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
157 -- Returns the position of the layer inside the map's layerOrder. Can be the layer name or table.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
158 function Map:layerPosition(layer)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
159 if type(layer) == "string" then layer = self.layers[layer] end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
160 for i = 1,#self.layerOrder do
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
161 if self.layerOrder[i] == layer then return i end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
162 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
163 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
164
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
165 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
166 -- Returns the position of the layer inside the map's layerOrder. The passed layers can be the
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
167 -- layer name, the layer tables themselves, or the layer positions.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
168 function Map:swapLayers(layer1, layer2)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
169 if type(layer1) ~= "number" then layer1 = self:layerPosition(layer1) end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
170 if type(layer2) ~= "number" then layer2 = self:layerPosition(layer2) end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
171 local bubble = self.layers[layer1]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
172 self.layers[layer1] = self.layers[layer2]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
173 self.layers[layer2] = bubble
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
174 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
175
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
176 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
177 -- Removes a layer from the map
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
178 function Map:removeLayer(layer)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
179 if type(layer) ~= "number" then layer = self:layerPosition(layer) end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
180 layer = table.remove(self.layerOrder, layer)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
181 self.layers[layer.name] = nil
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
182 return layer
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
183 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
184
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
185 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
186 -- Turns an isometric location into a world location. The unit length for isometric tiles is always
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
187 -- the map's tileHeight. This is both for width and height.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
188 local h, tw, th
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
189 function Map:fromIso(x, y)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
190 h, tw, th = self.height, self.tileWidth, self.tileHeight
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
191 return ((x-y)/th + h - 1)*tw/2, (x+y)/2
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
192 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
193
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
194 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
195 -- Turns a world location into an isometric location
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
196 local ix, iy
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
197 function Map:toIso(a, b)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
198 a, b = a or 0, b or 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
199 h, tw, th = self.height, self.tileWidth, self.tileHeight
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
200 ix = b - (h-1)*th/2 + (a*th)/tw
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
201 iy = 2*b - ix
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
202 return ix, iy
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
203 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
204
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
205 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
206 -- Sets the draw range
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
207 function Map:setDrawRange(x,y,w,h)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
208 self.viewX, self.viewY, self.viewW, self.viewH = x, y, w, h
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
209 self.viewPadding = 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
210 self.viewScaling = 1
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
211 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
212
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
213 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
214 -- Automatically sets the draw range to fit the display
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
215 function Map:autoDrawRange(tx, ty, scale, pad)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
216 tx, ty, scale, pad = tx or 0, ty or 0, scale or 1, pad or 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
217 self.viewX = -tx
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
218 self.viewY = -ty
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
219 self.viewW = love.graphics.getWidth()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
220 self.viewH = love.graphics.getHeight()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
221 self.viewScaling = scale > 0.001 and scale or 0.001
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
222 self.viewPadding = pad
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
223 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
224
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
225 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
226 -- Returns the normal draw range
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
227 function Map:getDrawRange()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
228 return self.viewX - self.viewPadding, self.viewY - self.viewPadding,
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
229 self.viewW/self.viewScaling + self.viewPadding*2,
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
230 self.viewH/self.viewScaling + self.viewPadding*2
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
231 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
232
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
233 ----------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
234 -- Private Functions
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
235 ----------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
236 -- This is an internal function used to update the map's _tileRange, _previousTileRange, and
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
237 -- _specialRedraw
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
238 local x1, y1, x2, y2, highOffset, widthOffset, tr, ptr, layer
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
239 function Map:_updateTileRange()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
240
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
241 -- Offset to make sure we can always draw the highest and widest tile
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
242 heightOffset = self._highestTile - self.tileHeight
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
243 widthOffset = self._widestTile - self.tileWidth
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
244
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
245 -- Go through each layer
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
246 for i = 1,#self.layerOrder do
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
247 layer = self.layerOrder[i]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
248
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
249 -- If the layer is a TileLayer
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
250 if layer.class == "TileLayer" then
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
251
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
252 -- Get the draw range.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
253 x1 = self.viewX * layer.parallaxX - self.viewPadding + layer.offsetX
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
254 y1 = self.viewY * layer.parallaxY - self.viewPadding + layer.offsetY
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
255 x2 = self.viewW/self.viewScaling + self.viewPadding*2
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
256 y2 = self.viewH/self.viewScaling + self.viewPadding*2
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
257
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
258 -- Apply the offset
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
259 x1 = x1 - self.offsetX - layer.offsetX
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
260 y1 = y1 - self.offsetY - layer.offsetY
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
261
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
262 -- Calculate the _tileRange for orthogonal tiles
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
263 if self.orientation == "orthogonal" then
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
264
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
265 -- Limit the drawing range. We must make sure we can draw the tiles that are bigger
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
266 -- than the self's tileWidth and tileHeight.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
267 if x1 and y1 and x2 and y2 then
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
268 x2 = ceil(x2/self.tileWidth)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
269 y2 = ceil((y2+heightOffset)/self.tileHeight)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
270 x1 = floor((x1-widthOffset)/self.tileWidth)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
271 y1 = floor(y1/self.tileHeight)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
272
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
273 -- Make sure that we stay within the boundry of the map
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
274 x1 = x1 > 0 and x1 or 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
275 y1 = y1 > 0 and y1 or 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
276 x2 = x2 < self.width and x2 or self.width - 1
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
277 y2 = y2 < self.height and y2 or self.height - 1
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
278
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
279 else
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
280 -- If the drawing range isn't defined then we draw all the tiles
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
281 x1, y1, x2, y2 = 0, 0, self.width-1, self.height-1
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
282 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
283
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
284 -- Calculate the _tileRange for isometric tiles.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
285 else
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
286 -- If the drawRange is set
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
287 if x1 and y1 and x2 and y2 then
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
288 x1, y1 = self:toIso(x1-self._widestTile,y1)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
289 x1, y1 = ceil(x1/self.tileHeight), ceil(y1/self.tileHeight)-1
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
290 x2 = ceil((x2+self._widestTile)/self.tileWidth)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
291 y2 = ceil((y2+heightOffset)/self.tileHeight)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
292 -- else draw everything
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
293 else
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
294 x1 = 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
295 y1 = 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
296 x2 = self.width - 1
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
297 y2 = self.height - 1
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
298 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
299 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
300
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
301 -- Assign the new values to the tile range
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
302 tr, ptr = layer._tileRange, layer._previousTileRange
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
303 ptr[1], ptr[2], ptr[3], ptr[4] = tr[1], tr[2], tr[3], tr[4]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
304 tr[1], tr[2], tr[3], tr[4] = x1, y1, x2, y2
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
305
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
306 -- If the tile range or useSpriteBatch is different than the last frame then we need to
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
307 -- update its sprite batches.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
308 layer._redraw = self.useSpriteBatch ~= self._previousUseSpriteBatch or
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
309 self._forceRedraw or
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
310 tr[1] ~= ptr[1] or
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
311 tr[2] ~= ptr[2] or
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
312 tr[3] ~= ptr[3] or
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
313 tr[4] ~= ptr[4]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
314 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
315 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
316
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
317 -- Set the previous useSpritebatch
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
318 self._previousUseSpriteBatch = self.useSpriteBatch
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
319
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
320 -- Reset the forced special redraw
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
321 self._forceRedraw = false
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
322 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
323
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
324 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
325 -- Calling the map as a function will return the layer
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
326 function Map:__call(layerName)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
327 return self.layers[layerName]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
328 end
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
329
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
330 ---------------------------------------------------------------------------------------------------
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
331 -- Returns the Map class
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
332 return Map
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
333
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
334
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
335 --[[Copyright (c) 2011-2012 Casey Baxter
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
336
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
337 Permission is hereby granted, free of charge, to any person obtaining a copy
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
338 of this software and associated documentation files (the "Software"), to deal
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
339 in the Software without restriction, including without limitation the rights
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
340 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
341 copies of the Software, and to permit persons to whom the Software is
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
342 furnished to do so, subject to the following conditions:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
343
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
344 The above copyright notice and this permission notice shall be included in
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
345 all copies or substantial portions of the Software.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
346
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
347 Except as contained in this notice, the name(s) of the above copyright holders
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
348 shall not be used in advertising or otherwise to promote the sale, use or
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
349 other dealings in this Software without prior written authorization.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
350
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
351 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
352 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
353 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
354 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
355 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
356 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
357 THE SOFTWARE.--]]
|