mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-20 02:59:20 +01:00
92 lines
2.4 KiB
Lua
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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|