summaryrefslogtreecommitdiffhomepage
path: root/not/MusicPlayer.lua
diff options
context:
space:
mode:
Diffstat (limited to 'not/MusicPlayer.lua')
-rw-r--r--not/MusicPlayer.lua51
1 files changed, 51 insertions, 0 deletions
diff --git a/not/MusicPlayer.lua b/not/MusicPlayer.lua
new file mode 100644
index 0000000..4634ed9
--- /dev/null
+++ b/not/MusicPlayer.lua
@@ -0,0 +1,51 @@
+require "not.Object"
+
+--- `MusicPlayer`
+-- Simple music player object that plays and loops selected track.
+MusicPlayer = Object:extends()
+
+function MusicPlayer:new (trackName)
+ self.tracks = {}
+ if trackName then
+ self:setTrack(trackName)
+ self:play()
+ end
+end
+
+function MusicPlayer:delete ()
+ self.tracks = nil
+ self:stop()
+end
+
+function MusicPlayer:setTrack (trackName)
+ if self.source then
+ self.source:stop()
+ end
+ if self.tracks[trackName] then
+ self.source = self.tracks[trackName]
+ else
+ local source = love.audio.newSource("assets/music/" .. trackName)
+ source:setLooping(true)
+ source:setVolume(.7)
+ self.source = source
+ self.tracks[trackName] = source
+ end
+end
+
+function MusicPlayer:getCurrentTrack ()
+ for key,track in pairs(self.tracks) do
+ if self.tracks[key] == self.source then
+ return key
+ end
+ end
+end
+
+function MusicPlayer:play ()
+ self.source:play()
+end
+
+function MusicPlayer:stop ()
+ self.source:stop()
+end
+
+return MusicPlayer