88 lines
2.5 KiB
Lua
88 lines
2.5 KiB
Lua
require "strings"
|
|
require "sprites"
|
|
|
|
function copyObject(category, name, newname)
|
|
log("Cloning object '" .. category .. "/" .. name .. "' into '" .. newname .. "'...")
|
|
local base = data.raw[category][name]
|
|
if not base then error("Object data.raw[" .. category .. "][" .. name .. "] does not exist!") end
|
|
local obj = table.deepcopy(base)
|
|
if obj.minable then
|
|
obj.minable.result = newname
|
|
end
|
|
if obj.mineable then
|
|
obj.mineable.result = newname
|
|
end
|
|
if obj.place_result then
|
|
obj.place_result = newname
|
|
end
|
|
if obj.result then
|
|
obj.result = newname
|
|
end
|
|
if obj.order then
|
|
obj.order = literalReplace(obj.order, "[" .. obj.name .. "]", "[" .. newname .. "]")
|
|
end
|
|
obj.name = newname
|
|
return obj
|
|
end
|
|
|
|
function createSignalOutput(modname, name, signalname)
|
|
local obj = copyObject("constant-combinator", "constant-combinator", name)
|
|
replaceSpritesDynamic(modname, "constant-combinator", obj)
|
|
local item = copyObject("item", "constant-combinator", name)
|
|
replaceSpritesDynamic(modname, "constant-combinator", item)
|
|
local signal = copyObject("virtual-signal", "signal-everything", signalname)
|
|
signal.icon = "__" .. modname .. "__/graphics/icons/" .. signalname .. ".png"
|
|
return {entity = obj, item = item, signal = signal}
|
|
end
|
|
|
|
local function createCircuitConnections()
|
|
local ret = {
|
|
shadow = {
|
|
red = {0.375, 0.5625},
|
|
green = {-0.125, 0.5625}
|
|
},
|
|
wire = {
|
|
red = {0.375, 0.15625},
|
|
green = {-0.125, 0.15625}
|
|
}
|
|
}
|
|
return ret
|
|
end
|
|
|
|
function createFixedSignalAnchor(name, spr)
|
|
local obj = copyObject("constant-combinator", "constant-combinator", name)
|
|
|
|
obj.sprites = {
|
|
north = createCircuitSprite(),
|
|
west = createCircuitSprite(),
|
|
east = createCircuitSprite(),
|
|
south = createCircuitSprite(),
|
|
}
|
|
|
|
obj.activity_led_sprites = {
|
|
north = createCircuitActivitySprite(),
|
|
west = createCircuitActivitySprite(),
|
|
east = createCircuitActivitySprite(),
|
|
south = createCircuitActivitySprite(),
|
|
}
|
|
|
|
obj.circuit_wire_connection_points = {
|
|
createCircuitConnections(),
|
|
createCircuitConnections(),
|
|
createCircuitConnections(),
|
|
createCircuitConnections(),
|
|
}
|
|
|
|
--obj.selectable_in_game = false
|
|
obj.destructible = false
|
|
obj.collision_box = nil
|
|
obj.max_health = 100
|
|
obj.collision_mask = nil
|
|
obj.minable = nil
|
|
obj.order = "z"
|
|
obj.flags = {"placeable-neutral", "player-creation", "not-on-map", "placeable-off-grid", "not-blueprintable", "not-deconstructable"}
|
|
obj.selection_priority = 254
|
|
|
|
return obj
|
|
end
|