initial commit
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
/** Pixel grids for 8-bit-style sprites. Each cell is a CSS color, or '' for transparent. */
|
||||
export type PixelGrid = string[][];
|
||||
|
||||
function grid(rows: string[], palette: Record<string, string>): PixelGrid {
|
||||
return rows.map((row) => [...row].map((ch) => palette[ch] ?? ''));
|
||||
}
|
||||
|
||||
const CHARACTER_PALETTE = {
|
||||
O: '#1b1611',
|
||||
H: '#4a2f1c',
|
||||
S: '#f0c090',
|
||||
s: '#d9a873',
|
||||
B: '#3f6fb0',
|
||||
b: '#2f5488',
|
||||
P: '#2c2c3e',
|
||||
p: '#20202e',
|
||||
F: '#2a1f14',
|
||||
};
|
||||
|
||||
export const CHARACTER_SPRITE: PixelGrid = grid(
|
||||
[
|
||||
'....OOOOOOOO....',
|
||||
'..OHHHHHHHHHHO..',
|
||||
'.OHHHHHHHHHHHHO.',
|
||||
'OHHHHHHHHHHHHHHO',
|
||||
'OHHSSSSSSSSSSHHO',
|
||||
'OSSSSOSSSSOSSSSO',
|
||||
'OSSSSSSssSSSSSSO',
|
||||
'.OSSSSSSSSSSSSO.',
|
||||
'......OSSO......',
|
||||
'...OBBBBBBBBO...',
|
||||
'..OBBBBBBBBBBO..',
|
||||
'.OSBBBBBBBBBBSO.',
|
||||
'.OSBBbBBBBbBBSO.',
|
||||
'.OSBBbBBBBbBBSO.',
|
||||
'..OBBbBBBBbBBO..',
|
||||
'..OPPpPPPPpPPO..',
|
||||
'..OPPpPPPPpPPO..',
|
||||
'..OPPpO..OpPPO..',
|
||||
'..OPPpO..OpPPO..',
|
||||
'..OPPpO..OpPPO..',
|
||||
'..OFFFO..OFFFO..',
|
||||
'.OFFFFO..OFFFFO.',
|
||||
],
|
||||
CHARACTER_PALETTE,
|
||||
);
|
||||
|
||||
const TREE_PALETTE = {
|
||||
O: '#14290f',
|
||||
G: '#2e7d32',
|
||||
g: '#1b5e20',
|
||||
H: '#66bb6a',
|
||||
T: '#6b4226',
|
||||
t: '#4e2f1a',
|
||||
n: '#8a5a34',
|
||||
};
|
||||
|
||||
export const TREE_SPRITE: PixelGrid = grid(
|
||||
[
|
||||
'......OggO......',
|
||||
'....OGGggGGO....',
|
||||
'..OGGGGggGGGGO..',
|
||||
'.OGgGGGHHGGGgGO.',
|
||||
'OGgGGGGHHGGGGgGO',
|
||||
'OGGgGGGggGGGgGGO',
|
||||
'OGgGGGgGGgGGGgGO',
|
||||
'OGGgGGGGGGGGgGGO',
|
||||
'OGgGGGGggGGGGgGO',
|
||||
'.OGgGGGggGGGgGO.',
|
||||
'..OGgGGggGGgGO..',
|
||||
'...OGgGggGgGO...',
|
||||
'....OGgGGgGO....',
|
||||
'......OggO......',
|
||||
'......OTTO......',
|
||||
'......TTTT......',
|
||||
'......TttT......',
|
||||
'......tnnt......',
|
||||
'......TTTT......',
|
||||
'......TOOT......',
|
||||
],
|
||||
TREE_PALETTE,
|
||||
);
|
||||
|
||||
const LOG_PALETTE = {
|
||||
O: '#2a1a0d',
|
||||
B: '#7a4a2b',
|
||||
C: '#a9703f',
|
||||
};
|
||||
|
||||
export const LOG_SPRITE: PixelGrid = grid(
|
||||
[
|
||||
'..OOOOOOOOOOOOOOOO..',
|
||||
'OBBBBBBBBBBBBBBBBBBO',
|
||||
'OBCCCCCCCCCCCCCCCCBO',
|
||||
'OBBBBBBBBBBBBBBBBBBO',
|
||||
'OBCCCCCCCCCCCCCCCCBO',
|
||||
'OBBBBBBBBBBBBBBBBBBO',
|
||||
'OBCCCCCCCCCCCCCCCCBO',
|
||||
'OBBBBBBBBBBBBBBBBBBO',
|
||||
'OBCCCCCCCCCCCCCCCCBO',
|
||||
'OBBBBBBBBBBBBBBBBBBO',
|
||||
'OBCCCCCCCCCCCCCCCCBO',
|
||||
'..OOOOOOOOOOOOOOOO..',
|
||||
],
|
||||
LOG_PALETTE,
|
||||
);
|
||||
|
||||
const COIN_PALETTE = {
|
||||
Y: '#f5c518',
|
||||
D: '#c99a0e',
|
||||
W: '#fff2b0',
|
||||
E: '#a97c08',
|
||||
};
|
||||
|
||||
export const COIN_SPRITE: PixelGrid = grid(
|
||||
[
|
||||
'.....YYYYYY.....',
|
||||
'...YYYYYYYYYY...',
|
||||
'..YWWYYYYYYYYY..',
|
||||
'.YYWWYYYYYYYYYY.',
|
||||
'.YYYYYYYYYYYYYY.',
|
||||
'YYYYYDDDDDDYYYYY',
|
||||
'YYYYYDYYYYDYYYYY',
|
||||
'YYYYYDYYYYDYYYYY',
|
||||
'YYYYYDYYYYDYYYYY',
|
||||
'YYYYYDYYYYDYYYYY',
|
||||
'YYYYYDDDDDDYYYYY',
|
||||
'.YYYYYYYYYYYYYY.',
|
||||
'.YYYYYYYYYYEEYY.',
|
||||
'..YYYYYYYYYEEY..',
|
||||
'...YYYYYYYYYY...',
|
||||
'.....YYYYYY.....',
|
||||
],
|
||||
COIN_PALETTE,
|
||||
);
|
||||
Reference in New Issue
Block a user