This commit is contained in:
Aria 2025-03-21 22:23:30 +11:00
commit 9c94d113d3
Signed by untrusted user who does not match committer: aria
GPG key ID: 19AB7AA462B8AB3B
10260 changed files with 1237388 additions and 0 deletions

View 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