Global Variables

You can set and retrieve custom global variables from any custom function in your comic by adding them to the Panels.vars table.

Any global variable will be accessible in custom functions. Variables stored in Panels.vars will be saved to disk, so users can retain collectible items, character properties, or any other values between sessions.

Table of contents

Example

In this example, a custom hasKey variable is set on Panels.vars in an update function when the user presses the A button.

In a later panel, we can read the variable in a custom function or use a renderCondition to conditionally render layers, or to the direct user to a different path in a nonlinear comic.

Example:

local function updatePanel2A()
    if playdate.buttonJustPressed(Panels.Input.A) then
        Panels.vars.hasKey = true
    end
end
-- use variable in comicData
layers = {
    -- only draw this layer when the "hasKey" variable is false
    { image = "s01/key", renderCondition = { var = "hasKey", value = false } }
}
-- OR use variable in custom render function
local function renderPanel6B(panel, offset)
    for i, layer in ipairs(panel.layers) do
        -- conditionally render the "key" layer
        if layer.name == 'key' or Panels.vars.hasKey == false then 
            Panels.renderLayerInPanel(layer, panel, offset)	
        end
    end
end
local function getTargetSequence(panel, offset)
    if Panels.vars.hasKey then
        return 4
    else 
        return 2
    end
end

Example Project

You can see a full example using global variables for collectible items in the Collectible Item Example Project on GitHub.

A rough walkthrough of this project is available on YouTube: Panels Item Example Walkthrough