diff --git a/lib/character/behaviors/light.lua b/lib/character/behaviors/light.lua index 6f40dd4..c282f7f 100644 --- a/lib/character/behaviors/light.lua +++ b/lib/character/behaviors/light.lua @@ -30,7 +30,7 @@ function behavior:draw() shader:send("color", { self.color.x, self.color.y, self.color.z }) shader:send("time", love.timer.getTime() + self.seed) love.graphics.setShader(shader) - love.graphics.setBlendMode("add") + -- love.graphics.setBlendMode("add") love.graphics.draw(Tree.assets.files.masks.circle128, self.position.x - self.intensity / 2, self.position.y - self.intensity / 2, 0, self.intensity / 128, self.intensity / 128) diff --git a/lib/level/level.lua b/lib/level/level.lua index 00c425c..2023691 100644 --- a/lib/level/level.lua +++ b/lib/level/level.lua @@ -27,7 +27,8 @@ local function new(type, template) selector = (require "lib.level.selector").new(), camera = (require "lib.level.camera").new(), turnOrder = (require "lib.level.turn_order").new(), - render = (require "lib.level.render").new() + render = (require "lib.level.render").new(), + weather = (require "lib.level.weather").new { ambientLight = Vec3 { 0.36, 0.42, 0.6 }, skyLight = Vec3 { 0.9, 0.9, 0.9 } } }, level) end diff --git a/lib/level/render.lua b/lib/level/render.lua index 27d77b3..a88ea2e 100644 --- a/lib/level/render.lua +++ b/lib/level/render.lua @@ -9,16 +9,17 @@ local render = {} render.__index = render function render:clear() + local weather = Tree.level.weather love.graphics.setCanvas(self.shadowLayer) love.graphics.clear() love.graphics.setCanvas(self.spriteLayer) love.graphics.clear() love.graphics.setCanvas(self.spriteLightLayer) - love.graphics.clear() + love.graphics.clear(weather.skyLight.x, weather.skyLight.y, weather.skyLight.z) love.graphics.setCanvas(self.floorLayer) love.graphics.clear() love.graphics.setCanvas(self.lightLayer) - love.graphics.clear() + love.graphics.clear(weather.skyLight.x, weather.skyLight.y, weather.skyLight.z) love.graphics.setCanvas(self.overlayLayer) love.graphics.clear() end @@ -55,6 +56,7 @@ end function render:draw() -- пол -> тени -> спрайты -> свет -> оверлей + local weather = Tree.level.weather love.graphics.setCanvas(self.lightLayer) love.graphics.draw(applyBlur(self.shadowLayer, 4 * Tree.level.camera.scale)) love.graphics.setCanvas() @@ -65,7 +67,7 @@ function render:draw() local lightShader = Tree.assets.files.shaders.light_postprocess lightShader:send("scene", self.floorLayer) lightShader:send("light", self.lightLayer) - lightShader:send("ambient", { 0.24, 0.28, 0.40 }) + lightShader:send("ambient", { weather.ambientLight.x, weather.ambientLight.y, weather.ambientLight.z }) love.graphics.setShader(lightShader) love.graphics.draw(self.floorLayer) diff --git a/lib/level/weather.lua b/lib/level/weather.lua new file mode 100644 index 0000000..13f04d0 --- /dev/null +++ b/lib/level/weather.lua @@ -0,0 +1,12 @@ +--- @class Weather +--- @field skyLight Vec3 +--- @field ambientLight Vec3 +local weather = {} + +--- @param proto Weather +--- @return Weather +local function new(proto) + return setmetatable(proto, { __index = weather }) +end + +return { new = new }