------------------------------------------------------------------------------------------------------------------------------------------------------ -- DEADLOCK'S INDUSTRIAL DISPLAYS -- Forked from Industrial Revolution, for your signage pleasure ------------------------------------------------------------------------------------------------------------------------------------------------------ -- constants local DID = require("globals") ------------------------------------------------------------------------------------------------------------------------------------------------------ -- functions local function get_icon_path(name, icon_size) return string.format("%s/%s/%s.png", DID.icon_path, tostring(icon_size or DID.icon_size), name) end ------------------------------------------------------------------------------------------------------------------------------------------------------ -- prototypes local dimensions = { [1] = {width = 80, height = 80}, [2] = {width = 134, height = 134}, [3] = {width = 196, height = 196}, } local shadow_dimensions = { [1] = {width = 80, height = 80, sprite = "display-shadow-small"}, [2] = {width = 146, height = 134, sprite = "display-shadow-medium"}, [3] = {width = 204, height = 204, sprite = "display-shadow"}, } data:extend({{ name = "display-plates", type = "item-subgroup", group = "logistics", order = "z[display-plates]" }}) local count = 1 for display,displaydata in pairs(DID.displays) do local size = (string.find(display,"small") and 1) or (string.find(display,"medium") and 2) or 3 local box_size = size * 0.5 data:extend({ { name = display, type = "simple-entity-with-owner", localised_description = {"entity-description.display"}, render_layer = "lower-object", icon = get_icon_path(display), icon_size = DID.icon_size, icon_mipmaps = DID.icon_mipmaps, corpse = "small-remnants", fast_replaceable_group = "display", minable = { mining_time = 0.2, result = display, }, max_health = 10 + size * 30, flags = {"placeable-player", "placeable-neutral", "player-creation", "not-rotatable"}, collision_box = { {-box_size+0.1, -box_size+0.1}, {box_size-0.1, box_size-0.1} }, selection_box = { {-box_size, -box_size}, {box_size, box_size} }, collision_mask = { "object-layer", "water-tile", }, open_sound = { filename = DID.base_sound_path.."/machine-open.ogg", volume = 0.5 }, close_sound = { filename = DID.base_sound_path.."/machine-close.ogg", volume = 0.5 }, mined_sound = { filename = DID.core_sound_path.."/deconstruct-medium.ogg" }, resistances = { { type = "fire", percent = 75 }, }, picture = { layers = { { filename = string.format("%s/"..display..".png", DID.sprites_path), priority = "high", shift = {0,0}, height = dimensions[size].height, width = dimensions[size].width, scale = 0.5, }, { filename = string.format("%s/%s.png", DID.sprites_path, shadow_dimensions[size].sprite), priority = "high", shift = {0,0}, height = shadow_dimensions[size].height, width = shadow_dimensions[size].width, scale = 0.5, draw_as_shadow = true, }, } }, random_variation_on_create = false, }, { type = "item", name = display, order = "z["..count.."]", subgroup = "display-plates", stack_size = 100, icon = get_icon_path(display), icon_size = DID.icon_size, icon_mipmaps = DID.icon_mipmaps, place_result = display, }, { type = "recipe", name = display, order = "z["..count.."]", result = display, result_count = 1, category = "crafting", enabled = (mods["IndustrialRevolution"] and (displaydata.IR_unlock == nil)) or (not mods["IndustrialRevolution"] and displaydata.unlock == nil), ingredients = displaydata.ingredients, energy_required = 1, } }) count = count + 1 end ------------------------------------------------------------------------------------------------------------------------------------------------------ -- styles local function add_styles(styles) local default_styles = data.raw["gui-style"]["default"] for name, style in pairs(styles) do default_styles[name] = style end end add_styles({ display_tabbed_pane = { tab_container = { horizontal_spacing = 0, left_padding = 0, right_padding = 0, horizontal_align = "center", type = "horizontal_flow_style", }, tab_content_frame = { bottom_padding = 8, left_padding = 10, right_padding = 10, top_padding = 8, type = "frame_style", graphical_set = data.raw["gui-style"]["default"]["filter_tabbed_pane"]["tab_content_frame"].graphical_set, }, type = "tabbed_pane_style", parent = "filter_tabbed_pane", width = 420, }, display_tab = { type = "tab_style", parent = "filter_group_tab", font = "did-tab-font", top_padding = 8, bottom_padding = 8, minimal_width = 32, horizontally_stretchable = "on", horizontally_squashable = "on", }, display_frame = { type = "frame_style", parent = "frame", bottom_padding = 8, vertical_flow_style = { type = "vertical_flow_style", vertical_spacing = 0, horizontal_align = "center", }, }, display_inside_frame = { type = "frame_style", parent = "inside_shallow_frame", vertical_flow_style = { type = "vertical_flow_style", vertical_spacing = 0, horizontal_align = "center", }, }, display_tab_deep_frame = { type = "frame_style", parent = "slot_button_deep_frame", }, display_buttons = { type = "table_style", horizontal_spacing = 0, vertical_spacing = 0, }, display_button_selected = { type = "button_style", parent = "quick_bar_slot_button", default_graphical_set = data.raw["gui-style"]["default"]["slot_button"].selected_graphical_set }, display_fake_header = { type = "frame_style", height = 24, graphical_set = data.raw["gui-style"]["default"]["draggable_space"].graphical_set, use_header_filler = false, horizontally_stretchable = "on", vertical_align = "center", alignment = "right", left_margin = data.raw["gui-style"]["default"]["draggable_space"].left_margin, right_margin = data.raw["gui-style"]["default"]["draggable_space"].right_margin, }, display_small_button = { type = "button_style", parent = "frame_action_button", left_margin = 1, right_margin = 1, }, display_small_button_active = { type = "button_style", parent = "display_small_button", default_graphical_set = data.raw["gui-style"]["default"]["frame_button"].clicked_graphical_set, }, }) ------------------------------------------------------------------------------------------------------------------------------------------------------ -- controls / misc media data:extend({ { type = "custom-input", name = "deadlock-open-gui", key_sequence = "", linked_game_control = "open-gui", }, { type = "custom-input", name = "deadlock-focus-search", key_sequence = "", linked_game_control = "focus-search", }, { type = "font", name = "did-tab-font", from = "default", size = 32, }, { type = "sprite", name = "display-map-marker", filename = get_icon_path("map-marker",32), priority = "extra-high", width = 32, height = 32, flags = {"gui-icon"}, }, { type = "sound", name = "map-marker-ping", variations = { filename = DID.sound_path.."/ping.ogg", volume = 0.9 } }, { type = "sound", name = "map-marker-pong", variations = { filename = DID.sound_path.."/pong.ogg", volume = 0.9 } }, }) ------------------------------------------------------------------------------------------------------------------------------------------------------