Add WIP graphics settings form
This commit is contained in:
parent
900c2eb408
commit
4fac7e52a4
@ -21,6 +21,7 @@ lzr_globals.MENU_SHIP_STARTBOOK_OFFSET = vector.new(7, 10, 31)
|
||||
lzr_globals.MENU_SHIP_CUSTOMBOOK_OFFSET = vector.new(8, 10, 31)
|
||||
lzr_globals.MENU_SHIP_EDITOR_OFFSET = vector.new(13, 10, 31)
|
||||
lzr_globals.MENU_SHIP_SPEAKER_OFFSET = vector.new(6, 9, 25)
|
||||
lzr_globals.MENU_SHIP_TELEVISION_OFFSET = vector.new(5, 9, 25)
|
||||
lzr_globals.MENU_PLAYER_SPAWN_POS = vector.add(lzr_globals.MENU_SHIP_POS, lzr_globals.MENU_SHIP_PLAYER_SPAWN_OFFSET)
|
||||
lzr_globals.WATER_LEVEL = 0
|
||||
lzr_globals.SEABED_LEVEL = -1000
|
||||
|
@ -1,4 +1,5 @@
|
||||
local S = minetest.get_translator("lzr_menu")
|
||||
local FS = function(...) return minetest.formspec_escape(S(...)) end
|
||||
|
||||
local SPEAKER_POS = vector.add(lzr_globals.MENU_SHIP_POS, lzr_globals.MENU_SHIP_SPEAKER_OFFSET)
|
||||
|
||||
@ -8,6 +9,7 @@ local build_ship = function(pos)
|
||||
minetest.set_node(vector.add(lzr_globals.MENU_SHIP_POS, lzr_globals.MENU_SHIP_CUSTOMBOOK_OFFSET), {name="lzr_menu:startbook_custom", param2=0})
|
||||
minetest.set_node(vector.add(lzr_globals.MENU_SHIP_POS, lzr_globals.MENU_SHIP_EDITOR_OFFSET), {name="lzr_menu:editorbook", param2=3})
|
||||
minetest.set_node(SPEAKER_POS, {name="lzr_menu:speaker", param2=2})
|
||||
minetest.set_node(vector.add(lzr_globals.MENU_SHIP_POS, lzr_globals.MENU_SHIP_TELEVISION_OFFSET), {name="lzr_menu:television", param2=2})
|
||||
end
|
||||
|
||||
local emerge_callback = function(blockpos, action, calls_remaining, param)
|
||||
@ -238,6 +240,98 @@ lzr_ambience.register_on_ambience_change(function(state)
|
||||
update_speaker_infotext(SPEAKER_POS)
|
||||
end)
|
||||
|
||||
local graphics_settings_initial_state = {
|
||||
opaque_lasers = minetest.settings:get_bool("lzr_opaque_lasers", false),
|
||||
patterned_lasers = minetest.settings:get_bool("lzr_patterned_lasers", false),
|
||||
}
|
||||
local graphics_settings_state = table.copy(graphics_settings_initial_state)
|
||||
|
||||
local open_graphics_settings = function(player)
|
||||
local form = "formspec_version[4]size[10,10]"..
|
||||
"checkbox[1,1;opaque_lasers;"..FS("Opaque lasers")..";"..tostring(graphics_settings_state.opaque_lasers).."]"..
|
||||
"checkbox[1,2;patterned_lasers;"..FS("Laser color patterns")..";"..tostring(graphics_settings_state.patterned_lasers).."]"..
|
||||
"tooltip[patterned_lasers;"..FS("If activated, special patterns will be drawn on the lasers, one for each color. Helps to distinguish lasers without relying on color alone").."]"..
|
||||
"button_exit[1,4;3,1;apply;"..FS("Apply").."]"..
|
||||
"button_exit[5,4;3,1;cancel;"..FS("Cancel").."]"
|
||||
minetest.show_formspec(player:get_player_name(), "lzr_menu:graphics_settings", form)
|
||||
end
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname == "lzr_menu:graphics_settings" then
|
||||
if fields.opaque_lasers == "true" then
|
||||
graphics_settings_state.opaque_lasers = true
|
||||
elseif fields.opaque_lasers == "false" then
|
||||
graphics_settings_state.opaque_lasers = false
|
||||
end
|
||||
if fields.patterned_lasers == "true" then
|
||||
graphics_settings_state.patterned_lasers = true
|
||||
elseif fields.patterned_lasers == "false" then
|
||||
graphics_settings_state.patterned_lasers = false
|
||||
end
|
||||
if fields.quit then
|
||||
if fields.apply then
|
||||
if graphics_settings_initial_state.opaque_lasers == graphics_settings_state.opaque_lasers and
|
||||
graphics_settings_initial_state.patterned_lasers == graphics_settings_state.patterned_lasers then
|
||||
minetest.log("error", "INO")
|
||||
-- Nothing has changed: Nothing to do.
|
||||
return
|
||||
end
|
||||
minetest.log("error", "IN")
|
||||
|
||||
minetest.settings:set_bool("lzr_opaque_lasers", graphics_settings_state.opaque_lasers)
|
||||
minetest.settings:set_bool("lzr_patterned_lasers", graphics_settings_state.patterned_lasers)
|
||||
|
||||
local form = "formspec_version[4]size[6,3]"..
|
||||
"label[1,1;"..FS("The game needs to be restarted for the new graphics settings to take effect.").."]"..
|
||||
"button_exit[1,3;3,1;restart;"..FS("Restart now").."]"..
|
||||
"button_exit[6,3;3,1;cancel;"..FS("Keep playing").."]"
|
||||
minetest.show_formspec(player:get_player_name(), "lzr_menu:confirm_restart", form)
|
||||
else
|
||||
graphics_settings_state = {
|
||||
opaque_lasers = tostring(minetest.settings:get_bool("lzr_opaque_lasers", false)),
|
||||
patterned_lasers = tostring(minetest.settings:get_bool("lzr_patterned_lasers", false)),
|
||||
}
|
||||
end
|
||||
end
|
||||
elseif formname == "lzr_menu:confirm_restart" then
|
||||
if fields.restart then
|
||||
minetest.disconnect_player(player, S("Start the game again for the settings to take effect."))
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
local function on_rightclick_television(_, _, player)
|
||||
open_graphics_settings(player)
|
||||
end
|
||||
local function on_punch_television(_, _, player)
|
||||
open_graphics_settings(player)
|
||||
end
|
||||
|
||||
-- Television to update graphics settings
|
||||
minetest.register_node("lzr_menu:television", {
|
||||
description = S("Television"),
|
||||
tiles = {
|
||||
"xdecor_television_left.png",
|
||||
"xdecor_television_left.png",
|
||||
"xdecor_television_left.png",
|
||||
"xdecor_television_left.png",
|
||||
"xdecor_television_back.png",
|
||||
{ name = "xdecor_television_front_animated.png", animation = { type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 1 } },
|
||||
},
|
||||
paramtype2 = "4dir",
|
||||
groups = { breakable = 1, rotatable = 1, not_in_creative_inventory = 1},
|
||||
sounds = lzr_sounds.node_sound_metal_defaults(),
|
||||
is_ground_content = false,
|
||||
on_punch = on_punch_television,
|
||||
on_rightclick = on_rightclick_television,
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("infotext", S("Change graphics settings"))
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
|
||||
lzr_gamestate.register_on_enter_state(function(state)
|
||||
if state == lzr_gamestate.MENU then
|
||||
local player = minetest.get_player_by_name("singleplayer")
|
||||
|
BIN
mods/lzr_menu/textures/xdecor_television_back.png
Normal file
BIN
mods/lzr_menu/textures/xdecor_television_back.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 146 B |
BIN
mods/lzr_menu/textures/xdecor_television_front_animated.png
Normal file
BIN
mods/lzr_menu/textures/xdecor_television_front_animated.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
BIN
mods/lzr_menu/textures/xdecor_television_left.png
Normal file
BIN
mods/lzr_menu/textures/xdecor_television_left.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 92 B |
Loading…
x
Reference in New Issue
Block a user