From 8b6895d74532cfd618bf68edc12bfaf1e0c63ca1 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 31 Mar 2025 13:09:27 -0700 Subject: [PATCH] add prettier import plugin --- .prettierrc | 4 +- package-lock.json | 18 +++++ package.json | 1 + src/client/ClientGameRunner.ts | 44 ++++++------ src/client/DarkModeButton.ts | 4 +- src/client/FlagInput.ts | 5 +- src/client/GoogleAdElement.ts | 4 +- src/client/HostLobbyModal.ts | 16 ++--- src/client/InputHandler.ts | 3 +- src/client/JoinPrivateLobbyModal.ts | 8 +-- src/client/LangSelector.ts | 8 +-- src/client/LocalPersistantStats.ts | 1 - src/client/LocalServer.ts | 2 - src/client/Main.ts | 48 ++++++------- src/client/PublicLobby.ts | 9 ++- src/client/SinglePlayerModal.ts | 13 ++-- src/client/Transport.ts | 17 ++--- src/client/UsernameInput.ts | 4 +- src/client/components/Difficulties.ts | 2 +- src/client/components/Maps.ts | 2 +- src/client/components/ModalOverlay.ts | 2 +- src/client/components/baseComponents/Modal.ts | 2 +- src/client/gameStartingModal.ts | 2 +- src/client/graphics/GameRenderer.ts | 43 ++++++------ src/client/graphics/NameBoxCalculator.ts | 5 +- src/client/graphics/TransformHandler.ts | 12 +--- src/client/graphics/layers/BuildMenu.ts | 30 ++++----- src/client/graphics/layers/ControlPanel.ts | 13 ++-- src/client/graphics/layers/EmojiTable.ts | 2 +- src/client/graphics/layers/EventsDisplay.ts | 26 +++---- src/client/graphics/layers/Layer.ts | 2 - src/client/graphics/layers/NameLayer.ts | 26 +++---- src/client/graphics/layers/OptionsMenu.ts | 6 +- .../graphics/layers/PlayerInfoOverlay.ts | 17 ++--- src/client/graphics/layers/PlayerPanel.ts | 25 ++++--- src/client/graphics/layers/RadialMenu.ts | 43 ++++-------- src/client/graphics/layers/StructureLayer.ts | 20 +++--- src/client/graphics/layers/TerrainLayer.ts | 4 +- src/client/graphics/layers/TerritoryLayer.ts | 25 ++----- src/client/graphics/layers/TopBar.ts | 4 +- src/client/graphics/layers/UILayer.ts | 6 +- src/client/graphics/layers/UnitLayer.ts | 20 +++--- src/client/graphics/layers/WinModal.ts | 13 ++-- src/client/utilities/Maps.ts | 22 +++--- src/core/GameRunner.ts | 18 ++--- src/core/Util.ts | 9 +-- src/core/configuration/Config.ts | 6 +- src/core/configuration/DefaultConfig.ts | 3 +- src/core/configuration/PastelTheme.ts | 6 +- src/core/configuration/PastelThemeDark.ts | 6 +- src/core/configuration/PreprodConfig.ts | 2 +- src/core/configuration/ProdConfig.ts | 2 +- src/core/execution/AttackExecution.ts | 7 +- src/core/execution/BotExecution.ts | 1 - src/core/execution/BotSpawner.ts | 4 +- src/core/execution/CityExecution.ts | 2 +- src/core/execution/ConstructionExecution.ts | 7 +- src/core/execution/DefensePostExecution.ts | 5 +- src/core/execution/DonateGoldExecution.ts | 2 +- src/core/execution/DonateTroopExecution.ts | 2 +- src/core/execution/EmbargoExecution.ts | 1 - src/core/execution/EmojiExecution.ts | 1 - src/core/execution/ExecutionManager.ts | 47 +++++-------- src/core/execution/FakeHumanExecution.ts | 23 +++---- src/core/execution/MIRVExecution.ts | 14 ++-- src/core/execution/MissileSiloExecution.ts | 3 +- src/core/execution/MoveWarshipExecution.ts | 2 +- src/core/execution/NukeExecution.ts | 15 ++--- src/core/execution/PlayerExecution.ts | 9 ++- src/core/execution/PortExecution.ts | 9 +-- src/core/execution/SAMLauncherExecution.ts | 13 ++-- src/core/execution/SAMMissileExecution.ts | 6 +- src/core/execution/ShellExecution.ts | 6 +- src/core/execution/SpawnExecution.ts | 9 +-- src/core/execution/TradeShipExecution.ts | 14 ++-- src/core/execution/TransportShipExecution.ts | 14 ++-- src/core/execution/WarshipExecution.ts | 12 ++-- src/core/execution/WinCheckExecution.ts | 2 +- .../alliance/AllianceRequestExecution.ts | 8 +-- .../alliance/AllianceRequestReplyExecution.ts | 8 +-- .../alliance/BreakAllianceExecution.ts | 8 +-- src/core/game/AllianceImpl.ts | 2 +- src/core/game/AllianceRequestImpl.ts | 3 +- src/core/game/Game.ts | 7 +- src/core/game/GameImpl.ts | 51 +++++++------- src/core/game/GameUpdates.ts | 4 +- src/core/game/GameView.ts | 39 +++++------ src/core/game/PlayerImpl.ts | 67 +++++++++---------- src/core/game/TeamAssignment.ts | 2 +- src/core/game/TerraNulliusImpl.ts | 4 +- src/core/game/TerrainMapFileLoader.ts | 3 +- src/core/game/TerrainMapLoader.ts | 2 +- src/core/game/UnitImpl.ts | 19 ++++-- src/core/pathfinding/MiniAStar.ts | 2 +- src/core/pathfinding/PathFinding.ts | 7 +- src/core/pathfinding/SerialAStar.ts | 5 +- src/core/validations/username.ts | 2 +- src/core/worker/Worker.worker.ts | 6 +- src/core/worker/WorkerClient.ts | 2 +- src/core/worker/WorkerMessages.ts | 11 +-- src/scripts/TerrainMapGenerator.ts | 2 +- src/scripts/generateTerrainMaps.ts | 4 +- src/server/Archive.ts | 3 +- src/server/Client.ts | 2 +- src/server/GameManager.ts | 4 +- src/server/GameServer.ts | 7 +- src/server/Gatekeeper.ts | 4 +- src/server/Master.ts | 16 ++--- src/server/Worker.ts | 18 +++-- src/server/WorkerMetrics.ts | 2 +- src/server/db/DB.ts | 2 +- src/server/db/Index.ts | 2 +- tests/Attack.test.ts | 10 +-- tests/MissileSilo.test.ts | 6 +- tests/SAM.test.ts | 6 +- tests/TeamAssignment.test.ts | 2 +- tests/TerritoryCapture.test.ts | 2 +- tests/Warship.test.ts | 2 +- tests/util/Setup.ts | 8 +-- webpack.config.js | 4 +- 120 files changed, 543 insertions(+), 690 deletions(-) diff --git a/.prettierrc b/.prettierrc index 0967ef424..55c1943ae 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1 +1,3 @@ -{} +{ + "plugins": ["prettier-plugin-organize-imports"] +} diff --git a/package-lock.json b/package-lock.json index 3687be7b9..d47e7401f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -96,6 +96,7 @@ "postcss": "^8.5.1", "postcss-loader": "^8.1.1", "prettier": "^3.5.0", + "prettier-plugin-organize-imports": "^4.1.0", "raw-loader": "^4.0.2", "sinon": "^18.0.0", "sinon-chai": "^4.0.0", @@ -16053,6 +16054,23 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prettier-plugin-organize-imports": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz", + "integrity": "sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "prettier": ">=2.0", + "typescript": ">=2.9", + "vue-tsc": "^2.1.0" + }, + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } + } + }, "node_modules/pretty-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", diff --git a/package.json b/package.json index ac2112a96..fdf62679d 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "postcss": "^8.5.1", "postcss-loader": "^8.1.1", "prettier": "^3.5.0", + "prettier-plugin-organize-imports": "^4.1.0", "raw-loader": "^4.0.2", "sinon": "^18.0.0", "sinon-chai": "^4.0.0", diff --git a/src/client/ClientGameRunner.ts b/src/client/ClientGameRunner.ts index db20e4e5a..162d57d27 100644 --- a/src/client/ClientGameRunner.ts +++ b/src/client/ClientGameRunner.ts @@ -1,16 +1,32 @@ -import { Unit, UnitType, TeamName } from "../core/game/Game"; +import { consolex, initRemoteSender } from "../core/Consolex"; import { EventBus } from "../core/EventBus"; -import { createRenderer, GameRenderer } from "./graphics/GameRenderer"; -import { InputHandler, MouseUpEvent, MouseMoveEvent } from "./InputHandler"; import { ClientID, GameID, - ServerMessage, - PlayerRecord, GameRecord, GameStartInfo, + PlayerRecord, + ServerMessage, } from "../core/Schemas"; +import { createGameRecord } from "../core/Util"; +import { ServerConfig } from "../core/configuration/Config"; +import { getConfig } from "../core/configuration/ConfigLoader"; +import { TeamName, Unit, UnitType } from "../core/game/Game"; +import { TileRef } from "../core/game/GameMap"; +import { + ErrorUpdate, + GameUpdateType, + GameUpdateViewData, + HashUpdate, + WinUpdate, +} from "../core/game/GameUpdates"; +import { GameView, PlayerView, UnitView } from "../core/game/GameView"; import { loadTerrainMap } from "../core/game/TerrainMapLoader"; +import { UserSettings } from "../core/game/UserSettings"; +import { WorkerClient } from "../core/worker/WorkerClient"; +import { InputHandler, MouseMoveEvent, MouseUpEvent } from "./InputHandler"; +import { LocalPersistantStats } from "./LocalPersistantStats"; +import { getPersistentIDFromCookie } from "./Main"; import { SendAttackIntentEvent, SendHashEvent, @@ -18,23 +34,7 @@ import { Transport, } from "./Transport"; import { createCanvas } from "./Utils"; -import { - ErrorUpdate, - GameUpdateType, - HashUpdate, - WinUpdate, -} from "../core/game/GameUpdates"; -import { WorkerClient } from "../core/worker/WorkerClient"; -import { consolex, initRemoteSender } from "../core/Consolex"; -import { ServerConfig } from "../core/configuration/Config"; -import { getConfig } from "../core/configuration/ConfigLoader"; -import { GameView, PlayerView, UnitView } from "../core/game/GameView"; -import { GameUpdateViewData } from "../core/game/GameUpdates"; -import { UserSettings } from "../core/game/UserSettings"; -import { LocalPersistantStats } from "./LocalPersistantStats"; -import { createGameRecord } from "../core/Util"; -import { getPersistentIDFromCookie } from "./Main"; -import { TileRef } from "../core/game/GameMap"; +import { createRenderer, GameRenderer } from "./graphics/GameRenderer"; function distSortUnitWorld(tile: TileRef, game: GameView) { return (a: Unit | UnitView, b: Unit | UnitView) => { diff --git a/src/client/DarkModeButton.ts b/src/client/DarkModeButton.ts index 0851ad87d..65071408f 100644 --- a/src/client/DarkModeButton.ts +++ b/src/client/DarkModeButton.ts @@ -1,5 +1,5 @@ -import { LitElement, html, css } from "lit"; -import { customElement, property, state } from "lit/decorators.js"; +import { LitElement, html } from "lit"; +import { customElement, state } from "lit/decorators.js"; import { UserSettings } from "../core/game/UserSettings"; @customElement("dark-mode-button") diff --git a/src/client/FlagInput.ts b/src/client/FlagInput.ts index 0bdcb0b7e..672f07e63 100644 --- a/src/client/FlagInput.ts +++ b/src/client/FlagInput.ts @@ -1,7 +1,6 @@ -import { LitElement, html, css } from "lit"; -import { customElement, property, state } from "lit/decorators.js"; +import { LitElement, css, html } from "lit"; +import { customElement, state } from "lit/decorators.js"; import Countries from "./data/countries.json"; -import { ModalOverlay } from "./components/ModalOverlay"; const flagKey: string = "flag"; @customElement("flag-input") diff --git a/src/client/GoogleAdElement.ts b/src/client/GoogleAdElement.ts index 5c949a9ec..608c49322 100644 --- a/src/client/GoogleAdElement.ts +++ b/src/client/GoogleAdElement.ts @@ -1,11 +1,11 @@ -import { LitElement, html, css } from "lit"; +import { LitElement, css, html } from "lit"; +import { customElement, property } from "lit/decorators.js"; declare global { interface Window { adsbygoogle: any[]; } } -import { customElement, property } from "lit/decorators.js"; /** * Google AdSense integration component diff --git a/src/client/HostLobbyModal.ts b/src/client/HostLobbyModal.ts index 9b19a69c6..4bb979a62 100644 --- a/src/client/HostLobbyModal.ts +++ b/src/client/HostLobbyModal.ts @@ -1,17 +1,17 @@ import { LitElement, html } from "lit"; -import { customElement, query, property, state } from "lit/decorators.js"; -import { Difficulty, GameMapType, GameMode, GameType } from "../core/game/Game"; -import { GameConfig, GameInfo } from "../core/Schemas"; +import { customElement, query, state } from "lit/decorators.js"; +import randomMap from "../../resources/images/RandomMap.webp"; +import { translateText } from "../client/Utils"; +import { getServerConfigFromClient } from "../core/configuration/ConfigLoader"; import { consolex } from "../core/Consolex"; -import "./components/Difficulties"; +import { Difficulty, GameMapType, GameMode } from "../core/game/Game"; +import { GameConfig, GameInfo } from "../core/Schemas"; +import { generateID } from "../core/Util"; import "./components/baseComponents/Modal"; +import "./components/Difficulties"; import { DifficultyDescription } from "./components/Difficulties"; import "./components/Maps"; -import randomMap from "../../resources/images/RandomMap.webp"; -import { generateID } from "../core/Util"; -import { getServerConfigFromClient } from "../core/configuration/ConfigLoader"; import { JoinLobbyEvent } from "./Main"; -import { translateText } from "../client/Utils"; @customElement("host-lobby-modal") export class HostLobbyModal extends LitElement { diff --git a/src/client/InputHandler.ts b/src/client/InputHandler.ts index da42f3a77..e20e462fa 100644 --- a/src/client/InputHandler.ts +++ b/src/client/InputHandler.ts @@ -1,7 +1,6 @@ import { EventBus, GameEvent } from "../core/EventBus"; -import { UserSettings } from "../core/game/UserSettings"; -import { Game } from "../core/game/Game"; import { UnitView } from "../core/game/GameView"; +import { UserSettings } from "../core/game/UserSettings"; export class MouseUpEvent implements GameEvent { constructor( diff --git a/src/client/JoinPrivateLobbyModal.ts b/src/client/JoinPrivateLobbyModal.ts index 5515eefdf..651e37440 100644 --- a/src/client/JoinPrivateLobbyModal.ts +++ b/src/client/JoinPrivateLobbyModal.ts @@ -1,13 +1,13 @@ -import { LitElement, css, html } from "lit"; +import { LitElement, html } from "lit"; import { customElement, query, state } from "lit/decorators.js"; +import { translateText } from "../client/Utils"; import { consolex } from "../core/Consolex"; import { GameInfo, GameRecord } from "../core/Schemas"; +import { generateID } from "../core/Util"; import { getServerConfigFromClient } from "../core/configuration/ConfigLoader"; import { JoinLobbyEvent } from "./Main"; -import { translateText } from "../client/Utils"; -import "./components/baseComponents/Modal"; import "./components/baseComponents/Button"; -import { generateID } from "../core/Util"; +import "./components/baseComponents/Modal"; @customElement("join-private-lobby-modal") export class JoinPrivateLobbyModal extends LitElement { @query("o-modal") private modalEl!: HTMLElement & { diff --git a/src/client/LangSelector.ts b/src/client/LangSelector.ts index 22fb15e31..2c2c10573 100644 --- a/src/client/LangSelector.ts +++ b/src/client/LangSelector.ts @@ -2,13 +2,13 @@ import { LitElement, html } from "lit"; import { customElement, state } from "lit/decorators.js"; // Import language files -import enTranslations from "../../resources/lang/en.json"; import bgTranslations from "../../resources/lang/bg.json"; -import jaTranslations from "../../resources/lang/ja.json"; -import frTranslations from "../../resources/lang/fr.json"; -import nlTranslations from "../../resources/lang/nl.json"; import deTranslations from "../../resources/lang/de.json"; +import enTranslations from "../../resources/lang/en.json"; import esTranslations from "../../resources/lang/es.json"; +import frTranslations from "../../resources/lang/fr.json"; +import jaTranslations from "../../resources/lang/ja.json"; +import nlTranslations from "../../resources/lang/nl.json"; const translations = { en: enTranslations, diff --git a/src/client/LocalPersistantStats.ts b/src/client/LocalPersistantStats.ts index a879fbe5f..0733acc80 100644 --- a/src/client/LocalPersistantStats.ts +++ b/src/client/LocalPersistantStats.ts @@ -1,5 +1,4 @@ import { consolex } from "../core/Consolex"; -import { PlayerID } from "../core/game/Game"; import { GameConfig, GameID, GameRecord } from "../core/Schemas"; export interface LocalStatsData { diff --git a/src/client/LocalServer.ts b/src/client/LocalServer.ts index 717ec7825..0036b6302 100644 --- a/src/client/LocalServer.ts +++ b/src/client/LocalServer.ts @@ -1,6 +1,4 @@ -import { Config, GameEnv, ServerConfig } from "../core/configuration/Config"; import { consolex } from "../core/Consolex"; -import { GameEvent } from "../core/EventBus"; import { AllPlayersStats, ClientMessage, diff --git a/src/client/Main.ts b/src/client/Main.ts index 06f4d0e21..70fb1af84 100644 --- a/src/client/Main.ts +++ b/src/client/Main.ts @@ -1,38 +1,32 @@ -import { ClientGameRunner, joinLobby } from "./ClientGameRunner"; -import favicon from "../../resources/images/Favicon.svg"; -import "./PublicLobby"; -import "./components/baseComponents/Button"; -import "./components/baseComponents/Modal"; -import "./UsernameInput"; -import "./styles.css"; -import { UsernameInput } from "./UsernameInput"; -import { SinglePlayerModal } from "./SinglePlayerModal"; -import { HostLobbyModal as HostPrivateLobbyModal } from "./HostLobbyModal"; -import { JoinPrivateLobbyModal } from "./JoinPrivateLobbyModal"; -import { GameStartingModal } from "./gameStartingModal"; -import { generateID } from "../core/Util"; -import { generateCryptoRandomUUID } from "./Utils"; -import { consolex } from "../core/Consolex"; -import "./FlagInput"; -import { FlagInput } from "./FlagInput"; import page from "page"; -import { PublicLobby } from "./PublicLobby"; +import favicon from "../../resources/images/Favicon.svg"; +import { consolex } from "../core/Consolex"; +import { GameRecord, GameStartInfo } from "../core/Schemas"; +import { getServerConfigFromClient } from "../core/configuration/ConfigLoader"; +import { GameType } from "../core/game/Game"; import { UserSettings } from "../core/game/UserSettings"; +import { joinLobby } from "./ClientGameRunner"; import "./DarkModeButton"; import { DarkModeButton } from "./DarkModeButton"; +import "./FlagInput"; +import { FlagInput } from "./FlagInput"; import "./GoogleAdElement"; -import { HelpModal } from "./HelpModal"; -import { GameType } from "../core/game/Game"; -import { getServerConfigFromClient } from "../core/configuration/ConfigLoader"; import GoogleAdElement from "./GoogleAdElement"; -import { - GameConfig, - GameInfo, - GameRecord, - GameStartInfo, -} from "../core/Schemas"; +import { HelpModal } from "./HelpModal"; +import { HostLobbyModal as HostPrivateLobbyModal } from "./HostLobbyModal"; +import { JoinPrivateLobbyModal } from "./JoinPrivateLobbyModal"; import "./LangSelector"; import { LangSelector } from "./LangSelector"; +import "./PublicLobby"; +import { PublicLobby } from "./PublicLobby"; +import { SinglePlayerModal } from "./SinglePlayerModal"; +import "./UsernameInput"; +import { UsernameInput } from "./UsernameInput"; +import { generateCryptoRandomUUID } from "./Utils"; +import "./components/baseComponents/Button"; +import "./components/baseComponents/Modal"; +import { GameStartingModal } from "./gameStartingModal"; +import "./styles.css"; export interface JoinLobbyEvent { clientID: string; diff --git a/src/client/PublicLobby.ts b/src/client/PublicLobby.ts index a0dae6799..83aa75c5f 100644 --- a/src/client/PublicLobby.ts +++ b/src/client/PublicLobby.ts @@ -1,12 +1,11 @@ import { LitElement, html } from "lit"; import { customElement, state } from "lit/decorators.js"; -import { Difficulty, GameMapType, GameType } from "../core/game/Game"; -import { consolex } from "../core/Consolex"; -import { getMapsImage } from "./utilities/Maps"; -import { GameID, GameInfo } from "../core/Schemas"; import { translateText } from "../client/Utils"; -import { JoinLobbyEvent } from "./Main"; +import { consolex } from "../core/Consolex"; +import { GameID, GameInfo } from "../core/Schemas"; import { generateID } from "../core/Util"; +import { JoinLobbyEvent } from "./Main"; +import { getMapsImage } from "./utilities/Maps"; @customElement("public-lobby") export class PublicLobby extends LitElement { diff --git a/src/client/SinglePlayerModal.ts b/src/client/SinglePlayerModal.ts index bda1d8cf1..99b23f5bd 100644 --- a/src/client/SinglePlayerModal.ts +++ b/src/client/SinglePlayerModal.ts @@ -1,17 +1,16 @@ import { LitElement, html } from "lit"; import { customElement, query, state } from "lit/decorators.js"; -import { Difficulty, GameMapType, GameMode, GameType } from "../core/game/Game"; -import { generateID as generateID } from "../core/Util"; +import randomMap from "../../resources/images/RandomMap.webp"; +import { translateText } from "../client/Utils"; import { consolex } from "../core/Consolex"; -import "./components/Difficulties"; -import "./components/baseComponents/Modal"; +import { Difficulty, GameMapType, GameMode, GameType } from "../core/game/Game"; +import { generateID } from "../core/Util"; import "./components/baseComponents/Button"; +import "./components/baseComponents/Modal"; +import "./components/Difficulties"; import { DifficultyDescription } from "./components/Difficulties"; import "./components/Maps"; -import randomMap from "../../resources/images/RandomMap.webp"; -import { GameInfo } from "../core/Schemas"; import { JoinLobbyEvent } from "./Main"; -import { translateText } from "../client/Utils"; @customElement("single-player-modal") export class SinglePlayerModal extends LitElement { diff --git a/src/client/Transport.ts b/src/client/Transport.ts index 3d1eb885d..5cfdf9b24 100644 --- a/src/client/Transport.ts +++ b/src/client/Transport.ts @@ -1,36 +1,31 @@ -import { Config, ServerConfig } from "../core/configuration/Config"; import { SendLogEvent } from "../core/Consolex"; import { EventBus, GameEvent } from "../core/EventBus"; import { - AllianceRequest, AllPlayers, Cell, GameType, - Player, PlayerID, PlayerType, TeamName, Tick, UnitType, } from "../core/game/Game"; +import { PlayerView } from "../core/game/GameView"; import { + AllPlayersStats, ClientID, ClientIntentMessageSchema, ClientJoinMessageSchema, - GameID, + ClientLogMessageSchema, + ClientMessageSchema, + ClientPingMessageSchema, + ClientSendWinnerSchema, Intent, ServerMessage, ServerMessageSchema, - ClientPingMessageSchema, - GameConfig, - ClientLogMessageSchema, - ClientSendWinnerSchema, - ClientMessageSchema, - AllPlayersStats, } from "../core/Schemas"; import { LobbyConfig } from "./ClientGameRunner"; import { LocalServer } from "./LocalServer"; -import { PlayerView } from "../core/game/GameView"; export class PauseGameEvent implements GameEvent { constructor(public readonly paused: boolean) {} diff --git a/src/client/UsernameInput.ts b/src/client/UsernameInput.ts index d5d4a7082..f185fb931 100644 --- a/src/client/UsernameInput.ts +++ b/src/client/UsernameInput.ts @@ -1,12 +1,12 @@ import { LitElement, html } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import { v4 as uuidv4 } from "uuid"; +import { translateText } from "../client/Utils"; +import { UserSettings } from "../core/game/UserSettings"; import { MAX_USERNAME_LENGTH, validateUsername, } from "../core/validations/username"; -import { UserSettings } from "../core/game/UserSettings"; -import { translateText } from "../client/Utils"; const usernameKey: string = "username"; diff --git a/src/client/components/Difficulties.ts b/src/client/components/Difficulties.ts index 77913b355..2d1fb1d09 100644 --- a/src/client/components/Difficulties.ts +++ b/src/client/components/Difficulties.ts @@ -1,4 +1,4 @@ -import { LitElement, html, css } from "lit"; +import { LitElement, css, html } from "lit"; import { customElement, property } from "lit/decorators.js"; export enum DifficultyDescription { diff --git a/src/client/components/Maps.ts b/src/client/components/Maps.ts index 2856fefeb..a05ab57df 100644 --- a/src/client/components/Maps.ts +++ b/src/client/components/Maps.ts @@ -1,4 +1,4 @@ -import { LitElement, html, css } from "lit"; +import { LitElement, css, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { GameMapType } from "../../core/game/Game"; import { getMapsImage } from "../utilities/Maps"; diff --git a/src/client/components/ModalOverlay.ts b/src/client/components/ModalOverlay.ts index 8dc0cbbcf..468de56eb 100644 --- a/src/client/components/ModalOverlay.ts +++ b/src/client/components/ModalOverlay.ts @@ -1,4 +1,4 @@ -import { LitElement, html, css } from "lit"; +import { LitElement, css, html } from "lit"; import { customElement, property } from "lit/decorators"; @customElement("modal-overlay") diff --git a/src/client/components/baseComponents/Modal.ts b/src/client/components/baseComponents/Modal.ts index 5b762129a..1c6de9f51 100644 --- a/src/client/components/baseComponents/Modal.ts +++ b/src/client/components/baseComponents/Modal.ts @@ -1,4 +1,4 @@ -import { LitElement, html, css } from "lit"; +import { LitElement, css, html } from "lit"; import { customElement, property, state } from "lit/decorators.js"; @customElement("o-modal") diff --git a/src/client/gameStartingModal.ts b/src/client/gameStartingModal.ts index 4b7dae464..1c53f3e8c 100644 --- a/src/client/gameStartingModal.ts +++ b/src/client/gameStartingModal.ts @@ -1,4 +1,4 @@ -import { LitElement, html, css } from "lit"; +import { LitElement, css, html } from "lit"; import { customElement, state } from "lit/decorators.js"; @customElement("game-starting-modal") diff --git a/src/client/graphics/GameRenderer.ts b/src/client/graphics/GameRenderer.ts index fd4090314..42284b5fe 100644 --- a/src/client/graphics/GameRenderer.ts +++ b/src/client/graphics/GameRenderer.ts @@ -1,31 +1,30 @@ -import { Game, PlayerInfo } from "../../core/game/Game"; -import { NameLayer } from "./layers/NameLayer"; -import { TerrainLayer } from "./layers/TerrainLayer"; -import { TerritoryLayer } from "./layers/TerritoryLayer"; -import { ClientID } from "../../core/Schemas"; +import { consolex } from "../../core/Consolex"; import { EventBus } from "../../core/EventBus"; +import { ClientID } from "../../core/Schemas"; +import { GameView } from "../../core/game/GameView"; +import { RefreshGraphicsEvent as RedrawGraphicsEvent } from "../InputHandler"; +import { GameStartingModal } from "../gameStartingModal"; import { TransformHandler } from "./TransformHandler"; -import { Layer } from "./layers/Layer"; -import { EventsDisplay } from "./layers/EventsDisplay"; -import { RadialMenu } from "./layers/RadialMenu"; -import { EmojiTable } from "./layers/EmojiTable"; -import { Leaderboard } from "./layers/Leaderboard"; -import { ControlPanel } from "./layers/ControlPanel"; import { UIState } from "./UIState"; import { BuildMenu } from "./layers/BuildMenu"; -import { UnitLayer } from "./layers/UnitLayer"; -import { UILayer } from "./layers/UILayer"; -import { StructureLayer } from "./layers/StructureLayer"; -import { PlayerInfoOverlay } from "./layers/PlayerInfoOverlay"; -import { consolex } from "../../core/Consolex"; -import { RefreshGraphicsEvent as RedrawGraphicsEvent } from "../InputHandler"; -import { GameView } from "../../core/game/GameView"; -import { WinModal } from "./layers/WinModal"; -import { SpawnTimer } from "./layers/SpawnTimer"; +import { ControlPanel } from "./layers/ControlPanel"; +import { EmojiTable } from "./layers/EmojiTable"; +import { EventsDisplay } from "./layers/EventsDisplay"; +import { Layer } from "./layers/Layer"; +import { Leaderboard } from "./layers/Leaderboard"; +import { NameLayer } from "./layers/NameLayer"; import { OptionsMenu } from "./layers/OptionsMenu"; -import { TopBar } from "./layers/TopBar"; +import { PlayerInfoOverlay } from "./layers/PlayerInfoOverlay"; import { PlayerPanel } from "./layers/PlayerPanel"; -import { GameStartingModal } from "../gameStartingModal"; +import { RadialMenu } from "./layers/RadialMenu"; +import { SpawnTimer } from "./layers/SpawnTimer"; +import { StructureLayer } from "./layers/StructureLayer"; +import { TerrainLayer } from "./layers/TerrainLayer"; +import { TerritoryLayer } from "./layers/TerritoryLayer"; +import { TopBar } from "./layers/TopBar"; +import { UILayer } from "./layers/UILayer"; +import { UnitLayer } from "./layers/UnitLayer"; +import { WinModal } from "./layers/WinModal"; export function createRenderer( canvas: HTMLCanvasElement, diff --git a/src/client/graphics/NameBoxCalculator.ts b/src/client/graphics/NameBoxCalculator.ts index d4455d0e1..328ac7aac 100644 --- a/src/client/graphics/NameBoxCalculator.ts +++ b/src/client/graphics/NameBoxCalculator.ts @@ -1,6 +1,5 @@ -import { Game, Player, Cell } from "../../core/game/Game"; -import { NameViewData } from "../../core/game/Game"; -import { calculateBoundingBox, within } from "../../core/Util"; +import { Cell, Game, NameViewData, Player } from "../../core/game/Game"; +import { calculateBoundingBox } from "../../core/Util"; export interface Point { x: number; diff --git a/src/client/graphics/TransformHandler.ts b/src/client/graphics/TransformHandler.ts index 69787595c..1acaa79f9 100644 --- a/src/client/graphics/TransformHandler.ts +++ b/src/client/graphics/TransformHandler.ts @@ -1,14 +1,8 @@ -import { colord } from "colord"; import { EventBus } from "../../core/EventBus"; -import { Cell, Game, Player } from "../../core/game/Game"; -import { - calculateBoundingBox, - calculateBoundingBoxCenter, -} from "../../core/Util"; -import { ZoomEvent, DragEvent, CenterCameraEvent } from "../InputHandler"; -import { GoToPlayerEvent, GoToUnitEvent } from "./layers/Leaderboard"; -import { placeName } from "./NameBoxCalculator"; +import { Cell } from "../../core/game/Game"; import { GameView } from "../../core/game/GameView"; +import { CenterCameraEvent, DragEvent, ZoomEvent } from "../InputHandler"; +import { GoToPlayerEvent, GoToUnitEvent } from "./layers/Leaderboard"; export class TransformHandler { public scale: number = 1.8; diff --git a/src/client/graphics/layers/BuildMenu.ts b/src/client/graphics/layers/BuildMenu.ts index a226b75a6..9873fc571 100644 --- a/src/client/graphics/layers/BuildMenu.ts +++ b/src/client/graphics/layers/BuildMenu.ts @@ -1,27 +1,21 @@ -import { LitElement, html, css } from "lit"; +import { LitElement, css, html } from "lit"; import { customElement, state } from "lit/decorators.js"; -import { EventBus } from "../../../core/EventBus"; -import { - Cell, - Game, - Player, - PlayerActions, - UnitType, -} from "../../../core/game/Game"; -import { BuildUnitIntentEvent } from "../../Transport"; -import atomBombIcon from "../../../../resources/images/NukeIconWhite.svg"; -import hydrogenBombIcon from "../../../../resources/images/MushroomCloudIconWhite.svg"; import warshipIcon from "../../../../resources/images/BattleshipIconWhite.svg"; -import missileSiloIcon from "../../../../resources/images/MissileSiloIconWhite.svg"; -import goldCoinIcon from "../../../../resources/images/GoldCoinIcon.svg"; -import portIcon from "../../../../resources/images/PortIcon.svg"; -import mirvIcon from "../../../../resources/images/MIRVIcon.svg"; import cityIcon from "../../../../resources/images/CityIconWhite.svg"; +import goldCoinIcon from "../../../../resources/images/GoldCoinIcon.svg"; +import mirvIcon from "../../../../resources/images/MIRVIcon.svg"; +import missileSiloIcon from "../../../../resources/images/MissileSiloIconWhite.svg"; +import hydrogenBombIcon from "../../../../resources/images/MushroomCloudIconWhite.svg"; +import atomBombIcon from "../../../../resources/images/NukeIconWhite.svg"; +import portIcon from "../../../../resources/images/PortIcon.svg"; import samlauncherIcon from "../../../../resources/images/SamLauncherIconWhite.svg"; import shieldIcon from "../../../../resources/images/ShieldIconWhite.svg"; -import { renderNumber } from "../../Utils"; -import { GameView, PlayerView } from "../../../core/game/GameView"; +import { EventBus } from "../../../core/EventBus"; +import { Cell, PlayerActions, UnitType } from "../../../core/game/Game"; import { TileRef } from "../../../core/game/GameMap"; +import { GameView } from "../../../core/game/GameView"; +import { BuildUnitIntentEvent } from "../../Transport"; +import { renderNumber } from "../../Utils"; import { Layer } from "./Layer"; interface BuildItemDisplay { diff --git a/src/client/graphics/layers/ControlPanel.ts b/src/client/graphics/layers/ControlPanel.ts index 2d0b762dd..eac6b913e 100644 --- a/src/client/graphics/layers/ControlPanel.ts +++ b/src/client/graphics/layers/ControlPanel.ts @@ -1,14 +1,13 @@ import { LitElement, html } from "lit"; -import { customElement, property, state } from "lit/decorators.js"; -import { Layer } from "./Layer"; -import { Game } from "../../../core/game/Game"; -import { ClientID } from "../../../core/Schemas"; -import { renderNumber, renderTroops } from "../../Utils"; +import { customElement, state } from "lit/decorators.js"; import { EventBus } from "../../../core/EventBus"; -import { UIState } from "../UIState"; -import { SendSetTargetTroopRatioEvent } from "../../Transport"; import { GameView } from "../../../core/game/GameView"; +import { ClientID } from "../../../core/Schemas"; import { AttackRatioEvent } from "../../InputHandler"; +import { SendSetTargetTroopRatioEvent } from "../../Transport"; +import { renderNumber, renderTroops } from "../../Utils"; +import { UIState } from "../UIState"; +import { Layer } from "./Layer"; @customElement("control-panel") export class ControlPanel extends LitElement implements Layer { diff --git a/src/client/graphics/layers/EmojiTable.ts b/src/client/graphics/layers/EmojiTable.ts index dd1dd0b82..c1bd6991b 100644 --- a/src/client/graphics/layers/EmojiTable.ts +++ b/src/client/graphics/layers/EmojiTable.ts @@ -1,4 +1,4 @@ -import { LitElement, html, css } from "lit"; +import { LitElement, css, html } from "lit"; import { customElement, state } from "lit/decorators.js"; const emojiTable: string[][] = [ diff --git a/src/client/graphics/layers/EventsDisplay.ts b/src/client/graphics/layers/EventsDisplay.ts index ac4d505b0..460d1632d 100644 --- a/src/client/graphics/layers/EventsDisplay.ts +++ b/src/client/graphics/layers/EventsDisplay.ts @@ -1,5 +1,7 @@ -import { LitElement, html } from "lit"; -import { customElement, property, state } from "lit/decorators.js"; +import { html, LitElement } from "lit"; +import { customElement, state } from "lit/decorators.js"; +import { DirectiveResult } from "lit/directive.js"; +import { unsafeHTML, UnsafeHTMLDirective } from "lit/directives/unsafe-html.js"; import { EventBus } from "../../../core/EventBus"; import { AllPlayers, @@ -9,27 +11,25 @@ import { UnitType, } from "../../../core/game/Game"; import { + AllianceExpiredUpdate, + AllianceRequestReplyUpdate, + AllianceRequestUpdate, AttackUpdate, + BrokeAllianceUpdate, DisplayMessageUpdate, + EmojiUpdate, + GameUpdateType, + TargetPlayerUpdate, } from "../../../core/game/GameUpdates"; -import { EmojiUpdate } from "../../../core/game/GameUpdates"; -import { TargetPlayerUpdate } from "../../../core/game/GameUpdates"; -import { AllianceExpiredUpdate } from "../../../core/game/GameUpdates"; -import { BrokeAllianceUpdate } from "../../../core/game/GameUpdates"; -import { AllianceRequestReplyUpdate } from "../../../core/game/GameUpdates"; -import { AllianceRequestUpdate } from "../../../core/game/GameUpdates"; -import { GameUpdateType } from "../../../core/game/GameUpdates"; import { ClientID } from "../../../core/Schemas"; -import { Layer } from "./Layer"; import { CancelAttackIntentEvent, SendAllianceReplyIntentEvent, } from "../../Transport"; -import { unsafeHTML, UnsafeHTMLDirective } from "lit/directives/unsafe-html.js"; -import { DirectiveResult } from "lit/directive.js"; +import { Layer } from "./Layer"; -import { onlyImages, sanitize } from "../../../core/Util"; import { GameView, PlayerView, UnitView } from "../../../core/game/GameView"; +import { onlyImages } from "../../../core/Util"; import { renderTroops } from "../../Utils"; import { GoToPlayerEvent, GoToUnitEvent } from "./Leaderboard"; diff --git a/src/client/graphics/layers/Layer.ts b/src/client/graphics/layers/Layer.ts index 9f52cc2c2..9bfd9dc81 100644 --- a/src/client/graphics/layers/Layer.ts +++ b/src/client/graphics/layers/Layer.ts @@ -1,5 +1,3 @@ -import { Game } from "../../../core/game/Game"; - export interface Layer { init?(); tick?(); diff --git a/src/client/graphics/layers/NameLayer.ts b/src/client/graphics/layers/NameLayer.ts index fc675671a..6166c1d76 100644 --- a/src/client/graphics/layers/NameLayer.ts +++ b/src/client/graphics/layers/NameLayer.ts @@ -1,29 +1,19 @@ -import { - AllPlayers, - Cell, - Game, - NukeType, - nukeTypes, - Player, - PlayerType, - UnitType, -} from "../../../core/game/Game"; -import { PseudoRandom } from "../../../core/PseudoRandom"; -import { Theme } from "../../../core/configuration/Config"; -import { Layer } from "./Layer"; -import { TransformHandler } from "../TransformHandler"; -import traitorIcon from "../../../../resources/images/TraitorIcon.svg"; import allianceIcon from "../../../../resources/images/AllianceIcon.svg"; import allianceRequestIcon from "../../../../resources/images/AllianceRequestIcon.svg"; import crownIcon from "../../../../resources/images/CrownIcon.svg"; -import targetIcon from "../../../../resources/images/TargetIcon.svg"; import embargoIcon from "../../../../resources/images/EmbargoIcon.svg"; -import nukeWhiteIcon from "../../../../resources/images/NukeIconWhite.svg"; import nukeRedIcon from "../../../../resources/images/NukeIconRed.svg"; +import nukeWhiteIcon from "../../../../resources/images/NukeIconWhite.svg"; +import targetIcon from "../../../../resources/images/TargetIcon.svg"; +import traitorIcon from "../../../../resources/images/TraitorIcon.svg"; +import { PseudoRandom } from "../../../core/PseudoRandom"; import { ClientID } from "../../../core/Schemas"; +import { Theme } from "../../../core/configuration/Config"; +import { AllPlayers, Cell, nukeTypes } from "../../../core/game/Game"; import { GameView, PlayerView } from "../../../core/game/GameView"; import { createCanvas, renderTroops } from "../../Utils"; -import { sanitize } from "../../../core/Util"; +import { TransformHandler } from "../TransformHandler"; +import { Layer } from "./Layer"; class RenderInfo { public icons: Map = new Map(); // Track icon elements diff --git a/src/client/graphics/layers/OptionsMenu.ts b/src/client/graphics/layers/OptionsMenu.ts index 6872ac1bd..d399321ba 100644 --- a/src/client/graphics/layers/OptionsMenu.ts +++ b/src/client/graphics/layers/OptionsMenu.ts @@ -1,13 +1,13 @@ import { LitElement, html } from "lit"; import { customElement, state } from "lit/decorators.js"; import { EventBus } from "../../../core/EventBus"; -import { PauseGameEvent } from "../../Transport"; import { GameType } from "../../../core/game/Game"; -import { GameView } from "../../../core/game/GameView"; -import { Layer } from "./Layer"; import { GameUpdateType } from "../../../core/game/GameUpdates"; +import { GameView } from "../../../core/game/GameView"; import { UserSettings } from "../../../core/game/UserSettings"; import { AlternateViewEvent, RefreshGraphicsEvent } from "../../InputHandler"; +import { PauseGameEvent } from "../../Transport"; +import { Layer } from "./Layer"; const button = ({ classes = "", diff --git a/src/client/graphics/layers/PlayerInfoOverlay.ts b/src/client/graphics/layers/PlayerInfoOverlay.ts index 3b8678017..46c309021 100644 --- a/src/client/graphics/layers/PlayerInfoOverlay.ts +++ b/src/client/graphics/layers/PlayerInfoOverlay.ts @@ -1,23 +1,20 @@ -import { LitElement, css, html } from "lit"; +import { LitElement, html } from "lit"; import { customElement, property, state } from "lit/decorators.js"; -import { Layer } from "./Layer"; +import { EventBus } from "../../../core/EventBus"; import { - Game, - GameType, - Player, PlayerProfile, PlayerType, Relation, Unit, UnitType, } from "../../../core/game/Game"; -import { ClientID } from "../../../core/Schemas"; -import { EventBus } from "../../../core/EventBus"; -import { TransformHandler } from "../TransformHandler"; -import { MouseMoveEvent } from "../../InputHandler"; -import { GameView, PlayerView, UnitView } from "../../../core/game/GameView"; import { TileRef } from "../../../core/game/GameMap"; +import { GameView, PlayerView, UnitView } from "../../../core/game/GameView"; +import { ClientID } from "../../../core/Schemas"; +import { MouseMoveEvent } from "../../InputHandler"; import { renderNumber, renderTroops } from "../../Utils"; +import { TransformHandler } from "../TransformHandler"; +import { Layer } from "./Layer"; function euclideanDistWorld( coord: { x: number; y: number }, diff --git a/src/client/graphics/layers/PlayerPanel.ts b/src/client/graphics/layers/PlayerPanel.ts index 0e34b6508..2ad88181f 100644 --- a/src/client/graphics/layers/PlayerPanel.ts +++ b/src/client/graphics/layers/PlayerPanel.ts @@ -1,34 +1,33 @@ import { LitElement, html } from "lit"; -import { customElement, property, state } from "lit/decorators.js"; +import { customElement, state } from "lit/decorators.js"; +import allianceIcon from "../../../../resources/images/AllianceIconWhite.svg"; +import donateGoldIcon from "../../../../resources/images/DonateGoldIconWhite.svg"; +import donateTroopIcon from "../../../../resources/images/DonateTroopIconWhite.svg"; +import emojiIcon from "../../../../resources/images/EmojiIconWhite.svg"; +import targetIcon from "../../../../resources/images/TargetIconWhite.svg"; +import traitorIcon from "../../../../resources/images/TraitorIconWhite.svg"; import { EventBus } from "../../../core/EventBus"; -import { GameView, PlayerView } from "../../../core/game/GameView"; -import { Layer } from "./Layer"; -import { MouseUpEvent } from "../../InputHandler"; import { AllPlayers, - Player, PlayerActions, PlayerID, UnitType, } from "../../../core/game/Game"; import { TileRef } from "../../../core/game/GameMap"; -import { renderNumber, renderTroops } from "../../Utils"; -import targetIcon from "../../../../resources/images/TargetIconWhite.svg"; -import emojiIcon from "../../../../resources/images/EmojiIconWhite.svg"; -import donateTroopIcon from "../../../../resources/images/DonateTroopIconWhite.svg"; -import donateGoldIcon from "../../../../resources/images/DonateGoldIconWhite.svg"; -import traitorIcon from "../../../../resources/images/TraitorIconWhite.svg"; -import allianceIcon from "../../../../resources/images/AllianceIconWhite.svg"; +import { GameView, PlayerView } from "../../../core/game/GameView"; +import { MouseUpEvent } from "../../InputHandler"; import { SendAllianceRequestIntentEvent, SendBreakAllianceIntentEvent, SendDonateGoldIntentEvent, SendDonateTroopsIntentEvent, + SendEmbargoIntentEvent, SendEmojiIntentEvent, SendTargetPlayerIntentEvent, - SendEmbargoIntentEvent, } from "../../Transport"; +import { renderNumber, renderTroops } from "../../Utils"; import { EmojiTable } from "./EmojiTable"; +import { Layer } from "./Layer"; @customElement("player-panel") export class PlayerPanel extends LitElement implements Layer { diff --git a/src/client/graphics/layers/RadialMenu.ts b/src/client/graphics/layers/RadialMenu.ts index 2fabcaaec..2e4548ffc 100644 --- a/src/client/graphics/layers/RadialMenu.ts +++ b/src/client/graphics/layers/RadialMenu.ts @@ -1,11 +1,15 @@ +import * as d3 from "d3"; +import boatIcon from "../../../../resources/images/BoatIconWhite.svg"; +import buildIcon from "../../../../resources/images/BuildIconWhite.svg"; +import disabledIcon from "../../../../resources/images/DisabledIcon.svg"; +import infoIcon from "../../../../resources/images/InfoIcon.svg"; +import swordIcon from "../../../../resources/images/SwordIconWhite.svg"; +import xIcon from "../../../../resources/images/XIcon.svg"; +import { consolex } from "../../../core/Consolex"; import { EventBus } from "../../../core/EventBus"; -import { - AllPlayers, - Cell, - Game, - Player, - PlayerActions, -} from "../../../core/game/Game"; +import { Cell, PlayerActions } from "../../../core/game/Game"; +import { TileRef } from "../../../core/game/GameMap"; +import { GameView, PlayerView } from "../../../core/game/GameView"; import { ClientID } from "../../../core/Schemas"; import { CloseViewEvent, @@ -14,36 +18,15 @@ import { ShowBuildMenuEvent, } from "../../InputHandler"; import { - SendAllianceRequestIntentEvent, SendAttackIntentEvent, SendBoatAttackIntentEvent, - SendBreakAllianceIntentEvent, - SendDonateTroopsIntentEvent, - SendDonateGoldIntentEvent, - SendEmojiIntentEvent, SendSpawnIntentEvent, - SendTargetPlayerIntentEvent, } from "../../Transport"; import { TransformHandler } from "../TransformHandler"; -import { Layer } from "./Layer"; -import * as d3 from "d3"; -import traitorIcon from "../../../../resources/images/TraitorIconWhite.svg"; -import allianceIcon from "../../../../resources/images/AllianceIconWhite.svg"; -import boatIcon from "../../../../resources/images/BoatIconWhite.svg"; -import swordIcon from "../../../../resources/images/SwordIconWhite.svg"; -import infoIcon from "../../../../resources/images/InfoIcon.svg"; -import targetIcon from "../../../../resources/images/TargetIconWhite.svg"; -import emojiIcon from "../../../../resources/images/EmojiIconWhite.svg"; -import disabledIcon from "../../../../resources/images/DisabledIcon.svg"; -import xIcon from "../../../../resources/images/XIcon.svg"; -import donateIcon from "../../../../resources/images/DonateIconWhite.svg"; -import buildIcon from "../../../../resources/images/BuildIconWhite.svg"; -import { EmojiTable } from "./EmojiTable"; import { UIState } from "../UIState"; import { BuildMenu } from "./BuildMenu"; -import { consolex } from "../../../core/Consolex"; -import { GameView, PlayerView } from "../../../core/game/GameView"; -import { TileRef } from "../../../core/game/GameMap"; +import { EmojiTable } from "./EmojiTable"; +import { Layer } from "./Layer"; import { PlayerInfoOverlay } from "./PlayerInfoOverlay"; import { PlayerPanel } from "./PlayerPanel"; diff --git a/src/client/graphics/layers/StructureLayer.ts b/src/client/graphics/layers/StructureLayer.ts index 2f646c1ee..d0d5a24b3 100644 --- a/src/client/graphics/layers/StructureLayer.ts +++ b/src/client/graphics/layers/StructureLayer.ts @@ -1,24 +1,24 @@ import { colord, Colord } from "colord"; import { Theme } from "../../../core/configuration/Config"; -import { Layer } from "./Layer"; import { EventBus } from "../../../core/EventBus"; +import { Layer } from "./Layer"; -import anchorIcon from "../../../../resources/images/buildings/port1.png"; -import missileSiloIcon from "../../../../resources/images/buildings/silo1.png"; -import SAMMissileIcon from "../../../../resources/images/buildings/silo4.png"; -import SAMMissileReloadingIcon from "../../../../resources/images/buildings/silo4-reloading.png"; -import MissileSiloReloadingIcon from "../../../../resources/images/buildings/silo1-reloading.png"; -import shieldIcon from "../../../../resources/images/buildings/fortAlt2.png"; import cityIcon from "../../../../resources/images/buildings/cityAlt1.png"; -import { GameView, UnitView } from "../../../core/game/GameView"; +import shieldIcon from "../../../../resources/images/buildings/fortAlt2.png"; +import anchorIcon from "../../../../resources/images/buildings/port1.png"; +import MissileSiloReloadingIcon from "../../../../resources/images/buildings/silo1-reloading.png"; +import missileSiloIcon from "../../../../resources/images/buildings/silo1.png"; +import SAMMissileReloadingIcon from "../../../../resources/images/buildings/silo4-reloading.png"; +import SAMMissileIcon from "../../../../resources/images/buildings/silo4.png"; import { Cell, UnitType } from "../../../core/game/Game"; -import { GameUpdateType } from "../../../core/game/GameUpdates"; import { euclDistFN, + hexDistFN, manhattanDistFN, rectDistFN, - hexDistFN, } from "../../../core/game/GameMap"; +import { GameUpdateType } from "../../../core/game/GameUpdates"; +import { GameView, UnitView } from "../../../core/game/GameView"; const underConstructionColor = colord({ r: 150, g: 150, b: 150 }); const reloadingColor = colord({ r: 255, g: 0, b: 0 }); diff --git a/src/client/graphics/layers/TerrainLayer.ts b/src/client/graphics/layers/TerrainLayer.ts index aca29a450..82a6fa8b8 100644 --- a/src/client/graphics/layers/TerrainLayer.ts +++ b/src/client/graphics/layers/TerrainLayer.ts @@ -1,6 +1,6 @@ -import { Layer } from "./Layer"; -import { GameView } from "../../../core/game/GameView"; import { Theme } from "../../../core/configuration/Config"; +import { GameView } from "../../../core/game/GameView"; +import { Layer } from "./Layer"; export class TerrainLayer implements Layer { private canvas: HTMLCanvasElement; diff --git a/src/client/graphics/layers/TerritoryLayer.ts b/src/client/graphics/layers/TerritoryLayer.ts index b4e707210..7446b30c6 100644 --- a/src/client/graphics/layers/TerritoryLayer.ts +++ b/src/client/graphics/layers/TerritoryLayer.ts @@ -1,29 +1,18 @@ import { PriorityQueue } from "@datastructures-js/priority-queue"; -import { - Cell, - Game, - Player, - PlayerType, - Unit, - UnitType, -} from "../../../core/game/Game"; -import { GameUpdateType, UnitUpdate } from "../../../core/game/GameUpdates"; -import { PseudoRandom } from "../../../core/PseudoRandom"; -import { colord, Colord } from "colord"; +import { Colord } from "colord"; import { Theme } from "../../../core/configuration/Config"; -import { Layer } from "./Layer"; import { EventBus } from "../../../core/EventBus"; -import { - AlternateViewEvent, - DragEvent, - MouseDownEvent, -} from "../../InputHandler"; -import { GameView, PlayerView } from "../../../core/game/GameView"; +import { Cell, PlayerType, UnitType } from "../../../core/game/Game"; import { euclDistFN, manhattanDistFN, TileRef, } from "../../../core/game/GameMap"; +import { GameUpdateType, UnitUpdate } from "../../../core/game/GameUpdates"; +import { GameView, PlayerView } from "../../../core/game/GameView"; +import { PseudoRandom } from "../../../core/PseudoRandom"; +import { AlternateViewEvent, DragEvent } from "../../InputHandler"; +import { Layer } from "./Layer"; export class TerritoryLayer implements Layer { private canvas: HTMLCanvasElement; diff --git a/src/client/graphics/layers/TopBar.ts b/src/client/graphics/layers/TopBar.ts index 16da5aeac..d461cd939 100644 --- a/src/client/graphics/layers/TopBar.ts +++ b/src/client/graphics/layers/TopBar.ts @@ -1,8 +1,8 @@ import { LitElement, html } from "lit"; -import { customElement, property, state } from "lit/decorators.js"; +import { customElement } from "lit/decorators.js"; import { GameView } from "../../../core/game/GameView"; -import { Layer } from "./Layer"; import { renderNumber, renderTroops } from "../../Utils"; +import { Layer } from "./Layer"; @customElement("top-bar") export class TopBar extends LitElement implements Layer { diff --git a/src/client/graphics/layers/UILayer.ts b/src/client/graphics/layers/UILayer.ts index 15fdec017..3cd166dbf 100644 --- a/src/client/graphics/layers/UILayer.ts +++ b/src/client/graphics/layers/UILayer.ts @@ -1,12 +1,12 @@ import { Colord } from "colord"; -import { Theme } from "../../../core/configuration/Config"; -import { UnitType } from "../../../core/game/Game"; -import { Layer } from "./Layer"; import { EventBus } from "../../../core/EventBus"; import { ClientID } from "../../../core/Schemas"; +import { Theme } from "../../../core/configuration/Config"; +import { UnitType } from "../../../core/game/Game"; import { GameView, UnitView } from "../../../core/game/GameView"; import { UnitSelectionEvent } from "../../InputHandler"; import { TransformHandler } from "../TransformHandler"; +import { Layer } from "./Layer"; /** * Layer responsible for drawing UI elements that overlay the game diff --git a/src/client/graphics/layers/UnitLayer.ts b/src/client/graphics/layers/UnitLayer.ts index e648947cf..2858708e2 100644 --- a/src/client/graphics/layers/UnitLayer.ts +++ b/src/client/graphics/layers/UnitLayer.ts @@ -1,23 +1,23 @@ import { colord, Colord } from "colord"; -import { Theme } from "../../../core/configuration/Config"; -import { Unit, UnitType, Player } from "../../../core/game/Game"; -import { Layer } from "./Layer"; import { EventBus } from "../../../core/EventBus"; -import { - AlternateViewEvent, - MouseUpEvent, - UnitSelectionEvent, -} from "../../InputHandler"; import { ClientID } from "../../../core/Schemas"; -import { GameView, PlayerView, UnitView } from "../../../core/game/GameView"; +import { Theme } from "../../../core/configuration/Config"; +import { UnitType } from "../../../core/game/Game"; import { euclDistFN, manhattanDistFN, TileRef, } from "../../../core/game/GameMap"; import { GameUpdateType } from "../../../core/game/GameUpdates"; -import { TransformHandler } from "../TransformHandler"; +import { GameView, PlayerView, UnitView } from "../../../core/game/GameView"; +import { + AlternateViewEvent, + MouseUpEvent, + UnitSelectionEvent, +} from "../../InputHandler"; import { MoveWarshipIntentEvent } from "../../Transport"; +import { TransformHandler } from "../TransformHandler"; +import { Layer } from "./Layer"; enum Relationship { Self, diff --git a/src/client/graphics/layers/WinModal.ts b/src/client/graphics/layers/WinModal.ts index b7c2c8b3e..be4fb5394 100644 --- a/src/client/graphics/layers/WinModal.ts +++ b/src/client/graphics/layers/WinModal.ts @@ -1,14 +1,13 @@ -import { LitElement, html, css } from "lit"; -import { customElement, property, state } from "lit/decorators.js"; -import { Player, TeamName } from "../../../core/game/Game"; -import { ClientID } from "../../../core/Schemas"; -import { GameView, PlayerView } from "../../../core/game/GameView"; -import { Layer } from "./Layer"; +import { LitElement, css, html } from "lit"; +import { customElement, state } from "lit/decorators.js"; +import { EventBus } from "../../../core/EventBus"; +import { TeamName } from "../../../core/game/Game"; import { GameUpdateType } from "../../../core/game/GameUpdates"; +import { GameView, PlayerView } from "../../../core/game/GameView"; import { PseudoRandom } from "../../../core/PseudoRandom"; import { simpleHash } from "../../../core/Util"; -import { EventBus } from "../../../core/EventBus"; import { SendWinnerEvent } from "../../Transport"; +import { Layer } from "./Layer"; // Add this at the top of your file declare global { diff --git a/src/client/utilities/Maps.ts b/src/client/utilities/Maps.ts index 4252a1728..c94a48754 100644 --- a/src/client/utilities/Maps.ts +++ b/src/client/utilities/Maps.ts @@ -1,19 +1,19 @@ -import world from "../../../resources/maps/WorldMapThumb.webp"; -import oceania from "../../../resources/maps/OceaniaThumb.webp"; -import europe from "../../../resources/maps/EuropeThumb.webp"; -import mena from "../../../resources/maps/MenaThumb.webp"; -import northAmerica from "../../../resources/maps/NorthAmericaThumb.webp"; -import southAmerica from "../../../resources/maps/SouthAmericaThumb.webp"; -import blackSea from "../../../resources/maps/BlackSeaThumb.webp"; import africa from "../../../resources/maps/AfricaThumb.webp"; -import pangaea from "../../../resources/maps/PangaeaThumb.webp"; import asia from "../../../resources/maps/AsiaThumb.webp"; -import mars from "../../../resources/maps/MarsThumb.webp"; -import britannia from "../../../resources/maps/BritanniaThumb.webp"; -import gatewayToTheAtlantic from "../../../resources/maps/GatewayToTheAtlanticThumb.webp"; import australia from "../../../resources/maps/AustraliaThumb.webp"; +import blackSea from "../../../resources/maps/BlackSeaThumb.webp"; +import britannia from "../../../resources/maps/BritanniaThumb.webp"; +import europe from "../../../resources/maps/EuropeThumb.webp"; +import gatewayToTheAtlantic from "../../../resources/maps/GatewayToTheAtlanticThumb.webp"; import iceland from "../../../resources/maps/IcelandThumb.webp"; import japan from "../../../resources/maps/JapanThumb.webp"; +import mars from "../../../resources/maps/MarsThumb.webp"; +import mena from "../../../resources/maps/MenaThumb.webp"; +import northAmerica from "../../../resources/maps/NorthAmericaThumb.webp"; +import oceania from "../../../resources/maps/OceaniaThumb.webp"; +import pangaea from "../../../resources/maps/PangaeaThumb.webp"; +import southAmerica from "../../../resources/maps/SouthAmericaThumb.webp"; +import world from "../../../resources/maps/WorldMapThumb.webp"; import { GameMapType } from "../../core/game/Game"; diff --git a/src/core/GameRunner.ts b/src/core/GameRunner.ts index c1562063d..cc7e24b2a 100644 --- a/src/core/GameRunner.ts +++ b/src/core/GameRunner.ts @@ -1,7 +1,5 @@ -import { utcDay } from "d3"; import { placeName } from "../client/graphics/NameBoxCalculator"; import { getConfig } from "./configuration/ConfigLoader"; -import { EventBus } from "./EventBus"; import { Executor } from "./execution/ExecutionManager"; import { WinCheckExecution } from "./execution/WinCheckExecution"; import { @@ -9,22 +7,24 @@ import { BuildableUnit, Game, GameUpdates, + NameViewData, Player, PlayerActions, - PlayerID, - PlayerProfile, PlayerBorderTiles, + PlayerID, + PlayerInfo, + PlayerProfile, PlayerType, UnitType, - PlayerInfo, } from "./game/Game"; -import { ErrorUpdate } from "./game/GameUpdates"; -import { NameViewData } from "./game/Game"; -import { GameUpdateType } from "./game/GameUpdates"; import { createGame } from "./game/GameImpl"; +import { + ErrorUpdate, + GameUpdateType, + GameUpdateViewData, +} from "./game/GameUpdates"; import { loadTerrainMap as loadGameMap } from "./game/TerrainMapLoader"; import { ClientID, GameStartInfo, Turn } from "./Schemas"; -import { GameUpdateViewData } from "./game/GameUpdates"; export async function createGameRunner( gameStart: GameStartInfo, diff --git a/src/core/Util.ts b/src/core/Util.ts index 103061644..b2e3f76e4 100644 --- a/src/core/Util.ts +++ b/src/core/Util.ts @@ -1,20 +1,17 @@ -import { v4 as uuidv4 } from "uuid"; -import twemoji from "twemoji"; import DOMPurify from "dompurify"; +import { customAlphabet } from "nanoid"; +import twemoji from "twemoji"; import { Cell, Game, Player, TeamName, Unit } from "./game/Game"; +import { andFN, GameMap, manhattanDistFN, TileRef } from "./game/GameMap"; import { AllPlayersStats, ClientID, - GameConfig, GameID, GameRecord, GameStartInfo, PlayerRecord, - PlayerStats, Turn, } from "./Schemas"; -import { customAlphabet, nanoid } from "nanoid"; -import { andFN, GameMap, manhattanDistFN, TileRef } from "./game/GameMap"; export function manhattanDistWrapped( c1: Cell, diff --git a/src/core/configuration/Config.ts b/src/core/configuration/Config.ts index 9dc185805..42a16dc5a 100644 --- a/src/core/configuration/Config.ts +++ b/src/core/configuration/Config.ts @@ -1,19 +1,17 @@ +import { Colord } from "colord"; +import { GameConfig, GameID } from "../Schemas"; import { Difficulty, Game, GameMapType, Gold, Player, - PlayerID, PlayerInfo, TerraNullius, Tick, - Unit, UnitInfo, UnitType, } from "../game/Game"; -import { Colord, colord } from "colord"; -import { GameConfig, GameID } from "../Schemas"; import { GameMap, TileRef } from "../game/GameMap"; import { PlayerView } from "../game/GameView"; import { UserSettings } from "../game/UserSettings"; diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index b2a117192..3387bfaa8 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -10,11 +10,10 @@ import { TerrainType, TerraNullius, Tick, - Unit, UnitInfo, UnitType, } from "../game/Game"; -import { GameMap, TileRef } from "../game/GameMap"; +import { TileRef } from "../game/GameMap"; import { PlayerView } from "../game/GameView"; import { UserSettings } from "../game/UserSettings"; import { GameConfig, GameID } from "../Schemas"; diff --git a/src/core/configuration/PastelTheme.ts b/src/core/configuration/PastelTheme.ts index 72ff2bb87..d8058521e 100644 --- a/src/core/configuration/PastelTheme.ts +++ b/src/core/configuration/PastelTheme.ts @@ -1,8 +1,7 @@ -import { Colord, colord, random } from "colord"; -import { PlayerType, TeamName, TerrainType } from "../game/Game"; -import { Theme } from "./Config"; +import { Colord, colord } from "colord"; import { PseudoRandom } from "../PseudoRandom"; import { simpleHash } from "../Util"; +import { PlayerType, TeamName, TerrainType } from "../game/Game"; import { GameMap, TileRef } from "../game/GameMap"; import { PlayerView } from "../game/GameView"; import { @@ -13,6 +12,7 @@ import { red, territoryColors, } from "./Colors"; +import { Theme } from "./Config"; export const pastelTheme = new (class implements Theme { private rand = new PseudoRandom(123); diff --git a/src/core/configuration/PastelThemeDark.ts b/src/core/configuration/PastelThemeDark.ts index e232923b9..d7a268170 100644 --- a/src/core/configuration/PastelThemeDark.ts +++ b/src/core/configuration/PastelThemeDark.ts @@ -1,8 +1,7 @@ -import { Colord, colord, random } from "colord"; -import { PlayerType, TeamName, TerrainType } from "../game/Game"; -import { Theme } from "./Config"; +import { Colord, colord } from "colord"; import { PseudoRandom } from "../PseudoRandom"; import { simpleHash } from "../Util"; +import { PlayerType, TeamName, TerrainType } from "../game/Game"; import { GameMap, TileRef } from "../game/GameMap"; import { PlayerView } from "../game/GameView"; import { @@ -13,6 +12,7 @@ import { red, territoryColors, } from "./Colors"; +import { Theme } from "./Config"; export const pastelThemeDark = new (class implements Theme { private rand = new PseudoRandom(123); diff --git a/src/core/configuration/PreprodConfig.ts b/src/core/configuration/PreprodConfig.ts index 9340053d4..4169c6a03 100644 --- a/src/core/configuration/PreprodConfig.ts +++ b/src/core/configuration/PreprodConfig.ts @@ -1,5 +1,5 @@ import { GameEnv } from "./Config"; -import { DefaultConfig, DefaultServerConfig } from "./DefaultConfig"; +import { DefaultServerConfig } from "./DefaultConfig"; export const preprodConfig = new (class extends DefaultServerConfig { r2Bucket(): string { diff --git a/src/core/configuration/ProdConfig.ts b/src/core/configuration/ProdConfig.ts index 8d6860358..254bad2e0 100644 --- a/src/core/configuration/ProdConfig.ts +++ b/src/core/configuration/ProdConfig.ts @@ -1,5 +1,5 @@ import { GameEnv } from "./Config"; -import { DefaultConfig, DefaultServerConfig } from "./DefaultConfig"; +import { DefaultServerConfig } from "./DefaultConfig"; export const prodConfig = new (class extends DefaultServerConfig { r2Bucket(): string { diff --git a/src/core/execution/AttackExecution.ts b/src/core/execution/AttackExecution.ts index 364ddef51..5e4e7cc7f 100644 --- a/src/core/execution/AttackExecution.ts +++ b/src/core/execution/AttackExecution.ts @@ -1,19 +1,18 @@ import { PriorityQueue } from "@datastructures-js/priority-queue"; +import { renderNumber, renderTroops } from "../../client/Utils"; import { Attack, - Cell, Execution, Game, + MessageType, Player, PlayerID, PlayerType, TerrainType, TerraNullius, } from "../game/Game"; -import { PseudoRandom } from "../PseudoRandom"; -import { MessageType } from "../game/Game"; -import { renderNumber, renderTroops } from "../../client/Utils"; import { TileRef } from "../game/GameMap"; +import { PseudoRandom } from "../PseudoRandom"; const malusForRetreat = 25; diff --git a/src/core/execution/BotExecution.ts b/src/core/execution/BotExecution.ts index c129dd9a2..f7321ef93 100644 --- a/src/core/execution/BotExecution.ts +++ b/src/core/execution/BotExecution.ts @@ -1,5 +1,4 @@ import { - Cell, Execution, Game, Player, diff --git a/src/core/execution/BotSpawner.ts b/src/core/execution/BotSpawner.ts index e54346ad7..000768ad8 100644 --- a/src/core/execution/BotSpawner.ts +++ b/src/core/execution/BotSpawner.ts @@ -1,8 +1,8 @@ import { consolex } from "../Consolex"; -import { Cell, Game, PlayerInfo, PlayerType } from "../game/Game"; +import { Game, PlayerInfo, PlayerType } from "../game/Game"; import { TileRef } from "../game/GameMap"; import { PseudoRandom } from "../PseudoRandom"; -import { GameID, SpawnIntent } from "../Schemas"; +import { GameID } from "../Schemas"; import { simpleHash } from "../Util"; import { SpawnExecution } from "./SpawnExecution"; import { BOT_NAME_PREFIXES, BOT_NAME_SUFFIXES } from "./utils/BotNames"; diff --git a/src/core/execution/CityExecution.ts b/src/core/execution/CityExecution.ts index 3b64f88eb..5bf2ca7e4 100644 --- a/src/core/execution/CityExecution.ts +++ b/src/core/execution/CityExecution.ts @@ -3,8 +3,8 @@ import { Execution, Game, Player, - Unit, PlayerID, + Unit, UnitType, } from "../game/Game"; import { TileRef } from "../game/GameMap"; diff --git a/src/core/execution/ConstructionExecution.ts b/src/core/execution/ConstructionExecution.ts index cc54cdba5..c5e73f1f2 100644 --- a/src/core/execution/ConstructionExecution.ts +++ b/src/core/execution/ConstructionExecution.ts @@ -1,22 +1,21 @@ import { consolex } from "../Consolex"; import { - Cell, Execution, Game, Player, - Unit, PlayerID, - UnitType, Tick, + Unit, + UnitType, } from "../game/Game"; import { TileRef } from "../game/GameMap"; import { CityExecution } from "./CityExecution"; import { DefensePostExecution } from "./DefensePostExecution"; -import { SAMLauncherExecution } from "./SAMLauncherExecution"; import { MirvExecution } from "./MIRVExecution"; import { MissileSiloExecution } from "./MissileSiloExecution"; import { NukeExecution } from "./NukeExecution"; import { PortExecution } from "./PortExecution"; +import { SAMLauncherExecution } from "./SAMLauncherExecution"; import { WarshipExecution } from "./WarshipExecution"; export class ConstructionExecution implements Execution { diff --git a/src/core/execution/DefensePostExecution.ts b/src/core/execution/DefensePostExecution.ts index 5f8811e66..0da8ef983 100644 --- a/src/core/execution/DefensePostExecution.ts +++ b/src/core/execution/DefensePostExecution.ts @@ -1,14 +1,13 @@ import { consolex } from "../Consolex"; import { - Cell, Execution, Game, Player, - Unit, PlayerID, + Unit, UnitType, } from "../game/Game"; -import { manhattanDistFN, TileRef } from "../game/GameMap"; +import { TileRef } from "../game/GameMap"; export class DefensePostExecution implements Execution { private player: Player; diff --git a/src/core/execution/DonateGoldExecution.ts b/src/core/execution/DonateGoldExecution.ts index 9a921e76b..258a7607c 100644 --- a/src/core/execution/DonateGoldExecution.ts +++ b/src/core/execution/DonateGoldExecution.ts @@ -1,5 +1,5 @@ import { consolex } from "../Consolex"; -import { Execution, Game, Player, PlayerID, Gold } from "../game/Game"; +import { Execution, Game, Player, PlayerID } from "../game/Game"; export class DonateGoldExecution implements Execution { private sender: Player; diff --git a/src/core/execution/DonateTroopExecution.ts b/src/core/execution/DonateTroopExecution.ts index 324ed07a8..e960554ec 100644 --- a/src/core/execution/DonateTroopExecution.ts +++ b/src/core/execution/DonateTroopExecution.ts @@ -1,5 +1,5 @@ import { consolex } from "../Consolex"; -import { Execution, Game, Player, PlayerID, Gold } from "../game/Game"; +import { Execution, Game, Player, PlayerID } from "../game/Game"; export class DonateTroopsExecution implements Execution { private sender: Player; diff --git a/src/core/execution/EmbargoExecution.ts b/src/core/execution/EmbargoExecution.ts index a37fe20f6..7e159a4ea 100644 --- a/src/core/execution/EmbargoExecution.ts +++ b/src/core/execution/EmbargoExecution.ts @@ -1,4 +1,3 @@ -import { consolex } from "../Consolex"; import { Execution, Game, Player, PlayerID } from "../game/Game"; export class EmbargoExecution implements Execution { diff --git a/src/core/execution/EmojiExecution.ts b/src/core/execution/EmojiExecution.ts index 1793ce7d2..fb6513c74 100644 --- a/src/core/execution/EmojiExecution.ts +++ b/src/core/execution/EmojiExecution.ts @@ -6,7 +6,6 @@ import { Player, PlayerID, PlayerType, - UnitType, } from "../game/Game"; export class EmojiExecution implements Execution { diff --git a/src/core/execution/ExecutionManager.ts b/src/core/execution/ExecutionManager.ts index 630c642f4..ad6e95d4d 100644 --- a/src/core/execution/ExecutionManager.ts +++ b/src/core/execution/ExecutionManager.ts @@ -1,43 +1,26 @@ -import { - Cell, - Execution, - Game, - Player, - PlayerInfo, - TerraNullius, - PlayerType, - Alliance, - UnitType, -} from "../game/Game"; -import { - AttackIntent, - BoatAttackIntentSchema, - ClientID, - GameID, - Intent, - Turn, -} from "../Schemas"; -import { AttackExecution } from "./AttackExecution"; -import { SpawnExecution } from "./SpawnExecution"; -import { BotSpawner } from "./BotSpawner"; -import { TransportShipExecution } from "./TransportShipExecution"; +import { Execution, Game, PlayerInfo, PlayerType } from "../game/Game"; import { PseudoRandom } from "../PseudoRandom"; -import { FakeHumanExecution } from "./FakeHumanExecution"; +import { ClientID, GameID, Intent, Turn } from "../Schemas"; import { sanitize, simpleHash } from "../Util"; +import { fixProfaneUsername } from "../validations/username"; import { AllianceRequestExecution } from "./alliance/AllianceRequestExecution"; import { AllianceRequestReplyExecution } from "./alliance/AllianceRequestReplyExecution"; import { BreakAllianceExecution } from "./alliance/BreakAllianceExecution"; -import { TargetPlayerExecution } from "./TargetPlayerExecution"; -import { EmojiExecution } from "./EmojiExecution"; -import { DonateTroopsExecution } from "./DonateTroopExecution"; -import { DonateGoldExecution } from "./DonateGoldExecution"; -import { SetTargetTroopRatioExecution } from "./SetTargetTroopRatioExecution"; +import { AttackExecution } from "./AttackExecution"; +import { BotSpawner } from "./BotSpawner"; import { ConstructionExecution } from "./ConstructionExecution"; -import { fixProfaneUsername, isProfaneUsername } from "../validations/username"; -import { NoOpExecution } from "./NoOpExecution"; +import { DonateGoldExecution } from "./DonateGoldExecution"; +import { DonateTroopsExecution } from "./DonateTroopExecution"; import { EmbargoExecution } from "./EmbargoExecution"; -import { RetreatExecution } from "./RetreatExecution"; +import { EmojiExecution } from "./EmojiExecution"; +import { FakeHumanExecution } from "./FakeHumanExecution"; import { MoveWarshipExecution } from "./MoveWarshipExecution"; +import { NoOpExecution } from "./NoOpExecution"; +import { RetreatExecution } from "./RetreatExecution"; +import { SetTargetTroopRatioExecution } from "./SetTargetTroopRatioExecution"; +import { SpawnExecution } from "./SpawnExecution"; +import { TargetPlayerExecution } from "./TargetPlayerExecution"; +import { TransportShipExecution } from "./TransportShipExecution"; export class Executor { // private random = new PseudoRandom(999) diff --git a/src/core/execution/FakeHumanExecution.ts b/src/core/execution/FakeHumanExecution.ts index 929fb9a70..8565d9566 100644 --- a/src/core/execution/FakeHumanExecution.ts +++ b/src/core/execution/FakeHumanExecution.ts @@ -1,3 +1,4 @@ +import { consolex } from "../Consolex"; import { AllianceRequest, Cell, @@ -14,20 +15,18 @@ import { Tick, UnitType, } from "../game/Game"; -import { PseudoRandom } from "../PseudoRandom"; -import { AttackExecution } from "./AttackExecution"; -import { TransportShipExecution } from "./TransportShipExecution"; -import { SpawnExecution } from "./SpawnExecution"; -import { GameID } from "../Schemas"; -import { consolex } from "../Consolex"; -import { NukeExecution } from "./NukeExecution"; -import { EmojiExecution } from "./EmojiExecution"; -import { AllianceRequestReplyExecution } from "./alliance/AllianceRequestReplyExecution"; -import { closestTwoTiles } from "./Util"; -import { calculateBoundingBox, simpleHash } from "../Util"; import { andFN, manhattanDistFN, TileRef } from "../game/GameMap"; +import { PseudoRandom } from "../PseudoRandom"; +import { GameID } from "../Schemas"; +import { calculateBoundingBox, simpleHash } from "../Util"; +import { AllianceRequestReplyExecution } from "./alliance/AllianceRequestReplyExecution"; +import { AttackExecution } from "./AttackExecution"; import { ConstructionExecution } from "./ConstructionExecution"; -import { renderTroops } from "../../client/Utils"; +import { EmojiExecution } from "./EmojiExecution"; +import { NukeExecution } from "./NukeExecution"; +import { SpawnExecution } from "./SpawnExecution"; +import { TransportShipExecution } from "./TransportShipExecution"; +import { closestTwoTiles } from "./Util"; export class FakeHumanExecution implements Execution { private firstMove = true; diff --git a/src/core/execution/MIRVExecution.ts b/src/core/execution/MIRVExecution.ts index 1ad5d053e..59d292527 100644 --- a/src/core/execution/MIRVExecution.ts +++ b/src/core/execution/MIRVExecution.ts @@ -1,20 +1,18 @@ -import { nextTick } from "process"; +import { consolex } from "../Consolex"; import { - Cell, Execution, Game, + MessageType, Player, PlayerID, + TerraNullius, Unit, UnitType, - TerraNullius, - MessageType, } from "../game/Game"; -import { PathFinder } from "../pathfinding/PathFinding"; -import { PathFindResultType } from "../pathfinding/AStar"; -import { PseudoRandom } from "../PseudoRandom"; -import { consolex } from "../Consolex"; import { TileRef } from "../game/GameMap"; +import { PathFindResultType } from "../pathfinding/AStar"; +import { PathFinder } from "../pathfinding/PathFinding"; +import { PseudoRandom } from "../PseudoRandom"; import { simpleHash } from "../Util"; import { NukeExecution } from "./NukeExecution"; diff --git a/src/core/execution/MissileSiloExecution.ts b/src/core/execution/MissileSiloExecution.ts index b88ea38bd..928b8afdf 100644 --- a/src/core/execution/MissileSiloExecution.ts +++ b/src/core/execution/MissileSiloExecution.ts @@ -1,11 +1,10 @@ import { consolex } from "../Consolex"; import { - Cell, Execution, Game, Player, - Unit, PlayerID, + Unit, UnitType, } from "../game/Game"; import { TileRef } from "../game/GameMap"; diff --git a/src/core/execution/MoveWarshipExecution.ts b/src/core/execution/MoveWarshipExecution.ts index 77d2fbe50..c7b5197a1 100644 --- a/src/core/execution/MoveWarshipExecution.ts +++ b/src/core/execution/MoveWarshipExecution.ts @@ -1,4 +1,4 @@ -import { Execution, Game, Player, PlayerID } from "../game/Game"; +import { Execution, Game } from "../game/Game"; const cancelDelay = 2; diff --git a/src/core/execution/NukeExecution.ts b/src/core/execution/NukeExecution.ts index a41d156b3..b1829713d 100644 --- a/src/core/execution/NukeExecution.ts +++ b/src/core/execution/NukeExecution.ts @@ -1,18 +1,17 @@ +import { consolex } from "../Consolex"; import { - Cell, Execution, Game, - Player, - PlayerID, - Unit, - UnitType, - TerraNullius, MessageType, NukeType, + Player, + PlayerID, + TerraNullius, + Unit, + UnitType, } from "../game/Game"; -import { PseudoRandom } from "../PseudoRandom"; -import { consolex } from "../Consolex"; import { TileRef } from "../game/GameMap"; +import { PseudoRandom } from "../PseudoRandom"; export class NukeExecution implements Execution { private player: Player; diff --git a/src/core/execution/PlayerExecution.ts b/src/core/execution/PlayerExecution.ts index ced03d44e..df86b96e6 100644 --- a/src/core/execution/PlayerExecution.ts +++ b/src/core/execution/PlayerExecution.ts @@ -1,18 +1,17 @@ +import { renderNumber } from "../../client/Utils"; import { Config } from "../configuration/Config"; +import { consolex } from "../Consolex"; import { Execution, Game, MessageType, Player, PlayerID, - TerraNullius, UnitType, } from "../game/Game"; -import { calculateBoundingBox, getMode, inscribed, simpleHash } from "../Util"; import { GameImpl } from "../game/GameImpl"; -import { consolex } from "../Consolex"; -import { GameMap, TileRef } from "../game/GameMap"; -import { renderNumber } from "../../client/Utils"; +import { TileRef } from "../game/GameMap"; +import { calculateBoundingBox, getMode, inscribed, simpleHash } from "../Util"; export class PlayerExecution implements Execution { private readonly ticksPerClusterCalc = 20; diff --git a/src/core/execution/PortExecution.ts b/src/core/execution/PortExecution.ts index a2c226936..b1169b3aa 100644 --- a/src/core/execution/PortExecution.ts +++ b/src/core/execution/PortExecution.ts @@ -1,19 +1,16 @@ +import { consolex } from "../Consolex"; import { - AllPlayers, - Cell, Execution, Game, Player, - Unit, PlayerID, - TerrainType, + Unit, UnitType, } from "../game/Game"; +import { TileRef } from "../game/GameMap"; import { PathFinder } from "../pathfinding/PathFinding"; import { PseudoRandom } from "../PseudoRandom"; import { TradeShipExecution } from "./TradeShipExecution"; -import { consolex } from "../Consolex"; -import { manhattanDistFN, TileRef } from "../game/GameMap"; export class PortExecution implements Execution { private active = true; diff --git a/src/core/execution/SAMLauncherExecution.ts b/src/core/execution/SAMLauncherExecution.ts index a733e224b..b7c41f524 100644 --- a/src/core/execution/SAMLauncherExecution.ts +++ b/src/core/execution/SAMLauncherExecution.ts @@ -1,17 +1,16 @@ import { consolex } from "../Consolex"; import { - Cell, Execution, Game, - Player, - Unit, - PlayerID, - UnitType, MessageType, + Player, + PlayerID, + Unit, + UnitType, } from "../game/Game"; -import { manhattanDistFN, TileRef } from "../game/GameMap"; -import { SAMMissileExecution } from "./SAMMissileExecution"; +import { TileRef } from "../game/GameMap"; import { PseudoRandom } from "../PseudoRandom"; +import { SAMMissileExecution } from "./SAMMissileExecution"; export class SAMLauncherExecution implements Execution { private player: Player; diff --git a/src/core/execution/SAMMissileExecution.ts b/src/core/execution/SAMMissileExecution.ts index b21f41f7a..4691808c4 100644 --- a/src/core/execution/SAMMissileExecution.ts +++ b/src/core/execution/SAMMissileExecution.ts @@ -1,3 +1,4 @@ +import { consolex } from "../Consolex"; import { Execution, Game, @@ -6,10 +7,9 @@ import { Unit, UnitType, } from "../game/Game"; -import { PathFinder } from "../pathfinding/PathFinding"; -import { PathFindResultType } from "../pathfinding/AStar"; -import { consolex } from "../Consolex"; import { TileRef } from "../game/GameMap"; +import { PathFindResultType } from "../pathfinding/AStar"; +import { PathFinder } from "../pathfinding/PathFinding"; export class SAMMissileExecution implements Execution { private active = true; diff --git a/src/core/execution/ShellExecution.ts b/src/core/execution/ShellExecution.ts index 8f3b4bd5d..286d2bdc9 100644 --- a/src/core/execution/ShellExecution.ts +++ b/src/core/execution/ShellExecution.ts @@ -1,8 +1,8 @@ -import { Execution, Game, Player, Unit, UnitType } from "../game/Game"; -import { PathFinder } from "../pathfinding/PathFinding"; -import { PathFindResultType } from "../pathfinding/AStar"; import { consolex } from "../Consolex"; +import { Execution, Game, Player, Unit, UnitType } from "../game/Game"; import { TileRef } from "../game/GameMap"; +import { PathFindResultType } from "../pathfinding/AStar"; +import { PathFinder } from "../pathfinding/PathFinding"; export class ShellExecution implements Execution { private active = true; diff --git a/src/core/execution/SpawnExecution.ts b/src/core/execution/SpawnExecution.ts index 6acfdbd3e..d315a0a53 100644 --- a/src/core/execution/SpawnExecution.ts +++ b/src/core/execution/SpawnExecution.ts @@ -1,11 +1,4 @@ -import { - Cell, - Execution, - Game, - Player, - PlayerInfo, - PlayerType, -} from "../game/Game"; +import { Execution, Game, Player, PlayerInfo, PlayerType } from "../game/Game"; import { TileRef } from "../game/GameMap"; import { BotExecution } from "./BotExecution"; import { PlayerExecution } from "./PlayerExecution"; diff --git a/src/core/execution/TradeShipExecution.ts b/src/core/execution/TradeShipExecution.ts index 2c85a0d3c..34e0f6a56 100644 --- a/src/core/execution/TradeShipExecution.ts +++ b/src/core/execution/TradeShipExecution.ts @@ -1,20 +1,18 @@ -import { MessageType } from "../game/Game"; import { renderNumber } from "../../client/Utils"; +import { consolex } from "../Consolex"; import { - AllPlayers, - Cell, Execution, Game, - Unit, + MessageType, Player, PlayerID, + Unit, UnitType, } from "../game/Game"; -import { PathFinder } from "../pathfinding/PathFinding"; -import { PathFindResultType } from "../pathfinding/AStar"; -import { distSortUnit } from "../Util"; -import { consolex } from "../Consolex"; import { TileRef } from "../game/GameMap"; +import { PathFindResultType } from "../pathfinding/AStar"; +import { PathFinder } from "../pathfinding/PathFinding"; +import { distSortUnit } from "../Util"; export class TradeShipExecution implements Execution { private active = true; diff --git a/src/core/execution/TransportShipExecution.ts b/src/core/execution/TransportShipExecution.ts index 1ba358e19..d89515956 100644 --- a/src/core/execution/TransportShipExecution.ts +++ b/src/core/execution/TransportShipExecution.ts @@ -1,21 +1,19 @@ +import { consolex } from "../Consolex"; import { - Unit, - Cell, Execution, Game, + MessageType, Player, PlayerID, TerraNullius, + Unit, UnitType, - TerrainType, } from "../game/Game"; -import { AttackExecution } from "./AttackExecution"; -import { MessageType } from "../game/Game"; -import { PathFinder } from "../pathfinding/PathFinding"; -import { PathFindResultType } from "../pathfinding/AStar"; -import { consolex } from "../Consolex"; import { TileRef } from "../game/GameMap"; +import { PathFindResultType } from "../pathfinding/AStar"; +import { PathFinder } from "../pathfinding/PathFinding"; import { targetTransportTile } from "../Util"; +import { AttackExecution } from "./AttackExecution"; export class TransportShipExecution implements Execution { private lastMove: number; diff --git a/src/core/execution/WarshipExecution.ts b/src/core/execution/WarshipExecution.ts index c958b4d20..632bdc2bd 100644 --- a/src/core/execution/WarshipExecution.ts +++ b/src/core/execution/WarshipExecution.ts @@ -1,18 +1,16 @@ +import { consolex } from "../Consolex"; import { - Cell, Execution, Game, Player, - Unit, PlayerID, - TerrainType, + Unit, UnitType, } from "../game/Game"; -import { PathFinder } from "../pathfinding/PathFinding"; -import { PathFindResultType } from "../pathfinding/AStar"; -import { PseudoRandom } from "../PseudoRandom"; -import { consolex } from "../Consolex"; import { TileRef } from "../game/GameMap"; +import { PathFindResultType } from "../pathfinding/AStar"; +import { PathFinder } from "../pathfinding/PathFinding"; +import { PseudoRandom } from "../PseudoRandom"; import { ShellExecution } from "./ShellExecution"; export class WarshipExecution implements Execution { diff --git a/src/core/execution/WinCheckExecution.ts b/src/core/execution/WinCheckExecution.ts index 12619bdb6..47d3c7ed3 100644 --- a/src/core/execution/WinCheckExecution.ts +++ b/src/core/execution/WinCheckExecution.ts @@ -1,4 +1,4 @@ -import { EventBus, GameEvent } from "../EventBus"; +import { GameEvent } from "../EventBus"; import { Execution, Game, diff --git a/src/core/execution/alliance/AllianceRequestExecution.ts b/src/core/execution/alliance/AllianceRequestExecution.ts index 3703c96ba..51cfe2c30 100644 --- a/src/core/execution/alliance/AllianceRequestExecution.ts +++ b/src/core/execution/alliance/AllianceRequestExecution.ts @@ -1,11 +1,5 @@ import { consolex } from "../../Consolex"; -import { - AllianceRequest, - Execution, - Game, - Player, - PlayerID, -} from "../../game/Game"; +import { Execution, Game, Player, PlayerID } from "../../game/Game"; export class AllianceRequestExecution implements Execution { private active = true; diff --git a/src/core/execution/alliance/AllianceRequestReplyExecution.ts b/src/core/execution/alliance/AllianceRequestReplyExecution.ts index 04a79b316..6c8e90edf 100644 --- a/src/core/execution/alliance/AllianceRequestReplyExecution.ts +++ b/src/core/execution/alliance/AllianceRequestReplyExecution.ts @@ -1,11 +1,5 @@ import { consolex } from "../../Consolex"; -import { - AllianceRequest, - Execution, - Game, - Player, - PlayerID, -} from "../../game/Game"; +import { Execution, Game, Player, PlayerID } from "../../game/Game"; export class AllianceRequestReplyExecution implements Execution { private active = true; diff --git a/src/core/execution/alliance/BreakAllianceExecution.ts b/src/core/execution/alliance/BreakAllianceExecution.ts index 074e72ab7..f7371f386 100644 --- a/src/core/execution/alliance/BreakAllianceExecution.ts +++ b/src/core/execution/alliance/BreakAllianceExecution.ts @@ -1,11 +1,5 @@ import { consolex } from "../../Consolex"; -import { - AllianceRequest, - Execution, - Game, - Player, - PlayerID, -} from "../../game/Game"; +import { Execution, Game, Player, PlayerID } from "../../game/Game"; export class BreakAllianceExecution implements Execution { private active = true; diff --git a/src/core/game/AllianceImpl.ts b/src/core/game/AllianceImpl.ts index b50c91ac3..23477713a 100644 --- a/src/core/game/AllianceImpl.ts +++ b/src/core/game/AllianceImpl.ts @@ -1,4 +1,4 @@ -import { MutableAlliance, Game, Player, Tick } from "./Game"; +import { MutableAlliance, Player, Tick } from "./Game"; import { GameImpl } from "./GameImpl"; import { PlayerImpl } from "./PlayerImpl"; diff --git a/src/core/game/AllianceRequestImpl.ts b/src/core/game/AllianceRequestImpl.ts index 22209106d..6d51acdb3 100644 --- a/src/core/game/AllianceRequestImpl.ts +++ b/src/core/game/AllianceRequestImpl.ts @@ -1,7 +1,6 @@ import { AllianceRequest, Player, Tick } from "./Game"; -import { AllianceRequestUpdate } from "./GameUpdates"; -import { GameUpdateType } from "./GameUpdates"; import { GameImpl } from "./GameImpl"; +import { AllianceRequestUpdate, GameUpdateType } from "./GameUpdates"; export class AllianceRequestImpl implements AllianceRequest { constructor( diff --git a/src/core/game/Game.ts b/src/core/game/Game.ts index 7d96afd7e..ec5382836 100644 --- a/src/core/game/Game.ts +++ b/src/core/game/Game.ts @@ -1,14 +1,13 @@ import { Config } from "../configuration/Config"; -import { GameEvent } from "../EventBus"; -import { PlayerView } from "./GameView"; -import { ClientID, GameConfig, GameID, AllPlayersStats } from "../Schemas"; -import { GameMap, GameMapImpl, TileRef } from "./GameMap"; +import { AllPlayersStats, ClientID } from "../Schemas"; +import { GameMap, TileRef } from "./GameMap"; import { GameUpdate, GameUpdateType, PlayerUpdate, UnitUpdate, } from "./GameUpdates"; +import { PlayerView } from "./GameView"; import { Stats } from "./Stats"; export type PlayerID = string; diff --git a/src/core/game/GameImpl.ts b/src/core/game/GameImpl.ts index 258d864d6..7712de084 100644 --- a/src/core/game/GameImpl.ts +++ b/src/core/game/GameImpl.ts @@ -1,43 +1,42 @@ import { Config } from "../configuration/Config"; +import { consolex } from "../Consolex"; +import { AllPlayersStats, ClientID } from "../Schemas"; +import { simpleHash } from "../Util"; +import { AllianceImpl } from "./AllianceImpl"; +import { AllianceRequestImpl } from "./AllianceRequestImpl"; import { + Alliance, + AllianceRequest, Cell, + EmojiMessage, Execution, Game, + GameMode, + GameUpdates, + MessageType, + Nation, + Player, PlayerID, PlayerInfo, - Player, + PlayerType, + Team, + TeamName, + TerrainType, TerraNullius, Unit, - AllianceRequest, - Alliance, - Nation, - UnitType, UnitInfo, - GameUpdates, - TerrainType, - EmojiMessage, - Team, - GameMode, - TeamName, - PlayerType, + UnitType, } from "./Game"; -import { GameUpdate } from "./GameUpdates"; -import { GameUpdateType } from "./GameUpdates"; -import { NationMap } from "./TerrainMapLoader"; +import { GameMap, TileRef, TileUpdate } from "./GameMap"; +import { GameUpdate, GameUpdateType } from "./GameUpdates"; import { PlayerImpl } from "./PlayerImpl"; -import { TerraNulliusImpl } from "./TerraNulliusImpl"; -import { AllianceRequestImpl } from "./AllianceRequestImpl"; -import { AllianceImpl } from "./AllianceImpl"; -import { ClientID, AllPlayersStats } from "../Schemas"; -import { MessageType } from "./Game"; -import { UnitImpl } from "./UnitImpl"; -import { consolex } from "../Consolex"; -import { GameMap, GameMapImpl, TileRef, TileUpdate } from "./GameMap"; -import { UnitGrid } from "./UnitGrid"; -import { StatsImpl } from "./StatsImpl"; import { Stats } from "./Stats"; -import { simpleHash } from "../Util"; +import { StatsImpl } from "./StatsImpl"; import { assignTeams } from "./TeamAssignment"; +import { NationMap } from "./TerrainMapLoader"; +import { TerraNulliusImpl } from "./TerraNulliusImpl"; +import { UnitGrid } from "./UnitGrid"; +import { UnitImpl } from "./UnitImpl"; export function createGame( humans: PlayerInfo[], diff --git a/src/core/game/GameUpdates.ts b/src/core/game/GameUpdates.ts index 0dd2b111f..5bb7c5693 100644 --- a/src/core/game/GameUpdates.ts +++ b/src/core/game/GameUpdates.ts @@ -1,9 +1,7 @@ -import { ClientID, PlayerStats, AllPlayersStats } from "../Schemas"; +import { AllPlayersStats, ClientID, PlayerStats } from "../Schemas"; import { - AllianceRequest, EmojiMessage, GameUpdates, - MapPos, MessageType, NameViewData, PlayerID, diff --git a/src/core/game/GameView.ts b/src/core/game/GameView.ts index b9a3556c9..c7ffc85d7 100644 --- a/src/core/game/GameView.ts +++ b/src/core/game/GameView.ts @@ -1,40 +1,37 @@ -import { - GameUpdates, - MapPos, - MessageType, - nukeTypes, - Player, - PlayerActions, - PlayerProfile, - PlayerBorderTiles, - TeamName, -} from "./Game"; -import { AttackUpdate, PlayerUpdate } from "./GameUpdates"; -import { UnitUpdate } from "./GameUpdates"; -import { NameViewData } from "./Game"; -import { GameUpdateType } from "./GameUpdates"; import { Config } from "../configuration/Config"; +import { ClientID, GameID, PlayerStats } from "../Schemas"; +import { WorkerClient } from "../worker/WorkerClient"; import { Cell, EmojiMessage, + GameUpdates, Gold, + NameViewData, + nukeTypes, + Player, + PlayerActions, + PlayerBorderTiles, PlayerID, PlayerInfo, + PlayerProfile, PlayerType, + TeamName, TerrainType, TerraNullius, Tick, UnitInfo, UnitType, } from "./Game"; -import { ClientID, GameID, PlayerStats } from "../Schemas"; +import { GameMap, TileRef, TileUpdate } from "./GameMap"; +import { + AttackUpdate, + GameUpdateType, + GameUpdateViewData, + PlayerUpdate, + UnitUpdate, +} from "./GameUpdates"; import { TerraNulliusImpl } from "./TerraNulliusImpl"; -import { WorkerClient } from "../worker/WorkerClient"; -import { GameMap, GameMapImpl, TileRef, TileUpdate } from "./GameMap"; -import { GameUpdateViewData } from "./GameUpdates"; import { UnitGrid } from "./UnitGrid"; -import { consolex } from "../Consolex"; -import { SAMLauncherExecution } from "../execution/SAMLauncherExecution"; export class UnitView { public _wasUpdated = true; diff --git a/src/core/game/PlayerImpl.ts b/src/core/game/PlayerImpl.ts index d84e0a1ae..6180d0e19 100644 --- a/src/core/game/PlayerImpl.ts +++ b/src/core/game/PlayerImpl.ts @@ -1,28 +1,6 @@ -import { - Player, - PlayerInfo, - PlayerID, - PlayerType, - TerraNullius, - Cell, - Execution, - AllianceRequest, - MutableAlliance, - Alliance, - Tick, - AllPlayers, - Gold, - UnitType, - Unit, - Relation, - EmojiMessage, - PlayerProfile, - Attack, - UnitSpecificInfos, - Team, -} from "./Game"; -import { AttackUpdate, PlayerUpdate } from "./GameUpdates"; -import { GameUpdateType } from "./GameUpdates"; +import { renderNumber, renderTroops } from "../../client/Utils"; +import { consolex } from "../Consolex"; +import { PseudoRandom } from "../PseudoRandom"; import { ClientID } from "../Schemas"; import { assertNever, @@ -31,21 +9,40 @@ import { maxInt, minInt, simpleHash, - sourceDstOceanShore, targetTransportTile, toInt, within, } from "../Util"; -import { CellString, GameImpl } from "./GameImpl"; -import { UnitImpl } from "./UnitImpl"; -import { MessageType } from "./Game"; -import { renderTroops, renderNumber } from "../../client/Utils"; -import { TerraNulliusImpl } from "./TerraNulliusImpl"; -import { andFN, manhattanDistFN, TileRef } from "./GameMap"; -import { AttackImpl } from "./AttackImpl"; -import { PseudoRandom } from "../PseudoRandom"; -import { consolex } from "../Consolex"; import { sanitizeUsername } from "../validations/username"; +import { AttackImpl } from "./AttackImpl"; +import { + Alliance, + AllianceRequest, + AllPlayers, + Attack, + Cell, + EmojiMessage, + Gold, + MessageType, + MutableAlliance, + Player, + PlayerID, + PlayerInfo, + PlayerProfile, + PlayerType, + Relation, + Team, + TerraNullius, + Tick, + Unit, + UnitSpecificInfos, + UnitType, +} from "./Game"; +import { GameImpl } from "./GameImpl"; +import { andFN, manhattanDistFN, TileRef } from "./GameMap"; +import { AttackUpdate, GameUpdateType, PlayerUpdate } from "./GameUpdates"; +import { TerraNulliusImpl } from "./TerraNulliusImpl"; +import { UnitImpl } from "./UnitImpl"; interface Target { tick: Tick; diff --git a/src/core/game/TeamAssignment.ts b/src/core/game/TeamAssignment.ts index 1d1dda4a0..b744c7a83 100644 --- a/src/core/game/TeamAssignment.ts +++ b/src/core/game/TeamAssignment.ts @@ -1,4 +1,4 @@ -import { Player, PlayerInfo, Team, TeamName } from "./Game"; +import { PlayerInfo, Team, TeamName } from "./Game"; export function assignTeams( players: PlayerInfo[], diff --git a/src/core/game/TerraNulliusImpl.ts b/src/core/game/TerraNulliusImpl.ts index 1649cf668..93588b8ee 100644 --- a/src/core/game/TerraNulliusImpl.ts +++ b/src/core/game/TerraNulliusImpl.ts @@ -1,7 +1,5 @@ import { ClientID } from "../Schemas"; -import { TerraNullius, Cell, PlayerID } from "./Game"; -import { GameImpl } from "./GameImpl"; -import { TileRef } from "./GameMap"; +import { PlayerID, TerraNullius } from "./Game"; export class TerraNulliusImpl implements TerraNullius { constructor() {} diff --git a/src/core/game/TerrainMapFileLoader.ts b/src/core/game/TerrainMapFileLoader.ts index f30802428..6f933ceb0 100644 --- a/src/core/game/TerrainMapFileLoader.ts +++ b/src/core/game/TerrainMapFileLoader.ts @@ -1,5 +1,4 @@ -import { Cell, GameMapType, TerrainType } from "./Game"; -import { consolex } from "../Consolex"; +import { GameMapType } from "./Game"; import { NationMap } from "./TerrainMapLoader"; interface MapData { diff --git a/src/core/game/TerrainMapLoader.ts b/src/core/game/TerrainMapLoader.ts index a017b8851..710f3d929 100644 --- a/src/core/game/TerrainMapLoader.ts +++ b/src/core/game/TerrainMapLoader.ts @@ -1,5 +1,5 @@ import { consolex } from "../Consolex"; -import { Cell, GameMapType, TerrainType } from "./Game"; +import { GameMapType } from "./Game"; import { GameMap, GameMapImpl } from "./GameMap"; import { terrainMapFileLoader } from "./TerrainMapFileLoader"; diff --git a/src/core/game/UnitImpl.ts b/src/core/game/UnitImpl.ts index 9b5492ac9..4c24170e9 100644 --- a/src/core/game/UnitImpl.ts +++ b/src/core/game/UnitImpl.ts @@ -1,12 +1,17 @@ -import { MessageType, Tick, UnitSpecificInfos } from "./Game"; -import { UnitUpdate } from "./GameUpdates"; -import { GameUpdateType } from "./GameUpdates"; -import { simpleHash, toInt, within, withinInt } from "../Util"; -import { Unit, TerraNullius, UnitType, Player, UnitInfo } from "./Game"; +import { simpleHash, toInt, withinInt } from "../Util"; +import { + MessageType, + Player, + Tick, + Unit, + UnitInfo, + UnitSpecificInfos, + UnitType, +} from "./Game"; import { GameImpl } from "./GameImpl"; -import { PlayerImpl } from "./PlayerImpl"; import { TileRef } from "./GameMap"; -import { consolex } from "../Consolex"; +import { GameUpdateType, UnitUpdate } from "./GameUpdates"; +import { PlayerImpl } from "./PlayerImpl"; export class UnitImpl implements Unit { private _active = true; diff --git a/src/core/pathfinding/MiniAStar.ts b/src/core/pathfinding/MiniAStar.ts index 6f55871a3..6ddab13c6 100644 --- a/src/core/pathfinding/MiniAStar.ts +++ b/src/core/pathfinding/MiniAStar.ts @@ -1,5 +1,5 @@ import { Cell } from "../game/Game"; -import { GameMap, GameMapImpl, TileRef } from "../game/GameMap"; +import { GameMap, TileRef } from "../game/GameMap"; import { AStar, PathFindResultType } from "./AStar"; import { SerialAStar } from "./SerialAStar"; diff --git a/src/core/pathfinding/PathFinding.ts b/src/core/pathfinding/PathFinding.ts index 0e1a82ff8..2a8ac3192 100644 --- a/src/core/pathfinding/PathFinding.ts +++ b/src/core/pathfinding/PathFinding.ts @@ -1,9 +1,8 @@ -import { Cell, Game } from "../game/Game"; -import { AStar, PathFindResultType, TileResult } from "./AStar"; -import { SerialAStar } from "./SerialAStar"; -import { MiniAStar } from "./MiniAStar"; import { consolex } from "../Consolex"; +import { Game } from "../game/Game"; import { TileRef } from "../game/GameMap"; +import { AStar, PathFindResultType, TileResult } from "./AStar"; +import { MiniAStar } from "./MiniAStar"; export class PathFinder { private curr: TileRef = null; diff --git a/src/core/pathfinding/SerialAStar.ts b/src/core/pathfinding/SerialAStar.ts index e1cd7879a..3b3ac9193 100644 --- a/src/core/pathfinding/SerialAStar.ts +++ b/src/core/pathfinding/SerialAStar.ts @@ -1,8 +1,7 @@ import { PriorityQueue } from "@datastructures-js/priority-queue"; -import { AStar } from "./AStar"; -import { PathFindResultType } from "./AStar"; import { consolex } from "../Consolex"; -import { GameMap, GameMapImpl, TileRef } from "../game/GameMap"; +import { GameMap, TileRef } from "../game/GameMap"; +import { AStar, PathFindResultType } from "./AStar"; export class SerialAStar implements AStar { private fwdOpenSet: PriorityQueue<{ tile: TileRef; fScore: number }>; diff --git a/src/core/validations/username.ts b/src/core/validations/username.ts index 0fac673f3..92f6baa13 100644 --- a/src/core/validations/username.ts +++ b/src/core/validations/username.ts @@ -3,8 +3,8 @@ import { englishDataset, englishRecommendedTransformers, } from "obscenity"; -import { simpleHash } from "../Util"; import { translateText } from "../../client/Utils"; +import { simpleHash } from "../Util"; const matcher = new RegExpMatcher({ ...englishDataset.build(), diff --git a/src/core/worker/Worker.worker.ts b/src/core/worker/Worker.worker.ts index 7394e2849..de6617509 100644 --- a/src/core/worker/Worker.worker.ts +++ b/src/core/worker/Worker.worker.ts @@ -1,12 +1,12 @@ import { createGameRunner, GameRunner } from "../GameRunner"; import { GameUpdateViewData } from "../game/GameUpdates"; import { - MainThreadMessage, - WorkerMessage, InitializedMessage, + MainThreadMessage, PlayerActionsResultMessage, - PlayerProfileResultMessage, PlayerBorderTilesResultMessage, + PlayerProfileResultMessage, + WorkerMessage, } from "./WorkerMessages"; const ctx: Worker = self as any; diff --git a/src/core/worker/WorkerClient.ts b/src/core/worker/WorkerClient.ts index 33efd1abd..d17eabcb8 100644 --- a/src/core/worker/WorkerClient.ts +++ b/src/core/worker/WorkerClient.ts @@ -1,8 +1,8 @@ import { PlayerActions, + PlayerBorderTiles, PlayerID, PlayerProfile, - PlayerBorderTiles, } from "../game/Game"; import { ErrorUpdate, GameUpdateViewData } from "../game/GameUpdates"; import { ClientID, GameStartInfo, Turn } from "../Schemas"; diff --git a/src/core/worker/WorkerMessages.ts b/src/core/worker/WorkerMessages.ts index d682b352a..57174f37e 100644 --- a/src/core/worker/WorkerMessages.ts +++ b/src/core/worker/WorkerMessages.ts @@ -1,16 +1,11 @@ -import { GameUpdateViewData } from "../game/GameUpdates"; -import { - ClientID, - Turn, - ServerStartGameMessage, - GameStartInfo, -} from "../Schemas"; import { PlayerActions, + PlayerBorderTiles, PlayerID, PlayerProfile, - PlayerBorderTiles, } from "../game/Game"; +import { GameUpdateViewData } from "../game/GameUpdates"; +import { ClientID, GameStartInfo, Turn } from "../Schemas"; export type WorkerMessageType = | "heartbeat" diff --git a/src/scripts/TerrainMapGenerator.ts b/src/scripts/TerrainMapGenerator.ts index a07d247b9..6ee6b74d9 100644 --- a/src/scripts/TerrainMapGenerator.ts +++ b/src/scripts/TerrainMapGenerator.ts @@ -1,4 +1,4 @@ -import { decodePNGFromStream, Bitmap } from "pureimage"; +import { Bitmap, decodePNGFromStream } from "pureimage"; //import path from "path"; //import fs from "fs/promises"; //import { createReadStream } from "fs"; diff --git a/src/scripts/generateTerrainMaps.ts b/src/scripts/generateTerrainMaps.ts index a87bc1087..4fe354ee1 100644 --- a/src/scripts/generateTerrainMaps.ts +++ b/src/scripts/generateTerrainMaps.ts @@ -1,7 +1,7 @@ +import fs from "fs/promises"; +import path from "path"; import sharp from "sharp"; import { generateMap } from "./TerrainMapGenerator.js"; -import path from "path"; -import fs from "fs/promises"; const maps = [ "Africa", diff --git a/src/server/Archive.ts b/src/server/Archive.ts index 9609b1983..b9f280879 100644 --- a/src/server/Archive.ts +++ b/src/server/Archive.ts @@ -1,7 +1,6 @@ -import { GameRecord, GameID, GameRecordSchema } from "../core/Schemas"; import { S3 } from "@aws-sdk/client-s3"; -import { GameEnv } from "../core/configuration/Config"; import { getServerConfigFromServer } from "../core/configuration/ConfigLoader"; +import { GameID, GameRecord } from "../core/Schemas"; import { logger } from "./Logger"; const config = getServerConfigFromServer(); diff --git a/src/server/Client.ts b/src/server/Client.ts index 6417730ce..13c3939d3 100644 --- a/src/server/Client.ts +++ b/src/server/Client.ts @@ -1,6 +1,6 @@ import WebSocket from "ws"; -import { ClientID } from "../core/Schemas"; import { PlayerID, Tick } from "../core/game/Game"; +import { ClientID } from "../core/Schemas"; import { generateID } from "../core/Util"; export class Client { diff --git a/src/server/GameManager.ts b/src/server/GameManager.ts index ec88ec343..d73811532 100644 --- a/src/server/GameManager.ts +++ b/src/server/GameManager.ts @@ -1,9 +1,9 @@ +import { Logger } from "winston"; import { ServerConfig } from "../core/configuration/Config"; +import { Difficulty, GameMapType, GameMode, GameType } from "../core/game/Game"; import { GameConfig, GameID } from "../core/Schemas"; import { Client } from "./Client"; import { GamePhase, GameServer } from "./GameServer"; -import { Difficulty, GameMapType, GameMode, GameType } from "../core/game/Game"; -import { Logger } from "winston"; export class GameManager { private games: Map = new Map(); diff --git a/src/server/GameServer.ts b/src/server/GameServer.ts index 3035e24d5..72e07bf99 100644 --- a/src/server/GameServer.ts +++ b/src/server/GameServer.ts @@ -1,4 +1,4 @@ -import { RateLimiterMemory } from "rate-limiter-flexible"; +import { Logger } from "winston"; import WebSocket from "ws"; import { AllPlayersStats, @@ -17,14 +17,13 @@ import { ServerTurnMessageSchema, Turn, } from "../core/Schemas"; -import { createGameRecord, generateID } from "../core/Util"; +import { createGameRecord } from "../core/Util"; import { ServerConfig } from "../core/configuration/Config"; import { GameType } from "../core/game/Game"; import { archive } from "./Archive"; import { Client } from "./Client"; -import { slog } from "./StructuredLog"; import { gatekeeper } from "./Gatekeeper"; -import { Logger } from "winston"; +import { slog } from "./StructuredLog"; export enum GamePhase { Lobby = "LOBBY", Active = "ACTIVE", diff --git a/src/server/Gatekeeper.ts b/src/server/Gatekeeper.ts index 2a828f25c..1d0223948 100644 --- a/src/server/Gatekeeper.ts +++ b/src/server/Gatekeeper.ts @@ -1,9 +1,9 @@ // src/server/Security.ts -import { Request, Response, NextFunction } from "express"; +import { NextFunction, Request, Response } from "express"; +import fs from "fs"; import http from "http"; import path from "path"; import { fileURLToPath } from "url"; -import fs from "fs"; export enum LimiterType { Get = "get", diff --git a/src/server/Master.ts b/src/server/Master.ts index 9a31ed7c6..8ae6e8f4a 100644 --- a/src/server/Master.ts +++ b/src/server/Master.ts @@ -1,17 +1,17 @@ import cluster from "cluster"; -import http from "http"; import express from "express"; -import { GameMapType, GameType, Difficulty } from "../core/game/Game"; -import { generateID } from "../core/Util"; -import { PseudoRandom } from "../core/PseudoRandom"; -import { getServerConfigFromServer } from "../core/configuration/ConfigLoader"; -import { GameConfig, GameInfo } from "../core/Schemas"; -import path from "path"; import rateLimit from "express-rate-limit"; +import http from "http"; +import path from "path"; import { fileURLToPath } from "url"; +import { getServerConfigFromServer } from "../core/configuration/ConfigLoader"; +import { Difficulty, GameMapType, GameType } from "../core/game/Game"; +import { PseudoRandom } from "../core/PseudoRandom"; +import { GameConfig, GameInfo } from "../core/Schemas"; +import { generateID } from "../core/Util"; import { gatekeeper, LimiterType } from "./Gatekeeper"; -import { setupMetricsServer } from "./MasterMetrics"; import { logger } from "./Logger"; +import { setupMetricsServer } from "./MasterMetrics"; const config = getServerConfigFromServer(); const readyWorkers = new Set(); diff --git a/src/server/Worker.ts b/src/server/Worker.ts index b8ca5ff1d..25d178c8a 100644 --- a/src/server/Worker.ts +++ b/src/server/Worker.ts @@ -1,22 +1,20 @@ -import express, { Request, Response, NextFunction } from "express"; +import express, { NextFunction, Request, Response } from "express"; +import rateLimit from "express-rate-limit"; import http from "http"; -import { WebSocketServer } from "ws"; import path from "path"; import { fileURLToPath } from "url"; -import { GameManager } from "./GameManager"; +import { WebSocket, WebSocketServer } from "ws"; import { GameEnv } from "../core/configuration/Config"; import { getServerConfigFromServer } from "../core/configuration/ConfigLoader"; -import { WebSocket } from "ws"; -import { Client } from "./Client"; -import rateLimit from "express-rate-limit"; -import { RateLimiterMemory } from "rate-limiter-flexible"; -import { GameConfig, GameRecord, LogSeverity } from "../core/Schemas"; -import { slog } from "./StructuredLog"; import { GameType } from "../core/game/Game"; +import { GameConfig, GameRecord, LogSeverity } from "../core/Schemas"; import { archive, readGameRecord } from "./Archive"; +import { Client } from "./Client"; +import { GameManager } from "./GameManager"; import { gatekeeper, LimiterType } from "./Gatekeeper"; -import { metrics } from "./WorkerMetrics"; import { logger } from "./Logger"; +import { slog } from "./StructuredLog"; +import { metrics } from "./WorkerMetrics"; const config = getServerConfigFromServer(); diff --git a/src/server/WorkerMetrics.ts b/src/server/WorkerMetrics.ts index 3ff0b3011..08c4d2e19 100644 --- a/src/server/WorkerMetrics.ts +++ b/src/server/WorkerMetrics.ts @@ -1,6 +1,6 @@ import promClient from "prom-client"; -import { GameManager } from "./GameManager"; import { getServerConfigFromServer } from "../core/configuration/ConfigLoader"; +import { GameManager } from "./GameManager"; const config = getServerConfigFromServer(); const region = config.region(); diff --git a/src/server/db/DB.ts b/src/server/db/DB.ts index 576ab7848..33b73e9dc 100644 --- a/src/server/db/DB.ts +++ b/src/server/db/DB.ts @@ -1,4 +1,4 @@ -import { Pool, PoolConfig } from "pg"; +import { Pool } from "pg"; export interface SessionData { discord_id: string; diff --git a/src/server/db/Index.ts b/src/server/db/Index.ts index 6a47964a6..5b97ac9a8 100644 --- a/src/server/db/Index.ts +++ b/src/server/db/Index.ts @@ -1,5 +1,5 @@ -import { Pool, PoolClient } from "pg"; import dotenv from "dotenv"; +import { Pool, PoolClient } from "pg"; import { schemas } from "./Schema"; dotenv.config(); diff --git a/tests/Attack.test.ts b/tests/Attack.test.ts index f964b8b9d..1fa3d1b41 100644 --- a/tests/Attack.test.ts +++ b/tests/Attack.test.ts @@ -1,3 +1,6 @@ +import { AttackExecution } from "../src/core/execution/AttackExecution"; +import { SpawnExecution } from "../src/core/execution/SpawnExecution"; +import { TransportShipExecution } from "../src/core/execution/TransportShipExecution"; import { Game, Player, @@ -5,13 +8,10 @@ import { PlayerType, UnitType, } from "../src/core/game/Game"; -import { SpawnExecution } from "../src/core/execution/SpawnExecution"; -import { setup } from "./util/Setup"; -import { constructionExecution } from "./util/utils"; -import { TransportShipExecution } from "../src/core/execution/TransportShipExecution"; import { TileRef } from "../src/core/game/GameMap"; -import { AttackExecution } from "../src/core/execution/AttackExecution"; +import { setup } from "./util/Setup"; import { TestConfig } from "./util/TestConfig"; +import { constructionExecution } from "./util/utils"; let game: Game; let attacker: Player; diff --git a/tests/MissileSilo.test.ts b/tests/MissileSilo.test.ts index 1a6c00795..1c7dd44b3 100644 --- a/tests/MissileSilo.test.ts +++ b/tests/MissileSilo.test.ts @@ -1,3 +1,5 @@ +import { NukeExecution } from "../src/core/execution/NukeExecution"; +import { SpawnExecution } from "../src/core/execution/SpawnExecution"; import { Game, Player, @@ -5,11 +7,9 @@ import { PlayerType, UnitType, } from "../src/core/game/Game"; -import { SpawnExecution } from "../src/core/execution/SpawnExecution"; +import { TileRef } from "../src/core/game/GameMap"; import { setup } from "./util/Setup"; import { constructionExecution } from "./util/utils"; -import { NukeExecution } from "../src/core/execution/NukeExecution"; -import { TileRef } from "../src/core/game/GameMap"; let game: Game; let attacker: Player; diff --git a/tests/SAM.test.ts b/tests/SAM.test.ts index 5bbc058e6..83a59ef4f 100644 --- a/tests/SAM.test.ts +++ b/tests/SAM.test.ts @@ -1,3 +1,5 @@ +import { NukeExecution } from "../src/core/execution/NukeExecution"; +import { SpawnExecution } from "../src/core/execution/SpawnExecution"; import { Game, Player, @@ -5,11 +7,9 @@ import { PlayerType, UnitType, } from "../src/core/game/Game"; -import { SpawnExecution } from "../src/core/execution/SpawnExecution"; +import { TileRef } from "../src/core/game/GameMap"; import { setup } from "./util/Setup"; import { constructionExecution } from "./util/utils"; -import { NukeExecution } from "../src/core/execution/NukeExecution"; -import { TileRef } from "../src/core/game/GameMap"; let game: Game; let attacker: Player; diff --git a/tests/TeamAssignment.test.ts b/tests/TeamAssignment.test.ts index 861a17eca..a1f9e2231 100644 --- a/tests/TeamAssignment.test.ts +++ b/tests/TeamAssignment.test.ts @@ -1,4 +1,4 @@ -import { TeamName, PlayerType, PlayerInfo } from "../src/core/game/Game"; +import { PlayerInfo, PlayerType, TeamName } from "../src/core/game/Game"; import { assignTeams } from "../src/core/game/TeamAssignment"; describe("assignTeams", () => { diff --git a/tests/TerritoryCapture.test.ts b/tests/TerritoryCapture.test.ts index 58d16475c..a32aeb6b7 100644 --- a/tests/TerritoryCapture.test.ts +++ b/tests/TerritoryCapture.test.ts @@ -1,5 +1,5 @@ -import { Player, PlayerInfo, PlayerType } from "../src/core/game/Game"; import { SpawnExecution } from "../src/core/execution/SpawnExecution"; +import { Player, PlayerInfo, PlayerType } from "../src/core/game/Game"; import { setup } from "./util/Setup"; describe("Territory management", () => { diff --git a/tests/Warship.test.ts b/tests/Warship.test.ts index b0ce7f98f..e7adcd47e 100644 --- a/tests/Warship.test.ts +++ b/tests/Warship.test.ts @@ -1,3 +1,4 @@ +import { SpawnExecution } from "../src/core/execution/SpawnExecution"; import { Game, Player, @@ -5,7 +6,6 @@ import { PlayerType, UnitType, } from "../src/core/game/Game"; -import { SpawnExecution } from "../src/core/execution/SpawnExecution"; import { setup } from "./util/Setup"; import { constructionExecution } from "./util/utils"; diff --git a/tests/util/Setup.ts b/tests/util/Setup.ts index c6612ea67..6e3c244bb 100644 --- a/tests/util/Setup.ts +++ b/tests/util/Setup.ts @@ -1,13 +1,13 @@ -import { generateMap } from "../../src/scripts/TerrainMapGenerator"; import fs from "fs/promises"; import path from "path"; +import { Difficulty, GameType } from "../../src/core/game/Game"; import { createGame } from "../../src/core/game/GameImpl"; import { genTerrainFromBin } from "../../src/core/game/TerrainMapLoader"; +import { UserSettings } from "../../src/core/game/UserSettings"; +import { GameConfig } from "../../src/core/Schemas"; +import { generateMap } from "../../src/scripts/TerrainMapGenerator"; import { TestConfig } from "./TestConfig"; import { TestServerConfig } from "./TestServerConfig"; -import { UserSettings } from "../../src/core/game/UserSettings"; -import { Difficulty, GameType } from "../../src/core/game/Game"; -import { GameConfig } from "../../src/core/Schemas"; export async function setup(mapName: string, _gameConfig: GameConfig = {}) { // Load the specified map diff --git a/webpack.config.js b/webpack.config.js index 3f5a0fc3a..66de6c77c 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,8 +1,8 @@ +import CopyPlugin from "copy-webpack-plugin"; +import HtmlWebpackPlugin from "html-webpack-plugin"; import path from "path"; import { fileURLToPath } from "url"; -import HtmlWebpackPlugin from "html-webpack-plugin"; import webpack from "webpack"; -import CopyPlugin from "copy-webpack-plugin"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename);