1
0
This repository has been archived on 2023-04-11. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Deadlock989 1a7717e03a Make plate entities non-rotatable
In 1.1, SimpleEntityWithForce was changed to have four directions. The plate entity doesn't have different directions but the R key still makes the sound and changes the orientation. Adding this flag turns that behaviour off. Since it's square it doesn't matter that it doesn't rotate in blueprints etc.
2021-01-07 15:28:42 +00:00

287 lines
8.6 KiB
Lua

------------------------------------------------------------------------------------------------------------------------------------------------------
-- 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
}
},
})
------------------------------------------------------------------------------------------------------------------------------------------------------