cs / factorio /data /core /lualib /builder.lua
enemy7's picture
Upload 1553 files
898c672
raw
history blame
1.36 kB
module(..., package.seeall)
Builder = {}
function Builder:new(definition)
local obj = {}
setmetatable(obj, self)
self.__index = self
obj.actions = {}
obj.index = 1
obj.position = definition.position
obj.last_tick = definition.tick
return obj
end
function Builder:addbuild(builddata)
self.actions[#self.actions + 1] = builddata
end
function Builder:update(tick)
if self.index > #self.actions then return end
action = self.actions[self.index]
if tick < action.tick + self.last_tick then return end
-- perform action
self.position = action.positionfunction(self.position)
self.index = self.index + 1
game.surfaces["nauvis"].create_entity{name=action.name, position=self.position, direction=action.direction}
self.last_tick = self.last_tick + action.tick
end
function down(position) return {x=position.x, y=position.y + 1} end
function right(position) return {x=position.x + 1, y=position.y} end
builder = Builder:new({position={x=-12, y=30}, tick=game.tick})
for i = 1, 10 do
builder:addbuild{tick=5, name="transport-belt", positionfunction=right, direction=defines.direction.east}
end
builder:addbuild{tick=5, name="transport-belt", positionfunction=right, direction=defines.direction.south}
for i = 1, 10 do
builder:addbuild{tick=5, name="transport-belt", positionfunction=down, direction=defines.direction.south}
end