2019-01-19 11:31:04 +03:00

92 lines
2.4 KiB
Lua

local filesystem = require("Filesystem")
local screen = require("Screen")
local color = require("Color")
local image = require("Image")
local GUI = require("GUI")
local system = require("System")
------------------------------------------------------------------------------------------
local spinnersPath = filesystem.path(system.getCurrentScript())
local spinners = {}
local currentSpinner = 1
local spinnerLimit = 8
local spinnerHue = math.random(0, 360)
local spinnerHueStep = 20
local workspace = GUI.workspace()
workspace:addChild(GUI.panel(1, 1, workspace.width, workspace.height, 0x0))
local spinnerImage = workspace:addChild(GUI.image(1, 1, {1, 1}))
------------------------------------------------------------------------------------------
local function changeColor(hue, saturation)
for i = 1, #spinners do
for y = 1, image.getHeight(spinners[i]) do
for x = 1, image.getWidth(spinners[i]) do
local background, foreground, alpha, symbol = image.get(spinners[i], x, y)
local hBackground, sBackground, bBackground = color.integerToHSB(background)
local hForeground, sForeground, bForeground = color.integerToHSB(foreground)
image.set(
spinners[i],
x,
y,
color.HSBToInteger(hue, saturation, bBackground),
color.HSBToInteger(hue, saturation, bForeground),
alpha,
symbol
)
end
end
end
spinnerImage.image = spinners[currentSpinner]
end
workspace.eventHandler = function(workspace, object, e1, e2, e3, e4, e5)
if e1 == "key_down" then
workspace:stop()
elseif e1 == "touch" then
spinnerHue = spinnerHue + spinnerHueStep * (e5 == 1 and -1 or 1)
if spinnerHue > 360 then
spinnerHue = 0
elseif spinnerHue < 0 then
spinnerHue = 360
end
changeColor(spinnerHue, 1)
end
currentSpinner = currentSpinner + 1
if currentSpinner > #spinners then
currentSpinner = 1
end
spinnerImage.image = spinners[currentSpinner]
workspace:draw()
end
------------------------------------------------------------------------------------------
for i = 1, spinnerLimit do
spinners[i] = image.load(spinnersPath .. i .. ".pic")
end
spinnerImage.width = image.getWidth(spinners[currentSpinner])
spinnerImage.height = image.getHeight(spinners[currentSpinner])
spinnerImage.localX = math.floor(workspace.width / 2 - spinnerImage.width / 2)
spinnerImage.localY = math.floor(workspace.height / 2 - spinnerImage.height/ 2)
changeColor(spinnerHue, 1)
screen.flush()
workspace:draw()
workspace:start(0)