From 07ba3bc9c0c4d83ee5149ff98ea3b93a68aee5f9 Mon Sep 17 00:00:00 2001 From: Aotumuri Date: Fri, 30 May 2025 15:49:17 +0900 Subject: [PATCH] fix --- src/client/Main.ts | 3 ++- src/client/SinglePlayerModal.ts | 3 ++- src/client/graphics/layers/TerritoryLayer.ts | 5 ++--- src/core/Schemas.ts | 5 ++++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/client/Main.ts b/src/client/Main.ts index 8d2ac69ad..273a335e2 100644 --- a/src/client/Main.ts +++ b/src/client/Main.ts @@ -23,6 +23,7 @@ import { NewsModal } from "./NewsModal"; import "./PublicLobby"; import { PublicLobby } from "./PublicLobby"; import { SinglePlayerModal } from "./SinglePlayerModal"; +import { TerritoryPatternStorage } from "./TerritoryPatterns"; import { territoryPatternsModal } from "./TerritoryPatternsModal"; import { UserSettingModal } from "./UserSettingModal"; import "./UsernameInput"; @@ -298,7 +299,7 @@ class Client { { gameID: lobby.gameID, serverConfig: config, - pattern: localStorage.getItem("territoryPattern") ?? "", + pattern: TerritoryPatternStorage.getSelectedPatternBase64() || "", flag: this.flagInput === null || this.flagInput.getCurrentFlag() === "xx" ? "" diff --git a/src/client/SinglePlayerModal.ts b/src/client/SinglePlayerModal.ts index 06968b786..ef1eca818 100644 --- a/src/client/SinglePlayerModal.ts +++ b/src/client/SinglePlayerModal.ts @@ -20,6 +20,7 @@ import { DifficultyDescription } from "./components/Difficulties"; import "./components/Maps"; import { FlagInput } from "./FlagInput"; import { JoinLobbyEvent } from "./Main"; +import { TerritoryPatternStorage } from "./TerritoryPatterns"; import { UsernameInput } from "./UsernameInput"; @customElement("single-player-modal") @@ -441,7 +442,7 @@ export class SinglePlayerModal extends LitElement { flagInput.getCurrentFlag() === "xx" ? "" : flagInput.getCurrentFlag(), - pattern: localStorage.getItem("territoryPattern") ?? undefined, + pattern: TerritoryPatternStorage.getSelectedPatternBase64(), }, ], config: { diff --git a/src/client/graphics/layers/TerritoryLayer.ts b/src/client/graphics/layers/TerritoryLayer.ts index f8c0509eb..480b62997 100644 --- a/src/client/graphics/layers/TerritoryLayer.ts +++ b/src/client/graphics/layers/TerritoryLayer.ts @@ -8,7 +8,7 @@ import { GameUpdateType } from "../../../core/game/GameUpdates"; import { GameView, PlayerView } from "../../../core/game/GameView"; import { PseudoRandom } from "../../../core/PseudoRandom"; import { AlternateViewEvent, DragEvent } from "../../InputHandler"; -import { PatternDecoder, territoryPatterns } from "../../TerritoryPatterns"; +import { PatternDecoder } from "../../TerritoryPatterns"; import { Layer } from "./Layer"; export class TerritoryLayer implements Layer { @@ -299,9 +299,8 @@ export class TerritoryLayer implements Layer { const x = this.game.x(tile); const y = this.game.y(tile); const baseColor = this.theme.territoryColor(owner); - const patternBase64 = territoryPatterns[patternName]; - const decoder = new PatternDecoder(patternBase64 ?? ""); + const decoder = new PatternDecoder(patternName ?? ""); const bit = decoder.isSet(x, y) ? 1 : 0; const colorToUse = bit ? baseColor.darken(0.2) : baseColor; this.paintCell(x, y, colorToUse, 150); diff --git a/src/core/Schemas.ts b/src/core/Schemas.ts index 67fd09980..a54a8a217 100644 --- a/src/core/Schemas.ts +++ b/src/core/Schemas.ts @@ -187,7 +187,10 @@ export const AttackIntentSchema = BaseIntentSchema.extend({ export const SpawnIntentSchema = BaseIntentSchema.extend({ flag: z.string().optional(), - pattern: z.string().optional(), + pattern: z + .string() + .regex(/^[A-Za-z0-9+/=]*$/) + .optional(), type: z.literal("spawn"), name: SafeString, playerType: PlayerTypeSchema,