Add new layer detection to keep colors mapped correctly.

This commit is contained in:
Anna Rose 2024-07-29 23:22:57 -04:00
parent ec8e131829
commit 0ed105d355
5 changed files with 78 additions and 49 deletions

View File

@ -1,52 +1,6 @@
-- New commands to be executed via Aseprite menus / keyboard shortcuts
local sprt = require "abase-sprite"
local BASE_COLOR = Color {
r = 0,
g = 0,
b = 0,
a = 0
}
local IGNORE_COLOR = Color {
gray = 100
}
local IGNORE_SUBCOLOR = Color {
gray = 150
}
local MERGE_COLOR = Color {
r = 200,
g = 200,
b = 0
}
local MERGE_SUBCOLOR = Color {
r = 200,
g = 200,
b = 128
}
-- set the color of a layer and its sublayers
local function setColor(layer, subColor)
if (layer.properties(extKey).ignored) then
layer.color = IGNORE_COLOR
subColor = IGNORE_SUBCOLOR
elseif subColor == IGNORE_SUBCOLOR then
layer.color = subColor
elseif (layer.properties(extKey).exportedAsSprite) then
layer.color = MERGE_COLOR
subColor = MERGE_SUBCOLOR
elseif subColor == MERGE_SUBCOLOR then
layer.color = subColor
else
layer.color = BASE_COLOR
end
if (layer.isGroup) then
for i, sublayer in ipairs(layer.layers) do
setColor(sublayer, subColor)
end
end
end
local function ExportSpritesheetAdvanced()
if not app.sprite then
return app.alert "Must have a sprite open to export."
@ -72,7 +26,7 @@ local function ToggleIgnore()
else
layer.properties(extKey).ignored = true
end
setColor(layer)
sprt.setColor(layer)
end
local function ToggleExportAsSprite()
@ -82,7 +36,7 @@ local function ToggleExportAsSprite()
else
layer.properties(extKey).exportedAsSprite = true
end
setColor(layer)
sprt.setColor(layer)
end
local export = {

14
abase-listeners.lua Normal file
View File

@ -0,0 +1,14 @@
local sprt = require "abase-sprite"
-- recolors all layers in the current sprite
local function RecolorLayers()
for i, layer in ipairs(app.sprite.layers) do
sprt.setColor(layer)
end
end
local export = {
RecolorLayers = RecolorLayers,
}
return export

View File

@ -1,4 +1,28 @@
-- Functions for modifying a sprite
local BASE_COLOR = Color {
r = 0,
g = 0,
b = 0,
a = 0
}
local IGNORE_COLOR = Color {
gray = 100
}
local IGNORE_SUBCOLOR = Color {
gray = 150
}
local MERGE_COLOR = Color {
r = 200,
g = 200,
b = 0
}
local MERGE_SUBCOLOR = Color {
r = 200,
g = 200,
b = 128
}
-- Deletes any layers with the 'ignored' property.
local function deleteLayers(spr, layers)
for i, layer in ipairs(layers) do
@ -44,9 +68,35 @@ local function revealLayers(layers)
end
end
-- set the color of a layer and its sublayers
local function setColor(layer, subColor)
if (layer.properties(extKey).ignored) then
layer.color = IGNORE_COLOR
subColor = IGNORE_SUBCOLOR
elseif subColor == IGNORE_SUBCOLOR then
layer.color = subColor
elseif (layer.properties(extKey).exportedAsSprite) then
layer.color = MERGE_COLOR
subColor = MERGE_SUBCOLOR
elseif subColor == MERGE_SUBCOLOR then
layer.color = subColor
else
layer.color = BASE_COLOR
end
if (layer.isGroup) then
for i, sublayer in ipairs(layer.layers) do
setColor(sublayer, subColor)
end
end
end
local export = {
deleteLayers = deleteLayers,
flattenLayers = flattenLayers,
revealLayers = revealLayers
revealLayers = revealLayers,
setColor = setColor,
}
return export

View File

@ -1,6 +1,7 @@
extKey = "annabunches/abase" -- this must come before we require 'abase-commands'
local cmd = require "abase-commands"
local listeners = require "abase-listeners"
function init(plugin)
plugin:newCommand{
@ -76,4 +77,13 @@ function init(plugin)
return app.layer.isGroup
end
}
app.events:on(
"aftercommand",
function(ev)
if (ev.name == "NewLayer") then
listeners.RecolorLayers()
end
end
)
end

View File

@ -11,6 +11,7 @@
"contributes": {
"scripts": [
{ "path": "./advanced-spritesheet-export.lua" },
{ "path": "./abase-listeners.lua" },
{ "path": "./abase-commands.lua" },
{ "path": "./abase-sprite.lua" }
]