mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
Merge branch 'codex/fix/pony-flag-sprite-coords'
This commit is contained in:
@@ -56,7 +56,12 @@ describe('board-flags', () => {
|
|||||||
x: 0,
|
x: 0,
|
||||||
y: 0,
|
y: 0,
|
||||||
});
|
});
|
||||||
expect(getBoardFlagDefinition('pony', 'AJ')).toMatchObject({ code: 'AJ', label: 'Applejack', x: 80, y: 0 });
|
// Selector order (PONY_FLAG_ENTRIES) differs from the sprite's alphabetical-by-code layout,
|
||||||
|
// so these codes only land on the right cell via PONY_FLAG_COORDINATES.
|
||||||
|
expect(getBoardFlagDefinition('pony', 'AB')).toMatchObject({ code: 'AB', label: 'Aria Blaze', x: 16, y: 0 });
|
||||||
|
expect(getBoardFlagDefinition('pony', 'ADA')).toMatchObject({ code: 'ADA', label: 'Adagio Dazzle', x: 32, y: 0 });
|
||||||
|
expect(getBoardFlagDefinition('pony', 'AJ')).toMatchObject({ code: 'AJ', label: 'Applejack', x: 48, y: 0 });
|
||||||
|
expect(getBoardFlagDefinition('pony', 'AN')).toMatchObject({ code: 'AN', label: 'Anon', x: 64, y: 0 });
|
||||||
expect(getBoardFlagDefinition('pony', 'ZS')).toMatchObject({ code: 'ZS', label: 'Zipp Storm', x: 16, y: 144 });
|
expect(getBoardFlagDefinition('pony', 'ZS')).toMatchObject({ code: 'ZS', label: 'Zipp Storm', x: 16, y: 144 });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
+88
-1
@@ -78,6 +78,7 @@ const POLITICAL_FLAG_COORDINATES = {
|
|||||||
WP: [64, 48],
|
WP: [64, 48],
|
||||||
} as const satisfies Record<(typeof POLITICAL_FLAG_ENTRIES)[number][0], readonly [number, number]>;
|
} as const satisfies Record<(typeof POLITICAL_FLAG_ENTRIES)[number][0], readonly [number, number]>;
|
||||||
|
|
||||||
|
// Order follows 4chan's board flag selector. Coordinates follow flags/mlp/flags.1.css.
|
||||||
const PONY_FLAG_ENTRIES = [
|
const PONY_FLAG_ENTRIES = [
|
||||||
['4CC', '4cc /mlp/'],
|
['4CC', '4cc /mlp/'],
|
||||||
['ADA', 'Adagio Dazzle'],
|
['ADA', 'Adagio Dazzle'],
|
||||||
@@ -164,6 +165,92 @@ const PONY_FLAG_ENTRIES = [
|
|||||||
['ZS', 'Zipp Storm'],
|
['ZS', 'Zipp Storm'],
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
|
const PONY_FLAG_COORDINATES = {
|
||||||
|
'4CC': [0, 0],
|
||||||
|
AB: [16, 0],
|
||||||
|
ADA: [32, 0],
|
||||||
|
AJ: [48, 0],
|
||||||
|
AN: [64, 0],
|
||||||
|
ANF: [80, 0],
|
||||||
|
APB: [96, 0],
|
||||||
|
AU: [112, 0],
|
||||||
|
BB: [128, 0],
|
||||||
|
BM: [0, 16],
|
||||||
|
BP: [16, 16],
|
||||||
|
BS: [32, 16],
|
||||||
|
CB: [48, 16],
|
||||||
|
CG: [64, 16],
|
||||||
|
CHE: [80, 16],
|
||||||
|
CL: [96, 16],
|
||||||
|
CO: [112, 16],
|
||||||
|
DAY: [128, 16],
|
||||||
|
DD: [0, 32],
|
||||||
|
DER: [16, 32],
|
||||||
|
DIS: [32, 32],
|
||||||
|
DT: [48, 32],
|
||||||
|
EQA: [64, 32],
|
||||||
|
EQF: [80, 32],
|
||||||
|
EQI: [96, 32],
|
||||||
|
EQP: [112, 32],
|
||||||
|
EQR: [128, 32],
|
||||||
|
EQS: [0, 48],
|
||||||
|
EQT: [16, 48],
|
||||||
|
ERA: [32, 48],
|
||||||
|
FAU: [48, 48],
|
||||||
|
FL: [64, 48],
|
||||||
|
FLE: [80, 48],
|
||||||
|
GI: [96, 48],
|
||||||
|
HT: [112, 48],
|
||||||
|
IZ: [128, 48],
|
||||||
|
LI: [0, 64],
|
||||||
|
LT: [16, 64],
|
||||||
|
LY: [32, 64],
|
||||||
|
MA: [48, 64],
|
||||||
|
MAU: [64, 64],
|
||||||
|
MIN: [80, 64],
|
||||||
|
NI: [96, 64],
|
||||||
|
NUR: [112, 64],
|
||||||
|
OCT: [128, 64],
|
||||||
|
PAR: [0, 80],
|
||||||
|
PC: [16, 80],
|
||||||
|
PCE: [32, 80],
|
||||||
|
PI: [48, 80],
|
||||||
|
PLU: [64, 80],
|
||||||
|
PM: [80, 80],
|
||||||
|
PP: [96, 80],
|
||||||
|
QC: [112, 80],
|
||||||
|
RAR: [128, 80],
|
||||||
|
RD: [0, 96],
|
||||||
|
RLU: [16, 96],
|
||||||
|
S1L: [32, 96],
|
||||||
|
SCO: [48, 96],
|
||||||
|
SHI: [64, 96],
|
||||||
|
SIL: [80, 96],
|
||||||
|
SON: [96, 96],
|
||||||
|
SP: [112, 96],
|
||||||
|
SPI: [128, 96],
|
||||||
|
SPT: [0, 112],
|
||||||
|
SS: [16, 112],
|
||||||
|
STA: [32, 112],
|
||||||
|
STL: [48, 112],
|
||||||
|
SUN: [64, 112],
|
||||||
|
SUS: [80, 112],
|
||||||
|
SWB: [96, 112],
|
||||||
|
TFA: [112, 112],
|
||||||
|
TFO: [128, 112],
|
||||||
|
TFP: [0, 128],
|
||||||
|
TFS: [16, 128],
|
||||||
|
TFT: [32, 128],
|
||||||
|
TFV: [48, 128],
|
||||||
|
TP: [64, 128],
|
||||||
|
TS: [80, 128],
|
||||||
|
TWI: [96, 128],
|
||||||
|
TX: [112, 128],
|
||||||
|
VS: [128, 128],
|
||||||
|
ZE: [0, 144],
|
||||||
|
ZS: [16, 144],
|
||||||
|
} as const satisfies Record<(typeof PONY_FLAG_ENTRIES)[number][0], readonly [number, number]>;
|
||||||
|
|
||||||
const normalizeCode = (value: string | undefined) => value?.trim().toUpperCase();
|
const normalizeCode = (value: string | undefined) => value?.trim().toUpperCase();
|
||||||
|
|
||||||
const buildFlagDefinitions = (
|
const buildFlagDefinitions = (
|
||||||
@@ -204,7 +291,7 @@ const BOARD_FLAGS_BY_KIND: Record<BoardFlagKind, ReadonlyMap<string, BoardFlagDe
|
|||||||
POLITICAL_FLAG_COLUMNS,
|
POLITICAL_FLAG_COLUMNS,
|
||||||
POLITICAL_FLAG_COORDINATES,
|
POLITICAL_FLAG_COORDINATES,
|
||||||
),
|
),
|
||||||
pony: buildFlagDefinitions(PONY_FLAG_ENTRIES, 'pony', PONY_FLAG_SPRITE_PATH, PONY_FLAG_WIDTH, PONY_FLAG_HEIGHT, PONY_FLAG_COLUMNS),
|
pony: buildFlagDefinitions(PONY_FLAG_ENTRIES, 'pony', PONY_FLAG_SPRITE_PATH, PONY_FLAG_WIDTH, PONY_FLAG_HEIGHT, PONY_FLAG_COLUMNS, PONY_FLAG_COORDINATES),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const normalizeBoardFlagKind = (value: string | undefined): BoardFlagKind | undefined => {
|
export const normalizeBoardFlagKind = (value: string | undefined): BoardFlagKind | undefined => {
|
||||||
|
|||||||
Reference in New Issue
Block a user