BatterUp/src/draw/player.lua

79 lines
2.2 KiB
Lua

-- selene: allow(shadowing)
local gfx = playdate.graphics
---@alias PlayerImageBundle { smiling: pd_image, lowHat: pd_image, frowning: pd_image, back: pd_image }
---@alias SpriteCollection PlayerImageBundle[]
---@param image pd_image
---@param drawInverted boolean
function maybeDrawInverted(image, x, y, drawInverted)
-- TODO: Bring logo up a pixel on the dark player base?
local drawMode = gfx.getImageDrawMode()
if drawInverted then
gfx.setImageDrawMode(gfx.kDrawModeInverted)
end
image:draw(x, y)
gfx.setImageDrawMode(drawMode)
end
--- TODO: Custom names on jerseys?
---@return PlayerImageBundle
---@param base pd_image
---@param isInverted boolean
function buildPlayerBundle(base, back, smile, frown, logo, isInverted)
local smiling = gfx.image.new(base:getSize())
gfx.lockFocus(smiling)
base:draw(0, 0)
Hat:draw(6, 0)
smile:draw(5, 9)
maybeDrawInverted(logo, 3, 25, isInverted)
local lowHat = gfx.image.new(base:getSize())
gfx.lockFocus(lowHat)
base:draw(0, 0)
Hat:draw(6, 2)
smile:draw(5, 9)
maybeDrawInverted(logo, 3, 25, isInverted)
local frowning = gfx.image.new(base:getSize())
gfx.lockFocus(frowning)
base:draw(0, 0)
maybeDrawInverted(logo, 3, 25, isInverted)
Hat:draw(6, 0)
frown:draw(5, 9)
gfx.unlockFocus()
return {
smiling = smiling,
lowHat = lowHat,
frowning = frowning,
back = back,
}
end
---@type SpriteCollection
AwayTeamSpriteGroup = nil
---@type SpriteCollection
HomeTeamSpriteGroup = nil
function replaceAwayLogo(logo)
AwayTeamSpriteGroup = {
buildPlayerBundle(DarkPlayerAwayBase, DarkPlayerAwayBack, DarkPlayerSmile, DarkPlayerFrown, logo, true),
buildPlayerBundle(LightPlayerAwayBase, LightPlayerAwayBack, LightPlayerSmile, LightPlayerFrown, logo, true),
}
end
function replaceHomeLogo(logo)
HomeTeamSpriteGroup = {
buildPlayerBundle(DarkPlayerHomeBase, DarkPlayerHomeBack, DarkPlayerSmile, DarkPlayerFrown, logo, true),
buildPlayerBundle(LightPlayerHomeBase, LightPlayerHomeBack, LightPlayerSmile, LightPlayerFrown, logo, true),
}
end
replaceAwayLogo(Logos[1].image)
replaceHomeLogo(Logos[2].image)