Files
project-cybersyn/cybersyn/prototypes/gui-style.lua
2024-10-22 14:58:06 -04:00

408 lines
10 KiB
Lua

local constants = require("constants")
local data_util = require("__flib__.data-util")
local util = {}
for key, value in pairs(require("__core__.lualib.util")) do
util[key] = value
end
util.paths = {
nav_icons = "__cybersyn__/graphics/gui/frame-action-icons.png",
shortcut_icons = "__cybersyn__/graphics/shortcut/ltn-manager-shortcut.png",
}
util.empty_checkmark = {
filename = data_util.empty_image,
priority = "very-low",
width = 1,
height = 1,
frame_count = 1,
scale = 8,
}
data:extend({
data_util.build_sprite("ltnm_pin_black", { 0, 32 }, util.paths.nav_icons, 32),
data_util.build_sprite("ltnm_pin_white", { 32, 32 }, util.paths.nav_icons, 32),
data_util.build_sprite("ltnm_refresh_black", { 0, 0 }, util.paths.nav_icons, 32),
data_util.build_sprite("ltnm_refresh_white", { 32, 0 }, util.paths.nav_icons, 32),
})
local styles = data.raw["gui-style"]["default"]
-- local depot_button_height = 89
-- BUTTON STYLES
-- smaller flib slot buttons
for _, color in ipairs({ "default", "red", "green", "blue" }) do
styles["ltnm_small_slot_button_" .. color] = {
type = "button_style",
parent = "flib_slot_button_" .. color,
size = 36,
}
styles["ltnm_selected_small_slot_button_" .. color] = {
type = "button_style",
parent = "flib_selected_slot_button_" .. color,
size = 36,
}
end
styles.ltnm_train_minimap_button = {
type = "button_style",
parent = "button",
size = 90,
default_graphical_set = {},
hovered_graphical_set = {
base = { position = { 81, 80 }, size = 1, opacity = 0.7 },
},
clicked_graphical_set = { position = { 70, 146 }, size = 1, opacity = 0.7 },
}
-- CHECKBOX STYLES
-- inactive is grey until hovered
-- checked = ascending, unchecked = descending
styles.ltnm_sort_checkbox = {
type = "checkbox_style",
font = "default-bold",
-- font_color = bold_font_color,
padding = 0,
default_graphical_set = {
filename = "__core__/graphics/arrows/table-header-sort-arrow-down-white.png",
size = { 16, 16 },
scale = 0.5,
},
hovered_graphical_set = {
filename = "__core__/graphics/arrows/table-header-sort-arrow-down-hover.png",
size = { 16, 16 },
scale = 0.5,
},
clicked_graphical_set = {
filename = "__core__/graphics/arrows/table-header-sort-arrow-down-white.png",
size = { 16, 16 },
scale = 0.5,
},
disabled_graphical_set = {
filename = "__core__/graphics/arrows/table-header-sort-arrow-down-white.png",
size = { 16, 16 },
scale = 0.5,
},
selected_graphical_set = {
filename = "__core__/graphics/arrows/table-header-sort-arrow-up-white.png",
size = { 16, 16 },
scale = 0.5,
},
selected_hovered_graphical_set = {
filename = "__core__/graphics/arrows/table-header-sort-arrow-up-hover.png",
size = { 16, 16 },
scale = 0.5,
},
selected_clicked_graphical_set = {
filename = "__core__/graphics/arrows/table-header-sort-arrow-up-white.png",
size = { 16, 16 },
scale = 0.5,
},
selected_disabled_graphical_set = {
filename = "__core__/graphics/arrows/table-header-sort-arrow-up-white.png",
size = { 16, 16 },
scale = 0.5,
},
checkmark = util.empty_checkmark,
disabled_checkmark = util.empty_checkmark,
text_padding = 5,
}
-- selected is orange by default
styles.ltnm_selected_sort_checkbox = {
type = "checkbox_style",
parent = "ltnm_sort_checkbox",
-- font_color = bold_font_color,
default_graphical_set = {
filename = "__core__/graphics/arrows/table-header-sort-arrow-down-active.png",
size = { 16, 16 },
scale = 0.5,
},
selected_graphical_set = {
filename = "__core__/graphics/arrows/table-header-sort-arrow-up-active.png",
size = { 16, 16 },
scale = 0.5,
},
}
-- FLOW STYLES
styles.ltnm_warning_flow = {
type = "horizontal_flow_style",
padding = 12,
horizontal_align = "center",
vertical_align = "center",
vertical_spacing = 8,
horizontally_stretchable = "on",
vertically_stretchable = "on",
}
-- FRAME STYLES
styles.ltnm_main_content_frame = {
type = "frame_style",
parent = "deep_frame_in_shallow_frame",
height = constants.gui_content_frame_height,
}
styles.ltnm_main_toolbar_frame = {
type = "frame_style",
parent = "subheader_frame",
bottom_margin = 12,
horizontal_flow_style = {
type = "horizontal_flow_style",
horizontal_spacing = 12,
vertical_align = "center",
},
}
styles.ltnm_small_slot_table_frame_light = {
type = "frame_style",
parent = "ltnm_table_inset_frame_light",
minimal_height = 36,
background_graphical_set = {
base = {
position = { 282, 17 },
corner_size = 8,
overall_tiling_horizontal_padding = 4,
overall_tiling_horizontal_size = 28,
overall_tiling_horizontal_spacing = 8,
overall_tiling_vertical_padding = 4,
overall_tiling_vertical_size = 28,
overall_tiling_vertical_spacing = 8,
},
},
}
styles.ltnm_small_slot_table_frame_dark = {
type = "frame_style",
parent = "ltnm_table_inset_frame_dark",
minimal_height = 36,
background_graphical_set = {
base = {
position = { 282, 17 },
corner_size = 8,
overall_tiling_horizontal_padding = 4,
overall_tiling_horizontal_size = 28,
overall_tiling_horizontal_spacing = 8,
overall_tiling_vertical_padding = 4,
overall_tiling_vertical_size = 28,
overall_tiling_vertical_spacing = 8,
},
},
}
styles.ltnm_table_inset_frame_light = {
type = "frame_style",
parent = "deep_frame_in_shallow_frame",
}
styles.ltnm_table_inset_frame_dark = {
type = "frame_style",
parent = "deep_frame_in_shallow_frame",
graphical_set = {
base = {
position = { 51, 0 },
corner_size = 8,
center = { position = { 42, 8 }, size = { 1, 1 } },
draw_type = "outer",
},
shadow = default_inner_shadow,
},
}
styles.ltnm_table_row_frame_light = {
type = "frame_style",
--parent = "statistics_table_item_frame",
--this is likely incorrect, unsure what the 2.0 equivalent is
parent = "neutral_message_frame",
top_padding = 8,
bottom_padding = 8,
left_padding = 8,
right_padding = 8,
minimal_height = 52,
horizontal_flow_style = {
type = "horizontal_flow_style",
vertical_align = "center",
horizontal_spacing = 10,
horizontally_stretchable = "on",
},
graphical_set = {
base = {
center = { position = { 76, 8 }, size = { 1, 1 } },
-- bottom = {position = {8, 40}, size = {1, 8}},
},
},
}
styles.ltnm_table_row_frame_dark = {
type = "frame_style",
parent = "ltnm_table_row_frame_light",
-- graphical_set = {
-- base = {bottom = {position = {8, 40}, size = {1, 8}}},
-- },
graphical_set = {},
}
styles.ltnm_table_toolbar_frame = {
type = "frame_style",
parent = "subheader_frame",
left_padding = 9,
right_padding = 7 + 12, -- For scrollbar
horizontally_stretchable = "on", -- FIXME: This causes the GUI to jump when the scrollbar appears
horizontal_flow_style = {
type = "horizontal_flow_style",
horizontal_spacing = 10,
vertical_align = "center",
},
}
styles.ltnm_main_warning_frame = {
type = "frame_style",
parent = "deep_frame_in_shallow_frame",
height = constants.gui_content_frame_height,
graphical_set = {
base = {
position = { 85, 0 },
corner_size = 8,
center = { position = { 411, 25 }, size = { 1, 1 } },
draw_type = "outer",
},
shadow = default_inner_shadow,
},
}
-- LABEL STYLES
--I am unsure what this was supposed to be in 1.1
local default_orange_color = {
r = 255,
g = 128,
b = 0
}
local hovered_label_color = {
r = 0.5 * (1 + default_orange_color.r),
g = 0.5 * (1 + default_orange_color.g),
b = 0.5 * (1 + default_orange_color.b),
}
styles.ltnm_clickable_semibold_label = {
type = "label_style",
parent = "ltnm_semibold_label",
hovered_font_color = hovered_label_color,
disabled_font_color = hovered_label_color,
}
styles.ltnm_minimap_label = {
type = "label_style",
font = "default-game",
font_color = default_font_color,
size = 90,
vertical_align = "bottom",
horizontal_align = "right",
right_padding = 4,
}
styles.ltnm_semibold_label = {
type = "label_style",
font = "default-semibold",
}
-- MINIMAP STYLES
styles.ltnm_train_minimap = {
type = "minimap_style",
size = 90,
}
-- SCROLL PANE STYLES
styles.ltnm_table_scroll_pane = {
type = "scroll_pane_style",
parent = "flib_naked_scroll_pane_no_padding",
vertical_flow_style = {
type = "vertical_flow_style",
vertical_spacing = 0,
},
}
styles.ltnm_slot_table_scroll_pane = {
type = "scroll_pane_style",
parent = "flib_naked_scroll_pane_no_padding",
horizontally_squashable = "off",
background_graphical_set = {
base = {
position = { 282, 17 },
corner_size = 8,
overall_tiling_horizontal_padding = 4,
overall_tiling_horizontal_size = 32,
overall_tiling_horizontal_spacing = 8,
overall_tiling_vertical_padding = 4,
overall_tiling_vertical_size = 32,
overall_tiling_vertical_spacing = 8,
},
},
}
-- TABBED PANE STYLES
styles.ltnm_tabbed_pane = {
type = "tabbed_pane_style",
tab_content_frame = {
type = "frame_style",
parent = "tabbed_pane_frame",
left_padding = 12,
right_padding = 12,
bottom_padding = 8,
},
}
if settings.startup["cybersyn-manager-enabled"].value then
data:extend({
-- custom inputs
{
type = "custom-input",
name = "cybersyn-toggle-gui",
key_sequence = "CONTROL + T",
action = "lua",
},
--{
-- type = "custom-input",
-- name = "ltnm-linked-focus-search",
-- key_sequence = "",
-- linked_game_control = "focus-search",
--},
-- shortcuts
{
type = "shortcut",
name = "cybersyn-toggle-gui",
icon = "__cybersyn__/graphics/shortcut/shortcut_icon.png",
icon_size = 32,
small_icon = "__cybersyn__/graphics/shortcut/shortcut_icon.png",
small_icon_size = 24,
--icon = data_util.build_sprite("nil", { 0, 0 }, util.paths.shortcut_icons, 32, 2),
--disabled_icon = data_util.build_sprite(nil, { 48, 0 }, util.paths.shortcut_icons, 32, 2),
--small_icon = data_util.build_sprite(nil, { 0, 32 }, util.paths.shortcut_icons, 24, 2),
--disabled_small_icon = data_util.build_sprite(nil, { 36, 32 }, util.paths.shortcut_icons, 24, 2),
toggleable = true,
action = "lua",
associated_control_input = "cybersyn-toggle-gui",
technology_to_unlock = "cybersyn-train-network",
},
})
end