sprites/Tupfile.lua
2020-04-17 01:23:04 -04:00

104 lines
3.8 KiB
Lua

tup.include("util/strict.lua")
tup.include("util/lua-ext.lua")
tup.include("util/tup-ext.lua")
tup.include("util/pokemon.lua")
-- Generate uniform size minisprites
function padsprite(input, output, w, h)
tup.foreach_rule(
input,
"^ padsprite %f^ tools/padsprite.sh %f %o " .. w .. " " .. h,
output
)
end
for canon in iter{"canonical", "noncanonical"} do
for dir in iter{"asymmetrical", "custom", "misc", "pokemon"} do
-- TODO fix this, tup hates git's quirk of not creating directories when
-- there aren't any files
if canon == "noncanonical" and dir ~= "pokemon" then
goto continue
end
for file in iglob{"src/" .. canon .. "/minisprites/gen6/" .. dir .. "/*"} do
padsprite(file,
"build/gen6-minisprites-padded/" .. canon .. "/" .. dir .. "/" .. tup.file(file),
40, 30)
end
::continue::
end
end
-- Forum sprites
for file in iglob{"build/gen6-minisprites-padded/canonical/pokemon/*", "build/gen6-minisprites-padded/noncanonical/pokemon/*"} do
local base = toSmogonAlias(decodeBase(file))
symlink(file,
"build/smogon/forumsprites/" .. base .. ".png")
end
-- PS spritesheet
tup.rule(
{"build/gen6-minisprites-padded/canonical/pokemon/*", "build/gen6-minisprites-padded/noncanonical/pokemon/*"},
"node tools/sprites/ps.js build/gen6-minisprites-padded/canonical/pokemon/ build/gen6-minisprites-padded/noncanonical/pokemon/ --output-image build/ps/pokemonicons-sheet.png --output-metadata build/ps/pokemonicons.json",
{"build/ps/pokemonicons-sheet.png", "build/ps/pokemonicons.json"}
)
-- PS models
for file in iglob{"src/canonical/models/front/*", "src/canonical/models/front-cosmetic/*", "src/canonical/models/front-misc/*", "src/noncanonical/models/front/*",
-- TODO: only pick noncanonical that aren't already in models/
"src/noncanonical/sprites/gen5/front/*"} do
local output = toPSSpriteID(decodeBase(file)) .. "." .. tup.ext(file)
symlink(file, "build/ps/ani/" .. output)
end
for file in iglob{"src/canonical/models/back/*", "src/canonical/models/back-cosmetic/*", "src/canonical/models/back-misc/*", "src/noncanonical/models/back/*",
-- TODO: only pick noncanonical that aren't already in models/
"src/noncanonical/sprites/gen5/back/*"} do
local output = toPSSpriteID(decodeBase(file)) .. "." .. tup.ext(file)
symlink(file, "build/ps/ani-back/" .. output)
end
for file in iglob{"src/canonical/models/front-shiny/*", "src/canonical/models/front-shiny-cosmetic/*"} do
local output = toPSSpriteID(decodeBase(file)) .. "." .. tup.ext(file)
symlink(file, "build/ps/ani-shiny/" .. output)
end
for file in iglob{"src/canonical/models/back-shiny/*", "src/canonical/models/back-shiny-cosmetic/*"} do
local output = toPSSpriteID(decodeBase(file)) .. "." .. tup.ext(file)
symlink(file, "build/ps/ani-back-shiny/" .. output)
end
-- Smogdex social images
function fbsprite(input, output)
tup.foreach_rule(
input,
"^ fbsprite %f^ tools/fbsprite.sh %f %o",
output
)
end
function twittersprite(input, output)
tup.foreach_rule(
input,
"^ twittersprite %f^ tools/twittersprite.sh %f %o",
output
)
end
for file in iglob{"src/canonical/models/front/*", "src/noncanonical/models/front/*",
-- TODO: only pick noncanonical that aren't already in models/
"src/noncanonical/sprites/gen5/front/*"} do
local base = toSmogonAlias(decodeBase(file))
symlink(file, "build/smogon/xy/" .. base .. ".%e")
fbsprite(file, "build/smogon/fbsprites/xy/" .. base .. ".png")
twittersprite(file, "build/smogon/twittersprites/xy/" .. base .. ".png")
end