34 lines
647 B
Lua
34 lines
647 B
Lua
|
return function(ll)
|
||
|
|
||
|
local ffi = require 'ffi'
|
||
|
ffi.cdef [[
|
||
|
int PHYSFS_mount(const char *, const char *, int);
|
||
|
int PHYSFS_unmount(const char *);
|
||
|
]]
|
||
|
|
||
|
function ll.mount(gme)
|
||
|
local mdir = gme.base .. gme.dir
|
||
|
|
||
|
love.filesystem.setRequirePath(''
|
||
|
.. mdir .. '/?.lua;'
|
||
|
.. mdir .. '/?/init.lua;'
|
||
|
.. '?.lua;?/init.lua;'
|
||
|
)
|
||
|
-- FIXME: Bug may appear in Linux. Recompile Love2D or use official PPA.
|
||
|
if ffi.C.PHYSFS_mount(mdir, '/', 0) == 0
|
||
|
then error 'Cannot mount'
|
||
|
else
|
||
|
ll.mdir = mdir
|
||
|
ll.mgme = gme
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function ll.umount()
|
||
|
if ll.mdir ~= nil then
|
||
|
ffi.C.PHYSFS_unmount(ll.mdir)
|
||
|
ll.mdir = nil
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|