diff --git a/assets/music/communistmanifesto.mp3 b/assets/music/communistmanifesto.mp3 new file mode 100644 index 0000000..8dcac2f Binary files /dev/null and b/assets/music/communistmanifesto.mp3 differ diff --git a/data/animations.lua b/data/animations.lua new file mode 100644 index 0000000..826bf14 --- /dev/null +++ b/data/animations.lua @@ -0,0 +1,123 @@ +-- all these are linear animations, maybe in the future make proper animations? +animation = {} + +-- cursed book +animation.cursed_book = {} +animation.cursed_book.attack_loop = { + path = "assets/entities/cursed_book/attack_loop", + frames = 1, + speed = 0 +} +animation.cursed_book.attack_transition = { + path = "assets/entities/cursed_book/attack_transition", + frames = 5, + speed = 1/16 +} +animation.cursed_book.flying = { + path = "assets/entities/cursed_book/flying", + frames = 11, + speed = 1/16 +} +animation.cursed_book.spawn = { + path = "assets/entities/cursed_book/spawn", + frames = 5, + speed = 0 +} + +-- particles +animation.particle = {} +animation.particle.simple = { + path = "assets/entities/particle/simple", + frames = 4, + speed = 1/4 +} + +-- fairy +animation.fairy = {} +animation.fairy.flying = { + path = "assets/entities/fairy/flying", + frames = 2, + speed = 1/30 +} + +-- decoration +animation.decoration = {} +animation.decoration.candelabra = { + path = "assets/entities/decoration/candelabra", + frames = 8, + speed = 1/6 +} + +-- kupo +animation.kupo = {} +animation.kupo.body = { + path = "assets/entities/kupo/kupo", + frames = 4, + speed = 1/8 +} +animation.kupo.bow = { + path = "assets/entities/kupo/kupo_bow", + frames = 6, + speed = 1/10 +} +animation.kupo.arrow = { + path = "assets/entities/kupo/kupo_arrow", + frames = 1, + speed = 0 +} + +-- moth mask +animation.moth_mask = {} +animation.moth_mask.idle = { + path = "assets/entities/nancy/moth_mask/idle", + frames = 4, + speed = 1/8 +} +animation.moth_mask.run = { + path = "assets/entities/nancy/moth_mask/run", + frames = 6, + speed = 1/8 +} +animation.moth_mask.fall = { + path = "assets/entities/nancy/moth_mask/fall", + frames = 3, + speed = 1/8 +} +animation.moth_mask.jump = { + path = "assets/entities/nancy/moth_mask/jump", + frames = 3, + speed = 1/8 +} + +-- nancy +animation.nancy = {} +animation.nancy.idle = { + path = "assets/entities/nancy/idle", + frames = 4, + speed = 1/8 +} +animation.nancy.run = { + path = "assets/entities/nancy/run", + frames = 6, + speed = 1/8 +} +animation.nancy.fall = { + path = "assets/entities/nancy/fall", + frames = 3, + speed = 1/8 +} +animation.nancy.jump = { + path = "assets/entities/nancy/jump", + frames = 3, + speed = 1/8 +} + +-- animation initializer +for _, object in pairs(animation) do + for _, anim in pairs(object) do + anim.imgs = {} + for i = 1, anim.frames do + table.insert(anim.imgs,love.graphics.newImage(anim.path..tostring(i)..".png")) + end + end +end diff --git a/data/enums.lua b/data/enums.lua deleted file mode 100644 index c1ce6ee..0000000 --- a/data/enums.lua +++ /dev/null @@ -1,143 +0,0 @@ --- animationsç - -- all these are linear animations, maybe in the future make proper animations? -animation = { - cursed_book = { - attack_loop = { - path = "assets/entities/cursed_book/attack_loop", - frames = 1, - speed = 0 - }, - attack_transition = { - path = "assets/entities/cursed_book/attack_transition", - frames = 5, - speed = 1/16 - }, - flying = { - path = "assets/entities/cursed_book/flying", - frames = 11, - speed = 1/16 - }, - spawn = { - path = "assets/entities/cursed_book/spawn", - frames = 5, - speed = 0 - } - }, - particle = { - simple = { - path = "assets/entities/particle/simple", - frames = 4, - speed = 1/4 - } - }, - fairy = { - flying = { - path = "assets/entities/fairy/flying", - frames = 2, - speed = 1/30 - } - }, - decoration = { - candelabra = { - path = "assets/entities/decoration/candelabra", - frames = 8, - speed = 1/6 - } - }, - kupo = { - body = { - path = "assets/entities/kupo/kupo", - frames = 4, - speed = 1/8 - }, - bow = { - path = "assets/entities/kupo/kupo_bow", - frames = 6, - speed = 1/10 - }, - arrow = { - path = "assets/entities/kupo/kupo_arrow", - frames = 1, - speed = 0 - } - }, - moth_mask = { - idle = { - path = "assets/entities/nancy/moth_mask/idle", - frames = 4, - speed = 1/8 - }, - run = { - path = "assets/entities/nancy/moth_mask/run", - frames = 6, - speed = 1/8 - }, - fall = { - path = "assets/entities/nancy/moth_mask/fall", - frames = 3, - speed = 1/8 - }, - jump = { - path = "assets/entities/nancy/moth_mask/jump", - frames = 3, - speed = 1/8 - } - }, - nancy = { - idle = { - path = "assets/entities/nancy/idle", - frames = 4, - speed = 1/8 - }, - run = { - path = "assets/entities/nancy/run", - frames = 6, - speed = 1/8 - }, - fall = { - path = "assets/entities/nancy/fall", - frames = 3, - speed = 1/8 - }, - jump = { - path = "assets/entities/nancy/jump", - frames = 3, - speed = 1/8 - } - } -} - --- animation loader - -- im unsure if this is too memory expensive (probably) - -- this should go elsewhere, maybe -for _, object in pairs(animation) do - for _, anim in pairs(object) do - anim.imgs = {} - for i = 1, anim.frames do - table.insert(anim.imgs,love.graphics.newImage(anim.path..tostring(i)..".png")) - end - end -end - -levelProperties = { - pos = { - x = 0, - y = 0 - }, - -- im unsure why there's offset at all, here - offset = { - x = 0, - y = 0 - } -} - -tileset = { - bricks = love.graphics.newImage("assets/tileset/bricks.png"), - library = love.graphics.newImage("assets/tileset/library.png") -} - -tileProperties = { - width = 16, - height = 16, - scale = 1, -} diff --git a/data/music.lua b/data/music.lua new file mode 100644 index 0000000..290be38 --- /dev/null +++ b/data/music.lua @@ -0,0 +1,6 @@ +music = {} +music.placeholder = { + path = "assets/music/communistmanifesto.mp3", + type = "stream", + loop = true +} diff --git a/data/scripts.lua b/data/scripts.lua index d0cabfd..5585353 100644 --- a/data/scripts.lua +++ b/data/scripts.lua @@ -1,12 +1,16 @@ -- data -require "data/enums" +require "data/animations" require "data/shaders" +require "data/tiledata" +require "data/music" +require "data/sfx" require "data/scripts/locale" -- support functions require "data/scripts/math" require "data/scripts/hex" require "data/scripts/in_out" -- classes +require "data/scripts/audio" require "data/scripts/entity" require "data/scripts/animation" require "data/scripts/collision" diff --git a/data/scripts/audio.lua b/data/scripts/audio.lua new file mode 100644 index 0000000..52f5ebb --- /dev/null +++ b/data/scripts/audio.lua @@ -0,0 +1,47 @@ +-- snippet from +-- https://love2d.org/wiki/Minimalist_Sound_Manager +-- <3 +do + -- will hold the currently playing sources + local sources = {} + + -- check for sources that finished playing and remove them + -- add to love.update + function love.audio.update() + local remove = {} + for _,s in pairs(sources) do + if not s:isPlaying() then + remove[#remove + 1] = s + end + end + + for i,s in ipairs(remove) do + sources[s] = nil + end + end + + -- overwrite love.audio.play to create and register source if needed + local play = love.audio.play + function love.audio.play(audio) + local what = audio.path + local how = audio.type + local loop = audio.loop + local src = what + if type(what) ~= "userdata" or not what:typeOf("Source") then + src = love.audio.newSource(what, how) + src:setLooping(loop or false) + end + + play(src) + sources[src] = src + return src + end + + -- stops a source + local stop = love.audio.stop + function love.audio.stop(src) + if not src then return end + stop(src) + sources[src] = nil + end +end diff --git a/data/sfx.lua b/data/sfx.lua new file mode 100644 index 0000000..e69de29 diff --git a/data/tiledata.lua b/data/tiledata.lua new file mode 100644 index 0000000..348b631 --- /dev/null +++ b/data/tiledata.lua @@ -0,0 +1,22 @@ +levelProperties = { + pos = { + x = 0, + y = 0 + }, + -- im unsure why there's offset at all, here + offset = { + x = 0, + y = 0 + } +} + +tileset = { + bricks = love.graphics.newImage("assets/tileset/bricks.png"), + library = love.graphics.newImage("assets/tileset/library.png") +} + +tileProperties = { + width = 16, + height = 16, + scale = 1, +} diff --git a/main.lua b/main.lua index 9969225..7450558 100644 --- a/main.lua +++ b/main.lua @@ -50,21 +50,25 @@ function love.load() language = "ENG" LocaleLoad(language) - main_Player = Player:New(75,50) - - --Kupo:New(100,150) - --Kupo:New(300,150) - Decoration:New(200,89,animation.decoration.candelabra,80) - Fairy:New(200,88) - --CursedBook:New(180,68) - gravity = 0.2 -- Debug and log stuff memoryUsage, dtcount = 0, 0 logPrint("mothback: "..collectgarbage("count").." kB, Loading time: "..os.clock().." seconds") + + main_Player = Player:New(75,50) + + --Kupo:New(100,150) + --Kupo:New(300,150) + Decoration:New(200,89,animation.decoration.candelabra,80) + Fairy:New(200,88) + --CursedBook:New(180,68) + + love.audio.play(music.placeholder) end function love.update(dt) + -- audio update + love.audio.update() -- fps counter if fps_second >= 1 then fps_second = fps_second - 1