diff --git a/fs_show_log.lua b/fs_show_log.lua index f75e03a..4949ad7 100644 --- a/fs_show_log.lua +++ b/fs_show_log.lua @@ -84,6 +84,33 @@ yl_speak_up.input_show_log = function(player, formname, fields) end +-- helper function for get_fs_show_log +-- text: list of string +yl_speak_up.show_log_add_line = function(text, last_day, last_who, last_line, same_lines) + -- split the line up so that it can actually be read + local line_parts = minetest.wrap_text(last_line, 75, true) + for i, p in ipairs(line_parts) do + if(i == 1) then + table.insert(text, '#AAAAAA') + table.insert(text, minetest.formspec_escape(last_day)) + table.insert(text, '#FFFF00') + table.insert(text, minetest.formspec_escape(last_who)) + table.insert(text, '#AAAAAA') + if(same_lines > 1) then + table.insert(text, tostring(same_lines).."x") + else + table.insert(text, "") + end + else + -- do not repeat all the other entries - we just continue text + table.insert(text, '#AAAAAA,,#FFFF00,,#AAAAAA,') + end + table.insert(text, '#FFFFFF') + table.insert(text, minetest.formspec_escape(p)) + end +end + + -- TODO: make use of log_type and toggle between trade entries and full log? yl_speak_up.get_fs_show_log = function(player, log_type) local pname = player:get_player_name() @@ -131,18 +158,7 @@ yl_speak_up.get_fs_show_log = function(player, log_type) -- just count the line same_lines = same_lines + 1 else - table.insert(text, '#AAAAAA') - table.insert(text, minetest.formspec_escape(last_day)) - table.insert(text, '#FFFF00') - table.insert(text, minetest.formspec_escape(last_who)) - table.insert(text, '#AAAAAA') - if(same_lines > 1) then - table.insert(text, tostring(same_lines).."x") - else - table.insert(text, "") - end - table.insert(text, '#FFFFFF') - table.insert(text, minetest.formspec_escape(last_line)) + yl_speak_up.show_log_add_line(text, last_day, last_who, last_line, same_lines) -- store information about the next line same_lines = 0 last_line = this_line @@ -152,18 +168,7 @@ yl_speak_up.get_fs_show_log = function(player, log_type) count = count + 1 end -- cover the last line - table.insert(text, '#AAAAAA') - table.insert(text, minetest.formspec_escape(last_day)) - table.insert(text, '#FFFF00') - table.insert(text, minetest.formspec_escape(last_who)) - table.insert(text, '#AAAAAA') - if(same_lines > 1) then - table.insert(text, tostring(same_lines).."x") - else - table.insert(text, "") - end - table.insert(text, '#FFFFFF') - table.insert(text, minetest.formspec_escape(last_line)) + yl_speak_up.show_log_add_line(text, last_day, last_who, last_line, same_lines) file:close() table.insert(formspec, table.concat(text, ','))