-- Sprites and colors from Michal Zalewski's https://lcamtuf.coredump.cx/sir-box-a-lot with some very light editing (mostly search and replace)
local convert = function(arr)
for i=1,3 do arr[i] = arr[i]/255 end
return arr
end
-- colors for the different sprites
-- SC_AIR is global
local SC_HAIR, SC_SKIN, SC_SUIT1, SC_SUIT2 -- player
local SC_CRT1, SC_CRT2, SC_CRT3 -- crate
local SC_SLV1, SC_SLV2, SC_SLV3 -- crate on target
local SC_TGT1, SC_TGT2, SC_TLTG -- target
local SC_BRK1, SC_BRK2, SC_BRK3 -- Warehouse walls
if dark_theme then
SC_AIR = { 0, 0, 0 }
SC_HAIR = convert{ 250, 250, 100 } -- Player hair / hat
SC_SKIN = convert{ 120, 100, 80 } -- Player skin tone
SC_SUIT1 = convert{ 40, 80, 100 } -- Player suit left
SC_SUIT2 = convert{ 40, 60, 80 } -- Player suit right
SC_CRT1 = convert{ 60, 30, 30 } -- Normal crate, outer color
SC_CRT2 = convert{ 100, 60, 60 } -- Normal crate, x pattern
SC_CRT3 = convert{ 40, 0, 40 } -- Normal crate, inner color
SC_SLV1 = convert{ 20, 40, 60 } -- Solved crate, as above
SC_SLV2 = convert{ 40, 80, 100 }
SC_SLV3 = convert{ 0, 30, 30 }
SC_TGT1 = convert{ 0, 20, 20 } -- Target marker outer glow
SC_TGT2 = convert{ 0, 50, 100 } -- Target marker dot
SC_PLTG = convert{ 0, 50, 255 } -- Player's suit over target
SC_BRK1 = convert{ 30, 30, 40 } -- Warehouse walls
SC_BRK2 = convert{ 20, 20, 30 }
SC_BRK3 = convert{ 40, 40, 50 }
else
SC_AIR = { 0.8, 0.8, 0.8 }
SC_HAIR = convert{ 250, 200, 100 } -- Player hair / hat
SC_SKIN = convert{ 160, 120, 80 } -- Player skin tone
SC_SUIT1 = convert{ 40, 80, 100 } -- Player suit left
SC_SUIT2 = convert{ 40, 60, 80 } -- Player suit right
SC_CRT1 = convert{ 160, 130, 130 } -- Normal crate, outer color
SC_CRT2 = convert{ 200, 160, 160 } -- Normal crate, x pattern
SC_CRT3 = convert{ 140, 100, 140 } -- Normal crate, inner color
SC_SLV1 = convert{ 120, 140, 160 } -- Solved crate, as above
SC_SLV2 = convert{ 140, 180, 200 }
SC_SLV3 = convert{ 100, 130, 130 }
SC_TGT1 = convert{ 0, 120, 120 } -- Target marker outer glow
SC_TGT2 = convert{ 0, 150, 200 } -- Target marker dot
SC_PLTG = convert{ 0, 50, 200 } -- Player's suit over target
SC_BRK1 = convert{ 130, 130, 140 } -- Warehouse walls
SC_BRK2 = convert{ 120, 120, 130 }
SC_BRK3 = convert{ 140, 140, 150 }
end
local SC_GRS1 = convert{ 0, 40, 90 } -- Grass / water outside
local SC_GRS2 = convert{ 0, 20, 90 }
sprites = {
-- 0: Player character
{
{ SC_AIR, SC_AIR, SC_HAIR, SC_HAIR, SC_AIR, SC_AIR },
{ SC_AIR, SC_AIR, SC_SKIN, SC_SKIN, SC_AIR, SC_AIR },
{ SC_SKIN, SC_SUIT1, SC_SUIT1, SC_SUIT2, SC_SUIT2, SC_SKIN },
{ SC_AIR, SC_AIR, SC_SUIT1, SC_SUIT2, SC_AIR, SC_AIR },
{ SC_AIR, SC_AIR, SC_SUIT1, SC_SUIT2, SC_AIR, SC_AIR },
{ SC_AIR, SC_SKIN, SC_AIR, SC_AIR, SC_SKIN, SC_AIR },
},
-- 1: Player over target
{
{ SC_AIR, SC_AIR, SC_HAIR, SC_HAIR, SC_AIR, SC_AIR },
{ SC_AIR, SC_AIR, SC_SKIN, SC_SKIN, SC_AIR, SC_AIR },
{ SC_SKIN, SC_SUIT1, SC_PLTG, SC_PLTG, SC_SUIT2, SC_SKIN },
{ SC_AIR, SC_AIR, SC_PLTG, SC_PLTG, SC_AIR, SC_AIR },
{ SC_AIR, SC_AIR, SC_PLTG, SC_PLTG, SC_AIR, SC_AIR },
{ SC_AIR, SC_SKIN, SC_AIR, SC_AIR, SC_SKIN, SC_AIR },
},
-- 2: Crate
{
{ SC_CRT1, SC_CRT1, SC_CRT1, SC_CRT1, SC_CRT1, SC_CRT1 },
{ SC_CRT1, SC_CRT2, SC_CRT3, SC_CRT3, SC_CRT2, SC_CRT1 },
{ SC_CRT1, SC_CRT3, SC_CRT2, SC_CRT2, SC_CRT3, SC_CRT1 },
{ SC_CRT1, SC_CRT3, SC_CRT2, SC_CRT2, SC_CRT3, SC_CRT1 },
{ SC_CRT1, SC_CRT2, SC_CRT3, SC_CRT3, SC_CRT2, SC_CRT1 },
{ SC_CRT1, SC_CRT1, SC_CRT1, SC_CRT1, SC_CRT1, SC_CRT1 },
},
-- 3: Crate at target position
{
{ SC_SLV1, SC_SLV1, SC_SLV1, SC_SLV1, SC_SLV1, SC_SLV1 },
{ SC_SLV1, SC_SLV2, SC_SLV3, SC_SLV3, SC_SLV2, SC_SLV1 },
{ SC_SLV1, SC_SLV3, SC_SLV2, SC_SLV2, SC_SLV3, SC_SLV1 },
{ SC_SLV1, SC_SLV3, SC_SLV2, SC_SLV2, SC_SLV3, SC_SLV1 },
{ SC_SLV1, SC_SLV2, SC_SLV3, SC_SLV3, SC_SLV2, SC_SLV1 },
{ SC_SLV1, SC_SLV1, SC_SLV1, SC_SLV1, SC_SLV1, SC_SLV1 },
},
-- 4: Crate target mark
{
{ SC_TGT1, SC_TGT1, SC_TGT1, SC_TGT1, SC_TGT1, SC_TGT1 },
{ SC_TGT1, SC_AIR, SC_AIR, SC_AIR, SC_AIR, SC_TGT1 },
{ SC_TGT1, SC_AIR, SC_TGT2, SC_TGT2, SC_AIR, SC_TGT1 },
{ SC_TGT1, SC_AIR, SC_TGT2, SC_TGT2, SC_AIR, SC_TGT1 },
{ SC_TGT1, SC_AIR, SC_AIR, SC_AIR, SC_AIR, SC_TGT1 },
{ SC_TGT1, SC_TGT1, SC_TGT1, SC_TGT1, SC_TGT1, SC_TGT1 },
},
-- 5: Wall
{
{ SC_BRK1, SC_BRK2, SC_BRK1, SC_BRK3, SC_BRK2, SC_BRK3 },
{ SC_BRK1, SC_BRK1, SC_BRK2, SC_BRK2, SC_BRK3, SC_BRK1 },
{ SC_BRK3, SC_BRK2, SC_BRK3, SC_BRK1, SC_BRK2, SC_BRK1 },
{ SC_BRK1, SC_BRK1, SC_BRK2, SC_BRK3, SC_BRK3, SC_BRK1 },
{ SC_BRK3, SC_BRK3, SC_BRK1, SC_BRK3, SC_BRK3, SC_BRK2 },
{ SC_BRK2, SC_BRK1, SC_BRK1, SC_BRK1, SC_BRK2, SC_BRK3 },
},
-- 6: Grass
{
{ SC_GRS1, SC_GRS1, SC_GRS1, SC_GRS2, SC_GRS2, SC_GRS2 },
{ SC_GRS2, SC_GRS2, SC_GRS2, SC_GRS1, SC_GRS1, SC_GRS1 },
{ SC_GRS1, SC_GRS1, SC_GRS1, SC_GRS2, SC_GRS2, SC_GRS2 },
{ SC_GRS2, SC_GRS2, SC_GRS2, SC_GRS1, SC_GRS1, SC_GRS1 },
{ SC_GRS1, SC_GRS1, SC_GRS1, SC_GRS2, SC_GRS2, SC_GRS2 },
{ SC_GRS2, SC_GRS2, SC_GRS2, SC_GRS1, SC_GRS1, SC_GRS1 },
},
};