mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-19 20:20:19 +02:00
fix(ios): support direct picker results
This commit is contained in:
@@ -637,6 +637,8 @@ function RomImporter.new(onComplete, opts)
|
|||||||
-- Android SAF create-document: which game's SAVE FILES card should show
|
-- Android SAF create-document: which game's SAVE FILES card should show
|
||||||
-- "Save exported." when export_done.flag appears on focus.
|
-- "Save exported." when export_done.flag appears on focus.
|
||||||
androidPendingExportVersion = nil,
|
androidPendingExportVersion = nil,
|
||||||
|
iosPendingKind = nil,
|
||||||
|
iosPendingVersion = nil,
|
||||||
-- Virtual pointer for handhelds / gamepads (Anbernic stock OS has no
|
-- Virtual pointer for handhelds / gamepads (Anbernic stock OS has no
|
||||||
-- mouse). D-pad + left stick move it; A clicks; shoulders cycle tabs;
|
-- mouse). D-pad + left stick move it; A clicks; shoulders cycle tabs;
|
||||||
-- right stick scrolls the save-slot / mods lists.
|
-- right stick scrolls the save-slot / mods lists.
|
||||||
@@ -1008,6 +1010,14 @@ end
|
|||||||
-- which focus/Choose consumes on return.
|
-- which focus/Choose consumes on return.
|
||||||
function RomImporter:chooseMod()
|
function RomImporter:chooseMod()
|
||||||
if self.workState == "working" then return end
|
if self.workState == "working" then return end
|
||||||
|
if self.ios and love.system.getPickedFile then
|
||||||
|
self.iosPendingKind = "mod"
|
||||||
|
if not pickFile("mod") then
|
||||||
|
self.iosPendingKind = nil
|
||||||
|
self.modNotice = { ok = false, text = "Could not open the file picker." }
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
if self.android then
|
if self.android then
|
||||||
local name = findPendingMod(true, self.pickSkip)
|
local name = findPendingMod(true, self.pickSkip)
|
||||||
if name then
|
if name then
|
||||||
@@ -1069,6 +1079,16 @@ end
|
|||||||
-- Android mirrors ROM / mod import via love.system.pickFile("sav").
|
-- Android mirrors ROM / mod import via love.system.pickFile("sav").
|
||||||
function RomImporter:chooseSaveImport(version)
|
function RomImporter:chooseSaveImport(version)
|
||||||
if self.workState == "working" then return end
|
if self.workState == "working" then return end
|
||||||
|
if self.ios and love.system.getPickedFile then
|
||||||
|
self.iosPendingKind = "sav"
|
||||||
|
self.iosPendingVersion = version
|
||||||
|
if not pickFile("sav") then
|
||||||
|
self.iosPendingKind = nil
|
||||||
|
self.iosPendingVersion = nil
|
||||||
|
self.saveNotice[version] = { ok = false, text = "Could not open the file picker." }
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
if self.android then
|
if self.android then
|
||||||
local name = findPendingSav(true, self.pickSkip)
|
local name = findPendingSav(true, self.pickSkip)
|
||||||
if name then
|
if name then
|
||||||
@@ -1158,6 +1178,14 @@ end
|
|||||||
function RomImporter:choose(version)
|
function RomImporter:choose(version)
|
||||||
if self.workState == "working" then return end
|
if self.workState == "working" then return end
|
||||||
self.chooseVersion = version or "red"
|
self.chooseVersion = version or "red"
|
||||||
|
if self.ios and love.system.getPickedFile then
|
||||||
|
self.iosPendingKind = "rom"
|
||||||
|
if not pickFile("rom") then
|
||||||
|
self.iosPendingKind = nil
|
||||||
|
self:setError("Could not open the file picker.")
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
if self.android then
|
if self.android then
|
||||||
-- Prefer a not-yet-imported .gb/.gbc already in the save dir (USB copy, or
|
-- Prefer a not-yet-imported .gb/.gbc already in the save dir (USB copy, or
|
||||||
-- a fresh SAF pick). Never reuse an already-imported cart's file -- that
|
-- a fresh SAF pick). Never reuse an already-imported cart's file -- that
|
||||||
@@ -1272,6 +1300,37 @@ end
|
|||||||
function RomImporter:update(dt)
|
function RomImporter:update(dt)
|
||||||
self.pulse = self.pulse + dt
|
self.pulse = self.pulse + dt
|
||||||
self:_updatePadCursor(dt)
|
self:_updatePadCursor(dt)
|
||||||
|
if self.ios and love.system.getPickedFile and self.workState ~= "working" then
|
||||||
|
local path = love.system.getPickedFile()
|
||||||
|
if path then
|
||||||
|
local kind = self.iosPendingKind or "rom"
|
||||||
|
local version = self.iosPendingVersion
|
||||||
|
self.iosPendingKind = nil
|
||||||
|
self.iosPendingVersion = nil
|
||||||
|
if kind == "mod" then
|
||||||
|
self:_installMod(path)
|
||||||
|
elseif kind == "sav" then
|
||||||
|
self:_importSave(version or self:_savedropTarget(), path)
|
||||||
|
else
|
||||||
|
self:startPath(path)
|
||||||
|
end
|
||||||
|
elseif love.system.getPickError then
|
||||||
|
local errorText = love.system.getPickError()
|
||||||
|
if errorText then
|
||||||
|
local kind = self.iosPendingKind or "rom"
|
||||||
|
local version = self.iosPendingVersion or self:_savedropTarget()
|
||||||
|
self.iosPendingKind = nil
|
||||||
|
self.iosPendingVersion = nil
|
||||||
|
if kind == "mod" then
|
||||||
|
self.modNotice = { ok = false, text = errorText }
|
||||||
|
elseif kind == "sav" then
|
||||||
|
self.saveNotice[version] = { ok = false, text = errorText }
|
||||||
|
else
|
||||||
|
self:setError(errorText)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
self:_pollPickedFiles(dt)
|
self:_pollPickedFiles(dt)
|
||||||
if self.workState ~= "working" or not self.worker then return end
|
if self.workState ~= "working" or not self.worker then return end
|
||||||
local started = love.timer.getTime()
|
local started = love.timer.getTime()
|
||||||
|
|||||||
Reference in New Issue
Block a user