chroma_solstice/main.lua
2015-03-14 06:18:04 -04:00

169 lines
No EOL
3.9 KiB
Lua

class = require "libs/middleclass"
Timer = require "libs/hump/timer"
sfxr = require "libs/sfxrlua/sfxr"
json = require "libs/json4lua/json/json"
require "_helpers"
require "input"
require "color"
require "room"
require "shaders"
require "debug_helpers"
function love.load()
_initDefaults()
_initGridVars()
_initSounds()
loadSprites()
gameCanvas = love.graphics.newCanvas()
finalCanvas = love.graphics.newCanvas()
inputTimer = Timer.new()
currentRoom = Room:new{
player = {
red = {x = 5, y = 5},
green = {x = 5, y = 5},
blue = {x = 5, y = 5}
}
}
end
function love.update(dt)
Input:handler()
currentRoom:update()
if love.keyboard.isDown("w") then worldSha = worldSha + 1 end
if love.keyboard.isDown("s") then worldSha = worldSha - 1 end
end
function love.draw()
gameCanvas:clear()
finalCanvas:clear()
love.graphics.setCanvas(gameCanvas)
love.graphics.setBlendMode("screen")
currentRoom:draw()
love.graphics.setCanvas(finalCanvas)
local scaleCoefficient = .93
local samples = 7
love.graphics.push()
for i = 1, samples do
local c = 65 / (i * 1.75)
love.graphics.setColor(c, c, c)
love.graphics.scale(scaleCoefficient, scaleCoefficient)
love.graphics.translate((width / 2 - (width * scaleCoefficient) / 2) + 2, (width / 2 - (height * scaleCoefficient) / 2) + 2)
love.graphics.draw(gameCanvas, 0, 0)
end
love.graphics.pop()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(gameCanvas, 0, 0)
love.graphics.setCanvas()
love.graphics.setBlendMode("alpha")
love.graphics.setColor(255, 255, 255, 255)
love.graphics.draw(finalCanvas, 0, 0)
love.graphics.print("Current FPS: "..tostring(love.timer.getFPS( )), 10, 10)
end
function love.keypressed(key)
if Input.isPlayerMove(key) then
currentRoom:movePlayer(key)
elseif Input.isPlayerSwitch(key) then
local c = Input.playerColor(key)
currentRoom:switchPlayerColor(c)
end
if key == "w" then
worldSha = worldSha + 1
end
if key == "s" then
worldSha = worldSha - 1
end
end
function _initDefaults()
--set filter
love.graphics.setDefaultFilter("linear", "nearest")
--set global width / height variables
width = love.graphics.getWidth()
height = love.graphics.getHeight()
if width > height then
width = height
else
height = width
end
--set randomseed
math.randomseed(os.time())
end
function _initGridVars()
gridWidth, gridHeight = 11, 11
drawScale = width / gridWidth / 16
worldSha = 1
end
function _initSounds()
staticWave = sfxr.newSound()
staticWave.wavetype = 3
staticWave.frequency.start = .1
staticWave.envelope.release = 0
staticWave.envelope.sustain = 1
staticWave.envelope.decay = 0
static = love.audio.newSource(staticWave:generateSoundData())
static:setLooping(true)
static:setVolume(.15)
static:play()
end
function createCanvases()
end
function loadSprites()
playerSprite = love.graphics.newImage("art/player.png")
wallSprite = love.graphics.newImage("art/static_wall.png")
boxSprite = {
red = love.graphics.newImage("art/wall_r.png"),
green = love.graphics.newImage("art/wall_g.png"),
blue = love.graphics.newImage("art/wall_b.png")
}
waterSprite = {
red = love.graphics.newImage("art/nature/processed/water_r.png"),
green = love.graphics.newImage("art/nature/processed/water_g.png"),
blue = love.graphics.newImage("art/nature/processed/water_b.png")
}
npcSprites = {
}
-- local artPieceJsonString
-- for line in io.lines("art/museum/to_process/art.json") do
-- artPieceJsonString = line
-- end
-- artPieceSpritesTable = json.decode(artPieceJsonString)
-- print(artPieceSpritesTable["saturn_son"]["red"])
-- print(artSpriteJson)
-- -- sets the default input file as test.lua
-- io.input(artSpriteJson)
-- -- prints the first line of the file
-- artSpriteJsonString = io.read()
-- -- closes the open file
-- io.close(artSpriteJson)
-- artSpriteTable = json.decode(artSpriteJsonString)
-- print(artSpriteTable)
artifactSprite = love.graphics.newImage("art/process/cone.png")
end