Please create a utility class for decoding patterns.

This commit is contained in:
Aotumuri
2025-05-22 20:17:42 +09:00
parent 18e35400a3
commit fde6c58b20
+19 -7
View File
@@ -16,9 +16,14 @@ const TerritoryPatternsSchema = z.object({
export const territoryPatterns =
TerritoryPatternsSchema.parse(rawTerritoryPatterns);
for (const [key, value] of Object.entries(territoryPatterns.patterns)) {
if (!value.pattern && value.patternBase64) {
const byteString = atob(value.patternBase64);
class PatternDecoder {
static decodeBase64Pattern(base64: string): {
pattern: number[][];
tileWidth: number;
tileHeight: number;
scale: number;
} {
const byteString = atob(base64);
const bytes = new Uint8Array(byteString.length);
for (let i = 0; i < byteString.length; i++) {
bytes[i] = byteString.charCodeAt(i);
@@ -53,10 +58,17 @@ for (const [key, value] of Object.entries(territoryPatterns.patterns)) {
pattern.push(row);
}
value.pattern = pattern;
value.tileWidth = tileWidth;
value.tileHeight = tileHeight;
value.scale = scale;
return { pattern, tileWidth, tileHeight, scale };
}
}
for (const [key, value] of Object.entries(territoryPatterns.patterns)) {
if (!value.pattern && value.patternBase64) {
const decoded = PatternDecoder.decodeBase64Pattern(value.patternBase64);
value.pattern = decoded.pattern;
value.tileWidth = decoded.tileWidth;
value.tileHeight = decoded.tileHeight;
value.scale = decoded.scale;
}
}