diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-12-05 18:37:19 +0100 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-12-05 18:37:19 +0100 |
commit | 2b54caa04d29609ce77083444cf6f06c99ede68b (patch) | |
tree | a8220dadce70c8d62eab8f0c5fce1f312901c033 | |
download | karaoke-2b54caa04d29609ce77083444cf6f06c99ede68b.tar.xz |
Initial commit
-rw-r--r-- | init.lua | 83 | ||||
-rw-r--r-- | mod.conf | 1 |
2 files changed, 84 insertions, 0 deletions
diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..8097646 --- /dev/null +++ b/init.lua @@ -0,0 +1,83 @@ +karaoke = {} + +local storage = minetest.get_mod_storage("karaoke") +local etime, lines + +function karaoke.remaining() + return lines +end + +function karaoke.sing(title) + local text = storage:get_string(title) + + if text == "" then + return false, "Song not found" + end + + lines = text:split("\n") + etime = 0 +end + +minetest.register_chatcommand("kedit", { + func = function(param) + minetest.show_formspec("karaoke", [[ + size[9,5;] + field[0.5,0.3;8.5,1;title;Song Title;]] .. param .. [[] + textarea[0.5,1.1;8.5,4;text;Song Text;]] .. storage:get_string(param) .. [[] + button_exit[3.3,4.5;2,1;save;Save] + ]]) + end, +}) + +minetest.register_chatcommand("kdelete", { + func = function(param) + storage:set_string(param, "") + return true, "Song deleted: " .. param + end, +}) + +minetest.register_chatcommand("ksing", { + func = karaoke.sing, +}) + +minetest.register_chatcommand("kcancel", { + func = function() + etime, lines = nil + end, +}) + +minetest.register_chatcommand("klist", { + func = function() + local songs = {} + + for k in pairs(storage:to_table().fields) do + table.insert(songs, k) + end + + return true, table.concat(songs, ", ") + end, +}) + +minetest.register_on_formspec_input(function(formname, fields) + if formname == "karaoke" and fields.title and fields.text and fields.title ~= "" and fields.text ~= "" then + storage:set_string(fields.title, fields.text) + print("Song saved: " .. fields.title) + end +end) + +minetest.register_globalstep(function(dtime) + if lines then + etime = etime - dtime + + if etime < 0 then + local line = table.remove(lines, 1) + + if line then + minetest.send_chat_message("/me " .. minetest.colorize("#C609FF", line) .. "") + etime = line:len() * 0.1 + else + etime, lines = nil + end + end + end +end) diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..9d404a0 --- /dev/null +++ b/mod.conf @@ -0,0 +1 @@ +name = karaoke |