dreambuilder_game/mods/dreambuilder_theme_settings/init.lua

103 lines
4.6 KiB
Lua

-- all this does is preload the global fallback color settings
--
-- Colors can be changed with your local minetest.conf, or you can skip that
-- and instead add a whole theme mod to override the colors and images
-- supplied by this component.
--
-- Theme mods need to depend on this mod to inherit the user's color
-- settings and selected theme from their minetest.conf. This mod in turn
-- depends on `dreambuilder_theme_functions` for its global table.
-- This mod just supplies helpers to build slot backgrounds for mods that use formspec v1
dreambuilder_theme = {}
dreambuilder_theme.form_bgcolor = minetest.settings:get("dreambuilder_theme_form_bgcolor")
dreambuilder_theme.btn_color = minetest.settings:get("dreambuilder_theme_btn_color")
dreambuilder_theme.editor_text_color = minetest.settings:get("dreambuilder_theme_editor_text_color")
dreambuilder_theme.editor_bg_color = minetest.settings:get("dreambuilder_theme_editor_bg_color")
dreambuilder_theme.listcolor_slot_bg_normal = minetest.settings:get("dreambuilder_theme_listcolor_slot_bg_normal")
dreambuilder_theme.listcolor_slot_bg_hover = minetest.settings:get("dreambuilder_theme_listcolor_slot_bg_hover")
dreambuilder_theme.listcolor_slot_border = minetest.settings:get("dreambuilder_theme_listcolor_slot_border")
dreambuilder_theme.tooltip_bgcolor = minetest.settings:get("dreambuilder_theme_tooltip_bgcolor")
dreambuilder_theme.tooltip_fontcolor = minetest.settings:get("dreambuilder_theme_tooltip_fontcolor")
-- where these three are used, strings are needed, not actual bools.
dreambuilder_theme.window_darken = minetest.settings:get_bool("dreambuilder_theme_window_darken") and "true" or "false"
dreambuilder_theme.editor_border = minetest.settings:get_bool("dreambuilder_theme_editor_border") and "true" or "false"
dreambuilder_theme.image_button_borders = minetest.settings:get_bool("dreambuilder_theme_image_button_borders") and "true" or "false"
dreambuilder_theme.name = minetest.settings:get("dreambuilder_theme_name")
if not dreambuilder_theme.name or dreambuilder_theme.name == "" then
dreambuilder_theme.name = "dbtheme_light"
end
function dreambuilder_theme.single_slot_v1(xpos, ypos, bright)
return string.format("background9[%f,%f;%f,%f;%s_ui_single_slot%s.png;false;16]",
xpos, ypos, 1, 1.08, dreambuilder_theme.name, (bright and "_bright" or "") )
end
function dreambuilder_theme.make_inv_img_grid_v1(xpos, ypos, width, height, bright)
local tiled = {}
local n=1
for y = 0, (height - 1) do
for x = 0, (width -1) do
tiled[n] = dreambuilder_theme.single_slot_v1(xpos + x, ypos + y, bright)
n = n + 1
end
end
return table.concat(tiled)
end
-- copied shamelessly from default ;-)
function dreambuilder_theme.get_default_gui_bg(theme)
return "bgcolor["..theme.form_bgcolor..";"..theme.window_darken.."]"
end
function dreambuilder_theme.get_default_gui_survival_form(theme)
return "size[8,8.5]"..
dreambuilder_theme.get_default_gui_bg(theme)..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"list[current_player;craft;1.75,0.5;3,3;]"..
"list[current_player;craftpreview;5.75,1.5;1,1;]"..
"image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270]"..
"listring[current_player;main]"..
"listring[current_player;craft]"
end
function dreambuilder_theme.set_formspec_prepend(player, theme)
-- Set formspec prepend
local formspec =
default.gui_bg..
"listcolors["..theme.listcolor_slot_bg_normal..
";"..theme.listcolor_slot_bg_hover..
";"..theme.listcolor_slot_border..
";"..theme.tooltip_bgcolor..
";"..theme.tooltip_fontcolor.."]"..
"style_type[button;bgcolor="..theme.btn_color.."]"..
"style_type[button_exit;bgcolor="..theme.btn_color.."]"..
"style_type[image_button;bgcolor="..theme.btn_color..
";border="..theme.image_button_borders.."]"..
"style_type[image_button_exit;bgcolor="..theme.btn_color..
";border="..theme.image_button_borders.."]"..
"style_type[item_image_button;bgcolor="..theme.btn_color..
";border="..theme.image_button_borders.."]"
local name = player:get_player_name()
local info = minetest.get_player_information(name)
if info.formspec_version > 1 then
formspec = formspec .. "background9[5,5;1,1;"..theme.name.."_gui_formbg.png;true;10]"
else
formspec = formspec .. "background[5,5;1,1;"..theme.name.."_gui_formbg.png;true]"
end
player:set_formspec_prepend(formspec)
print(dump(formspec))
-- Set hotbar textures
player:hud_set_hotbar_image("gui_hotbar.png")
player:hud_set_hotbar_selected_image("gui_hotbar_selected.png")
end