From 6e924c24a9f23426e93701eb0bb27254e6517652 Mon Sep 17 00:00:00 2001 From: Aotumuri Date: Fri, 30 May 2025 14:58:00 +0900 Subject: [PATCH] fixed --- resources/territory_patterns.json | 66 +++++--------------- src/client/TerritoryPatterns.ts | 11 ++-- src/client/TerritoryPatternsModal.ts | 8 +-- src/client/graphics/layers/TerritoryLayer.ts | 4 +- 4 files changed, 26 insertions(+), 63 deletions(-) diff --git a/resources/territory_patterns.json b/resources/territory_patterns.json index 0cb33ebb0..a98e077fd 100644 --- a/resources/territory_patterns.json +++ b/resources/territory_patterns.json @@ -1,52 +1,18 @@ { - "patterns": { - "stripes_v": { - "patternBase64": "AQACAAIACKA=" - }, - "stripes_h": { - "patternBase64": "AQACAAIACMA=" - }, - "checkerboard": { - "patternBase64": "AQACAAIACJA=" - }, - "diagonal": { - "patternBase64": "AQAQABAAAYAAQAAgABAACAAEAAIAAQAAgABAACAAEAAIAAQAAgAB" - }, - "cross": { - "patternBase64": "AQAQABAAAYABQAIgBBAICBAEIAJAAYABgAJABCAIEBAIIARAAoAB" - }, - "mini_cross": { - "patternBase64": "AQAQAAgAAcADMAwMMAPAA8AMMDAMwAM=" - }, - "horizontal_stripes": { - "patternBase64": "AQAQABAAAf//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA" - }, - "sparse_dots": { - "patternBase64": "AQAQABAAAYCAAAAAAAAAAAAAAAAAAACAgAAAAAAAAAAAAAAAAAAA" - }, - "evan": { - "patternBase64": "AQAYAAcABQAAAHkjEkEkmnEnlkDEknjEkgAAAA==" - }, - "diagonal_stripe": { - "patternBase64": "AQAQAAgAAYABQAIgBBAICBAEIAJAAYA=" - }, - "mountain_ridge": { - "patternBase64": "AQAQAAgAAQAAGBg8PH5+//9+fjw8GBg=" - }, - "scattered_dots": { - "patternBase64": "AQAQAAgAAQAAQAQAAAAAAAAAABAIAAA=" - }, - "circuit_board": { - "patternBase64": "AQAQAAgAAcPDw8MwMDAwDDAMMMPDw8M=" - }, - "vertical_bars": { - "patternBase64": "AQAQAAgAAZJJkkmSSZJJkkmSSZJJkkk=" - }, - ".w.": { - "patternBase64": "AQAQAAgAAQAAAAAAAEACQYIiRHQuaBY=" - }, - "openfront": { - "patternBase64": "AQBCAAoABQAAAAAAAAAAAAAAAAAAAAABw4+RD54cRfCJEgZCBEiZECJEgVCBEiVECJ48TDx4iTECJAgRCBQiRECJAgRCBIiREBxA+RCBEcREAAAAAAAAAAAA" - } - } + "stripes_v": "AQACAAIACKA=", + "stripes_h": "AQACAAIACMA=", + "checkerboard": "AQACAAIACJA=", + "diagonal": "AQAQABAAAYAAQAAgABAACAAEAAIAAQAAgABAACAAEAAIAAQAAgAB", + "cross": "AQAQABAAAYABQAIgBBAICBAEIAJAAYABgAJABCAIEBAIIARAAoAB", + "mini_cross": "AQAQAAgAAcADMAwMMAPAA8AMMDAMwAM=", + "horizontal_stripes": "AQAQABAAAf//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA", + "sparse_dots": "AQAQABAAAYCAAAAAAAAAAAAAAAAAAACAgAAAAAAAAAAAAAAAAAAA", + "evan": "AQAYAAcABQAAAHkjEkEkmnEnlkDEknjEkgAAAA==", + "diagonal_stripe": "AQAQAAgAAYABQAIgBBAICBAEIAJAAYA=", + "mountain_ridge": "AQAQAAgAAQAAGBg8PH5+//9+fjw8GBg=", + "scattered_dots": "AQAQAAgAAQAAQAQAAAAAAAAAABAIAAA=", + "circuit_board": "AQAQAAgAAcPDw8MwMDAwDDAMMMPDw8M=", + "vertical_bars": "AQAQAAgAAZJJkkmSSZJJkkmSSZJJkkk=", + ".w.": "AQAQAAgAAQAAAAAAAEACQYIiRHQuaBY=", + "openfront": "AQBCAAoABQAAAAAAAAAAAAAAAAAAAAABw4+RD54cRfCJEgZCBEiZECJEgVCBEiVECJ48TDx4iTECJAgRCBQiRECJAgRCBIiREBxA+RCBEcREAAAAAAAAAAAA" } diff --git a/src/client/TerritoryPatterns.ts b/src/client/TerritoryPatterns.ts index 02035873e..4b5e72d1b 100644 --- a/src/client/TerritoryPatterns.ts +++ b/src/client/TerritoryPatterns.ts @@ -1,13 +1,10 @@ import { z } from "zod"; import rawTerritoryPatterns from "../../resources/territory_patterns.json"; -const PatternSchema = z.object({ - patternBase64: z.string().optional(), -}); - -const TerritoryPatternsSchema = z.object({ - patterns: z.record(PatternSchema), -}); +export const TerritoryPatternsSchema = z.record( + z.string(), + z.string().base64(), +); export const territoryPatterns = TerritoryPatternsSchema.parse(rawTerritoryPatterns); diff --git a/src/client/TerritoryPatternsModal.ts b/src/client/TerritoryPatternsModal.ts index 35946689c..7be39c93e 100644 --- a/src/client/TerritoryPatternsModal.ts +++ b/src/client/TerritoryPatternsModal.ts @@ -82,7 +82,7 @@ export class territoryPatternsModal extends LitElement { class="flex flex-wrap gap-4 p-2" style="justify-content: center; align-items: flex-start;" > - ${Object.entries(territoryPatterns.patterns).map(([key, pattern]) => { + ${Object.entries(territoryPatterns ?? {}).map(([key, pattern]) => { const isLocked = this.isPatternLocked(key); const reason = this.lockedReasons[key] || "Locked"; @@ -114,7 +114,7 @@ export class territoryPatternsModal extends LitElement { " > ${(() => { - const decoder = new PatternDecoder(pattern.patternBase64!); + const decoder = new PatternDecoder(pattern); const cellCountX = decoder.getTileWidth(); const cellCountY = decoder.getTileHeight(); const cellSize = Math.floor( @@ -186,12 +186,12 @@ export class territoryPatternsModal extends LitElement { private updatePreview() { if (!this.previewButton || !this.selectedPattern) return; - const pattern = territoryPatterns.patterns[this.selectedPattern]; + const pattern = territoryPatterns[this.selectedPattern]; if (!pattern) return; const fixedHeight = 48; const fixedWidth = 48; - const decoder = new PatternDecoder(pattern.patternBase64!); + const decoder = new PatternDecoder(pattern); const cellCountX = decoder.getTileWidth(); const cellCountY = decoder.getTileHeight(); diff --git a/src/client/graphics/layers/TerritoryLayer.ts b/src/client/graphics/layers/TerritoryLayer.ts index 6403c20f7..f8c0509eb 100644 --- a/src/client/graphics/layers/TerritoryLayer.ts +++ b/src/client/graphics/layers/TerritoryLayer.ts @@ -299,9 +299,9 @@ export class TerritoryLayer implements Layer { const x = this.game.x(tile); const y = this.game.y(tile); const baseColor = this.theme.territoryColor(owner); - const patternConfig = territoryPatterns.patterns[patternName]; + const patternBase64 = territoryPatterns[patternName]; - const decoder = new PatternDecoder(patternConfig.patternBase64 ?? ""); + const decoder = new PatternDecoder(patternBase64 ?? ""); const bit = decoder.isSet(x, y) ? 1 : 0; const colorToUse = bit ? baseColor.darken(0.2) : baseColor; this.paintCell(x, y, colorToUse, 150);