-
Notifications
You must be signed in to change notification settings - Fork 0
/
level.lua
69 lines (55 loc) · 1.4 KB
/
level.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
local sti = require 'ext.sti'
local _map, _world
local drawCollision = false
local function _fromMapObj(mapObj, objType)
local o = Object_New(objType)
o.x, o.y = mapObj.x, mapObj.y - TILE_SIZE
local tile = _map.tiles[mapObj.gid] or _map:setFlippedGID(mapObj.gid)
if tile then
o.img = _map.tilesets[tile.tileset].image
o.frame = tile.quad
local _, __
_, __, o.sprW, o.sprH = o.frame:getViewport()
end
return o
end
local function _loadObjects()
local objects = _map.layers.objects
objects.visible = false
for _, obj in ipairs(objects.objects) do
if obj.type == 'Obj_Player' then
Player.x, Player.y = obj.x, obj.y
elseif obj.type ~= 'Obj_Frog' then
local o = _fromMapObj(obj, obj.type)
o.properties = obj.properties
end
end
_map:addCustomLayer('sprites', 3)
local sprites = _map.layers.sprites
function sprites:update(dt)
Object_UpdateAll(dt)
end
function sprites:draw()
Object_DrawAll()
end
end
function Level_Load(filename)
_map = sti.new(filename, { "mybump" })
Coll_Init(_map)
_loadObjects()
Camera_Init(_map.backgroundcolor, _map.width * _map.tilewidth, _map.height * _map.tileheight)
end
function Level_Update(dt)
_map:update(dt)
Coll_UpdateDynamics(dt)
end
function Level_Draw(x, y, w, h)
_map:setDrawRange(x, y, w, h)
_map:draw()
if drawCollision then
Coll_Debug_DrawRects()
end
end
function Level_Debug_ToggleDrawCollision()
drawCollision = not drawCollision
end