--- Original: Divvy's Preview for Balatro - Init.lua
--
-- Global values that must be present for the rest of this mod to work.

if not FN then FN = {} end

FN.PRE = {
   data = {
      score = {min = 0, exact = 0, max = 0},
      dollars = {min = 0, exact = 0, max = 0}
   },
   text = {
      score = {l = "", r = ""},
      dollars = {top = "", bot = ""}
   },
   joker_order = {},
   hand_order = {},
   show_preview = false,
   lock_updates = false,
   on_startup = true,
   five_second_coroutine = nil
}

function FN.PRE.start_new_coroutine()
   if FN.PRE.five_second_coroutine and coroutine.status(FN.PRE.five_second_coroutine) ~= "dead" then
      FN.PRE.five_second_coroutine = nil  -- Reset the coroutine
   end

   -- Create and start a new coroutine
   FN.PRE.five_second_coroutine = coroutine.create(function()
      -- Show UI updates
      FN.PRE.lock_updates = true
      FN.PRE.show_preview = true
      FN.PRE.add_update_event("immediate")  -- Force UI refresh

      local start_time = os.time()
      while os.time() - start_time < 5 do
         FN.PRE.simulate()  -- Force a simulation run
         FN.PRE.add_update_event("immediate")  -- Ensure UI updates
         coroutine.yield()  -- Allow game to continue running
      end
      -- Delay for 5 seconds
      FN.PRE.lock_updates = false
      FN.PRE.show_preview = true
      FN.PRE.add_update_event("immediate")  -- Refresh UI again
   end)

   coroutine.resume(FN.PRE.five_second_coroutine)  -- Start it immediately
end



FN.PRE._start_up = Game.start_up
function Game:start_up()
   FN.PRE._start_up(self)

   if not G.SETTINGS.FN then G.SETTINGS.FN = {} end
   if not G.SETTINGS.FN.PRE then
      G.SETTINGS.FN.PRE = true

      G.SETTINGS.FN.preview_score = true
      G.SETTINGS.FN.preview_dollars = true
      G.SETTINGS.FN.hide_face_down = true
      G.SETTINGS.FN.show_min_max = true
   end

end
