You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

154 lines
3.5 KiB
Lua

local http = require("socket.http")
-- VARIABLES
sysUser = os.getenv( "HOME" )
pathDosbox = "/usr/bin/dosbox"
pathFDD = sysUser.."/.fdd"
urlGameList="http://fanta.56k.es/fdd/fdd_server/archive.lst"
urlGames="http://fanta.56k.es/fdd/fdd_server/archive/"
screenSizeW = love.graphics.getWidth()
screenSizeH = love.graphics.getHeight()
love.window.setTitle( "FDD GUI" )
font = love.graphics.newFont("res/fonts/COMPUTERRobot.ttf", 20)
disquete = {}
disquete.img = love.graphics.newImage("res/imgs/disquete.png")
disquete.width = 200
disquete.height = 200
disquete.x = (screenSizeW/2)-(disquete.width/2)
disquete.y = (screenSizeH/2)-(disquete.height/2)
rkey = {}
rkey.img = love.graphics.newImage("res/imgs/keyboard_key_r.png")
rkey.width = 64
rkey.height = 64
rkey.x = -100
rkey.y = -100
-- FUNCTIONS
function file_check(file_name)
local f=io.open(file_name, "r")
if f==nil then print(file_name.." not found. Install it and try again") os.exit() else print(file_name..": OK") end
end
function split_string(s, delimiter)
result = {};
for match in (s..delimiter):gmatch("(.-)"..delimiter) do
table.insert(result, match);
end
return result;
end
function check_dependencies()
file_check(pathDosbox)
end
function draw_floppyDiskName(floppydisk_name)
love.graphics.setColor(2550,255,255)
love.graphics.setFont(font)
love.graphics.printf(floppydisk_name,335,292,400,left)
end
function download_gameList(url_gameList)
os.execute("mkdir -p "..pathFDD)
local body, code = http.request(url_gameList)
local f = assert(io.open(pathFDD.."/archive.lst", "wb"))
f:write(body)
f:close()
end
function download_listGames(file)
local arr = {}
local handle = assert( io.open(file,"r") )
local value = handle:read("*line")
while value do
table.insert( arr, value )
value = handle:read("*line")
if value==nil then else gameName = split_string(value, ";") end
local fi=io.open(pathFDD.."/"..gameName[2], "r")
if fi==nil then
print("Downloading game: "..gameName[2])
local body, code = http.request(urlGames..gameName[2])
local f = assert(io.open(pathFDD.."/"..gameName[2], "wb"))
f:write(body)
f:close()
else
end
end
handle:close()
return arr
end
function load_games()
n=0
game = {}
for l in io.lines(pathFDD.."/archive.lst") do
n=n+1
g = split_string(l, ";")
table.insert(game, g[2])
end
max=n
print(n.." games")
end
function next_game()
if n==max then
n=1
else
n=n+1
end
print("ch game: "..game[n])
end
-- FUNCIONES LOVE
function love.load()
check_dependencies()
download_gameList(urlGameList)
load_games()
end
function love.update()
if love.keyboard.isDown( "r" ) then
rkey.x, rkey.y = 10,10
else
rkey.x, rkey.y = -100,-100
end
end
function love.draw()
love.graphics.setBackgroundColor( (170/255), (100/255), (70/255) )
love.graphics.draw(disquete.img,disquete.x,disquete.y)
draw_floppyDiskName(game[n])
love.graphics.draw(rkey.img, rkey.x, rkey.y)
end
function love.keypressed(key)
if key == "escape" then
print("bye bye!")
love.event.quit()
end
if key == "r" then
print("re-check game repository")
download_listGames(pathFDD.."/archive.lst")
end
if key == "right" then
next_game()
--download_listGames(pathFDD.."/archive.lst")
end
if key == "return" then
print("run !")
os.execute("tar xfvz "..pathFDD.."/"..game[n].." -C "..pathFDD.."/")
os.execute("name=$(echo "..game[n].."|cut -d . -f 1); bash "..pathFDD.."/$name/dos-*")
end
end