Skip to content

Commit

Permalink
Added functions to get/set selection tool targets
Browse files Browse the repository at this point in the history
getSelectionTargets is for actual selections
getSelectionPreviews is for "hovered" selections
Both of these have a respective setter

Code looks a bit weird because it needs to work after tool reloads
  • Loading branch information
Cruor committed Oct 23, 2023
1 parent 47aef29 commit a6e1c45
Showing 1 changed file with 37 additions and 15 deletions.
52 changes: 37 additions & 15 deletions src/tools/selection.lua
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ local dragMovementTotalX, dragMovementTotalY = 0, 0

local selectionRectangle = nil
local selectionCompleted = true
local selectionTargets = {}
local selectionPreviews = {}
local selectionTargets = state.selectionToolTargets
local selectionPreviews = state.selectionToolPreviews
local selectionCycleTargets = {}
local selectionCycleIndex = 1

Expand Down Expand Up @@ -101,9 +101,32 @@ local selectionRotationKeys = {
{"itemRotateRight", 1}
}

function tool.load()
tool.setSelectionTargets({})
tool.setSelectionPreviews({})
end

function tool.unselect()
selectionPreviews = {}
selectionTargets = {}
tool.setSelectionTargets({})
tool.setSelectionPreviews({})
end

function tool.getSelectionTargets()
return state.selectionToolTargets
end

function tool.getSelectionPreviews()
return state.selectionToolPreviews
end

function tool.setSelectionTargets(targets)
state.selectionToolTargets = targets
selectionTargets = targets
end

function tool.setSelectionPreviews(previews)
state.selectionToolPreviews = previews
selectionPreviews = previews
end

function tool.setLayer(layer)
Expand Down Expand Up @@ -136,10 +159,10 @@ local function selectionChanged(x, y, width, height, fromClick)
end

selectionCycleTargets = newSelections
selectionPreviews = {selectionCycleTargets[selectionCycleIndex]}
tool.setSelectionPreviews({selectionCycleTargets[selectionCycleIndex]})

else
selectionPreviews = newSelections
tool.setSelectionPreviews(newSelections)
selectionCycleTargets = {}
selectionCycleIndex = 0
end
Expand Down Expand Up @@ -661,8 +684,7 @@ local function pasteItems(room, layer, targets)
end
end

selectionTargets = newTargets

tool.setSelectionTargets(newTargets)
tiles.selectionsChanged(newTargets)

return relevantLayers
Expand Down Expand Up @@ -1045,13 +1067,13 @@ local function updateSelectionTargetsFromPreviews(keepExisting)
end

else
selectionTargets = selectionPreviews
tool.setSelectionTargets(selectionPreviews)
end
end

local function selectionStarted(x, y)
selectionRectangle = utils.rectangle(x, y, 0, 0)
selectionPreviews = {}
tool.setSelectionPreviews({})
selectionCompleted = false
resizeDirection = nil
resizeDirectionPreview = nil
Expand All @@ -1073,7 +1095,7 @@ local function selectionFinished(x, y, fromClick)
updateSelectionTargetsFromPreviews(addModifier)
tiles.selectionsChanged(selectionTargets)

selectionPreviews = {}
tool.setSelectionPreviews({})
end
end

Expand Down Expand Up @@ -1430,13 +1452,13 @@ function tool.keypressed(key, scancode, isrepeat)
end

function tool.editorMapLoaded(item, itemType)
selectionPreviews = {}
selectionTargets = {}
tool.setSelectionTargets({})
tool.setSelectionPreviews({})
end

function tool.editorMapTargetChanged(item, itemType)
selectionPreviews = {}
selectionTargets = {}
tool.setSelectionTargets({})
tool.setSelectionPreviews({})
end

function tool.draw()
Expand Down

0 comments on commit a6e1c45

Please sign in to comment.