diff --git a/Wallpapers/DVD.wlp/Config.cfg b/Wallpapers/DVD.wlp/Config.cfg new file mode 100644 index 00000000..ede70df2 --- /dev/null +++ b/Wallpapers/DVD.wlp/Config.cfg @@ -0,0 +1 @@ +{["speed"]=2,["backgroundColor"]=3351743} \ No newline at end of file diff --git a/Wallpapers/DVD.wlp/Logo.pic b/Wallpapers/DVD.wlp/Logo.pic new file mode 100644 index 00000000..eedb43a0 Binary files /dev/null and b/Wallpapers/DVD.wlp/Logo.pic differ diff --git a/Wallpapers/DVD.wlp/Main.lua b/Wallpapers/DVD.wlp/Main.lua new file mode 100644 index 00000000..c210df81 --- /dev/null +++ b/Wallpapers/DVD.wlp/Main.lua @@ -0,0 +1,94 @@ +local screen = require("Screen") +local color = require("Color") +local filesystem = require("Filesystem") +local system = require("System") +local GUI = require("GUI") +local image = require("Image") + +-------------------------------------------------------------------------------- + +local workspace, wallpaper = select(1, ...), select(2, ...) + +local configPath = filesystem.path(system.getCurrentScript()) .. "Config.cfg" + +local config = { + backgroundColor = 0x000000, + speed = 1 +} + +if filesystem.exists(configPath) then + for key, value in pairs(filesystem.readTable(configPath)) do + config[key] = value + end +end + +local function saveConfig() + filesystem.writeTable(configPath, config) +end + +-------------------------------------------------------------------------------- + +local logo = image.load(filesystem.path(system.getCurrentScript()) .. "Logo.pic") + +local logoPosition = { + x = math.random(1, wallpaper.width - image.getWidth (logo)), + y = math.random(1, wallpaper.height - image.getHeight(logo)) +} + +local logoSpeed = { + x = (2 * math.random() - 1) * 10, + y = (2 * math.random() - 1) * 10 +} + +local lastUpdateTime = computer.uptime() + +-------------------------------------------------------------------------------- + +wallpaper.draw = function(wallpaper) + local currentTime = computer.uptime() + local deltaTime = currentTime - lastUpdateTime + lastUpdateTime = currentTime + + screen.drawRectangle(wallpaper.x, wallpaper.y, wallpaper.width, wallpaper.height, config.backgroundColor, 0, " ") + screen.drawImage(wallpaper.x + math.floor(logoPosition.x), wallpaper.y + math.floor(logoPosition.y), logo) + + logoPosition.x = logoPosition.x + logoSpeed.x * config.speed * deltaTime + logoPosition.y = logoPosition.y + logoSpeed.y * config.speed * deltaTime + + if logoPosition.x < 1 or logoPosition.x >= wallpaper.width - image.getWidth(logo) then + logoSpeed.x = -logoSpeed.x + end + + if logoPosition.y < 1 or logoPosition.y >= wallpaper.height - image.getHeight(logo) then + logoSpeed.y = -logoSpeed.y + end +end + +wallpaper.configure = function(layout) + layout:addChild(GUI.colorSelector(1, 1, 36, 3, config.backgroundColor, "Background color")).onColorSelected = function(_, object) + config.backgroundColor = object.color + saveConfig() + end + + local speedSlider = layout:addChild( + GUI.slider( + 1, 1, + 36, + 0x66DB80, + 0xE1E1E1, + 0xFFFFFF, + 0xA5A5A5, + 0, 50, + config.speed, + false, + "Speed: " + ) + ) + + speedSlider.onValueChanged = function() + config.speed = math.floor(speedSlider.value) + saveConfig() + end +end + +-------------------------------------------------------------------------------- \ No newline at end of file