initial commit

This commit is contained in:
azykov@mail.ru
2026-09-04 16:03:17 +03:00
commit a05d5f4547
31 changed files with 2842 additions and 0 deletions
+135
View File
@@ -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,
);