-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloadassets.lua
363 lines (348 loc) · 16.2 KB
/
loadassets.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
ssx, ssy = love.graphics.getDimensions()
math.randomseed(love.timer.getTime())
love.keyboard.setKeyRepeat(true)
love.graphics.setDefaultFilter('nearest', 'nearest')
love.graphics.setLineStyle('rough')
gsx, gsy = 480, 270
canvases = {
game = love.graphics.newCanvas(gsx, gsy),
game2x = love.graphics.newCanvas(gsx*2, gsy*2),
tempGame = love.graphics.newCanvas(gsx, gsy),
hpBar = love.graphics.newCanvas(18, 4)
}
gfx = {
cursors = {
main = love.graphics.newImage('gfx/ui/cursors/cursor.png'),
hand = love.graphics.newImage('gfx/ui/cursors/hand.png')
},
logo = love.graphics.newImage('gfx/logo.png'),
logoAnim = love.graphics.newImage('gfx/logo_anim.png'),
ui = {
icons = {
vit = love.graphics.newImage('gfx/ui/icons/vit.png'),
atk = love.graphics.newImage('gfx/ui/icons/atk.png'),
spd = love.graphics.newImage('gfx/ui/icons/spd.png'),
wis = love.graphics.newImage('gfx/ui/icons/wis.png'),
def = love.graphics.newImage('gfx/ui/icons/def.png'),
reg = love.graphics.newImage('gfx/ui/icons/reg.png')
},
buttons = {
up = love.graphics.newImage('gfx/ui/buttons/up.png'),
down = love.graphics.newImage('gfx/ui/buttons/down.png'),
left = love.graphics.newImage('gfx/ui/buttons/left.png'),
right = love.graphics.newImage('gfx/ui/buttons/right.png')
},
bag = love.graphics.newImage('gfx/ui/bagui.png'),
itemInfo = {
base = love.graphics.newImage('gfx/ui/item_info/base.png'),
tierColor = love.graphics.newImage('gfx/ui/item_info/tier_color.png'),
specialIcon = love.graphics.newImage('gfx/ui/item_info/special_icon.png')
},
quest = love.graphics.newImage('gfx/ui/questui.png')
},
hud = {
frame = love.graphics.newImage('gfx/ui/hud/frame.png'),
lifemana = love.graphics.newImage('gfx/ui/hud/lifemana.png'),
lifemanaEmpty = love.graphics.newImage('gfx/ui/hud/lifemana_empty.png'),
panels = {
map = love.graphics.newImage('gfx/ui/hud/panels/map.png'),
chat = love.graphics.newImage('gfx/ui/hud/panels/chat.png'),
stats = love.graphics.newImage('gfx/ui/hud/panels/stats.png'),
inventory = love.graphics.newImage('gfx/ui/hud/panels/inventory.png')
},
buttons = {
chat = love.graphics.newImage('gfx/ui/hud/buttons/chat.png'),
chatField = love.graphics.newImage('gfx/ui/hud/buttons/chatField.png'),
stats = love.graphics.newImage('gfx/ui/hud/buttons/stats.png'),
backpack = love.graphics.newImage('gfx/ui/hud/buttons/backpack.png')
}
},
tiles = {
allTiles = love.graphics.newImage('gfx/tiles/all_tiles.png'),
smoothTiles = love.graphics.newImage('gfx/tiles/smooth_tiles.png')
},
environment = {
wall = love.graphics.newImage('gfx/environment/wall.png'),
tree = love.graphics.newImage('gfx/environment/tree.png'),
bush = love.graphics.newImage('gfx/environment/bush.png'),
bigRock = love.graphics.newImage('gfx/environment/bigRock.png'),
smallRock = love.graphics.newImage('gfx/environment/smallRock.png'),
questBlock = love.graphics.newImage('gfx/environment/questBlock.png')
},
player = {
walk = {
body = love.graphics.newImage('gfx/player/walk/body.png')
},
swing = {
body = love.graphics.newImage('gfx/player/swing/body.png')
},
walkAndSwing = {
upperBody = love.graphics.newImage('gfx/player/walk_and_swing/upper_body.png'),
lowerBody = love.graphics.newImage('gfx/player/walk_and_swing/lower_body.png')
},
armor = {
armor0 = {
chest = {
walk = love.graphics.newImage('gfx/player/armor/armor0/chest/walk.png'),
swing = love.graphics.newImage('gfx/player/armor/armor0/chest/swing.png'),
walkAndSwing = love.graphics.newImage('gfx/player/armor/armor0/chest/walk_and_swing.png')
},
helmet = {
walk = love.graphics.newImage('gfx/player/armor/armor0/helmet/walk.png'),
swing = love.graphics.newImage('gfx/player/armor/armor0/helmet/swing.png'),
walkAndSwing = love.graphics.newImage('gfx/player/armor/armor0/helmet/walk_and_swing.png')
},
pants = {
walk = love.graphics.newImage('gfx/player/armor/armor0/pants/walk.png'),
swing = love.graphics.newImage('gfx/player/armor/armor0/pants/swing.png'),
walkAndSwing = love.graphics.newImage('gfx/player/armor/armor0/pants/walk_and_swing.png')
}
},
armor1 = {
chest = {
walk = love.graphics.newImage('gfx/player/armor/armor1/chest/walk.png'),
swing = love.graphics.newImage('gfx/player/armor/armor1/chest/swing.png'),
walkAndSwing = love.graphics.newImage('gfx/player/armor/armor1/chest/walk_and_swing.png')
},
helmet = {
walk = love.graphics.newImage('gfx/player/armor/armor1/helmet/walk.png'),
swing = love.graphics.newImage('gfx/player/armor/armor1/helmet/swing.png'),
walkAndSwing = love.graphics.newImage('gfx/player/armor/armor1/helmet/walk_and_swing.png')
},
pants = {
walk = love.graphics.newImage('gfx/player/armor/armor1/pants/walk.png'),
swing = love.graphics.newImage('gfx/player/armor/armor1/pants/swing.png'),
walkAndSwing = love.graphics.newImage('gfx/player/armor/armor1/pants/walk_and_swing.png')
}
}
},
swords = {
sword0 = {
walk = love.graphics.newImage('gfx/player/swords/sword0/walk.png'),
swing = love.graphics.newImage('gfx/player/swords/sword0/swing.png')
},
sword1 = {
walk = love.graphics.newImage('gfx/player/swords/sword1/walk.png'),
swing = love.graphics.newImage('gfx/player/swords/sword1/swing.png')
},
sword2 = {
walk = love.graphics.newImage('gfx/player/swords/sword2/walk.png'),
swing = love.graphics.newImage('gfx/player/swords/sword2/swing.png')
},
sword3 = {
walk = love.graphics.newImage('gfx/player/swords/sword3/walk.png'),
swing = love.graphics.newImage('gfx/player/swords/sword3/swing.png')
},
sword4 = {
walk = love.graphics.newImage('gfx/player/swords/sword4/walk.png'),
swing = love.graphics.newImage('gfx/player/swords/sword4/swing.png')
}
}
},
enemies = {
slime1 = love.graphics.newImage('gfx/enemies/slime1.png'),
slime2 = love.graphics.newImage('gfx/enemies/slime2.png'),
sorcerer = love.graphics.newImage('gfx/enemies/sorcerer.png'),
spoder = love.graphics.newImage('gfx/enemies/spoder.png'),
stingy = love.graphics.newImage('gfx/enemies/stingy.png'),
zombie = love.graphics.newImage('gfx/enemies/zombie.png'),
ant = love.graphics.newImage('gfx/enemies/ant.png'),
newMonster1 = love.graphics.newImage('gfx/enemies/new_monster_1.png'),
newMonster2 = love.graphics.newImage('gfx/enemies/new_monster_2.png'),
mudskipper = love.graphics.newImage('gfx/enemies/mudskipper.png'),
mudskipperEvolved = love.graphics.newImage('gfx/enemies/mudskipper_evolved.png'),
godex = {
body1 = love.graphics.newImage('gfx/enemies/godex/body1.png'),
body2 = love.graphics.newImage('gfx/enemies/godex/body2.png'),
aura = love.graphics.newImage('gfx/enemies/godex/aura.png'),
flame = love.graphics.newImage('gfx/enemies/godex/godexFlame.png')
}
},
items = {
lootBag = love.graphics.newImage('gfx/items/loot.png'),
lootBag1 = love.graphics.newImage('gfx/items/loot1.png'),
lootBagFuse = love.graphics.newImage('gfx/items/loot-fuse.png'),
sword0 = love.graphics.newImage('gfx/items/sword0.png'),
sword1 = love.graphics.newImage('gfx/items/sword1.png'),
sword2 = love.graphics.newImage('gfx/items/sword2.png'),
sword3 = love.graphics.newImage('gfx/items/sword3.png'),
sword4 = love.graphics.newImage('gfx/items/sword4.png'),
shield = love.graphics.newImage('gfx/items/shield.png'),
apple = love.graphics.newImage('gfx/items/apple.png'),
armor0Helmet = love.graphics.newImage('gfx/items/armor0_helmet.png'),
armor0Chest = love.graphics.newImage('gfx/items/armor0_chest.png'),
armor0Pants = love.graphics.newImage('gfx/items/armor0_pants.png'),
armor1Helmet = love.graphics.newImage('gfx/items/armor1_helmet.png'),
armor1Chest = love.graphics.newImage('gfx/items/armor1_chest.png'),
armor1Pants = love.graphics.newImage('gfx/items/armor1_pants.png')
},
slimeBall = love.graphics.newImage('gfx/slime_ball.png')
}
anims = {}
function newAnim(sheet, w, h, pad, num)
local t = {
sheet = sheet,
quads = {}
}
for i=1, num do
local x = (i-1)*(w + pad*2) + 1
local y = 1
local sw, sh = sheet:getDimensions()
t.quads[i] = love.graphics.newQuad(x, y, w, h, sw, sh)
end
return t
end
-- for procedural outline - 1px pad in quad (w,h +2) for outline, 1px pad between frames
anims.logo = newAnim(gfx.logoAnim, 54, 41, 1, 8)
anims.player = {
walk = {
body = newAnim(gfx.player.walk.body, 20, 29, 1, 5)
},
swing = {
body = newAnim(gfx.player.swing.body, 43, 34, 1, 5)
},
walkAndSwing = {
upperBody = newAnim(gfx.player.walkAndSwing.upperBody, 43, 34, 1, 5),
lowerBody = newAnim(gfx.player.walkAndSwing.lowerBody, 43, 34, 1, 5)
},
armor = {
armor0 = {
chest = {
walk = newAnim(gfx.player.armor.armor0.chest.walk, 20, 31, 1, 5),
swing = newAnim(gfx.player.armor.armor0.chest.swing, 43, 34, 1, 5),
walkAndSwing = newAnim(gfx.player.armor.armor0.chest.walkAndSwing, 43, 34, 1, 5)
},
helmet = {
walk = newAnim(gfx.player.armor.armor0.helmet.walk, 20, 31, 1, 5),
swing = newAnim(gfx.player.armor.armor0.helmet.swing, 43, 34, 1, 5),
walkAndSwing = newAnim(gfx.player.armor.armor0.helmet.walkAndSwing, 43, 34, 1, 5)
},
pants = {
walk = newAnim(gfx.player.armor.armor0.pants.walk, 20, 31, 1, 5),
swing = newAnim(gfx.player.armor.armor0.pants.swing, 43, 34, 1, 5),
walkAndSwing = newAnim(gfx.player.armor.armor0.pants.walkAndSwing, 43, 34, 1, 5)
}
},
armor1 = {
chest = {
walk = newAnim(gfx.player.armor.armor1.chest.walk, 20, 31, 1, 5),
swing = newAnim(gfx.player.armor.armor1.chest.swing, 43, 34, 1, 5),
walkAndSwing = newAnim(gfx.player.armor.armor1.chest.walkAndSwing, 43, 34, 1, 5)
},
helmet = {
walk = newAnim(gfx.player.armor.armor1.helmet.walk, 20, 31, 1, 5),
swing = newAnim(gfx.player.armor.armor1.helmet.swing, 43, 34, 1, 5),
walkAndSwing = newAnim(gfx.player.armor.armor1.helmet.walkAndSwing, 43, 34, 1, 5)
},
pants = {
walk = newAnim(gfx.player.armor.armor1.pants.walk, 20, 31, 1, 5),
swing = newAnim(gfx.player.armor.armor1.pants.swing, 43, 34, 1, 5),
walkAndSwing = newAnim(gfx.player.armor.armor1.pants.walkAndSwing, 43, 34, 1, 5)
}
}
},
swords = {
sword0 = {
walk = newAnim(gfx.player.swords.sword0.walk, 20, 29, 1, 5),
swing = newAnim(gfx.player.swords.sword0.swing, 43, 34, 1, 5)
},
sword1 = {
walk = newAnim(gfx.player.swords.sword1.walk, 20, 29, 1, 5),
swing = newAnim(gfx.player.swords.sword1.swing, 43, 34, 1, 5)
},
sword2 = {
walk = newAnim(gfx.player.swords.sword2.walk, 20, 29, 1, 5),
swing = newAnim(gfx.player.swords.sword2.swing, 43, 34, 1, 5)
},
sword3 = {
walk = newAnim(gfx.player.swords.sword3.walk, 20, 29, 1, 5),
swing = newAnim(gfx.player.swords.sword3.swing, 43, 34, 1, 5)
},
sword4 = {
walk = newAnim(gfx.player.swords.sword4.walk, 20, 29, 1, 5),
swing = newAnim(gfx.player.swords.sword4.swing, 43, 34, 1, 5)
}
}
}
anims.enemies = {
mudskipper = newAnim(gfx.enemies.mudskipper, 31, 16, 1, 2),
mudskipperEvolved = newAnim(gfx.enemies.mudskipperEvolved, 55, 31, 1, 2),
godexFlame = newAnim(gfx.enemies.godex.flame, 8, 19, 1, 5)
}
tileSheets = {}
function newTileSheet(sheet, w, h, pad, num, names)
local t = {
sheet = sheet,
quads = {}
}
names = names or {}
for i=1, num do
local x = (i-1)*(w + pad*2) + 1
local y = 1
local sw, sh = sheet:getDimensions()
local quad = love.graphics.newQuad(x, y, w, h, sw, sh)
t.quads[i] = quad
if names[i] then
t.quads[names[i]] = quad
end
end
return t
end
tileSheets.allTiles = newTileSheet(gfx.tiles.allTiles, 15, 15, 1, 9,
{'water', 'sand', 'grass', 'rock', 'path', 'floor', 'wall', 'platform', 'platform2'})
tileSheets.smoothTiles = newTileSheet(gfx.tiles.smoothTiles, 15, 15, 1, 16)
fonts = {
f10 = love.graphics.newFont(10),
f12 = love.graphics.newFont(12),
f18 = love.graphics.newFont(18),
f24 = love.graphics.newFont(24),
c13 = love.graphics.newImageFont('gfx/fonts/small_font.png', ' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?-+/():;%&`\'*#=[]"|~@$^_{}<>'),
c17 = love.graphics.newImageFont('gfx/fonts/big_font.png', ' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?-+/():;%&`\'*#=[]"|~@$^_{}<>'),
stats = love.graphics.newImageFont('gfx/fonts/stat_font.png', ' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/\'"%')
}
-- todo: test
-- love.graphics.newFont([filename, ] size, "mono")
shaders = {
fontAlias = love.graphics.newShader('shaders/fontAlias.glsl'),
outline = love.graphics.newShader('shaders/outline.glsl'),
hpBar = love.graphics.newShader('shaders/hpBar.glsl'),
mapGen = love.graphics.newShader('shaders/mapGen.glsl'),
mapRender = love.graphics.newShader('shaders/mapRender.glsl'),
panel = love.graphics.newShader('shaders/panel.glsl'),
lifemana = love.graphics.newShader('shaders/lifemana.glsl')
}
local tileCanv = love.graphics.newCanvas(15, 15)
love.graphics.setColor(1, 1, 1)
local tileImgs = {}
love.graphics.setCanvas(tileCanv)
love.graphics.clear(0, 0, 0)
love.graphics.setCanvas()
-- black tile
table.insert(tileImgs, love.graphics.newImage(tileCanv:newImageData()))
for i=1, 9 do
love.graphics.setCanvas(tileCanv)
love.graphics.clear()
love.graphics.draw(tileSheets.allTiles.sheet, tileSheets.allTiles.quads[i], 0, 0)
love.graphics.setCanvas()
table.insert(tileImgs, love.graphics.newImage(tileCanv:newImageData()))
end
shaders.mapRender:send('tiles', unpack(tileImgs))
smoothTileImgs = {}
for i=1, 16 do
love.graphics.setCanvas(tileCanv)
love.graphics.clear()
love.graphics.draw(tileSheets.smoothTiles.sheet, tileSheets.smoothTiles.quads[i], 0, 0)
love.graphics.setCanvas()
table.insert(smoothTileImgs, love.graphics.newImage(tileCanv:newImageData()))
end
shaders.mapRender:send('smoothTiles', unpack(smoothTileImgs))
shaders.lifemana:send('lifemanaEmpty', gfx.hud.lifemanaEmpty)
sfx = {
select = love.audio.newSource('sfx/Select.wav', 'static'),
select2 = love.audio.newSource('sfx/Select2.wav', 'static'),
death = love.audio.newSource('sfx/Death.wav', 'static'),
heal = love.audio.newSource('sfx/Heal2.wav', 'static'),
hurt = love.audio.newSource('sfx/Hurt.wav', 'static'),
scream = love.audio.newSource('sfx/Scream.wav', 'static'),
spider = love.audio.newSource('sfx/Spider.wav', 'static')
}