141 lines
4.0 KiB
Lua
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,
|
|
})
|
|
|