local m = mtimer local S = m.translator local build_frame = m.build_frame local fe = minetest.formspec_escape mtimer.show_formspec.main_menu = function (player_name) minetest.show_formspec(player_name, 'mtimer:main_menu', [[ size[4,11.25] label[0,-0.125;]]..S('mTimer Configuration')..[[] button[0,0.5;4,1;set_visibility;]]..S('Visibility')..[[] button[0,1.5;4,1;set_position;]]..S('Position')..[[] button[0,2.5;4,1;set_color;]]..S('Color')..[[] button[0,3.5;4,1;timezone_offset;]]..S('Timezone Offset')..[[] button[0,4.5;4,1;ingame_time_format;]]..S('Ingame Time Format')..[[] button[0,5.5;4,1;real_world_time_format;]]..S('Real-World Time Format')..[[] button[0,6.5;4,1;session_start_time_format;]]..S('Session Start Time Format')..[[] button[0,7.5;4,1;session_duration_format;]]..S('Session Duration Format')..[[] button[0,8.5;4,1;timer_format;]]..S('Timer Format')..[[] button[0,9.5;4,1;reset_everything;]]..S('Reset Everything')..[[] button_exit[0,10.5;4,1;exit;]]..S('Exit')..[[] ]]) end mtimer.show_formspec.set_visibility = function (player_name) minetest.show_formspec(player_name, 'mtimer:set_visibility', build_frame(6, 2.25, S('Visibility'))..[[ button[0,0.5;3,1;visible;]]..S('Visible')..[[] button[3,0.5;3,1;invisible;]]..S('Invisible')..[[] ]]) end mtimer.show_formspec.set_position = function (player_name) minetest.show_formspec(player_name, 'mtimer:set_position', build_frame(8, 6.2, S('Position'))..[[ image_button[0,0.5;8,4.5 ;mtimer_positions_orientation.png;pos_xx;;;false] image_button[0,0.5;2.67,1.5;mtimer_transparent.png;pos_tl;;;false] image_button[2.67,0.5;2.67,1.5;mtimer_transparent.png;pos_tc;;;false] image_button[5.34,0.5;2.67,1.5;mtimer_transparent.png;pos_tr;;;false] image_button[0,2;2.67,1.5;mtimer_transparent.png;pos_ml;;;false] image_button[2.67,2;2.67,1.5;mtimer_transparent.png;pos_mc;;;false] image_button[5.34,2;2.67,1.5;mtimer_transparent.png;pos_mr;;;false] image_button[0,3.5;2.67,1.5;mtimer_transparent.png;pos_bl;;;false] image_button[2.67,3.5;2.67,1.5;mtimer_transparent.png;pos_bc;;;false] image_button[5.34,3.5;2.67,1.5;mtimer_transparent.png;pos_br;;;false] label[0,5;]]..S('Click the position you want to place the timer at.')..[[] ]]) end mtimer.show_formspec.set_color = function (player_name) local player = minetest.get_player_by_name(player_name) local color = player:get_meta():get_string(m.meta.color.key) local hexcolor = table.concat({ '#', minetest.colorize('#ce5c00', 'rr'), minetest.colorize('#4e9a06', 'gg'), minetest.colorize('#729fcf', 'bb') }) minetest.show_formspec(player_name, 'mtimer:set_color', build_frame(6, 2.7, S('Color'))..[[ field_close_on_enter[color;false] field[0.25,0.75;3,1;color;;]]..color..[[] box[3,0.55;0.65,0.65;]]..color..[[ff] label[-0.05,1.45;]]..S('Use `@1` format only!', hexcolor)..[[] ]]) end mtimer.show_formspec.timezone_offset = function (player_name) local time_data = mtimer.get_times(player_name).real_time local format_information = table.concat({ S('30 minutes @= 0.5, 60 minutes @= 1'), S('“Arbitrary” values are possible.') }, '\n') local time_information = table.concat({ S('Server Time: @1', time_data.times.server_time), S('Local Time: @1', time_data.times.local_time) }, '\n') minetest.show_formspec(player_name, 'mtimer:timezone_offset', build_frame(7, 3.125, S('Timezone Offset'))..[[ field_close_on_enter[offset;false] field[0.25,0.75;3,1;offset;;]]..time_data.times.offset..[[] label[3,0.425;]]..format_information..[[] label[0,1.45;]]..time_information..[[] ]]) end mtimer.show_formspec.ingame_time_format = function (player_name) local time_data = mtimer.get_times(player_name).ingame_time minetest.show_formspec(player_name, 'mtimer:ingame_time_format', build_frame(7, 4.9, S('Ingame Time Format'))..[[ field_close_on_enter[format;false] field[0.25,0.75;7,1;format;;]]..fe(time_data.format)..[[] container[0,1.425] label[2.8,0;]]..S('Variable')..[[] label[4.25,0;]]..S('Current value')..[[] box[0,0.45;6.75,0.02;#ffffff] label[0,0.5;]]..S('Hours (24h)')..[[] label[2.8,0.5;{24h}] label[4.25,0.5;]]..time_data.hours_24..[[] label[0,0.9;]]..S('Hours (12h)')..[[] label[2.8,0.9;{12h}] label[4.25,0.9;]]..time_data.hours_12..[[] label[0,1.3;]]..S('Minutes')..[[] label[2.8,1.3;{min}] label[4.25,1.3;]]..time_data.minutes..[[] label[0,1.7;]]..S('Ingame Timestamp')..[[] label[2.8,1.7;{its}] label[4.25,1.7;]]..time_data.ingame_timestamp..[[] box[0,2.2;6.75,0.02;#ffffff] label[0,2.25;]]..S('Current Result')..[[] label[2.8,2.25;]]..fe(time_data.formatted)..[[] container_end[] ]]) end mtimer.show_formspec.real_world_time_format = function (player_name) mtimer.show_formspec.real_time_universal(player_name, { time_type = 'real_time', formspec_name = 'mtimer:real_world_time_format', title = S('Real-World Time Format') }) end mtimer.show_formspec.session_start_time_format = function (player_name) mtimer.show_formspec.real_time_universal(player_name, { time_type = 'session_start_time', formspec_name = 'mtimer:session_start_time_format', title = S('Session Start Time Format') }) end mtimer.show_formspec.session_duration_format = function (player_name) local time_data = mtimer.get_times(player_name).session_duration minetest.show_formspec(player_name, 'mtimer:session_duration_format', build_frame(7, 5, S('Session Duration Format'))..[[ field_close_on_enter[format;false] field[0.25,0.75;7,1;format;;]]..fe(time_data.format)..[[] container[0,1.425] label[2.5,0;]]..S('Variable')..[[] label[4,0;]]..S('Current value')..[[] box[0,0.45;6.75,0.02;#ffffff] label[0,0.5;]]..S('Days')..[[] label[2.5,0.5;{days}] label[4,0.5;]]..time_data.days..[[] label[0,0.9;]]..S('Hours')..[[] label[2.5,0.9;{hours}] label[4,0.9;]]..time_data.hours..[[] label[0,1.3;]]..S('Minutes')..[[] label[2.5,1.3;{minutes}] label[4,1.3;]]..time_data.minutes..[[] label[0,1.7;]]..S('Seconds')..[[] label[2.5,1.7;{seconds}] label[4,1.7;]]..time_data.seconds..[[] box[0,2.2;6.75,0.02;#ffffff] label[0,2.25;]]..S('Current Result')..[[] label[2.5,2.25;]]..fe(time_data.formatted)..[[] container_end[] ]]) end mtimer.show_formspec.timer_format = function (player_name) local timer_data = mtimer.get_timer_data(player_name) minetest.show_formspec(player_name, 'mtimer:timer_format', build_frame(9, 5.8, S('Timer Format'))..[[ textarea[0.25,0.5;6,2.5;format;;]]..fe(timer_data.format)..[[] container[0,2.785] label[2.5,0;]]..S('Variable')..[[] label[4,0;]]..S('Current value')..[[] box[0,0.45;8.75,0.02;#ffffff] label[0,0.5;]]..S('Real-World Date')..[[] label[2.5,0.5;{rd}] label[4,0.5;]]..fe(timer_data.real_world_date)..[[] label[0,0.9;]]..S('In-Game Time')..[[] label[2.5,0.9;{it}] label[4,0.9;]]..fe(timer_data.ingame_time)..[[] label[0,1.3;]]..S('Session Start Time')..[[] label[2.5,1.3;{st}] label[4,1.3;]]..fe(timer_data.session_start_time)..[[] label[0,1.7;]]..S('Session Duration')..[[] label[2.5,1.7;{sd}] label[4,1.7;]]..fe(timer_data.session_duration)..[[] container_end[] container[6,0.45] button[0,0;3,1;apply;]]..S('Apply')..[[] container_end[] ]]) end