From 46f60205a566dda7dbd8db0841a5c1b069361c24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20W=C4=85s?= Date: Wed, 25 Jan 2017 01:34:23 +0100 Subject: [PATCH] Different glyph sets depending on the time of day in weather node. --- config.lua | 1 + nodes/weather.lua | 52 +++++++++++++++++++++++++++++++++------- nodes/weather_thread.lua | 2 ++ 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/config.lua b/config.lua index a491b3e..b8ce6ba 100644 --- a/config.lua +++ b/config.lua @@ -3,6 +3,7 @@ return { transitionTime = 0.5, showProgress = true, nodes = { + {'nodes.weather'}, {'nodes.newdash', displayTime=10}, {'nodes.misery', displayTime = 7}, {'nodes.slideshow', files={'images/pig.png'}, displayTime=5}, diff --git a/nodes/weather.lua b/nodes/weather.lua index fa3bf98..f5bf82c 100644 --- a/nodes/weather.lua +++ b/nodes/weather.lua @@ -9,15 +9,51 @@ local weatherFont = love.graphics.newFont('fonts/weathericons-regular-webfont.tt local textFont = love.graphics.newFont('fonts/Lato-Thin.ttf', 300) local smallFont = love.graphics.newFont('fonts/Lato-Light.ttf', 30) -local weatherGlyphs = { - snow = "", - mist = "", - clear = "", - -- clouds = "", - clouds = "", -- x---DDD - drizzle = "", +local weatherGlyphs = {} + +local weatherGlyphsSet = { + day = { + snow = "", + mist = "", + clear = "", + -- clouds = "", + clouds = "", -- x---DDD + drizzle = "", + }, + night = { + snow = "", + mist = "", + clear = "", + clouds = "", + drizzle = "", + + } } +function node:timeOfDay() + local sunRise = tonumber(os.date("%H%M", self.state.sunRise)) + local sunSet = tonumber(os.date("%H%M", self.state.sunSet)) + local now = tonumber(os.date("%H%M")) + if sunRise == nil or sunSet == nil then + return weatherGlyphsSet["day"] -- smth gone wrong. assume daylight + end + if now < sunSet and now > sunRise then + print('day') + return weatherGlyphsSet["day"] + else + print('night') + return weatherGlyphsSet["night"] + end +end + +function node:beforeEnter() + if self.state then + weatherGlyphs = self:timeOfDay() + else + weatherGlyphs = weatherGlyphsSet["day"] -- do not know sunraise and sunset yet. assume daylight + end +end + function node:render() love.graphics.setColor( 0, 0, 0 ) love.graphics.rectangle("fill", 0, 0, love.graphics.getWidth(), love.graphics.getHeight()) @@ -34,7 +70,7 @@ function node:render() end love.graphics.setFont(textFont) - love.graphics.printf(tostring(self.state.temperature) .. "°", 600, 150, 650, 'center') + love.graphics.printf(tostring(math.floor(self.state.temperature + 0.5)) .. "°", 600, 150, 650, 'center') love.graphics.setFont(smallFont) love.graphics.printf(os.date("Last update: %Y/%m/%d %H:%M", self.state.lastUpdate), 0, love.graphics.getHeight() - 60, love.graphics.getWidth(), 'center') diff --git a/nodes/weather_thread.lua b/nodes/weather_thread.lua index 4a627be..ebf0400 100644 --- a/nodes/weather_thread.lua +++ b/nodes/weather_thread.lua @@ -21,6 +21,8 @@ if c == 200 then weather = data.weather[1].main:lower(), temperature = data.main.temp, lastUpdate = data.dt, + sunRise = data.sys.sunrise, + sunSet = data.sys.sunset, insideTemperature = insideData[1], insideHumidity = insideData[2], })