68 lines
1.6 KiB
Plaintext
68 lines
1.6 KiB
Plaintext
Fluid = require "Fluid"
|
|
Mix = require "Mix"
|
|
|
|
volume = 4.2e12
|
|
air = { nitrogen: 0.775, oxygen: 0.21, argon: 0.01, co2: 0.005 }
|
|
earth = Fluid(volume)
|
|
for type, amount in pairs air
|
|
earth\add type, volume * amount
|
|
|
|
-- print "pressure", earth\pressure!
|
|
-- for type, amount in pairs earth.contents
|
|
-- print type, earth\percent(type), amount
|
|
|
|
ship = Fluid 600
|
|
for type, amount in pairs air
|
|
ship\add type, 600 * amount
|
|
|
|
h2tank = Fluid 40
|
|
h2tank\add "hydrogen", 40 * 6 -- volume * desired pressure
|
|
o2tank = Fluid 20
|
|
o2tank\add "oxygen", 20 * 12
|
|
mixes = { Mix(ship, h2tank), Mix(ship, o2tank) }
|
|
|
|
mixing = false
|
|
time,frequency = 0, 1/60
|
|
love.update = (dt) ->
|
|
if mixing
|
|
time += dt
|
|
if time >= frequency
|
|
time -= frequency
|
|
for mix in *mixes
|
|
mix\update 10
|
|
|
|
colors = {
|
|
hydrogen: { 1, 1, 0, 1 }
|
|
oxygen: { 0, 0, 1, 1 }
|
|
nitrogen: { 0, 1, 1, 1 }
|
|
argon: { 1, 0, 0, 1 }
|
|
co2: { 0.5, 0.5, 0.5, 1 }
|
|
}
|
|
|
|
w = love.graphics.getWidth!
|
|
h = love.graphics.getHeight!
|
|
h2 = h / 2
|
|
love.draw = ->
|
|
y = -25
|
|
for type in pairs ship.contents
|
|
percent = ship\percent type
|
|
love.graphics.setColor colors[type]
|
|
love.graphics.rectangle "fill", 0, h2 + y, percent * w, 10
|
|
y += 10
|
|
y = 0
|
|
for type in pairs h2tank.contents
|
|
percent = h2tank\percent type
|
|
love.graphics.setColor colors[type]
|
|
love.graphics.rectangle "fill", 0, y, percent * w, 10
|
|
y += 10
|
|
y = 10
|
|
for type in pairs o2tank.contents
|
|
percent = o2tank\percent type
|
|
love.graphics.setColor colors[type]
|
|
love.graphics.rectangle "fill", 0, h - y, percent * w, 10
|
|
y += 10
|
|
|
|
love.keypressed = (key) ->
|
|
love.event.quit! if key == "escape"
|
|
mixing = not mixing if key == "space"
|