mirror of
https://github.com/Reuh/ubiquitousse.git
synced 2025-10-27 17:19:31 +00:00
Add make script and precompile Candran files
This commit is contained in:
parent
bfa73f6dd0
commit
bfbe236e58
18 changed files with 1307 additions and 80 deletions
489
ldtk/ldtk.lua
Normal file
489
ldtk/ldtk.lua
Normal file
|
|
@ -0,0 +1,489 @@
|
|||
local lg -- ./ldtk/ldtk.can:38
|
||||
lg = (love or {})["graphics"] -- ./ldtk/ldtk.can:38
|
||||
local newQuad -- ./ldtk/ldtk.can:39
|
||||
if lg then -- ./ldtk/ldtk.can:40
|
||||
newQuad = lg["newQuad"] -- ./ldtk/ldtk.can:41
|
||||
else -- ./ldtk/ldtk.can:41
|
||||
newQuad = function(x, y, w, h, image) -- ./ldtk/ldtk.can:43
|
||||
return { -- ./ldtk/ldtk.can:44
|
||||
x, -- ./ldtk/ldtk.can:44
|
||||
y, -- ./ldtk/ldtk.can:44
|
||||
w, -- ./ldtk/ldtk.can:44
|
||||
h -- ./ldtk/ldtk.can:44
|
||||
} -- ./ldtk/ldtk.can:44
|
||||
end -- ./ldtk/ldtk.can:44
|
||||
end -- ./ldtk/ldtk.can:44
|
||||
local json_decode -- ./ldtk/ldtk.can:49
|
||||
json_decode = require((...):gsub("ldtk$", "json"))["decode"] -- ./ldtk/ldtk.can:49
|
||||
local readJson -- ./ldtk/ldtk.can:50
|
||||
readJson = function(file) -- ./ldtk/ldtk.can:50
|
||||
local f -- ./ldtk/ldtk.can:51
|
||||
f = assert(io["open"](file, "r")) -- ./ldtk/ldtk.can:51
|
||||
local t = json_decode(f:read("*a")) -- ./ldtk/ldtk.can:52
|
||||
f:close() -- ./ldtk/ldtk.can:53
|
||||
return t -- ./ldtk/ldtk.can:54
|
||||
end -- ./ldtk/ldtk.can:54
|
||||
local parseColor -- ./ldtk/ldtk.can:58
|
||||
parseColor = function(str) -- ./ldtk/ldtk.can:58
|
||||
local r, g, b = str:match("^#(..)(..)(..)") -- ./ldtk/ldtk.can:59
|
||||
r, g, b = tonumber(r, 16), tonumber(g, 16), tonumber(b, 16) -- ./ldtk/ldtk.can:60
|
||||
return { -- ./ldtk/ldtk.can:61
|
||||
r / 255, -- ./ldtk/ldtk.can:61
|
||||
g / 255, -- ./ldtk/ldtk.can:61
|
||||
b / 255 -- ./ldtk/ldtk.can:61
|
||||
} -- ./ldtk/ldtk.can:61
|
||||
end -- ./ldtk/ldtk.can:61
|
||||
local white -- ./ldtk/ldtk.can:63
|
||||
white = { -- ./ldtk/ldtk.can:63
|
||||
1, -- ./ldtk/ldtk.can:63
|
||||
1, -- ./ldtk/ldtk.can:63
|
||||
1 -- ./ldtk/ldtk.can:63
|
||||
} -- ./ldtk/ldtk.can:63
|
||||
local toLua -- ./ldtk/ldtk.can:66
|
||||
toLua = function(type, val) -- ./ldtk/ldtk.can:66
|
||||
if val == nil then -- ./ldtk/ldtk.can:67
|
||||
return val -- ./ldtk/ldtk.can:67
|
||||
end -- ./ldtk/ldtk.can:67
|
||||
if type:match("^Array%<") then -- ./ldtk/ldtk.can:68
|
||||
local itype = type:match("^Array%<(.*)%>$") -- ./ldtk/ldtk.can:69
|
||||
for i, v in ipairs(val) do -- ./ldtk/ldtk.can:70
|
||||
val[i] = toLua(itype, v) -- ./ldtk/ldtk.can:71
|
||||
end -- ./ldtk/ldtk.can:71
|
||||
elseif type == "Color" then -- ./ldtk/ldtk.can:73
|
||||
return parseColor(val) -- ./ldtk/ldtk.can:74
|
||||
elseif type == "Point" then -- ./ldtk/ldtk.can:75
|
||||
return { -- ./ldtk/ldtk.can:76
|
||||
["x"] = val["cx"], -- ./ldtk/ldtk.can:76
|
||||
["y"] = val["cy"] -- ./ldtk/ldtk.can:76
|
||||
} -- ./ldtk/ldtk.can:76
|
||||
end -- ./ldtk/ldtk.can:76
|
||||
return val -- ./ldtk/ldtk.can:78
|
||||
end -- ./ldtk/ldtk.can:78
|
||||
local getFields -- ./ldtk/ldtk.can:80
|
||||
getFields = function(f) -- ./ldtk/ldtk.can:80
|
||||
local t = {} -- ./ldtk/ldtk.can:81
|
||||
for _, v in ipairs(f) do -- ./ldtk/ldtk.can:82
|
||||
t[v["__identifier"]] = toLua(v["__type"], v["__value"]) -- ./ldtk/ldtk.can:83
|
||||
end -- ./ldtk/ldtk.can:83
|
||||
return t -- ./ldtk/ldtk.can:85
|
||||
end -- ./ldtk/ldtk.can:85
|
||||
local tileset_mt -- ./ldtk/ldtk.can:88
|
||||
local make_cache -- ./ldtk/ldtk.can:91
|
||||
make_cache = function(new_fn) -- ./ldtk/ldtk.can:91
|
||||
return setmetatable({}, { -- ./ldtk/ldtk.can:92
|
||||
["__mode"] = "v", -- ./ldtk/ldtk.can:93
|
||||
["__call"] = function(cache, id) -- ./ldtk/ldtk.can:94
|
||||
if not cache[id] then -- ./ldtk/ldtk.can:95
|
||||
cache[id] = new_fn(id) -- ./ldtk/ldtk.can:96
|
||||
end -- ./ldtk/ldtk.can:96
|
||||
return cache[id] -- ./ldtk/ldtk.can:98
|
||||
end -- ./ldtk/ldtk.can:98
|
||||
}) -- ./ldtk/ldtk.can:98
|
||||
end -- ./ldtk/ldtk.can:98
|
||||
local cache -- ./ldtk/ldtk.can:102
|
||||
cache = { -- ./ldtk/ldtk.can:102
|
||||
["tileset"] = make_cache(function(tilesetDef) -- ./ldtk/ldtk.can:103
|
||||
return tileset_mt["_init"](tilesetDef) -- ./ldtk/ldtk.can:104
|
||||
end), -- ./ldtk/ldtk.can:104
|
||||
["image"] = make_cache(function(path) -- ./ldtk/ldtk.can:106
|
||||
if lg then -- ./ldtk/ldtk.can:107
|
||||
return lg["newImage"](path) -- ./ldtk/ldtk.can:108
|
||||
else -- ./ldtk/ldtk.can:108
|
||||
return path -- ./ldtk/ldtk.can:110
|
||||
end -- ./ldtk/ldtk.can:110
|
||||
end) -- ./ldtk/ldtk.can:110
|
||||
} -- ./ldtk/ldtk.can:110
|
||||
tileset_mt = { -- ./ldtk/ldtk.can:118
|
||||
["_newQuad"] = function(self, x, y, width, height) -- ./ldtk/ldtk.can:119
|
||||
return newQuad(x, y, width, height, self["image"]) -- ./ldtk/ldtk.can:120
|
||||
end, -- ./ldtk/ldtk.can:120
|
||||
["_getTileQuad"] = function(self, tileid, x, y, size) -- ./ldtk/ldtk.can:122
|
||||
if not self["_tileQuads"][tileid] then -- ./ldtk/ldtk.can:123
|
||||
self["_tileQuads"][tileid] = self:_newQuad(x, y, size, size) -- ./ldtk/ldtk.can:124
|
||||
end -- ./ldtk/ldtk.can:124
|
||||
return self["_tileQuads"][tileid] -- ./ldtk/ldtk.can:126
|
||||
end, -- ./ldtk/ldtk.can:126
|
||||
["_init"] = function(tilesetDef) -- ./ldtk/ldtk.can:128
|
||||
local t = { -- ./ldtk/ldtk.can:129
|
||||
["image"] = cache["image"](tilesetDef["path"]), -- ./ldtk/ldtk.can:132
|
||||
["_tileQuads"] = {} -- ./ldtk/ldtk.can:134
|
||||
} -- ./ldtk/ldtk.can:134
|
||||
return setmetatable(t, tileset_mt) -- ./ldtk/ldtk.can:136
|
||||
end -- ./ldtk/ldtk.can:136
|
||||
} -- ./ldtk/ldtk.can:136
|
||||
tileset_mt["__index"] = tileset_mt -- ./ldtk/ldtk.can:139
|
||||
local layer_mt -- ./ldtk/ldtk.can:146
|
||||
layer_mt = { -- ./ldtk/ldtk.can:146
|
||||
["draw"] = function(self, x, y) -- ./ldtk/ldtk.can:154
|
||||
if x == nil then x = 0 end -- ./ldtk/ldtk.can:154
|
||||
if y == nil then y = 0 end -- ./ldtk/ldtk.can:154
|
||||
if self["visible"] then -- ./ldtk/ldtk.can:155
|
||||
lg["push"]() -- ./ldtk/ldtk.can:156
|
||||
lg["translate"](x + self["x"], y + self["y"]) -- ./ldtk/ldtk.can:157
|
||||
if self["spritebatch"] then -- ./ldtk/ldtk.can:158
|
||||
lg["setColor"](1, 1, 1, self["opacity"]) -- ./ldtk/ldtk.can:159
|
||||
lg["draw"](self["spritebatch"]) -- ./ldtk/ldtk.can:160
|
||||
elseif self["intTiles"] then -- ./ldtk/ldtk.can:161
|
||||
for _, t in ipairs(self["intTiles"]) do -- ./ldtk/ldtk.can:162
|
||||
lg["setColor"](t["color"]) -- ./ldtk/ldtk.can:163
|
||||
lg["rectangle"]("fill", t["x"], t["y"], t["layer"]["gridSize"], t["layer"]["gridSize"]) -- ./ldtk/ldtk.can:164
|
||||
end -- ./ldtk/ldtk.can:164
|
||||
elseif self["entities"] then -- ./ldtk/ldtk.can:166
|
||||
for _, e in ipairs(self["entities"]) do -- ./ldtk/ldtk.can:167
|
||||
if e["draw"] then -- ./ldtk/ldtk.can:168
|
||||
e:draw() -- ./ldtk/ldtk.can:168
|
||||
end -- ./ldtk/ldtk.can:168
|
||||
end -- ./ldtk/ldtk.can:168
|
||||
end -- ./ldtk/ldtk.can:168
|
||||
lg["pop"]() -- ./ldtk/ldtk.can:171
|
||||
end -- ./ldtk/ldtk.can:171
|
||||
end, -- ./ldtk/ldtk.can:171
|
||||
["_unloadCallbacks"] = function(self, callbacks) -- ./ldtk/ldtk.can:175
|
||||
local onRemoveTile = callbacks["onRemoveTile"] -- ./ldtk/ldtk.can:176
|
||||
if self["tiles"] and onRemoveTile then -- ./ldtk/ldtk.can:177
|
||||
for _, t in ipairs(self["tiles"]) do -- ./ldtk/ldtk.can:178
|
||||
onRemoveTile(t) -- ./ldtk/ldtk.can:179
|
||||
end -- ./ldtk/ldtk.can:179
|
||||
end -- ./ldtk/ldtk.can:179
|
||||
local onRemoveIntTile = callbacks["onRemoveIntTile"] -- ./ldtk/ldtk.can:182
|
||||
if self["intTiles"] and onRemoveIntTile then -- ./ldtk/ldtk.can:183
|
||||
for _, t in ipairs(self["intTiles"]) do -- ./ldtk/ldtk.can:184
|
||||
onRemoveIntTile(t) -- ./ldtk/ldtk.can:185
|
||||
end -- ./ldtk/ldtk.can:185
|
||||
end -- ./ldtk/ldtk.can:185
|
||||
local onRemoveEntity = callbacks["onRemoveEntity"] -- ./ldtk/ldtk.can:188
|
||||
if self["entities"] and onRemoveEntity then -- ./ldtk/ldtk.can:189
|
||||
for _, e in ipairs(self["entities"]) do -- ./ldtk/ldtk.can:190
|
||||
onRemoveEntity(e) -- ./ldtk/ldtk.can:191
|
||||
end -- ./ldtk/ldtk.can:191
|
||||
end -- ./ldtk/ldtk.can:191
|
||||
end, -- ./ldtk/ldtk.can:191
|
||||
["_init"] = function(layer, level, order, callbacks) -- ./ldtk/ldtk.can:195
|
||||
local gridSize -- ./ldtk/ldtk.can:196
|
||||
gridSize = layer["__gridSize"] -- ./ldtk/ldtk.can:196
|
||||
local t -- ./ldtk/ldtk.can:197
|
||||
t = { -- ./ldtk/ldtk.can:197
|
||||
["level"] = level, -- ./ldtk/ldtk.can:200
|
||||
["identifier"] = layer["__identifier"], -- ./ldtk/ldtk.can:203
|
||||
["type"] = layer["__type"], -- ./ldtk/ldtk.can:206
|
||||
["visible"] = layer["visible"], -- ./ldtk/ldtk.can:209
|
||||
["opacity"] = layer["opacity"], -- ./ldtk/ldtk.can:212
|
||||
["order"] = order, -- ./ldtk/ldtk.can:215
|
||||
["x"] = layer["__pxTotalOffsetX"], -- ./ldtk/ldtk.can:218
|
||||
["y"] = layer["__pxTotalOffsetY"], -- ./ldtk/ldtk.can:221
|
||||
["gridSize"] = gridSize, -- ./ldtk/ldtk.can:224
|
||||
["gridWidth"] = layer["__cWid"], -- ./ldtk/ldtk.can:227
|
||||
["gridHeight"] = layer["__cHei"], -- ./ldtk/ldtk.can:230
|
||||
["entities"] = nil, -- ./ldtk/ldtk.can:233
|
||||
["tiles"] = nil, -- ./ldtk/ldtk.can:237
|
||||
["tileset"] = nil, -- ./ldtk/ldtk.can:241
|
||||
["spritebatch"] = nil, -- ./ldtk/ldtk.can:246
|
||||
["intTiles"] = nil -- ./ldtk/ldtk.can:250
|
||||
} -- ./ldtk/ldtk.can:250
|
||||
if layer["__tilesetDefUid"] then -- ./ldtk/ldtk.can:253
|
||||
t["tiles"] = {} -- ./ldtk/ldtk.can:254
|
||||
local tilesetData = level["project"]["_tilesetData"][layer["__tilesetDefUid"]] -- ./ldtk/ldtk.can:255
|
||||
t["tileset"] = cache["tileset"](tilesetData) -- ./ldtk/ldtk.can:256
|
||||
local tiles = layer["__type"] == "Tiles" and layer["gridTiles"] or layer["autoLayerTiles"] -- ./ldtk/ldtk.can:257
|
||||
local onAddTile = callbacks["onAddTile"] -- ./ldtk/ldtk.can:258
|
||||
if lg then -- ./ldtk/ldtk.can:259
|
||||
t["spritebatch"] = lg["newSpriteBatch"](t["tileset"]["image"]) -- ./ldtk/ldtk.can:259
|
||||
end -- ./ldtk/ldtk.can:259
|
||||
for _, tl in ipairs(tiles) do -- ./ldtk/ldtk.can:260
|
||||
local quad -- ./ldtk/ldtk.can:261
|
||||
quad = t["tileset"]:_getTileQuad(tl["t"], tl["src"][1], tl["src"][2], gridSize) -- ./ldtk/ldtk.can:261
|
||||
local sx, sy = 1, 1 -- ./ldtk/ldtk.can:262
|
||||
local x, y -- ./ldtk/ldtk.can:263
|
||||
x, y = tl["px"][1], tl["px"][2] -- ./ldtk/ldtk.can:263
|
||||
local tile -- ./ldtk/ldtk.can:271
|
||||
tile = { -- ./ldtk/ldtk.can:271
|
||||
["layer"] = t, -- ./ldtk/ldtk.can:274
|
||||
["x"] = x, -- ./ldtk/ldtk.can:277
|
||||
["y"] = y, -- ./ldtk/ldtk.can:280
|
||||
["flipX"] = false, -- ./ldtk/ldtk.can:283
|
||||
["flipY"] = false, -- ./ldtk/ldtk.can:286
|
||||
["tags"] = tilesetData[tl["t"]]["tags"], -- ./ldtk/ldtk.can:289
|
||||
["data"] = tilesetData[tl["t"]]["data"], -- ./ldtk/ldtk.can:292
|
||||
["quad"] = quad -- ./ldtk/ldtk.can:296
|
||||
} -- ./ldtk/ldtk.can:296
|
||||
if tl["f"] == 1 or tl["f"] == 3 then -- ./ldtk/ldtk.can:298
|
||||
sx = - 1 -- ./ldtk/ldtk.can:299
|
||||
x = x + (gridSize) -- ./ldtk/ldtk.can:300
|
||||
tile["flipX"] = true -- ./ldtk/ldtk.can:301
|
||||
end -- ./ldtk/ldtk.can:301
|
||||
if tl["f"] == 2 or tl["f"] == 3 then -- ./ldtk/ldtk.can:303
|
||||
sy = - 1 -- ./ldtk/ldtk.can:304
|
||||
y = y + (gridSize) -- ./ldtk/ldtk.can:305
|
||||
tile["flipY"] = true -- ./ldtk/ldtk.can:306
|
||||
end -- ./ldtk/ldtk.can:306
|
||||
if t["spritebatch"] then -- ./ldtk/ldtk.can:308
|
||||
t["spritebatch"]:add(quad, x, y, 0, sx, sy) -- ./ldtk/ldtk.can:308
|
||||
end -- ./ldtk/ldtk.can:308
|
||||
table["insert"](t["tiles"], tile) -- ./ldtk/ldtk.can:309
|
||||
if onAddTile then -- ./ldtk/ldtk.can:310
|
||||
onAddTile(tile) -- ./ldtk/ldtk.can:310
|
||||
end -- ./ldtk/ldtk.can:310
|
||||
end -- ./ldtk/ldtk.can:310
|
||||
elseif layer["__type"] == "IntGrid" then -- ./ldtk/ldtk.can:313
|
||||
t["intTiles"] = {} -- ./ldtk/ldtk.can:314
|
||||
local onAddIntTile = callbacks["onAddIntTile"] -- ./ldtk/ldtk.can:315
|
||||
local values = level["project"]["_layerDef"][layer["layerDefUid"]]["intGridValues"] -- ./ldtk/ldtk.can:316
|
||||
for i, tl in ipairs(layer["intGridCsv"]) do -- ./ldtk/ldtk.can:317
|
||||
if tl > 0 then -- ./ldtk/ldtk.can:318
|
||||
local y -- ./ldtk/ldtk.can:319
|
||||
y = math["floor"]((i - 1) / t["gridWidth"]) * gridSize -- ./ldtk/ldtk.can:319
|
||||
local x -- ./ldtk/ldtk.can:320
|
||||
x = ((i - 1) % t["gridWidth"]) * gridSize -- ./ldtk/ldtk.can:320
|
||||
local tile -- ./ldtk/ldtk.can:328
|
||||
tile = { -- ./ldtk/ldtk.can:328
|
||||
["layer"] = t, -- ./ldtk/ldtk.can:331
|
||||
["x"] = x, -- ./ldtk/ldtk.can:334
|
||||
["y"] = y, -- ./ldtk/ldtk.can:337
|
||||
["identifier"] = values[tl]["identifier"], -- ./ldtk/ldtk.can:340
|
||||
["value"] = tl, -- ./ldtk/ldtk.can:343
|
||||
["color"] = values[tl]["color"] -- ./ldtk/ldtk.can:346
|
||||
} -- ./ldtk/ldtk.can:346
|
||||
table["insert"](t["intTiles"], tile) -- ./ldtk/ldtk.can:348
|
||||
if onAddIntTile then -- ./ldtk/ldtk.can:349
|
||||
onAddIntTile(tile) -- ./ldtk/ldtk.can:349
|
||||
end -- ./ldtk/ldtk.can:349
|
||||
end -- ./ldtk/ldtk.can:349
|
||||
end -- ./ldtk/ldtk.can:349
|
||||
end -- ./ldtk/ldtk.can:349
|
||||
if layer["__type"] == "Entities" then -- ./ldtk/ldtk.can:354
|
||||
t["entities"] = {} -- ./ldtk/ldtk.can:355
|
||||
local onAddEntity = callbacks["onAddEntity"] -- ./ldtk/ldtk.can:356
|
||||
for _, e in ipairs(layer["entityInstances"]) do -- ./ldtk/ldtk.can:357
|
||||
local entityDef -- ./ldtk/ldtk.can:358
|
||||
entityDef = level["project"]["_entityData"][e["defUid"]] -- ./ldtk/ldtk.can:358
|
||||
local entity -- ./ldtk/ldtk.can:366
|
||||
entity = { -- ./ldtk/ldtk.can:366
|
||||
["layer"] = t, -- ./ldtk/ldtk.can:369
|
||||
["identifier"] = e["__identifier"], -- ./ldtk/ldtk.can:372
|
||||
["x"] = e["px"][1], -- ./ldtk/ldtk.can:375
|
||||
["y"] = e["px"][2], -- ./ldtk/ldtk.can:378
|
||||
["width"] = e["width"], -- ./ldtk/ldtk.can:381
|
||||
["height"] = e["height"], -- ./ldtk/ldtk.can:384
|
||||
["sx"] = e["width"] / entityDef["width"], -- ./ldtk/ldtk.can:387
|
||||
["sy"] = e["height"] / entityDef["height"], -- ./ldtk/ldtk.can:390
|
||||
["pivotX"] = e["__pivot"][1] * e["width"], -- ./ldtk/ldtk.can:393
|
||||
["pivotY"] = e["__pivot"][2] * e["height"], -- ./ldtk/ldtk.can:396
|
||||
["color"] = entityDef["color"], -- ./ldtk/ldtk.can:399
|
||||
["tile"] = nil, -- ./ldtk/ldtk.can:403
|
||||
["fields"] = getFields(e["fieldInstances"]), -- ./ldtk/ldtk.can:406
|
||||
["draw"] = function(self) -- ./ldtk/ldtk.can:412
|
||||
if self["tile"] then -- ./ldtk/ldtk.can:413
|
||||
local _, _, w, h -- ./ldtk/ldtk.can:414
|
||||
_, _, w, h = self["tile"]["quad"]:getViewport() -- ./ldtk/ldtk.can:414
|
||||
lg["setColor"](white) -- ./ldtk/ldtk.can:415
|
||||
lg["draw"](self["tile"]["tileset"]["image"], self["tile"]["quad"], self["x"] - self["pivotX"], self["y"] - self["pivotY"], 0, self["width"] / w, self["height"] / h) -- ./ldtk/ldtk.can:416
|
||||
else -- ./ldtk/ldtk.can:416
|
||||
lg["setColor"](self["color"]) -- ./ldtk/ldtk.can:418
|
||||
lg["rectangle"]("line", self["x"] - self["pivotX"], self["y"] - self["pivotY"], self["width"], self["height"]) -- ./ldtk/ldtk.can:419
|
||||
end -- ./ldtk/ldtk.can:419
|
||||
end -- ./ldtk/ldtk.can:419
|
||||
} -- ./ldtk/ldtk.can:419
|
||||
if e["__tile"] then -- ./ldtk/ldtk.can:423
|
||||
local tileset = cache["tileset"](level["project"]["_tilesetData"][e["__tile"]["tilesetUid"]]) -- ./ldtk/ldtk.can:424
|
||||
local srcRect = e["__tile"]["srcRect"] -- ./ldtk/ldtk.can:425
|
||||
local quad = tileset:_newQuad(srcRect[1], srcRect[2], srcRect[3], srcRect[4]) -- ./ldtk/ldtk.can:426
|
||||
entity["tile"] = { -- ./ldtk/ldtk.can:427
|
||||
["tileset"] = tileset, -- ./ldtk/ldtk.can:428
|
||||
["quad"] = quad -- ./ldtk/ldtk.can:429
|
||||
} -- ./ldtk/ldtk.can:429
|
||||
end -- ./ldtk/ldtk.can:429
|
||||
table["insert"](t["entities"], entity) -- ./ldtk/ldtk.can:432
|
||||
if onAddEntity then -- ./ldtk/ldtk.can:433
|
||||
onAddEntity(entity) -- ./ldtk/ldtk.can:433
|
||||
end -- ./ldtk/ldtk.can:433
|
||||
end -- ./ldtk/ldtk.can:433
|
||||
end -- ./ldtk/ldtk.can:433
|
||||
return setmetatable(t, layer_mt) -- ./ldtk/ldtk.can:436
|
||||
end -- ./ldtk/ldtk.can:436
|
||||
} -- ./ldtk/ldtk.can:436
|
||||
layer_mt["__index"] = layer_mt -- ./ldtk/ldtk.can:439
|
||||
local level_mt -- ./ldtk/ldtk.can:448
|
||||
level_mt = { -- ./ldtk/ldtk.can:448
|
||||
["draw"] = function(self, x, y) -- ./ldtk/ldtk.can:459
|
||||
if x == nil then x = 0 end -- ./ldtk/ldtk.can:459
|
||||
if y == nil then y = 0 end -- ./ldtk/ldtk.can:459
|
||||
assert(self["loaded"] == true, "level not loaded") -- ./ldtk/ldtk.can:460
|
||||
lg["push"]() -- ./ldtk/ldtk.can:461
|
||||
lg["translate"](x + self["x"], y + self["y"]) -- ./ldtk/ldtk.can:462
|
||||
self:drawBackground() -- ./ldtk/ldtk.can:463
|
||||
for _, l in ipairs(self["layers"]) do -- ./ldtk/ldtk.can:465
|
||||
l:draw() -- ./ldtk/ldtk.can:466
|
||||
end -- ./ldtk/ldtk.can:466
|
||||
lg["pop"]() -- ./ldtk/ldtk.can:468
|
||||
end, -- ./ldtk/ldtk.can:468
|
||||
["drawBackground"] = function(self, x, y) -- ./ldtk/ldtk.can:479
|
||||
if x == nil then x = 0 end -- ./ldtk/ldtk.can:479
|
||||
if y == nil then y = 0 end -- ./ldtk/ldtk.can:479
|
||||
assert(self["loaded"] == true, "level not loaded") -- ./ldtk/ldtk.can:480
|
||||
lg["setColor"](self["background"]["color"]) -- ./ldtk/ldtk.can:482
|
||||
lg["rectangle"]("fill", x, y, self["width"], self["height"]) -- ./ldtk/ldtk.can:483
|
||||
lg["setColor"](white) -- ./ldtk/ldtk.can:485
|
||||
local bgImage -- ./ldtk/ldtk.can:486
|
||||
bgImage = self["background"]["image"] -- ./ldtk/ldtk.can:486
|
||||
if bgImage then -- ./ldtk/ldtk.can:487
|
||||
lg["draw"](bgImage["image"], bgImage["quad"], x + bgImage["x"], y + bgImage["y"], 0, bgImage["sx"], bgImage["sy"]) -- ./ldtk/ldtk.can:488
|
||||
end -- ./ldtk/ldtk.can:488
|
||||
end, -- ./ldtk/ldtk.can:488
|
||||
["load"] = function(self, callbacks) -- ./ldtk/ldtk.can:506
|
||||
if callbacks == nil then callbacks = {} end -- ./ldtk/ldtk.can:506
|
||||
assert(self["loaded"] == false, "level already loaded") -- ./ldtk/ldtk.can:507
|
||||
if self["_json"]["bgRelPath"] then -- ./ldtk/ldtk.can:508
|
||||
local pos -- ./ldtk/ldtk.can:509
|
||||
pos = self["_json"]["__bgPos"] -- ./ldtk/ldtk.can:509
|
||||
local cropRect -- ./ldtk/ldtk.can:510
|
||||
cropRect = pos["cropRect"] -- ./ldtk/ldtk.can:510
|
||||
local image -- ./ldtk/ldtk.can:511
|
||||
image = cache["image"](self["project"]["_directory"] .. self["_json"]["bgRelPath"]) -- ./ldtk/ldtk.can:511
|
||||
self["background"]["image"] = { -- ./ldtk/ldtk.can:512
|
||||
["image"] = image, -- ./ldtk/ldtk.can:513
|
||||
["quad"] = newQuad(cropRect[1], cropRect[2], cropRect[3], cropRect[4], image), -- ./ldtk/ldtk.can:514
|
||||
["x"] = pos["topLeftPx"][1], -- ./ldtk/ldtk.can:515
|
||||
["y"] = pos["topLeftPx"][2], -- ./ldtk/ldtk.can:516
|
||||
["sx"] = pos["scale"][1], -- ./ldtk/ldtk.can:517
|
||||
["sy"] = pos["scale"][1] -- ./ldtk/ldtk.can:518
|
||||
} -- ./ldtk/ldtk.can:518
|
||||
end -- ./ldtk/ldtk.can:518
|
||||
local layerInstances -- ./ldtk/ldtk.can:521
|
||||
if self["_json"]["externalRelPath"] then -- ./ldtk/ldtk.can:522
|
||||
layerInstances = readJson(self["project"]["_directory"] .. self["_json"]["externalRelPath"])["layerInstances"] -- ./ldtk/ldtk.can:523
|
||||
else -- ./ldtk/ldtk.can:523
|
||||
layerInstances = self["_json"]["layerInstances"] -- ./ldtk/ldtk.can:525
|
||||
end -- ./ldtk/ldtk.can:525
|
||||
self["layers"] = {} -- ./ldtk/ldtk.can:527
|
||||
local onAddLayer -- ./ldtk/ldtk.can:528
|
||||
onAddLayer = callbacks["onAddLayer"] -- ./ldtk/ldtk.can:528
|
||||
for i = # layerInstances, 1, - 1 do -- ./ldtk/ldtk.can:529
|
||||
local layer = layer_mt["_init"](layerInstances[i], self, i, callbacks) -- ./ldtk/ldtk.can:530
|
||||
table["insert"](self["layers"], layer) -- ./ldtk/ldtk.can:531
|
||||
if onAddLayer then -- ./ldtk/ldtk.can:532
|
||||
onAddLayer(layer) -- ./ldtk/ldtk.can:532
|
||||
end -- ./ldtk/ldtk.can:532
|
||||
end -- ./ldtk/ldtk.can:532
|
||||
self["loaded"] = true -- ./ldtk/ldtk.can:534
|
||||
end, -- ./ldtk/ldtk.can:534
|
||||
["unload"] = function(self, callbacks) -- ./ldtk/ldtk.can:547
|
||||
if callbacks == nil then callbacks = {} end -- ./ldtk/ldtk.can:547
|
||||
assert(self["loaded"] == true, "level not loaded") -- ./ldtk/ldtk.can:548
|
||||
local onRemoveLayer -- ./ldtk/ldtk.can:549
|
||||
onRemoveLayer = callbacks["onRemoveLayer"] -- ./ldtk/ldtk.can:549
|
||||
for _, l in ipairs(self["layers"]) do -- ./ldtk/ldtk.can:550
|
||||
l:_unloadCallbacks(callbacks) -- ./ldtk/ldtk.can:551
|
||||
if onRemoveLayer then -- ./ldtk/ldtk.can:552
|
||||
onRemoveLayer(l) -- ./ldtk/ldtk.can:552
|
||||
end -- ./ldtk/ldtk.can:552
|
||||
end -- ./ldtk/ldtk.can:552
|
||||
self["loaded"] = false -- ./ldtk/ldtk.can:554
|
||||
self["background"]["image"] = nil -- ./ldtk/ldtk.can:555
|
||||
self["layers"] = nil -- ./ldtk/ldtk.can:556
|
||||
end, -- ./ldtk/ldtk.can:556
|
||||
["_init"] = function(level, project) -- ./ldtk/ldtk.can:559
|
||||
local t -- ./ldtk/ldtk.can:560
|
||||
t = { -- ./ldtk/ldtk.can:560
|
||||
["project"] = project, -- ./ldtk/ldtk.can:563
|
||||
["loaded"] = false, -- ./ldtk/ldtk.can:566
|
||||
["identifier"] = level["identifier"], -- ./ldtk/ldtk.can:569
|
||||
["x"] = level["worldX"], -- ./ldtk/ldtk.can:572
|
||||
["y"] = level["worldY"], -- ./ldtk/ldtk.can:575
|
||||
["width"] = level["pxWid"], -- ./ldtk/ldtk.can:578
|
||||
["height"] = level["pxHei"], -- ./ldtk/ldtk.can:581
|
||||
["fields"] = getFields(level["fieldInstances"]), -- ./ldtk/ldtk.can:584
|
||||
["layers"] = nil, -- ./ldtk/ldtk.can:587
|
||||
["background"] = { -- ./ldtk/ldtk.can:595
|
||||
["color"] = parseColor(level["__bgColor"]), -- ./ldtk/ldtk.can:596
|
||||
["image"] = nil -- ./ldtk/ldtk.can:597
|
||||
}, -- ./ldtk/ldtk.can:597
|
||||
["_json"] = level -- ./ldtk/ldtk.can:601
|
||||
} -- ./ldtk/ldtk.can:601
|
||||
return setmetatable(t, level_mt) -- ./ldtk/ldtk.can:603
|
||||
end -- ./ldtk/ldtk.can:603
|
||||
} -- ./ldtk/ldtk.can:603
|
||||
level_mt["__index"] = level_mt -- ./ldtk/ldtk.can:606
|
||||
local project_mt -- ./ldtk/ldtk.can:613
|
||||
project_mt = { ["_init"] = function(project, directory) -- ./ldtk/ldtk.can:614
|
||||
assert(project["jsonVersion"] == "0.9.3", ("the map was made with LDtk version %s but the importer is made for 0.9.3"):format(project["jsonVersion"])) -- ./ldtk/ldtk.can:615
|
||||
local t -- ./ldtk/ldtk.can:616
|
||||
t = { -- ./ldtk/ldtk.can:616
|
||||
["levels"] = nil, -- ./ldtk/ldtk.can:619
|
||||
["_directory"] = directory, -- ./ldtk/ldtk.can:622
|
||||
["_layerDef"] = nil, -- ./ldtk/ldtk.can:623
|
||||
["_tilesetData"] = nil, -- ./ldtk/ldtk.can:624
|
||||
["_entityData"] = nil -- ./ldtk/ldtk.can:625
|
||||
} -- ./ldtk/ldtk.can:625
|
||||
t["levels"] = (function() -- ./ldtk/ldtk.can:627
|
||||
local self = {} -- ./ldtk/ldtk.can:627
|
||||
for _, lvl in ipairs(project["levels"]) do -- ./ldtk/ldtk.can:628
|
||||
do -- ./ldtk/ldtk.can:629
|
||||
local __CAN_a = table.pack(level_mt["_init"](lvl, t)) -- ./ldtk/ldtk.can:629
|
||||
table.move(__CAN_a, 1, __CAN_a.n, #self+1, self) -- ./ldtk/ldtk.can:629
|
||||
end -- ./ldtk/ldtk.can:629
|
||||
end -- ./ldtk/ldtk.can:629
|
||||
return self -- ./ldtk/ldtk.can:629
|
||||
end)() -- ./ldtk/ldtk.can:629
|
||||
t["_tilesetData"] = (function() -- ./ldtk/ldtk.can:632
|
||||
local self = {} -- ./ldtk/ldtk.can:632
|
||||
for _, ts in ipairs(project["defs"]["tilesets"]) do -- ./ldtk/ldtk.can:633
|
||||
self[ts["uid"]] = { ["path"] = directory .. ts["relPath"] } -- ./ldtk/ldtk.can:635
|
||||
local tilesetData = self[ts["uid"]] -- ./ldtk/ldtk.can:637
|
||||
for gridx = 0, ts["__cWid"] - 1 do -- ./ldtk/ldtk.can:638
|
||||
for gridy = 0, ts["__cHei"] - 1 do -- ./ldtk/ldtk.can:639
|
||||
tilesetData[gridx + gridy * ts["__cWid"]] = { -- ./ldtk/ldtk.can:640
|
||||
["tags"] = {}, -- ./ldtk/ldtk.can:641
|
||||
["data"] = nil -- ./ldtk/ldtk.can:642
|
||||
} -- ./ldtk/ldtk.can:642
|
||||
end -- ./ldtk/ldtk.can:642
|
||||
end -- ./ldtk/ldtk.can:642
|
||||
for _, custom in ipairs(ts["customData"]) do -- ./ldtk/ldtk.can:646
|
||||
tilesetData[custom["tileId"]]["data"] = custom["data"] -- ./ldtk/ldtk.can:647
|
||||
end -- ./ldtk/ldtk.can:647
|
||||
for _, tag in ipairs(ts["enumTags"]) do -- ./ldtk/ldtk.can:649
|
||||
local value = tag["enumValueId"] -- ./ldtk/ldtk.can:650
|
||||
for _, tileId in ipairs(tag["tileIds"]) do -- ./ldtk/ldtk.can:651
|
||||
table["insert"](tilesetData[tileId]["tags"], value) -- ./ldtk/ldtk.can:652
|
||||
tilesetData[tileId]["tags"][value] = true -- ./ldtk/ldtk.can:653
|
||||
end -- ./ldtk/ldtk.can:653
|
||||
end -- ./ldtk/ldtk.can:653
|
||||
end -- ./ldtk/ldtk.can:653
|
||||
return self -- ./ldtk/ldtk.can:653
|
||||
end)() -- ./ldtk/ldtk.can:653
|
||||
t["_layerDef"] = (function() -- ./ldtk/ldtk.can:658
|
||||
local self = {} -- ./ldtk/ldtk.can:658
|
||||
for _, lay in ipairs(project["defs"]["layers"]) do -- ./ldtk/ldtk.can:659
|
||||
self[lay["uid"]] = { ["intGridValues"] = nil } -- ./ldtk/ldtk.can:661
|
||||
local layerDef = self[lay["uid"]] -- ./ldtk/ldtk.can:663
|
||||
if lay["__type"] == "IntGrid" then -- ./ldtk/ldtk.can:664
|
||||
layerDef["intGridValues"] = (function() -- ./ldtk/ldtk.can:665
|
||||
local self = {} -- ./ldtk/ldtk.can:665
|
||||
for _, v in ipairs(lay["intGridValues"]) do -- ./ldtk/ldtk.can:666
|
||||
self[v["value"]] = { -- ./ldtk/ldtk.can:667
|
||||
["color"] = parseColor(v["color"]), -- ./ldtk/ldtk.can:668
|
||||
["identifier"] = v["identifier"] -- ./ldtk/ldtk.can:669
|
||||
} -- ./ldtk/ldtk.can:669
|
||||
end -- ./ldtk/ldtk.can:669
|
||||
return self -- ./ldtk/ldtk.can:669
|
||||
end)() -- ./ldtk/ldtk.can:669
|
||||
end -- ./ldtk/ldtk.can:669
|
||||
end -- ./ldtk/ldtk.can:669
|
||||
return self -- ./ldtk/ldtk.can:669
|
||||
end)() -- ./ldtk/ldtk.can:669
|
||||
t["_entityData"] = (function() -- ./ldtk/ldtk.can:676
|
||||
local self = {} -- ./ldtk/ldtk.can:676
|
||||
for _, ent in ipairs(project["defs"]["entities"]) do -- ./ldtk/ldtk.can:677
|
||||
self[ent["uid"]] = { -- ./ldtk/ldtk.can:678
|
||||
["color"] = parseColor(ent["color"]), -- ./ldtk/ldtk.can:679
|
||||
["width"] = ent["width"], -- ./ldtk/ldtk.can:680
|
||||
["height"] = ent["height"] -- ./ldtk/ldtk.can:681
|
||||
} -- ./ldtk/ldtk.can:681
|
||||
end -- ./ldtk/ldtk.can:681
|
||||
return self -- ./ldtk/ldtk.can:681
|
||||
end)() -- ./ldtk/ldtk.can:681
|
||||
return setmetatable(t, project_mt) -- ./ldtk/ldtk.can:685
|
||||
end } -- ./ldtk/ldtk.can:685
|
||||
project_mt["__index"] = project_mt -- ./ldtk/ldtk.can:688
|
||||
return function(file) -- ./ldtk/ldtk.can:719
|
||||
return project_mt["_init"](readJson(file), file:match("^(.-)[^%/%\\]+$")) -- ./ldtk/ldtk.can:720
|
||||
end -- ./ldtk/ldtk.can:720
|
||||
Loading…
Add table
Add a link
Reference in a new issue