-- Bundled by luabundle {"version":"1.6.0"}
local __bundle_require, __bundle_loaded, __bundle_register, __bundle_modules = (function(superRequire)
	local loadingPlaceholder = {[{}] = true}

	local register
	local modules = {}

	local require
	local loaded = {}

	register = function(name, body)
		if not modules[name] then
			modules[name] = body
		end
	end

	require = function(name)
		local loadedModule = loaded[name]

		if loadedModule then
			if loadedModule == loadingPlaceholder then
				return nil
			end
		else
			if not modules[name] then
				if not superRequire then
					local identifier = type(name) == 'string' and '\"' .. name .. '\"' or tostring(name)
					error('Tried to require ' .. identifier .. ', but no such module has been registered')
				else
					return superRequire(name)
				end
			end

			loaded[name] = loadingPlaceholder
			loadedModule = modules[name](require, loaded, register, modules)
			loaded[name] = loadedModule
		end

		return loadedModule
	end

	return require, loaded, register, modules
end)(nil)
__bundle_register("accessories/DisplacementTool", function(require, _LOADED, __bundle_register, __bundle_modules)
local playAreaApi = require("core/PlayAreaApi")

local UI_offset = 1.15

local buttonParamaters          = {}
buttonParamaters.function_owner = self
buttonParamaters.label          = ""
buttonParamaters.height         = 500
buttonParamaters.width          = 500
buttonParamaters.color          = { 0, 0, 0, 0 }

function onLoad()
  -- index 0: left
  buttonParamaters.click_function = "shift_left"
  buttonParamaters.tooltip        = "Move left"
  buttonParamaters.position       = { -UI_offset, 0, 0 }
  self.createButton(buttonParamaters)

  -- index 1: right
  buttonParamaters.click_function = "shift_right"
  buttonParamaters.tooltip        = "Move right"
  buttonParamaters.position       = { UI_offset, 0, 0 }
  self.createButton(buttonParamaters)

  -- index 2: up
  buttonParamaters.click_function = "shift_up"
  buttonParamaters.tooltip        = "Move up"
  buttonParamaters.position       = { 0, 0, -UI_offset }
  self.createButton(buttonParamaters)

  -- index 3: down
  buttonParamaters.click_function = "shift_down"
  buttonParamaters.tooltip        = "Move down"
  buttonParamaters.position       = { 0, 0, UI_offset }
  self.createButton(buttonParamaters)
end

function shift_left(color) playAreaApi.shiftContentsLeft(color) end

function shift_right(color) playAreaApi.shiftContentsRight(color) end

function shift_up(color) playAreaApi.shiftContentsUp(color) end

function shift_down(color) playAreaApi.shiftContentsDown(color) end
end)
__bundle_register("core/PlayAreaApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
  local PlayAreaApi = { }

  local PLAY_AREA_GUID = "721ba2"

  -- Returns the current value of the investigator counter from the playmat
  ---@return Integer.  Number of investigators currently set on the counter
  PlayAreaApi.getInvestigatorCount = function()
    return getObjectFromGUID(PLAY_AREA_GUID).call("getInvestigatorCount")
  end

  -- Move all contents on the play area (cards, tokens, etc) one slot in the given direction.  Certain
  -- fixed objects will be ignored, as will anything the player has tagged with
  -- 'displacement_excluded'
  ---@param playerColor Color of the player requesting the shift.  Used solely to send an error
  ---    message in the unlikely case that the scripting zone has been deleted
  PlayAreaApi.shiftContentsUp = function(playerColor)
    return getObjectFromGUID(PLAY_AREA_GUID).call("shiftContentsUp", playerColor)
  end

  PlayAreaApi.shiftContentsDown = function(playerColor)
    return getObjectFromGUID(PLAY_AREA_GUID).call("shiftContentsDown", playerColor)
  end

  PlayAreaApi.shiftContentsLeft = function(playerColor)
    return getObjectFromGUID(PLAY_AREA_GUID).call("shiftContentsLeft", playerColor)
  end

  PlayAreaApi.shiftContentsRight = function(playerColor)
    return getObjectFromGUID(PLAY_AREA_GUID).call("shiftContentsRight", playerColor)
  end

  -- Reset the play area's tracking of which cards have had tokens spawned.
  PlayAreaApi.resetSpawnedCards = function()
    return getObjectFromGUID(PLAY_AREA_GUID).call("resetSpawnedCards")
  end

  -- Event to be called when the current scenario has changed.
  ---@param scenarioName Name of the new scenario
  PlayAreaApi.onScenarioChanged = function(scenarioName)
    getObjectFromGUID(PLAY_AREA_GUID).call("onScenarioChanged", scenarioName)
  end

  -- Sets this playmat's snap points to limit snapping to locations or not.
  -- If matchTypes is false, snap points will be reset to snap all cards.
  ---@param matchTypes Boolean  Whether snap points should only snap for the matching card types.
  PlayAreaApi.setLimitSnapsByType = function(matchCardTypes)
    getObjectFromGUID(PLAY_AREA_GUID).call("setLimitSnapsByType", matchCardTypes)
  end

  -- Receiver for the Global tryObjectEnterContainer event.  Used to clear vector lines from dragged
  -- cards before they're destroyed by entering the container
  PlayAreaApi.tryObjectEnterContainer = function(container, object)
    getObjectFromGUID(PLAY_AREA_GUID).call("tryObjectEnterContainer",
        { container = container, object = object })
  end

  return PlayAreaApi
end
end)
__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules)
require("accessories/DisplacementTool")
end)
return __bundle_require("__root")