v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
56
assets/devel/objects/pump/pump.lua
Normal file
56
assets/devel/objects/pump/pump.lua
Normal file
|
@ -0,0 +1,56 @@
|
|||
require "/scripts/vec2.lua"
|
||||
|
||||
function init()
|
||||
self.inputPosition = config.getParameter("inputPosition")
|
||||
self.outputPosition = config.getParameter("outputPosition")
|
||||
|
||||
if object.direction() < 0 then
|
||||
self.inputPosition, self.outputPosition = self.outputPosition, self.inputPosition
|
||||
end
|
||||
|
||||
local pos = entity.position()
|
||||
self.inputPosition = vec2.add(vec2.add(self.inputPosition, pos), {0.5, 0.5})
|
||||
self.outputPosition = vec2.add(vec2.add(self.outputPosition, pos), {0.5, 0.5})
|
||||
|
||||
self.pumpTimer = 0
|
||||
self.pumpFrequency = config.getParameter("pumpFrequency", 0.25)
|
||||
|
||||
storage.pumping = storage.pumping or false
|
||||
end
|
||||
|
||||
function update(dt)
|
||||
-- world.debugPoint(self.inputPosition, "blue")
|
||||
-- world.debugPoint(self.outputPosition, "green")
|
||||
|
||||
if object.isInputNodeConnected(0) then
|
||||
object.setInteractive(false)
|
||||
storage.pumping = object.getInputNodeLevel(0)
|
||||
else
|
||||
object.setInteractive(true)
|
||||
end
|
||||
|
||||
local pumpAnimationState = storage.pumping and ((world.liquidAt(self.inputPosition) and not world.pointCollision(self.outputPosition)) and "pump" or "error") or "idle"
|
||||
animator.setAnimationState("pumping", pumpAnimationState)
|
||||
|
||||
self.pumpTimer = math.max(0, self.pumpTimer - dt)
|
||||
if storage.pumping and self.pumpTimer == 0 then
|
||||
pump()
|
||||
self.pumpTimer = self.pumpFrequency
|
||||
end
|
||||
end
|
||||
|
||||
function onInteraction(args)
|
||||
storage.pumping = not storage.pumping
|
||||
end
|
||||
|
||||
function uninit()
|
||||
|
||||
end
|
||||
|
||||
function pump()
|
||||
local liquid = world.liquidAt(self.inputPosition)
|
||||
if liquid and not world.pointCollision(self.outputPosition) then
|
||||
world.destroyLiquid(self.inputPosition)
|
||||
world.spawnLiquid(self.outputPosition, table.unpack(liquid))
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue