annotate main.lua @ 48:eeb43b94f625 default tip

merge
author Makdaam
date Sun, 16 Dec 2012 19:50:44 +0100
parents 53ae6905cfff
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
0c46edeabad6 scrolling map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
1 local ATL = require("AdvTiledLoader")
0
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
2 local anim8 = require("anim8")
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
3 local sprite = require("sprite")
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
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
0c46edeabad6 scrolling map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
8 local tx, ty = 0, 0
0c46edeabad6 scrolling map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
9 local DX = {0, 1, 0, -1}
0c46edeabad6 scrolling map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
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
0c46edeabad6 scrolling map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
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
0c46edeabad6 scrolling map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
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
0c46edeabad6 scrolling map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
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
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
83 local map_w = MAP.width * MAP.tileWidth
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
84 local map_h = MAP.height * MAP.tileHeight
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
85 if love.keyboard.isDown("up") then self:walk(dt, 1) end
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
86 if love.keyboard.isDown("right") then self:walk(dt, 2) end
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
87 if love.keyboard.isDown("down") then self:walk(dt, 3) end
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
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
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
90 if self.x + tx < scroll_margin then
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
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
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
93 if self.x + tx > 800 - 64 - scroll_margin then
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
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
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
97 if self.y + ty < scroll_margin then
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
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
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
100 if self.y + ty > 600 - 64 - scroll_margin then
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
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
0c46edeabad6 scrolling map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
106 return villain
0c46edeabad6 scrolling map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
107 end
0c46edeabad6 scrolling map
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
108
0
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
109 function love.load()
19
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
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
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
120 end
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
121
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
122 function load_map(filename)
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
123 SPRITES = {}
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
124 SHADOWS = {}
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
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
a8111759a5c7 Pretty walls
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 7
diff changeset
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
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
148 end
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
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
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
152 love.graphics.setColor(0, 0, 0)
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
153 love.graphics.print(text, 3, 3)
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
154 love.graphics.print(text, 5, 3)
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
155 love.graphics.print(text, 3, 5)
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
156 love.graphics.print(text, 5, 5)
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
157 love.graphics.setColor(255, 255, 255)
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
158 love.graphics.print(text, 4, 4)
57eeed74a575 Added text
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 18
diff changeset
159 end
0
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
160
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
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
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
186 end
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
187
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
188
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
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
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
210 end
39
4feeb8cb736e music mute added under "M"
Makdaam
parents: 33
diff changeset
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
4feeb8cb736e music mute added under "M"
Makdaam
parents: 33
diff changeset
217 end
0
716ff40413d2 initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
218 end