141 lines
4.0 KiB
Lua

--[[
game menu options for use with sfinv
--]]
local function toggle_music(player)
local m = player:get_attribute("music")
if not m or m == "1" then
music.stop(player)
m = "0"
minetest.chat_send_player(player:get_player_name(), "Music is now disabled.")
else
m = "1"
minetest.chat_send_player(player:get_player_name(), "Music is now enabled. Music playback will start later.")
end
player:set_attribute("music", m)
end
sfinv.register_page("menu:lobby", {
title = "Game",
is_in_nav = function(self, player, context)
local name = player:get_player_name()
return not boxes.players_editing_boxes[name] and not boxes.players_in_boxes[name]
end,
get = function(self, player, context)
return sfinv.make_formspec(player, context,
"button[0.5,0.5;4,0.6;music;Toggle music]" ..
sfinv.get_hotbar_bg(0,4.7) ..
sfinv.style.gui_bg .. sfinv.style.gui_bg_img .. sfinv.style.gui_slots
.. creative.formspec_add, true)
end,
on_player_receive_fields = function(self, player, context, fields)
if fields.music then
toggle_music(player)
end
return
end,
})
sfinv.register_page("menu:edit", {
title = "Game",
is_in_nav = function(self, player, context)
local name = player:get_player_name()
return boxes.players_editing_boxes[name]
end,
get = function(self, player, context)
local box = boxes.players_editing_boxes[player:get_player_name()]
local name_edit = ""
if box and box.box_name ~= nil then
name_edit = "field[0.8,2.6;4,0.6;box_name;Box name;" ..
minetest.formspec_escape(box.box_name) ..
"]"
end
local skyboxnr = 0
if box and box.skybox then
skyboxnr = box.skybox
end
local skybox =
"label[0.5,2.9;Sky box:]" ..
"dropdown[0.5,3.3;4.0;skybox;" ..
"0 - off," ..
"1 - Dark and Stormy," ..
"2 - Cloudy with light rays," ..
"3 - Full Moon," ..
"4 - Sunset," ..
"5 - Thick clouds over water," ..
"6 - Tropical sunny day" ..
";" .. tostring(skyboxnr + 1) .."]"
return sfinv.make_formspec(player, context,
"button[0.5,0.5;4,0.6;save;Save this box]" ..
"button[0.5,1.3;4,0.6;stopedit;Stop editing this box]" ..
name_edit ..
skybox ..
"button[0.5,4.2;4,0.6;music;Toggle music]" ..
sfinv.style.gui_bg .. sfinv.style.gui_bg_img .. sfinv.style.gui_slots, false)
end,
on_player_receive_fields = function(self, player, context, fields)
if fields.stopedit then
minetest.close_formspec(player:get_player_name(), "")
boxes.save_edit(player)
boxes.stop_edit(player)
music.stop(player)
players.return_to_lobby(player)
return
end
-- don't elseif here - if text fields change we want to save them anyway.
if fields.save then
minetest.close_formspec(player:get_player_name(), "")
boxes.save_edit(player)
end
if fields.skybox then
local number = tonumber(fields.skybox:sub(1,1))
skybox.set(player, number)
boxes.players_editing_boxes[player:get_player_name()].skybox = number
end
if fields.box_name then
boxes.players_editing_boxes[player:get_player_name()].box_name = fields.box_name
sfinv.set_player_inventory_formspec(player)
end
if fields.music then
toggle_music(player)
end
end,
})
sfinv.register_page("menu:play", {
title = "Game",
is_in_nav = function(self, player, context)
local name = player:get_player_name()
return boxes.players_in_boxes[name]
end,
get = function(self, player, context)
local leave_btn = "button[0.5,0.5;4,0.6;leave;Leave this box]"
if conf.tutorial.required then
if player:get_attribute("tutorial_completed") ~= "1" then
leave_btn = ""
end
end
return sfinv.make_formspec(player, context,
leave_btn ..
"button[0.5,1.3;4,0.6;music;Toggle music]" ..
sfinv.get_hotbar_bg(0,4.7) ..
sfinv.style.gui_bg .. sfinv.style.gui_bg_img .. sfinv.style.gui_slots
.. creative.formspec_add, true)
end,
on_player_receive_fields = function(self, player, context, fields)
if fields.leave then
music.stop(player)
minetest.close_formspec(player:get_player_name(), "")
boxes.close_box(player)
players.return_to_lobby(player)
end
if fields.music then
toggle_music(player)
end
end,
})