init
This commit is contained in:
66
src/Structure.moon
Normal file
66
src/Structure.moon
Normal file
@@ -0,0 +1,66 @@
|
||||
import graphics from love
|
||||
|
||||
width, height = graphics.getDimensions!
|
||||
x_center, y_center = width / 2, height / 2
|
||||
x_offset, y_offset = math.floor(width / 4), math.floor(height / 4)
|
||||
|
||||
images = require "images"
|
||||
colors = require "colors"
|
||||
Fluid = require "Fluid"
|
||||
fluids = require "fluids"
|
||||
|
||||
class Structure
|
||||
new: (tiles_or_size=2) =>
|
||||
@systems = {}
|
||||
if "table" == type tiles_or_size
|
||||
for x, row in pairs tiles_or_size
|
||||
@[x] = {}
|
||||
for y, tile in pairs row
|
||||
@[x][y] = tile
|
||||
if tile.systems
|
||||
for system in *tile.systems
|
||||
table.insert @systems, tile.systems
|
||||
else
|
||||
volume = 10 * (2 * tiles_or_size + 1) ^ 2
|
||||
air = Fluid(volume)
|
||||
for type, percent in pairs fluids.air
|
||||
air\add type, volume * percent
|
||||
for x = -tiles_or_size, tiles_or_size
|
||||
@[x] = {}
|
||||
for y = -tiles_or_size, tiles_or_size
|
||||
@[x][y] = { img: "plain-square.png", color: colors.floor, atmosphere: air }
|
||||
|
||||
-- temporary
|
||||
system = require("FilterPump")(@[0][0].atmosphere, Fluid(math.huge), { CO2: true }, 8, 1)
|
||||
@[0][1] = {
|
||||
img: "plain-square.png"
|
||||
obj: "abstract-045.png", color: colors.dark
|
||||
systems: { system }
|
||||
atmosphere: @[0][0].atmosphere
|
||||
}
|
||||
@systems[1] = system
|
||||
tank = Fluid(8)
|
||||
tank\add "O2", 100
|
||||
tanksys = require("Pump")(tank, @[0][0].atmosphere, 1, 0.0015)
|
||||
@[1][0] = {
|
||||
img: "plain-square.png"
|
||||
obj: "chemical-tank.png", color: colors.blue
|
||||
systems: { tanksys }
|
||||
atmosphere: @[0][0].atmosphere
|
||||
}
|
||||
@systems[2] = tanksys
|
||||
|
||||
update: (dt) =>
|
||||
for system in *@systems
|
||||
system\update dt
|
||||
|
||||
draw: (location) =>
|
||||
for x = location.x - x_offset, location.y + x_offset
|
||||
if row = @[x]
|
||||
for y = location.y - y_offset, location.y + y_offset
|
||||
if tile = row[y]
|
||||
graphics.setColor colors.floor
|
||||
graphics.draw images[tile.img], (x - location.x) * 32 + x_center, (y - location.y) * 32 + y_center, 0, 1/16, 1/16, 256, 256
|
||||
if tile.obj
|
||||
graphics.setColor tile.color or 1, 1, 1, 1
|
||||
graphics.draw images[tile.obj], (x - location.x) * 32 + x_center, (y - location.y) * 32 + y_center, 0, 1/16 * 0.9, 1/16 * 0.9, 256, 256
|
Reference in New Issue
Block a user