Mercurial > vanillian
annotate main.lua @ 48:eeb43b94f625 default tip
merge
| author | Makdaam |
|---|---|
| date | Sun, 16 Dec 2012 19:50:44 +0100 |
| parents | 53ae6905cfff |
| children |
| rev | line source |
|---|---|
| 2 | 1 local ATL = require("AdvTiledLoader") |
| 0 | 2 local anim8 = require("anim8") |
| 3 local sprite = require("sprite") | |
| 4 | |
|
6
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
5 local SPRITES = {} |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
6 local SHADOWS = {} |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
7 local MAP |
| 2 | 8 local tx, ty = 0, 0 |
| 9 local DX = {0, 1, 0, -1} | |
| 10 local DY = {-1, 0, 1, 0} | |
|
6
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
11 local SHADOW_IMAGE |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
12 local MOBS_IMAGE |
|
28
d4187c83c047
Allow moving between maps
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
26
diff
changeset
|
13 local GRID = anim8.newGrid(64, 64, 256, 256) |
|
6
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
14 local scroll_speed = 250 |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
15 local scroll_margin = 64 |
|
23
d16e33662aa0
define music in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
19
diff
changeset
|
16 local MUSIC |
|
33
0d75bfc00f01
Don't restart music every map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
28
diff
changeset
|
17 local LAST_MUSIC |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
18 local TEXT = "" |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
19 local SOUNDS = {} |
|
43
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
20 local GAME_OVER = false |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
21 local SCENE = 'start' |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
22 local START_IMAGE |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
23 local END_IMAGE |
| 2 | 24 |
|
6
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
25 |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
26 function newMob(x, y, cells) |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
27 local mob = {} |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
28 mob.sprite = sprite.newSprite( |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
29 x - 32, y - 60, MOBS_IMAGE, |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
30 anim8.newAnimation('loop', GRID(cells), 0.25) |
| 2 | 31 ) |
|
6
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
32 mob.shadow = sprite.newShadow(SHADOW_IMAGE, mob.sprite) |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
33 table.insert(SPRITES, mob.sprite) |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
34 table.insert(SHADOWS, mob.shadow) |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
35 return mob |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
36 end |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
37 |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
38 function makeVillain(villain) |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
39 villain.is_villain = true |
|
6
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
40 function villain.sprite:walk(dt, dir) |
|
11
b7a0c1a0e6c4
block some distance from the wall
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
10
diff
changeset
|
41 local x = self.x + DX[dir] * 24 |
|
b7a0c1a0e6c4
block some distance from the wall
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
10
diff
changeset
|
42 local y = self.y + DY[dir] * 16 |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
43 local mx, my = math.floor((x+32)/48), math.floor((y+60)/48) |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
44 local cell = MAP.layers['control']:get(mx, my) |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
45 local bump = false |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
46 for i, s in pairs(SPRITES) do |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
47 if not s.is_villain then |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
48 local d = (x - s.x) * (x - s.x) + ((y - s.y) * (y - s.y)) |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
49 if d < 100 then |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
50 bump = true |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
51 if s.properties.text then |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
52 TEXT = s.properties.text |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
53 SOUNDS.talk:play() |
|
43
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
54 if s.properties.doom then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
55 SOUNDS.bump:play() |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
56 GAME_OVER = true |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
57 end |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
58 else |
|
28
d4187c83c047
Allow moving between maps
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
26
diff
changeset
|
59 if s.properties.exit then |
|
43
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
60 if GAME_OVER then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
61 SCENE = 'end' |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
62 if MUSIC then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
63 MUSIC:stop() |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
64 end |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
65 else |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
66 load_map(s.properties.exit) |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
67 TEXT = s.properties.exit |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
68 end |
|
28
d4187c83c047
Allow moving between maps
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
26
diff
changeset
|
69 else |
|
d4187c83c047
Allow moving between maps
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
26
diff
changeset
|
70 SOUNDS.bump:play() |
|
d4187c83c047
Allow moving between maps
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
26
diff
changeset
|
71 TEXT = "" |
|
d4187c83c047
Allow moving between maps
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
26
diff
changeset
|
72 end |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
73 end |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
74 end |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
75 end |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
76 end |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
77 if not bump and cell and cell.properties and not cell.properties.block then |
|
11
b7a0c1a0e6c4
block some distance from the wall
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
10
diff
changeset
|
78 self.x = self.x + DX[dir] * dt * 250 |
|
b7a0c1a0e6c4
block some distance from the wall
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
10
diff
changeset
|
79 self.y = self.y + DY[dir] * dt * 250 |
|
3
f5de6c75c4d0
make the walls block
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
2
diff
changeset
|
80 end |
| 2 | 81 end |
|
6
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
82 function villain.sprite:update(dt) |
| 19 | 83 local map_w = MAP.width * MAP.tileWidth |
| 84 local map_h = MAP.height * MAP.tileHeight | |
| 85 if love.keyboard.isDown("up") then self:walk(dt, 1) end | |
| 86 if love.keyboard.isDown("right") then self:walk(dt, 2) end | |
| 87 if love.keyboard.isDown("down") then self:walk(dt, 3) end | |
| 88 if love.keyboard.isDown("left") then self:walk(dt, 4) end | |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
89 if love.keyboard.isDown(" ") then TEXT = "" end |
| 19 | 90 if self.x + tx < scroll_margin then |
| 91 tx = math.min(tx + dt * scroll_speed, 0) | |
|
5
98ab870293bc
make the villain local
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
4
diff
changeset
|
92 else |
| 19 | 93 if self.x + tx > 800 - 64 - scroll_margin then |
| 94 tx = math.max(tx - dt * scroll_speed, 800 - map_w) | |
|
5
98ab870293bc
make the villain local
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
4
diff
changeset
|
95 end |
|
98ab870293bc
make the villain local
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
4
diff
changeset
|
96 end |
| 19 | 97 if self.y + ty < scroll_margin then |
| 98 ty = math.min(ty + dt * scroll_speed, 0) | |
|
5
98ab870293bc
make the villain local
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
4
diff
changeset
|
99 else |
| 19 | 100 if self.y + ty > 600 - 64 - scroll_margin then |
| 101 ty = math.max(ty - dt * scroll_speed, 600 - map_h) | |
|
5
98ab870293bc
make the villain local
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
4
diff
changeset
|
102 end |
|
98ab870293bc
make the villain local
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
4
diff
changeset
|
103 end |
|
98ab870293bc
make the villain local
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
4
diff
changeset
|
104 sprite.Sprite.update(self, dt) |
|
98ab870293bc
make the villain local
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
4
diff
changeset
|
105 end |
| 2 | 106 return villain |
| 107 end | |
| 108 | |
| 0 | 109 function love.load() |
| 19 | 110 love.graphics.setFont(love.graphics.newFont('pf_tempesta_seven_extended_bold.ttf')) |
|
43
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
111 START_IMAGE = love.graphics.newImage('start.png') |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
112 END_IMAGE = love.graphics.newImage('end.png') |
|
6
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
113 SHADOW_IMAGE = love.graphics.newImage('shadow.png') |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
114 MOBS_IMAGE = love.graphics.newImage('mobs.png') |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
115 SOUNDS.bump = love.audio.newSource('bump.xm', 'static') |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
116 SOUNDS.talk = love.audio.newSource('talk.xm', 'static') |
|
43
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
117 MUSIC = love.audio.newSource('labz.xm', 'static') |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
118 MUSIC:setLooping(true) |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
119 MUSIC:play() |
| 19 | 120 end |
| 121 | |
| 122 function load_map(filename) | |
| 123 SPRITES = {} | |
| 124 SHADOWS = {} | |
| 125 MAP = ATL.Loader.load(filename) | |
|
6
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
126 MAP.drawObjects = false |
| 10 | 127 MAP.layers['control'].visible = false |
|
23
d16e33662aa0
define music in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
19
diff
changeset
|
128 if MAP.properties.music then |
|
33
0d75bfc00f01
Don't restart music every map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
28
diff
changeset
|
129 if not LAST_MUSIC or MAP.properties.music ~= LAST_MUSIC then |
|
0d75bfc00f01
Don't restart music every map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
28
diff
changeset
|
130 if MUSIC then |
|
0d75bfc00f01
Don't restart music every map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
28
diff
changeset
|
131 MUSIC:stop() |
|
0d75bfc00f01
Don't restart music every map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
28
diff
changeset
|
132 end |
|
0d75bfc00f01
Don't restart music every map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
28
diff
changeset
|
133 MUSIC = love.audio.newSource(MAP.properties.music, 'static') |
|
0d75bfc00f01
Don't restart music every map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
28
diff
changeset
|
134 MUSIC:setLooping(true) |
|
0d75bfc00f01
Don't restart music every map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
28
diff
changeset
|
135 MUSIC:play() |
|
0d75bfc00f01
Don't restart music every map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
28
diff
changeset
|
136 LAST_MUSIC = MAP.properties.music |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
137 end |
|
23
d16e33662aa0
define music in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
19
diff
changeset
|
138 end |
|
6
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
139 for i, data in pairs(MAP.layers['mobs'].objects) do |
|
301a5bd338fb
define mob graphics in the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
5
diff
changeset
|
140 if data.name == 'villain' then |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
141 local mob = makeVillain(newMob(data.x, data.y, '1-2,1')) |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
142 mob.sprite.properties = data.properties |
|
4
e4263ea87780
Place the sprites on the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
3
diff
changeset
|
143 else |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
144 local mob = newMob(data.x, data.y, data.properties.cells or '1-2,2') |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
145 mob.sprite.properties = data.properties |
|
4
e4263ea87780
Place the sprites on the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
3
diff
changeset
|
146 end |
|
e4263ea87780
Place the sprites on the map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
3
diff
changeset
|
147 end |
| 0 | 148 end |
| 149 | |
|
25
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
150 function draw_text(text) |
|
8891a036fb23
Add bumping and talking
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
23
diff
changeset
|
151 text = text:gsub('[|]', '\n') |
| 19 | 152 love.graphics.setColor(0, 0, 0) |
| 153 love.graphics.print(text, 3, 3) | |
| 154 love.graphics.print(text, 5, 3) | |
| 155 love.graphics.print(text, 3, 5) | |
| 156 love.graphics.print(text, 5, 5) | |
| 157 love.graphics.setColor(255, 255, 255) | |
| 158 love.graphics.print(text, 4, 4) | |
| 159 end | |
| 0 | 160 |
| 161 function love.draw() | |
|
43
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
162 if SCENE == 'start' then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
163 love.graphics.draw(START_IMAGE, 0, 0) |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
164 else |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
165 if SCENE == 'end' then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
166 love.graphics.draw(END_IMAGE, 0, 0) |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
167 else |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
168 love.graphics.translate(math.floor(tx), math.floor(ty)) |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
169 MAP:autoDrawRange(math.floor(tx), math.floor(ty), 1, 0) |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
170 MAP:draw() |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
171 for k, shadow in pairs(SHADOWS) do |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
172 shadow:draw() |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
173 end |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
174 for k, sprite in pairs(SPRITES) do |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
175 sprite:draw() |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
176 end |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
177 for i, layer in pairs(MAP.layerOrder) do |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
178 if layer.properties.overlay then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
179 layer:draw() |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
180 end |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
181 end |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
182 love.graphics.translate(-math.floor(tx), -math.floor(ty)) |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
183 draw_text(TEXT) |
|
7
dd17a136b402
overlay layers
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
6
diff
changeset
|
184 end |
|
dd17a136b402
overlay layers
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
6
diff
changeset
|
185 end |
| 0 | 186 end |
| 187 | |
| 188 | |
| 189 function love.update(dt) | |
|
43
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
190 if SCENE == 'start' then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
191 if love.keyboard.isDown(" ") then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
192 SCENE = 'game' |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
193 load_map('level01.tmx') |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
194 end |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
195 else |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
196 if SCENE == 'end' then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
197 if love.keyboard.isDown(" ") then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
198 GAME_OVER = false |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
199 else |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
200 if not GAME_OVER then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
201 SCENE = 'start' |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
202 end |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
203 end |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
204 else |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
205 for k, sprite in pairs(SPRITES) do |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
206 sprite:update(dt) |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
207 end |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
208 table.sort(SPRITES, function (a, b) return a.y < b.y end) |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
209 end |
| 0 | 210 end |
| 39 | 211 if love.keyboard.isDown("m") then |
|
43
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
212 if MUSIC:isStopped() then |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
213 MUSIC:play() |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
214 else |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
215 MUSIC:stop() |
|
53ae6905cfff
Start and end screens
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
39
diff
changeset
|
216 end |
| 39 | 217 end |
| 0 | 218 end |
