Showing preview only (2,289K chars total). Download the full file or copy to clipboard to get everything.
Repository: darkforest-eth/client
Branch: master
Commit: 009e6438d9a8
Files: 531
Total size: 2.1 MB
Directory structure:
gitextract_e9nah5ci/
├── .babelrc
├── .dockerignore
├── .eslintignore
├── .gitignore
├── .nvmrc
├── .prettierignore
├── LICENSE
├── README.md
├── docs/
│ ├── README.md
│ ├── classes/
│ │ ├── Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md
│ │ ├── Backend_GameLogic_ContractsAPI.ContractsAPI.md
│ │ ├── Backend_GameLogic_GameManager.default.md
│ │ ├── Backend_GameLogic_GameObjects.GameObjects.md
│ │ ├── Backend_GameLogic_GameUIManager.default.md
│ │ ├── Backend_GameLogic_InitialGameStateDownloader.InitialGameStateDownloader.md
│ │ ├── Backend_GameLogic_LayeredMap.LayeredMap.md
│ │ ├── Backend_GameLogic_PluginManager.PluginManager.md
│ │ ├── Backend_GameLogic_PluginManager.ProcessInfo.md
│ │ ├── Backend_GameLogic_TutorialManager.default.md
│ │ ├── Backend_GameLogic_ViewportEntities.ViewportEntities.md
│ │ ├── Backend_Miner_MinerManager.HomePlanetMinerChunkStore.md
│ │ ├── Backend_Miner_MinerManager.default.md
│ │ ├── Backend_Miner_MiningPatterns.SpiralPattern.md
│ │ ├── Backend_Miner_MiningPatterns.SwissCheesePattern.md
│ │ ├── Backend_Miner_MiningPatterns.TowardsCenterPattern.md
│ │ ├── Backend_Miner_MiningPatterns.TowardsCenterPatternV2.md
│ │ ├── Backend_Network_EventLogger.EventLogger.md
│ │ ├── Backend_Storage_PersistentChunkStore.default.md
│ │ ├── Backend_Storage_ReaderDataStore.default.md
│ │ ├── Backend_Utils_SnarkArgsHelper.default.md
│ │ ├── Backend_Utils_Wrapper.Wrapper.md
│ │ ├── Frontend_Components_Btn.DarkForestButton.md
│ │ ├── Frontend_Components_Btn.DarkForestShortcutButton.md
│ │ ├── Frontend_Components_Btn.ShortcutPressedEvent.md
│ │ ├── Frontend_Components_Input.DarkForestCheckbox.md
│ │ ├── Frontend_Components_Input.DarkForestColorInput.md
│ │ ├── Frontend_Components_Input.DarkForestNumberInput.md
│ │ ├── Frontend_Components_Input.DarkForestTextInput.md
│ │ ├── Frontend_Components_Modal.DarkForestModal.md
│ │ ├── Frontend_Components_Modal.PositionChangedEvent.md
│ │ ├── Frontend_Components_Slider.DarkForestSlider.md
│ │ ├── Frontend_Components_Slider.DarkForestSliderHandle.md
│ │ ├── Frontend_Game_ModalManager.default.md
│ │ ├── Frontend_Game_NotificationManager.default.md
│ │ ├── Frontend_Game_Viewport.default.md
│ │ ├── Frontend_Panes_Lobbies_Reducer.InvalidConfigError.md
│ │ ├── Frontend_Renderers_Artifacts_ArtifactRenderer.ArtifactRenderer.md
│ │ ├── Frontend_Renderers_GifRenderer.GifRenderer.md
│ │ ├── Frontend_Utils_UIEmitter.default.md
│ │ ├── Frontend_Views_DFErrorBoundary.DFErrorBoundary.md
│ │ └── Frontend_Views_GenericErrorBoundary.GenericErrorBoundary.md
│ ├── enums/
│ │ ├── Backend_GameLogic_GameManager.GameManagerEvent.md
│ │ ├── Backend_GameLogic_GameUIManager.GameUIManagerEvent.md
│ │ ├── Backend_GameLogic_TutorialManager.TutorialManagerEvent.md
│ │ ├── Backend_GameLogic_TutorialManager.TutorialState.md
│ │ ├── Backend_Miner_MinerManager.MinerManagerEvent.md
│ │ ├── Backend_Miner_MiningPatterns.MiningPatternType.md
│ │ ├── Backend_Network_EventLogger.EventType.md
│ │ ├── Backend_Network_UtilityServerAPI.EmailResponse.md
│ │ ├── Backend_Storage_ReaderDataStore.SinglePlanetDataStoreEvent.md
│ │ ├── Frontend_Components_Email.EmailCTAMode.md
│ │ ├── Frontend_Components_GameLandingPageComponents.InitRenderState.md
│ │ ├── Frontend_Game_NotificationManager.NotificationManagerEvent.md
│ │ ├── Frontend_Game_NotificationManager.NotificationType.md
│ │ ├── Frontend_Pages_LandingPage.LandingPageZIndex.md
│ │ ├── Frontend_Pages_UnsubscribePage.LandingPageZIndex.md
│ │ ├── Frontend_Utils_BrowserChecks.Incompatibility.md
│ │ ├── Frontend_Utils_TerminalTypes.TerminalTextStyle.md
│ │ ├── Frontend_Utils_UIEmitter.UIEmitterEvent.md
│ │ ├── Frontend_Utils_constants.DFZIndex.md
│ │ ├── Frontend_Views_PlanetNotifications.PlanetNotifType.md
│ │ ├── types_darkforest_api_ContractsAPITypes.ContractEvent.md
│ │ ├── types_darkforest_api_ContractsAPITypes.ContractsAPIEvent.md
│ │ ├── types_darkforest_api_ContractsAPITypes.InitArgIdxs.md
│ │ ├── types_darkforest_api_ContractsAPITypes.MoveArgIdxs.md
│ │ ├── types_darkforest_api_ContractsAPITypes.PlanetEventType.md
│ │ ├── types_darkforest_api_ContractsAPITypes.UpgradeArgIdxs.md
│ │ ├── types_darkforest_api_ContractsAPITypes.ZKArgIdx.md
│ │ └── types_global_GlobalTypes.StatIdx.md
│ ├── interfaces/
│ │ ├── Backend_GameLogic_ArrivalUtils.PlanetDiff.md
│ │ ├── Backend_GameLogic_InitialGameStateDownloader.InitialGameState.md
│ │ ├── Backend_Miner_MiningPatterns.MiningPattern.md
│ │ ├── Backend_Network_AccountManager.Account.md
│ │ ├── Backend_Plugins_EmbeddedPluginLoader.EmbeddedPlugin.md
│ │ ├── Backend_Plugins_PluginProcess.PluginProcess.md
│ │ ├── Backend_Plugins_SerializedPlugin.SerializedPlugin.md
│ │ ├── Frontend_Components_TextLoadingBar.LoadingBarHandle.md
│ │ ├── Frontend_Panes_Lobbies_LobbiesUtils.LobbiesPaneProps.md
│ │ ├── Frontend_Panes_Tooltip.TooltipProps.md
│ │ ├── Frontend_Panes_Tooltip.TooltipTriggerProps.md
│ │ ├── Frontend_Utils_EmitterUtils.Diff.md
│ │ ├── Frontend_Views_ModalPane.ModalFrame.md
│ │ ├── Frontend_Views_ModalPane.ModalHandle.md
│ │ ├── Frontend_Views_Share.ShareProps.md
│ │ ├── Frontend_Views_Terminal.TerminalHandle.md
│ │ ├── Frontend_Views_Terminal.TerminalProps.md
│ │ ├── types_darkforest_api_ChunkStoreTypes.ChunkStore.md
│ │ ├── types_darkforest_api_ChunkStoreTypes.PersistedChunk.md
│ │ ├── types_darkforest_api_ChunkStoreTypes.PersistedLocation.md
│ │ ├── types_darkforest_api_ContractsAPITypes.ContractConstants.md
│ │ ├── types_global_GlobalTypes.ClaimCountdownInfo.md
│ │ ├── types_global_GlobalTypes.MinerWorkerMessage.md
│ │ └── types_global_GlobalTypes.RevealCountdownInfo.md
│ └── modules/
│ ├── Backend_GameLogic_ArrivalUtils.md
│ ├── Backend_GameLogic_CaptureZoneGenerator.md
│ ├── Backend_GameLogic_ContractsAPI.md
│ ├── Backend_GameLogic_GameManager.md
│ ├── Backend_GameLogic_GameObjects.md
│ ├── Backend_GameLogic_GameUIManager.md
│ ├── Backend_GameLogic_InitialGameStateDownloader.md
│ ├── Backend_GameLogic_LayeredMap.md
│ ├── Backend_GameLogic_PluginManager.md
│ ├── Backend_GameLogic_TutorialManager.md
│ ├── Backend_GameLogic_ViewportEntities.md
│ ├── Backend_Miner_ChunkUtils.md
│ ├── Backend_Miner_MinerManager.md
│ ├── Backend_Miner_MiningPatterns.md
│ ├── Backend_Miner_permutation.md
│ ├── Backend_Network_AccountManager.md
│ ├── Backend_Network_Blockchain.md
│ ├── Backend_Network_EventLogger.md
│ ├── Backend_Network_LeaderboardApi.md
│ ├── Backend_Network_MessageAPI.md
│ ├── Backend_Network_NetworkHealthApi.md
│ ├── Backend_Network_UtilityServerAPI.md
│ ├── Backend_Plugins_EmbeddedPluginLoader.md
│ ├── Backend_Plugins_PluginProcess.md
│ ├── Backend_Plugins_PluginTemplate.md
│ ├── Backend_Plugins_SerializedPlugin.md
│ ├── Backend_Storage_PersistentChunkStore.md
│ ├── Backend_Storage_ReaderDataStore.md
│ ├── Backend_Utils_Animation.md
│ ├── Backend_Utils_Coordinates.md
│ ├── Backend_Utils_SnarkArgsHelper.md
│ ├── Backend_Utils_Utils.md
│ ├── Backend_Utils_WhitelistSnarkArgsHelper.md
│ ├── Backend_Utils_Wrapper.md
│ ├── Frontend_Components_AncientLabel.md
│ ├── Frontend_Components_ArtifactImage.md
│ ├── Frontend_Components_BiomeAnims.md
│ ├── Frontend_Components_Btn.md
│ ├── Frontend_Components_Button.md
│ ├── Frontend_Components_CapturePlanetButton.md
│ ├── Frontend_Components_CoreUI.md
│ ├── Frontend_Components_Corner.md
│ ├── Frontend_Components_DisplayGasPrices.md
│ ├── Frontend_Components_Email.md
│ ├── Frontend_Components_GameLandingPageComponents.md
│ ├── Frontend_Components_GameWindowComponents.md
│ ├── Frontend_Components_Icons.md
│ ├── Frontend_Components_Input.md
│ ├── Frontend_Components_Labels_ArtifactLabels.md
│ ├── Frontend_Components_Labels_BiomeLabels.md
│ ├── Frontend_Components_Labels_KeywordLabels.md
│ ├── Frontend_Components_Labels_Labels.md
│ ├── Frontend_Components_Labels_LavaLabel.md
│ ├── Frontend_Components_Labels_LegendaryLabel.md
│ ├── Frontend_Components_Labels_MythicLabel.md
│ ├── Frontend_Components_Labels_PlanetLabels.md
│ ├── Frontend_Components_Labels_SpacetimeRipLabel.md
│ ├── Frontend_Components_Labels_WastelandLabel.md
│ ├── Frontend_Components_LoadingSpinner.md
│ ├── Frontend_Components_MaybeShortcutButton.md
│ ├── Frontend_Components_MineArtifactButton.md
│ ├── Frontend_Components_Modal.md
│ ├── Frontend_Components_OpenPaneButtons.md
│ ├── Frontend_Components_PluginModal.md
│ ├── Frontend_Components_ReadMore.md
│ ├── Frontend_Components_RemoteModal.md
│ ├── Frontend_Components_Row.md
│ ├── Frontend_Components_Slider.md
│ ├── Frontend_Components_Text.md
│ ├── Frontend_Components_TextLoadingBar.md
│ ├── Frontend_Components_TextPreview.md
│ ├── Frontend_Components_Theme.md
│ ├── Frontend_Components_TimeUntil.md
│ ├── Frontend_Game_ControllableCanvas.md
│ ├── Frontend_Game_ModalManager.md
│ ├── Frontend_Game_NotificationManager.md
│ ├── Frontend_Game_Popups.md
│ ├── Frontend_Game_Viewport.md
│ ├── Frontend_Pages_App.md
│ ├── Frontend_Pages_CreateLobby.md
│ ├── Frontend_Pages_EventsPage.md
│ ├── Frontend_Pages_GameLandingPage.md
│ ├── Frontend_Pages_GifMaker.md
│ ├── Frontend_Pages_LandingPage.md
│ ├── Frontend_Pages_LoadingPage.md
│ ├── Frontend_Pages_LobbyLandingPage.md
│ ├── Frontend_Pages_NotFoundPage.md
│ ├── Frontend_Pages_ShareArtifact.md
│ ├── Frontend_Pages_SharePlanet.md
│ ├── Frontend_Pages_TestArtifactImages.md
│ ├── Frontend_Pages_TxConfirmPopup.md
│ ├── Frontend_Pages_UnsubscribePage.md
│ ├── Frontend_Pages_ValhallaPage.md
│ ├── Frontend_Panes_ArtifactCard.md
│ ├── Frontend_Panes_ArtifactDetailsPane.md
│ ├── Frontend_Panes_ArtifactHoverPane.md
│ ├── Frontend_Panes_ArtifactsList.md
│ ├── Frontend_Panes_BroadcastPane.md
│ ├── Frontend_Panes_CoordsPane.md
│ ├── Frontend_Panes_DiagnosticsPane.md
│ ├── Frontend_Panes_ExplorePane.md
│ ├── Frontend_Panes_HatPane.md
│ ├── Frontend_Panes_HelpPane.md
│ ├── Frontend_Panes_HoverPane.md
│ ├── Frontend_Panes_HoverPlanetPane.md
│ ├── Frontend_Panes_Lobbies_AdminPermissionsPane.md
│ ├── Frontend_Panes_Lobbies_ArtifactSettingsPane.md
│ ├── Frontend_Panes_Lobbies_CaptureZonesPane.md
│ ├── Frontend_Panes_Lobbies_ConfigurationPane.md
│ ├── Frontend_Panes_Lobbies_GameSettingsPane.md
│ ├── Frontend_Panes_Lobbies_LobbiesUtils.md
│ ├── Frontend_Panes_Lobbies_MinimapPane.md
│ ├── Frontend_Panes_Lobbies_MinimapUtils.md
│ ├── Frontend_Panes_Lobbies_PlanetPane.md
│ ├── Frontend_Panes_Lobbies_PlayerSpawnPane.md
│ ├── Frontend_Panes_Lobbies_Reducer.md
│ ├── Frontend_Panes_Lobbies_SnarkPane.md
│ ├── Frontend_Panes_Lobbies_SpaceJunkPane.md
│ ├── Frontend_Panes_Lobbies_SpaceTypeBiomePane.md
│ ├── Frontend_Panes_Lobbies_WorldSizePane.md
│ ├── Frontend_Panes_ManagePlanetArtifacts_ArtifactActions.md
│ ├── Frontend_Panes_ManagePlanetArtifacts_ManageArtifacts.md
│ ├── Frontend_Panes_ManagePlanetArtifacts_ManagePlanetArtifactsPane.md
│ ├── Frontend_Panes_ManagePlanetArtifacts_SortBy.md
│ ├── Frontend_Panes_ManagePlanetArtifacts_UpgradeStatsView.md
│ ├── Frontend_Panes_OnboardingPane.md
│ ├── Frontend_Panes_PlanetContextPane.md
│ ├── Frontend_Panes_PlanetDexPane.md
│ ├── Frontend_Panes_PlanetInfoPane.md
│ ├── Frontend_Panes_PlayerArtifactsPane.md
│ ├── Frontend_Panes_PluginEditorPane.md
│ ├── Frontend_Panes_PluginLibraryPane.md
│ ├── Frontend_Panes_PrivatePane.md
│ ├── Frontend_Panes_SettingsPane.md
│ ├── Frontend_Panes_Tooltip.md
│ ├── Frontend_Panes_TooltipPanes.md
│ ├── Frontend_Panes_TransactionLogPane.md
│ ├── Frontend_Panes_TutorialPane.md
│ ├── Frontend_Panes_TwitterVerifyPane.md
│ ├── Frontend_Panes_UpgradeDetailsPane.md
│ ├── Frontend_Panes_WikiPane.md
│ ├── Frontend_Panes_ZoomPane.md
│ ├── Frontend_Renderers_Artifacts_ArtifactRenderer.md
│ ├── Frontend_Renderers_GifRenderer.md
│ ├── Frontend_Renderers_LandingPageCanvas.md
│ ├── Frontend_Renderers_PlanetscapeRenderer_PlanetIcons.md
│ ├── Frontend_Styles_Colors.md
│ ├── Frontend_Styles_Mixins.md
│ ├── Frontend_Styles_dfstyles.md
│ ├── Frontend_Utils_AppHooks.md
│ ├── Frontend_Utils_BrowserChecks.md
│ ├── Frontend_Utils_EmitterHooks.md
│ ├── Frontend_Utils_EmitterUtils.md
│ ├── Frontend_Utils_Hooks.md
│ ├── Frontend_Utils_KeyEmitters.md
│ ├── Frontend_Utils_SettingsHooks.md
│ ├── Frontend_Utils_ShortcutConstants.md
│ ├── Frontend_Utils_TerminalTypes.md
│ ├── Frontend_Utils_TimeUtils.md
│ ├── Frontend_Utils_UIEmitter.md
│ ├── Frontend_Utils_constants.md
│ ├── Frontend_Utils_createDefinedContext.md
│ ├── Frontend_Views_ArtifactLink.md
│ ├── Frontend_Views_ArtifactRow.md
│ ├── Frontend_Views_CadetWormhole.md
│ ├── Frontend_Views_DFErrorBoundary.md
│ ├── Frontend_Views_DarkForestTips.md
│ ├── Frontend_Views_EmojiPicker.md
│ ├── Frontend_Views_EmojiPlanetNotification.md
│ ├── Frontend_Views_GameWindowLayout.md
│ ├── Frontend_Views_GenericErrorBoundary.md
│ ├── Frontend_Views_LandingPageRoundArt.md
│ ├── Frontend_Views_Leaderboard.md
│ ├── Frontend_Views_ModalIcon.md
│ ├── Frontend_Views_ModalPane.md
│ ├── Frontend_Views_NetworkHealth.md
│ ├── Frontend_Views_Notifications.md
│ ├── Frontend_Views_Paused.md
│ ├── Frontend_Views_PlanetCard.md
│ ├── Frontend_Views_PlanetCardComponents.md
│ ├── Frontend_Views_PlanetLink.md
│ ├── Frontend_Views_PlanetNotifications.md
│ ├── Frontend_Views_SendResources.md
│ ├── Frontend_Views_Share.md
│ ├── Frontend_Views_SidebarPane.md
│ ├── Frontend_Views_SortableTable.md
│ ├── Frontend_Views_TabbedView.md
│ ├── Frontend_Views_Table.md
│ ├── Frontend_Views_Terminal.md
│ ├── Frontend_Views_TopBar.md
│ ├── Frontend_Views_UpgradePreview.md
│ ├── Frontend_Views_WithdrawSilver.md
│ ├── types_darkforest_api_ChunkStoreTypes.md
│ ├── types_darkforest_api_ContractsAPITypes.md
│ ├── types_darkforest_api_UtilityServerAPITypes.md
│ ├── types_file_loader_FileWorkerTypes.__darkforest_eth_contracts_abis___json_.md
│ ├── types_file_loader_FileWorkerTypes.__darkforest_eth_snarks___wasm_.md
│ ├── types_file_loader_FileWorkerTypes.__darkforest_eth_snarks___zkey_.md
│ ├── types_file_loader_FileWorkerTypes.md
│ └── types_global_GlobalTypes.md
├── embedded_plugins/
│ ├── Admin-Controls.ts
│ ├── Getting-Started.ts
│ ├── Locate-Artifacts.ts
│ ├── Rage-Cage.ts
│ ├── Remote-Explorer.ts
│ └── Renderer-Showcase.ts
├── index.html
├── last_updated.txt
├── netlify.toml
├── package.json
├── plugins/
│ ├── PluginTemplate.ts
│ ├── README.md
│ └── RendererPlugin.md
├── public/
│ ├── manifest.json
│ └── robots.txt
├── src/
│ ├── Backend/
│ │ ├── GameLogic/
│ │ │ ├── ArrivalUtils.ts
│ │ │ ├── CaptureZoneGenerator.ts
│ │ │ ├── ContractsAPI.ts
│ │ │ ├── GameManager.ts
│ │ │ ├── GameObjects.ts
│ │ │ ├── GameUIManager.ts
│ │ │ ├── InitialGameStateDownloader.tsx
│ │ │ ├── LayeredMap.ts
│ │ │ ├── PluginManager.tsx
│ │ │ ├── TutorialManager.ts
│ │ │ └── ViewportEntities.ts
│ │ ├── Miner/
│ │ │ ├── ChunkUtils.ts
│ │ │ ├── MinerManager.ts
│ │ │ ├── MiningPatterns.ts
│ │ │ ├── miner.worker.ts
│ │ │ └── permutation.ts
│ │ ├── Network/
│ │ │ ├── AccountManager.ts
│ │ │ ├── Blockchain.ts
│ │ │ ├── EventLogger.ts
│ │ │ ├── LeaderboardApi.ts
│ │ │ ├── MessageAPI.ts
│ │ │ ├── NetworkHealthApi.ts
│ │ │ └── UtilityServerAPI.ts
│ │ ├── Plugins/
│ │ │ ├── EmbeddedPluginLoader.ts
│ │ │ ├── PluginProcess.ts
│ │ │ ├── PluginTemplate.ts
│ │ │ └── SerializedPlugin.ts
│ │ ├── Storage/
│ │ │ ├── PersistentChunkStore.ts
│ │ │ └── ReaderDataStore.ts
│ │ └── Utils/
│ │ ├── Animation.ts
│ │ ├── Coordinates.ts
│ │ ├── SnarkArgsHelper.ts
│ │ ├── Utils.ts
│ │ ├── WhitelistSnarkArgsHelper.ts
│ │ └── Wrapper.ts
│ ├── Frontend/
│ │ ├── Components/
│ │ │ ├── AncientLabel.tsx
│ │ │ ├── ArtifactImage.tsx
│ │ │ ├── BiomeAnims.tsx
│ │ │ ├── Btn.tsx
│ │ │ ├── Button.tsx
│ │ │ ├── CapturePlanetButton.tsx
│ │ │ ├── CoreUI.tsx
│ │ │ ├── Corner.tsx
│ │ │ ├── DisplayGasPrices.tsx
│ │ │ ├── Email.tsx
│ │ │ ├── GameLandingPageComponents.tsx
│ │ │ ├── GameWindowComponents.tsx
│ │ │ ├── Icons.tsx
│ │ │ ├── Input.tsx
│ │ │ ├── Labels/
│ │ │ │ ├── ArtifactLabels.tsx
│ │ │ │ ├── BiomeLabels.tsx
│ │ │ │ ├── KeywordLabels.tsx
│ │ │ │ ├── Labels.tsx
│ │ │ │ ├── LavaLabel.tsx
│ │ │ │ ├── LegendaryLabel.tsx
│ │ │ │ ├── MythicLabel.tsx
│ │ │ │ ├── PlanetLabels.tsx
│ │ │ │ ├── SpacetimeRipLabel.tsx
│ │ │ │ └── WastelandLabel.tsx
│ │ │ ├── LoadingSpinner.tsx
│ │ │ ├── MaybeShortcutButton.tsx
│ │ │ ├── MineArtifactButton.tsx
│ │ │ ├── Modal.tsx
│ │ │ ├── OpenPaneButtons.tsx
│ │ │ ├── PluginModal.tsx
│ │ │ ├── ReadMore.tsx
│ │ │ ├── RemoteModal.tsx
│ │ │ ├── Row.tsx
│ │ │ ├── Slider.tsx
│ │ │ ├── Text.tsx
│ │ │ ├── TextLoadingBar.tsx
│ │ │ ├── TextPreview.tsx
│ │ │ ├── Theme.tsx
│ │ │ └── TimeUntil.tsx
│ │ ├── EntryPoints/
│ │ │ └── index.tsx
│ │ ├── Game/
│ │ │ ├── ControllableCanvas.tsx
│ │ │ ├── ModalManager.ts
│ │ │ ├── NotificationManager.tsx
│ │ │ ├── Popups.ts
│ │ │ └── Viewport.ts
│ │ ├── Pages/
│ │ │ ├── App.tsx
│ │ │ ├── CreateLobby.tsx
│ │ │ ├── EventsPage.tsx
│ │ │ ├── GameLandingPage.tsx
│ │ │ ├── GifMaker.tsx
│ │ │ ├── LandingPage.tsx
│ │ │ ├── LoadingPage.tsx
│ │ │ ├── LobbyLandingPage.tsx
│ │ │ ├── NotFoundPage.tsx
│ │ │ ├── ShareArtifact.tsx
│ │ │ ├── SharePlanet.tsx
│ │ │ ├── TestArtifactImages.tsx
│ │ │ ├── TxConfirmPopup.tsx
│ │ │ ├── UnsubscribePage.tsx
│ │ │ └── ValhallaPage.tsx
│ │ ├── Panes/
│ │ │ ├── ArtifactCard.tsx
│ │ │ ├── ArtifactDetailsPane.tsx
│ │ │ ├── ArtifactHoverPane.tsx
│ │ │ ├── ArtifactsList.tsx
│ │ │ ├── BroadcastPane.tsx
│ │ │ ├── CoordsPane.tsx
│ │ │ ├── DiagnosticsPane.tsx
│ │ │ ├── ExplorePane.tsx
│ │ │ ├── HatPane.tsx
│ │ │ ├── HelpPane.tsx
│ │ │ ├── HoverPane.tsx
│ │ │ ├── HoverPlanetPane.tsx
│ │ │ ├── Lobbies/
│ │ │ │ ├── AdminPermissionsPane.tsx
│ │ │ │ ├── ArtifactSettingsPane.tsx
│ │ │ │ ├── CaptureZonesPane.tsx
│ │ │ │ ├── ConfigurationPane.tsx
│ │ │ │ ├── GameSettingsPane.tsx
│ │ │ │ ├── LobbiesUtils.tsx
│ │ │ │ ├── MinimapPane.tsx
│ │ │ │ ├── MinimapUtils.ts
│ │ │ │ ├── PlanetPane.tsx
│ │ │ │ ├── PlayerSpawnPane.tsx
│ │ │ │ ├── Reducer.ts
│ │ │ │ ├── SnarkPane.tsx
│ │ │ │ ├── SpaceJunkPane.tsx
│ │ │ │ ├── SpaceTypeBiomePane.tsx
│ │ │ │ ├── WorldSizePane.tsx
│ │ │ │ └── minimap.worker.ts
│ │ │ ├── ManagePlanetArtifacts/
│ │ │ │ ├── ArtifactActions.tsx
│ │ │ │ ├── ManageArtifacts.tsx
│ │ │ │ ├── ManagePlanetArtifactsPane.tsx
│ │ │ │ ├── SortBy.tsx
│ │ │ │ └── UpgradeStatsView.tsx
│ │ │ ├── OnboardingPane.tsx
│ │ │ ├── PlanetContextPane.tsx
│ │ │ ├── PlanetDexPane.tsx
│ │ │ ├── PlanetInfoPane.tsx
│ │ │ ├── PlayerArtifactsPane.tsx
│ │ │ ├── PluginEditorPane.tsx
│ │ │ ├── PluginLibraryPane.tsx
│ │ │ ├── PrivatePane.tsx
│ │ │ ├── SettingsPane.tsx
│ │ │ ├── Tooltip.tsx
│ │ │ ├── TooltipPanes.tsx
│ │ │ ├── TransactionLogPane.tsx
│ │ │ ├── TutorialPane.tsx
│ │ │ ├── TwitterVerifyPane.tsx
│ │ │ ├── UpgradeDetailsPane.tsx
│ │ │ ├── WikiPane.tsx
│ │ │ └── ZoomPane.tsx
│ │ ├── Renderers/
│ │ │ ├── Artifacts/
│ │ │ │ └── ArtifactRenderer.ts
│ │ │ ├── GifRenderer.ts
│ │ │ ├── LandingPageCanvas.tsx
│ │ │ └── PlanetscapeRenderer/
│ │ │ └── PlanetIcons.tsx
│ │ ├── Styles/
│ │ │ ├── Colors.tsx
│ │ │ ├── Mixins.tsx
│ │ │ ├── dfstyles.ts
│ │ │ ├── font/
│ │ │ │ ├── generator_config.txt
│ │ │ │ ├── perfect_dos_vga_437-demo.html
│ │ │ │ ├── specimen_files/
│ │ │ │ │ ├── grid_12-825-55-15.css
│ │ │ │ │ └── specimen_stylesheet.css
│ │ │ │ └── stylesheet.css
│ │ │ ├── icomoon/
│ │ │ │ └── style.css
│ │ │ ├── preflight.css
│ │ │ └── style.css
│ │ ├── Utils/
│ │ │ ├── AppHooks.ts
│ │ │ ├── BrowserChecks.ts
│ │ │ ├── EmitterHooks.ts
│ │ │ ├── EmitterUtils.ts
│ │ │ ├── Hooks.tsx
│ │ │ ├── KeyEmitters.ts
│ │ │ ├── SettingsHooks.tsx
│ │ │ ├── ShortcutConstants.ts
│ │ │ ├── TerminalTypes.ts
│ │ │ ├── TimeUtils.ts
│ │ │ ├── UIEmitter.ts
│ │ │ ├── constants.ts
│ │ │ └── createDefinedContext.ts
│ │ └── Views/
│ │ ├── ArtifactLink.tsx
│ │ ├── ArtifactRow.tsx
│ │ ├── CadetWormhole.tsx
│ │ ├── DFErrorBoundary.tsx
│ │ ├── DarkForestTips.tsx
│ │ ├── EmojiPicker.tsx
│ │ ├── EmojiPlanetNotification.tsx
│ │ ├── GameWindowLayout.tsx
│ │ ├── GenericErrorBoundary.tsx
│ │ ├── LandingPageRoundArt.tsx
│ │ ├── Leaderboard.tsx
│ │ ├── ModalIcon.tsx
│ │ ├── ModalPane.tsx
│ │ ├── NetworkHealth.tsx
│ │ ├── Notifications.tsx
│ │ ├── Paused.tsx
│ │ ├── PlanetCard.tsx
│ │ ├── PlanetCardComponents.tsx
│ │ ├── PlanetLink.tsx
│ │ ├── PlanetNotifications.tsx
│ │ ├── SendResources.tsx
│ │ ├── Share.tsx
│ │ ├── SidebarPane.tsx
│ │ ├── SortableTable.tsx
│ │ ├── TabbedView.tsx
│ │ ├── Table.tsx
│ │ ├── Terminal.tsx
│ │ ├── TopBar.tsx
│ │ ├── UpgradePreview.tsx
│ │ └── WithdrawSilver.tsx
│ └── _types/
│ ├── darkforest/
│ │ └── api/
│ │ ├── ChunkStoreTypes.ts
│ │ ├── ContractsAPITypes.ts
│ │ └── UtilityServerAPITypes.ts
│ ├── file-loader/
│ │ └── FileWorkerTypes.ts
│ └── global/
│ ├── GlobalTypes.ts
│ └── global.d.ts
├── tsconfig.decs.json
├── tsconfig.json
├── tsconfig.ref.json
└── webpack.config.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .babelrc
================================================
{
"presets": [
"@babel/preset-env",
"@babel/preset-react",
[
"@babel/preset-typescript",
{
"optimizeConstEnums": true
}
]
],
"plugins": ["babel-plugin-styled-components"]
}
================================================
FILE: .dockerignore
================================================
node_modules
================================================
FILE: .eslintignore
================================================
public/
declarations/
dist/
plugins/
================================================
FILE: .gitignore
================================================
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
# production
/dist
# misc
.DS_Store
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# firebase
.firebase
# local image files for testing
public/img/artifacts
declarations
tsconfig.ref.tsbuildinfo
# Local Netlify folder
.netlify
# Environment variables
.env
================================================
FILE: .nvmrc
================================================
16
================================================
FILE: .prettierignore
================================================
dist/
declarations/
plugins/dist/
embedded_plugins/dist/
public/
src/styles/font/
src/styles/icomoon/
embedded_plugins/Remote-Explorer.ts
embedded_plugins/Renderer-Showcase.ts
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
================================================
FILE: README.md
================================================
# Dark Forest Client
## Development Guide
### Installing Core Dependencies
- Node (v14.x OR v16.x)
- Yarn (Javascript Package Manager)
#### Installing The Correct Node Version Using NVM
Dark Forest is built and tested using Node.js v14/v16 and might not run properly on other Node.js versions. We recommend using NVM to switch between multiple Node.js version on your machine.
```sh
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
nvm install
```
After the installation is finished, you can run `node --version` to verify that you are running v14 or v16
#### Installing Yarn
Refer to [Yarn's official documentation](https://classic.yarnpkg.com/en/docs/install) for the installation guide.
After you have Yarn installed, run `yarn` to install the dependencies:
### Running the client
To connecting to the mainnet client, simply run `yarn start:prod`. When asked you can use your whitelist key or import your mainnet burner secret and home coordinates.
### Plugin development
You can develop plugins for Dark Forest either inside this game client repository, or externally using something like https://github.com/Bind/my-first-plugin. In either case, you'll want to use the [`df-plugin-dev-server`](https://github.com/projectsophon/df-plugin-dev-server).
You can install it as a global command, using:
```sh
npm install -g @projectsophon/df-plugin-dev-server
```
Once it is installed, you can run it inside this project repository, using:
```sh
df-plugin-dev-server
```
You can then add or modify any plugins inside the [`plugins/`](./plugins) directory and they will be automatically bundled and served as plugins you can import inside the game!
And then load your plugin in the game client, like so:
```js
// Replace PluginTemplate.js with the name of your Plugin
// And `.ts` extensions become `.js`
export { default } from 'http://127.0.0.1:2222/PluginTemplate.js?dev';
```
### Embedded plugins
The Dark Forest client ships with some game "plugins" embedded in the game client. The source code for these plugins exists at [`embedded_plugins/`](./embedded_plugins). You are able to edit them inside the game and the changes will persist. If you change the source code directly, you must delete the plugin in-game and reload your browser to import the new code.
================================================
FILE: docs/README.md
================================================
# client
## Table of contents
### Modules
- [Backend/GameLogic/ArrivalUtils](modules/Backend_GameLogic_ArrivalUtils.md)
- [Backend/GameLogic/CaptureZoneGenerator](modules/Backend_GameLogic_CaptureZoneGenerator.md)
- [Backend/GameLogic/ContractsAPI](modules/Backend_GameLogic_ContractsAPI.md)
- [Backend/GameLogic/GameManager](modules/Backend_GameLogic_GameManager.md)
- [Backend/GameLogic/GameObjects](modules/Backend_GameLogic_GameObjects.md)
- [Backend/GameLogic/GameUIManager](modules/Backend_GameLogic_GameUIManager.md)
- [Backend/GameLogic/InitialGameStateDownloader](modules/Backend_GameLogic_InitialGameStateDownloader.md)
- [Backend/GameLogic/LayeredMap](modules/Backend_GameLogic_LayeredMap.md)
- [Backend/GameLogic/PluginManager](modules/Backend_GameLogic_PluginManager.md)
- [Backend/GameLogic/TutorialManager](modules/Backend_GameLogic_TutorialManager.md)
- [Backend/GameLogic/ViewportEntities](modules/Backend_GameLogic_ViewportEntities.md)
- [Backend/Miner/ChunkUtils](modules/Backend_Miner_ChunkUtils.md)
- [Backend/Miner/MinerManager](modules/Backend_Miner_MinerManager.md)
- [Backend/Miner/MiningPatterns](modules/Backend_Miner_MiningPatterns.md)
- [Backend/Miner/permutation](modules/Backend_Miner_permutation.md)
- [Backend/Network/AccountManager](modules/Backend_Network_AccountManager.md)
- [Backend/Network/Blockchain](modules/Backend_Network_Blockchain.md)
- [Backend/Network/EventLogger](modules/Backend_Network_EventLogger.md)
- [Backend/Network/LeaderboardApi](modules/Backend_Network_LeaderboardApi.md)
- [Backend/Network/MessageAPI](modules/Backend_Network_MessageAPI.md)
- [Backend/Network/NetworkHealthApi](modules/Backend_Network_NetworkHealthApi.md)
- [Backend/Network/UtilityServerAPI](modules/Backend_Network_UtilityServerAPI.md)
- [Backend/Plugins/EmbeddedPluginLoader](modules/Backend_Plugins_EmbeddedPluginLoader.md)
- [Backend/Plugins/PluginProcess](modules/Backend_Plugins_PluginProcess.md)
- [Backend/Plugins/PluginTemplate](modules/Backend_Plugins_PluginTemplate.md)
- [Backend/Plugins/SerializedPlugin](modules/Backend_Plugins_SerializedPlugin.md)
- [Backend/Storage/PersistentChunkStore](modules/Backend_Storage_PersistentChunkStore.md)
- [Backend/Storage/ReaderDataStore](modules/Backend_Storage_ReaderDataStore.md)
- [Backend/Utils/Animation](modules/Backend_Utils_Animation.md)
- [Backend/Utils/Coordinates](modules/Backend_Utils_Coordinates.md)
- [Backend/Utils/SnarkArgsHelper](modules/Backend_Utils_SnarkArgsHelper.md)
- [Backend/Utils/Utils](modules/Backend_Utils_Utils.md)
- [Backend/Utils/WhitelistSnarkArgsHelper](modules/Backend_Utils_WhitelistSnarkArgsHelper.md)
- [Backend/Utils/Wrapper](modules/Backend_Utils_Wrapper.md)
- [Frontend/Components/AncientLabel](modules/Frontend_Components_AncientLabel.md)
- [Frontend/Components/ArtifactImage](modules/Frontend_Components_ArtifactImage.md)
- [Frontend/Components/BiomeAnims](modules/Frontend_Components_BiomeAnims.md)
- [Frontend/Components/Btn](modules/Frontend_Components_Btn.md)
- [Frontend/Components/Button](modules/Frontend_Components_Button.md)
- [Frontend/Components/CapturePlanetButton](modules/Frontend_Components_CapturePlanetButton.md)
- [Frontend/Components/CoreUI](modules/Frontend_Components_CoreUI.md)
- [Frontend/Components/Corner](modules/Frontend_Components_Corner.md)
- [Frontend/Components/DisplayGasPrices](modules/Frontend_Components_DisplayGasPrices.md)
- [Frontend/Components/Email](modules/Frontend_Components_Email.md)
- [Frontend/Components/GameLandingPageComponents](modules/Frontend_Components_GameLandingPageComponents.md)
- [Frontend/Components/GameWindowComponents](modules/Frontend_Components_GameWindowComponents.md)
- [Frontend/Components/Icons](modules/Frontend_Components_Icons.md)
- [Frontend/Components/Input](modules/Frontend_Components_Input.md)
- [Frontend/Components/Labels/ArtifactLabels](modules/Frontend_Components_Labels_ArtifactLabels.md)
- [Frontend/Components/Labels/BiomeLabels](modules/Frontend_Components_Labels_BiomeLabels.md)
- [Frontend/Components/Labels/KeywordLabels](modules/Frontend_Components_Labels_KeywordLabels.md)
- [Frontend/Components/Labels/Labels](modules/Frontend_Components_Labels_Labels.md)
- [Frontend/Components/Labels/LavaLabel](modules/Frontend_Components_Labels_LavaLabel.md)
- [Frontend/Components/Labels/LegendaryLabel](modules/Frontend_Components_Labels_LegendaryLabel.md)
- [Frontend/Components/Labels/MythicLabel](modules/Frontend_Components_Labels_MythicLabel.md)
- [Frontend/Components/Labels/PlanetLabels](modules/Frontend_Components_Labels_PlanetLabels.md)
- [Frontend/Components/Labels/SpacetimeRipLabel](modules/Frontend_Components_Labels_SpacetimeRipLabel.md)
- [Frontend/Components/Labels/WastelandLabel](modules/Frontend_Components_Labels_WastelandLabel.md)
- [Frontend/Components/LoadingSpinner](modules/Frontend_Components_LoadingSpinner.md)
- [Frontend/Components/MaybeShortcutButton](modules/Frontend_Components_MaybeShortcutButton.md)
- [Frontend/Components/MineArtifactButton](modules/Frontend_Components_MineArtifactButton.md)
- [Frontend/Components/Modal](modules/Frontend_Components_Modal.md)
- [Frontend/Components/OpenPaneButtons](modules/Frontend_Components_OpenPaneButtons.md)
- [Frontend/Components/PluginModal](modules/Frontend_Components_PluginModal.md)
- [Frontend/Components/ReadMore](modules/Frontend_Components_ReadMore.md)
- [Frontend/Components/RemoteModal](modules/Frontend_Components_RemoteModal.md)
- [Frontend/Components/Row](modules/Frontend_Components_Row.md)
- [Frontend/Components/Slider](modules/Frontend_Components_Slider.md)
- [Frontend/Components/Text](modules/Frontend_Components_Text.md)
- [Frontend/Components/TextLoadingBar](modules/Frontend_Components_TextLoadingBar.md)
- [Frontend/Components/TextPreview](modules/Frontend_Components_TextPreview.md)
- [Frontend/Components/Theme](modules/Frontend_Components_Theme.md)
- [Frontend/Components/TimeUntil](modules/Frontend_Components_TimeUntil.md)
- [Frontend/Game/ControllableCanvas](modules/Frontend_Game_ControllableCanvas.md)
- [Frontend/Game/ModalManager](modules/Frontend_Game_ModalManager.md)
- [Frontend/Game/NotificationManager](modules/Frontend_Game_NotificationManager.md)
- [Frontend/Game/Popups](modules/Frontend_Game_Popups.md)
- [Frontend/Game/Viewport](modules/Frontend_Game_Viewport.md)
- [Frontend/Pages/App](modules/Frontend_Pages_App.md)
- [Frontend/Pages/CreateLobby](modules/Frontend_Pages_CreateLobby.md)
- [Frontend/Pages/EventsPage](modules/Frontend_Pages_EventsPage.md)
- [Frontend/Pages/GameLandingPage](modules/Frontend_Pages_GameLandingPage.md)
- [Frontend/Pages/GifMaker](modules/Frontend_Pages_GifMaker.md)
- [Frontend/Pages/LandingPage](modules/Frontend_Pages_LandingPage.md)
- [Frontend/Pages/LoadingPage](modules/Frontend_Pages_LoadingPage.md)
- [Frontend/Pages/LobbyLandingPage](modules/Frontend_Pages_LobbyLandingPage.md)
- [Frontend/Pages/NotFoundPage](modules/Frontend_Pages_NotFoundPage.md)
- [Frontend/Pages/ShareArtifact](modules/Frontend_Pages_ShareArtifact.md)
- [Frontend/Pages/SharePlanet](modules/Frontend_Pages_SharePlanet.md)
- [Frontend/Pages/TestArtifactImages](modules/Frontend_Pages_TestArtifactImages.md)
- [Frontend/Pages/TxConfirmPopup](modules/Frontend_Pages_TxConfirmPopup.md)
- [Frontend/Pages/UnsubscribePage](modules/Frontend_Pages_UnsubscribePage.md)
- [Frontend/Pages/ValhallaPage](modules/Frontend_Pages_ValhallaPage.md)
- [Frontend/Panes/ArtifactCard](modules/Frontend_Panes_ArtifactCard.md)
- [Frontend/Panes/ArtifactDetailsPane](modules/Frontend_Panes_ArtifactDetailsPane.md)
- [Frontend/Panes/ArtifactHoverPane](modules/Frontend_Panes_ArtifactHoverPane.md)
- [Frontend/Panes/ArtifactsList](modules/Frontend_Panes_ArtifactsList.md)
- [Frontend/Panes/BroadcastPane](modules/Frontend_Panes_BroadcastPane.md)
- [Frontend/Panes/CoordsPane](modules/Frontend_Panes_CoordsPane.md)
- [Frontend/Panes/DiagnosticsPane](modules/Frontend_Panes_DiagnosticsPane.md)
- [Frontend/Panes/ExplorePane](modules/Frontend_Panes_ExplorePane.md)
- [Frontend/Panes/HatPane](modules/Frontend_Panes_HatPane.md)
- [Frontend/Panes/HelpPane](modules/Frontend_Panes_HelpPane.md)
- [Frontend/Panes/HoverPane](modules/Frontend_Panes_HoverPane.md)
- [Frontend/Panes/HoverPlanetPane](modules/Frontend_Panes_HoverPlanetPane.md)
- [Frontend/Panes/Lobbies/AdminPermissionsPane](modules/Frontend_Panes_Lobbies_AdminPermissionsPane.md)
- [Frontend/Panes/Lobbies/ArtifactSettingsPane](modules/Frontend_Panes_Lobbies_ArtifactSettingsPane.md)
- [Frontend/Panes/Lobbies/CaptureZonesPane](modules/Frontend_Panes_Lobbies_CaptureZonesPane.md)
- [Frontend/Panes/Lobbies/ConfigurationPane](modules/Frontend_Panes_Lobbies_ConfigurationPane.md)
- [Frontend/Panes/Lobbies/GameSettingsPane](modules/Frontend_Panes_Lobbies_GameSettingsPane.md)
- [Frontend/Panes/Lobbies/LobbiesUtils](modules/Frontend_Panes_Lobbies_LobbiesUtils.md)
- [Frontend/Panes/Lobbies/MinimapPane](modules/Frontend_Panes_Lobbies_MinimapPane.md)
- [Frontend/Panes/Lobbies/MinimapUtils](modules/Frontend_Panes_Lobbies_MinimapUtils.md)
- [Frontend/Panes/Lobbies/PlanetPane](modules/Frontend_Panes_Lobbies_PlanetPane.md)
- [Frontend/Panes/Lobbies/PlayerSpawnPane](modules/Frontend_Panes_Lobbies_PlayerSpawnPane.md)
- [Frontend/Panes/Lobbies/Reducer](modules/Frontend_Panes_Lobbies_Reducer.md)
- [Frontend/Panes/Lobbies/SnarkPane](modules/Frontend_Panes_Lobbies_SnarkPane.md)
- [Frontend/Panes/Lobbies/SpaceJunkPane](modules/Frontend_Panes_Lobbies_SpaceJunkPane.md)
- [Frontend/Panes/Lobbies/SpaceTypeBiomePane](modules/Frontend_Panes_Lobbies_SpaceTypeBiomePane.md)
- [Frontend/Panes/Lobbies/WorldSizePane](modules/Frontend_Panes_Lobbies_WorldSizePane.md)
- [Frontend/Panes/ManagePlanetArtifacts/ArtifactActions](modules/Frontend_Panes_ManagePlanetArtifacts_ArtifactActions.md)
- [Frontend/Panes/ManagePlanetArtifacts/ManageArtifacts](modules/Frontend_Panes_ManagePlanetArtifacts_ManageArtifacts.md)
- [Frontend/Panes/ManagePlanetArtifacts/ManagePlanetArtifactsPane](modules/Frontend_Panes_ManagePlanetArtifacts_ManagePlanetArtifactsPane.md)
- [Frontend/Panes/ManagePlanetArtifacts/SortBy](modules/Frontend_Panes_ManagePlanetArtifacts_SortBy.md)
- [Frontend/Panes/ManagePlanetArtifacts/UpgradeStatsView](modules/Frontend_Panes_ManagePlanetArtifacts_UpgradeStatsView.md)
- [Frontend/Panes/OnboardingPane](modules/Frontend_Panes_OnboardingPane.md)
- [Frontend/Panes/PlanetContextPane](modules/Frontend_Panes_PlanetContextPane.md)
- [Frontend/Panes/PlanetDexPane](modules/Frontend_Panes_PlanetDexPane.md)
- [Frontend/Panes/PlanetInfoPane](modules/Frontend_Panes_PlanetInfoPane.md)
- [Frontend/Panes/PlayerArtifactsPane](modules/Frontend_Panes_PlayerArtifactsPane.md)
- [Frontend/Panes/PluginEditorPane](modules/Frontend_Panes_PluginEditorPane.md)
- [Frontend/Panes/PluginLibraryPane](modules/Frontend_Panes_PluginLibraryPane.md)
- [Frontend/Panes/PrivatePane](modules/Frontend_Panes_PrivatePane.md)
- [Frontend/Panes/SettingsPane](modules/Frontend_Panes_SettingsPane.md)
- [Frontend/Panes/Tooltip](modules/Frontend_Panes_Tooltip.md)
- [Frontend/Panes/TooltipPanes](modules/Frontend_Panes_TooltipPanes.md)
- [Frontend/Panes/TransactionLogPane](modules/Frontend_Panes_TransactionLogPane.md)
- [Frontend/Panes/TutorialPane](modules/Frontend_Panes_TutorialPane.md)
- [Frontend/Panes/TwitterVerifyPane](modules/Frontend_Panes_TwitterVerifyPane.md)
- [Frontend/Panes/UpgradeDetailsPane](modules/Frontend_Panes_UpgradeDetailsPane.md)
- [Frontend/Panes/WikiPane](modules/Frontend_Panes_WikiPane.md)
- [Frontend/Panes/ZoomPane](modules/Frontend_Panes_ZoomPane.md)
- [Frontend/Renderers/Artifacts/ArtifactRenderer](modules/Frontend_Renderers_Artifacts_ArtifactRenderer.md)
- [Frontend/Renderers/GifRenderer](modules/Frontend_Renderers_GifRenderer.md)
- [Frontend/Renderers/LandingPageCanvas](modules/Frontend_Renderers_LandingPageCanvas.md)
- [Frontend/Renderers/PlanetscapeRenderer/PlanetIcons](modules/Frontend_Renderers_PlanetscapeRenderer_PlanetIcons.md)
- [Frontend/Styles/Colors](modules/Frontend_Styles_Colors.md)
- [Frontend/Styles/Mixins](modules/Frontend_Styles_Mixins.md)
- [Frontend/Styles/dfstyles](modules/Frontend_Styles_dfstyles.md)
- [Frontend/Utils/AppHooks](modules/Frontend_Utils_AppHooks.md)
- [Frontend/Utils/BrowserChecks](modules/Frontend_Utils_BrowserChecks.md)
- [Frontend/Utils/EmitterHooks](modules/Frontend_Utils_EmitterHooks.md)
- [Frontend/Utils/EmitterUtils](modules/Frontend_Utils_EmitterUtils.md)
- [Frontend/Utils/Hooks](modules/Frontend_Utils_Hooks.md)
- [Frontend/Utils/KeyEmitters](modules/Frontend_Utils_KeyEmitters.md)
- [Frontend/Utils/SettingsHooks](modules/Frontend_Utils_SettingsHooks.md)
- [Frontend/Utils/ShortcutConstants](modules/Frontend_Utils_ShortcutConstants.md)
- [Frontend/Utils/TerminalTypes](modules/Frontend_Utils_TerminalTypes.md)
- [Frontend/Utils/TimeUtils](modules/Frontend_Utils_TimeUtils.md)
- [Frontend/Utils/UIEmitter](modules/Frontend_Utils_UIEmitter.md)
- [Frontend/Utils/constants](modules/Frontend_Utils_constants.md)
- [Frontend/Utils/createDefinedContext](modules/Frontend_Utils_createDefinedContext.md)
- [Frontend/Views/ArtifactLink](modules/Frontend_Views_ArtifactLink.md)
- [Frontend/Views/ArtifactRow](modules/Frontend_Views_ArtifactRow.md)
- [Frontend/Views/CadetWormhole](modules/Frontend_Views_CadetWormhole.md)
- [Frontend/Views/DFErrorBoundary](modules/Frontend_Views_DFErrorBoundary.md)
- [Frontend/Views/DarkForestTips](modules/Frontend_Views_DarkForestTips.md)
- [Frontend/Views/EmojiPicker](modules/Frontend_Views_EmojiPicker.md)
- [Frontend/Views/EmojiPlanetNotification](modules/Frontend_Views_EmojiPlanetNotification.md)
- [Frontend/Views/GameWindowLayout](modules/Frontend_Views_GameWindowLayout.md)
- [Frontend/Views/GenericErrorBoundary](modules/Frontend_Views_GenericErrorBoundary.md)
- [Frontend/Views/LandingPageRoundArt](modules/Frontend_Views_LandingPageRoundArt.md)
- [Frontend/Views/Leaderboard](modules/Frontend_Views_Leaderboard.md)
- [Frontend/Views/ModalIcon](modules/Frontend_Views_ModalIcon.md)
- [Frontend/Views/ModalPane](modules/Frontend_Views_ModalPane.md)
- [Frontend/Views/NetworkHealth](modules/Frontend_Views_NetworkHealth.md)
- [Frontend/Views/Notifications](modules/Frontend_Views_Notifications.md)
- [Frontend/Views/Paused](modules/Frontend_Views_Paused.md)
- [Frontend/Views/PlanetCard](modules/Frontend_Views_PlanetCard.md)
- [Frontend/Views/PlanetCardComponents](modules/Frontend_Views_PlanetCardComponents.md)
- [Frontend/Views/PlanetLink](modules/Frontend_Views_PlanetLink.md)
- [Frontend/Views/PlanetNotifications](modules/Frontend_Views_PlanetNotifications.md)
- [Frontend/Views/SendResources](modules/Frontend_Views_SendResources.md)
- [Frontend/Views/Share](modules/Frontend_Views_Share.md)
- [Frontend/Views/SidebarPane](modules/Frontend_Views_SidebarPane.md)
- [Frontend/Views/SortableTable](modules/Frontend_Views_SortableTable.md)
- [Frontend/Views/TabbedView](modules/Frontend_Views_TabbedView.md)
- [Frontend/Views/Table](modules/Frontend_Views_Table.md)
- [Frontend/Views/Terminal](modules/Frontend_Views_Terminal.md)
- [Frontend/Views/TopBar](modules/Frontend_Views_TopBar.md)
- [Frontend/Views/UpgradePreview](modules/Frontend_Views_UpgradePreview.md)
- [Frontend/Views/WithdrawSilver](modules/Frontend_Views_WithdrawSilver.md)
- [\_types/darkforest/api/ChunkStoreTypes](modules/types_darkforest_api_ChunkStoreTypes.md)
- [\_types/darkforest/api/ContractsAPITypes](modules/types_darkforest_api_ContractsAPITypes.md)
- [\_types/darkforest/api/UtilityServerAPITypes](modules/types_darkforest_api_UtilityServerAPITypes.md)
- [\_types/file-loader/FileWorkerTypes](modules/types_file_loader_FileWorkerTypes.md)
- [\_types/global/GlobalTypes](modules/types_global_GlobalTypes.md)
================================================
FILE: docs/classes/Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md
================================================
# Class: CaptureZoneGenerator
[Backend/GameLogic/CaptureZoneGenerator](../modules/Backend_GameLogic_CaptureZoneGenerator.md).CaptureZoneGenerator
Given a game start block and a zone change block interval, decide when to generate new Capture Zones.
## Table of contents
### Constructors
- [constructor](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#constructor)
### Properties
- [capturablePlanets](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#capturableplanets)
- [changeInterval](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#changeinterval)
- [gameManager](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#gamemanager)
- [generated$](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#generated$)
- [lastChangeBlock](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#lastchangeblock)
- [nextChangeBlock](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#nextchangeblock)
- [zones](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#zones)
### Accessors
- [gameObjects](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#gameobjects)
### Methods
- [\_generate](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#_generate)
- [generate](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#generate)
- [getNextChangeBlock](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#getnextchangeblock)
- [getZones](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#getzones)
- [isInZone](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#isinzone)
- [onNewChunk](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#onnewchunk)
- [setNextGenerationBlock](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#setnextgenerationblock)
- [updateCapturablePlanets](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md#updatecapturableplanets)
## Constructors
### constructor
• **new CaptureZoneGenerator**(`gameManager`, `gameStartBlock`, `changeInterval`)
#### Parameters
| Name | Type |
| :--------------- | :---------------------------------------------------- |
| `gameManager` | [`default`](Backend_GameLogic_GameManager.default.md) |
| `gameStartBlock` | `number` |
| `changeInterval` | `number` |
## Properties
### capturablePlanets
• `Private` **capturablePlanets**: `Set`<`LocationId`\>
---
### changeInterval
• `Private` **changeInterval**: `number`
---
### gameManager
• `Private` **gameManager**: [`default`](Backend_GameLogic_GameManager.default.md)
---
### generated$
• `Readonly` **generated$**: `Monomitter`<[`CaptureZonesGeneratedEvent`](../modules/Backend_GameLogic_CaptureZoneGenerator.md#capturezonesgeneratedevent)\>
---
### lastChangeBlock
• `Private` **lastChangeBlock**: `number`
---
### nextChangeBlock
• `Private` **nextChangeBlock**: `number`
---
### zones
• `Private` **zones**: `Set`<`CaptureZone`\>
## Accessors
### gameObjects
• `Private` `get` **gameObjects**(): [`GameObjects`](Backend_GameLogic_GameObjects.GameObjects.md)
#### Returns
[`GameObjects`](Backend_GameLogic_GameObjects.GameObjects.md)
## Methods
### \_generate
▸ `Private` **\_generate**(`blockNumber`): `Promise`<`Set`<`CaptureZone`\>\>
#### Parameters
| Name | Type |
| :------------ | :------- |
| `blockNumber` | `number` |
#### Returns
`Promise`<`Set`<`CaptureZone`\>\>
---
### generate
▸ **generate**(`blockNumber`): `Promise`<`void`\>
Call when a new block is received to check if generation is needed.
#### Parameters
| Name | Type | Description |
| :------------ | :------- | :-------------------- |
| `blockNumber` | `number` | Current block number. |
#### Returns
`Promise`<`void`\>
---
### getNextChangeBlock
▸ **getNextChangeBlock**(): `number`
The next block that will trigger a Capture Zone generation.
#### Returns
`number`
---
### getZones
▸ **getZones**(): `Set`<`CaptureZone`\>
#### Returns
`Set`<`CaptureZone`\>
---
### isInZone
▸ **isInZone**(`locationId`): `boolean`
Is the given planet inside of a Capture Zone.
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `locationId` | `LocationId` |
#### Returns
`boolean`
---
### onNewChunk
▸ `Private` **onNewChunk**(`chunk`): `void`
#### Parameters
| Name | Type |
| :------ | :------ |
| `chunk` | `Chunk` |
#### Returns
`void`
---
### setNextGenerationBlock
▸ `Private` **setNextGenerationBlock**(`blockNumber`): `void`
#### Parameters
| Name | Type |
| :------------ | :------- |
| `blockNumber` | `number` |
#### Returns
`void`
---
### updateCapturablePlanets
▸ `Private` **updateCapturablePlanets**(): `void`
#### Returns
`void`
================================================
FILE: docs/classes/Backend_GameLogic_ContractsAPI.ContractsAPI.md
================================================
# Class: ContractsAPI
[Backend/GameLogic/ContractsAPI](../modules/Backend_GameLogic_ContractsAPI.md).ContractsAPI
Roughly contains methods that map 1:1 with functions that live in the contract. Responsible for
reading and writing to and from the blockchain.
**`todo`** don't inherit from {@link EventEmitter}. instead use {@link Monomitter}
## Hierarchy
- `EventEmitter`
↳ **`ContractsAPI`**
## Table of contents
### Constructors
- [constructor](Backend_GameLogic_ContractsAPI.ContractsAPI.md#constructor)
### Properties
- [contractAddress](Backend_GameLogic_ContractsAPI.ContractsAPI.md#contractaddress)
- [contractCaller](Backend_GameLogic_ContractsAPI.ContractsAPI.md#contractcaller)
- [ethConnection](Backend_GameLogic_ContractsAPI.ContractsAPI.md#ethconnection)
- [txExecutor](Backend_GameLogic_ContractsAPI.ContractsAPI.md#txexecutor)
- [MIN_BALANCE](Backend_GameLogic_ContractsAPI.ContractsAPI.md#min_balance)
### Accessors
- [contract](Backend_GameLogic_ContractsAPI.ContractsAPI.md#contract)
### Methods
- [afterTransaction](Backend_GameLogic_ContractsAPI.ContractsAPI.md#aftertransaction)
- [beforeQueued](Backend_GameLogic_ContractsAPI.ContractsAPI.md#beforequeued)
- [beforeTransaction](Backend_GameLogic_ContractsAPI.ContractsAPI.md#beforetransaction)
- [bulkGetArtifacts](Backend_GameLogic_ContractsAPI.ContractsAPI.md#bulkgetartifacts)
- [bulkGetArtifactsOnPlanets](Backend_GameLogic_ContractsAPI.ContractsAPI.md#bulkgetartifactsonplanets)
- [bulkGetPlanets](Backend_GameLogic_ContractsAPI.ContractsAPI.md#bulkgetplanets)
- [cancelTransaction](Backend_GameLogic_ContractsAPI.ContractsAPI.md#canceltransaction)
- [destroy](Backend_GameLogic_ContractsAPI.ContractsAPI.md#destroy)
- [emitTransactionEvents](Backend_GameLogic_ContractsAPI.ContractsAPI.md#emittransactionevents)
- [getAddress](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getaddress)
- [getAllArrivals](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getallarrivals)
- [getArrival](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getarrival)
- [getArrivalsForPlanet](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getarrivalsforplanet)
- [getArtifactById](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getartifactbyid)
- [getConstants](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getconstants)
- [getContractAddress](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getcontractaddress)
- [getGasFeeForTransaction](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getgasfeefortransaction)
- [getIsPaused](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getispaused)
- [getPlanetById](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getplanetbyid)
- [getPlayerArtifacts](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getplayerartifacts)
- [getPlayerById](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getplayerbyid)
- [getPlayers](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getplayers)
- [getRevealedCoordsByIdIfExists](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getrevealedcoordsbyidifexists)
- [getRevealedPlanetsCoords](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getrevealedplanetscoords)
- [getTokenMintEndTimestamp](Backend_GameLogic_ContractsAPI.ContractsAPI.md#gettokenmintendtimestamp)
- [getTouchedPlanetIds](Backend_GameLogic_ContractsAPI.ContractsAPI.md#gettouchedplanetids)
- [getWorldRadius](Backend_GameLogic_ContractsAPI.ContractsAPI.md#getworldradius)
- [makeCall](Backend_GameLogic_ContractsAPI.ContractsAPI.md#makecall)
- [prioritizeTransaction](Backend_GameLogic_ContractsAPI.ContractsAPI.md#prioritizetransaction)
- [removeEventListeners](Backend_GameLogic_ContractsAPI.ContractsAPI.md#removeeventlisteners)
- [setDiagnosticUpdater](Backend_GameLogic_ContractsAPI.ContractsAPI.md#setdiagnosticupdater)
- [setupEventListeners](Backend_GameLogic_ContractsAPI.ContractsAPI.md#setupeventlisteners)
- [submitTransaction](Backend_GameLogic_ContractsAPI.ContractsAPI.md#submittransaction)
## Constructors
### constructor
• **new ContractsAPI**(`__namedParameters`)
#### Parameters
| Name | Type |
| :------------------ | :------------------- |
| `__namedParameters` | `ContractsApiConfig` |
#### Overrides
EventEmitter.constructor
## Properties
### contractAddress
• `Private` **contractAddress**: `EthAddress`
The contract address is saved on the object upon construction
---
### contractCaller
• `Private` `Readonly` **contractCaller**: `ContractCaller`
Instrumented {@link ThrottledConcurrentQueue} for blockchain reads.
---
### ethConnection
• `Readonly` **ethConnection**: `EthConnection`
Our connection to the blockchain. In charge of low level networking, and also of the burner
wallet.
---
### txExecutor
• `Readonly` **txExecutor**: `TxExecutor`
Instrumented {@link ThrottledConcurrentQueue} for blockchain writes.
---
### MIN_BALANCE
▪ `Static` `Private` `Readonly` **MIN_BALANCE**: `BigNumber`
Don't allow users to submit txs if balance falls below this amount/
## Accessors
### contract
• `get` **contract**(): `DarkForest`
#### Returns
`DarkForest`
## Methods
### afterTransaction
▸ `Private` **afterTransaction**(`_txRequest`, `txDiagnosticInfo`): `Promise`<`void`\>
#### Parameters
| Name | Type |
| :----------------- | :------------------------- |
| `_txRequest` | `Transaction`<`TxIntent`\> |
| `txDiagnosticInfo` | `unknown` |
#### Returns
`Promise`<`void`\>
---
### beforeQueued
▸ `Private` **beforeQueued**(`id`, `intent`, `overrides?`): `Promise`<`void`\>
This function is called by {@link TxExecutor} before a transaction is queued.
It gives the client an opportunity to prevent a transaction from being queued based
on business logic or user interaction.
Reject the promise to prevent the queued transaction from being queued.
#### Parameters
| Name | Type |
| :----------- | :------------------- |
| `id` | `number` |
| `intent` | `TxIntent` |
| `overrides?` | `TransactionRequest` |
#### Returns
`Promise`<`void`\>
---
### beforeTransaction
▸ `Private` **beforeTransaction**(`tx`): `Promise`<`void`\>
This function is called by {@link TxExecutor} before each transaction. It gives the client an
opportunity to prevent a transaction from going through based on business logic or user
interaction. To prevent the queued transaction from being submitted, throw an Error.
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`Promise`<`void`\>
---
### bulkGetArtifacts
▸ **bulkGetArtifacts**(`artifactIds`, `onProgress?`): `Promise`<`Artifact`[]\>
#### Parameters
| Name | Type |
| :------------ | :---------------------------------------- |
| `artifactIds` | `ArtifactId`[] |
| `onProgress?` | (`fractionCompleted`: `number`) => `void` |
#### Returns
`Promise`<`Artifact`[]\>
---
### bulkGetArtifactsOnPlanets
▸ **bulkGetArtifactsOnPlanets**(`locationIds`, `onProgress?`): `Promise`<`Artifact`[][]\>
#### Parameters
| Name | Type |
| :------------ | :---------------------------------------- |
| `locationIds` | `LocationId`[] |
| `onProgress?` | (`fractionCompleted`: `number`) => `void` |
#### Returns
`Promise`<`Artifact`[][]\>
---
### bulkGetPlanets
▸ **bulkGetPlanets**(`toLoadPlanets`, `onProgressPlanet?`, `onProgressMetadata?`): `Promise`<`Map`<`LocationId`, `Planet`\>\>
#### Parameters
| Name | Type |
| :-------------------- | :---------------------------------------- |
| `toLoadPlanets` | `LocationId`[] |
| `onProgressPlanet?` | (`fractionCompleted`: `number`) => `void` |
| `onProgressMetadata?` | (`fractionCompleted`: `number`) => `void` |
#### Returns
`Promise`<`Map`<`LocationId`, `Planet`\>\>
---
### cancelTransaction
▸ **cancelTransaction**(`tx`): `void`
Remove a transaction from the queue.
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`void`
---
### destroy
▸ **destroy**(): `void`
#### Returns
`void`
---
### emitTransactionEvents
▸ **emitTransactionEvents**(`tx`): `void`
This is a strange interface between the transaction queue system and the rest of the game. The
strange thing about it is that introduces another way by which transactions are pushed into the
game - these {@code ContractsAPIEvent} events.
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`void`
---
### getAddress
▸ **getAddress**(): `undefined` \| `EthAddress`
#### Returns
`undefined` \| `EthAddress`
---
### getAllArrivals
▸ **getAllArrivals**(`planetsToLoad`, `onProgress?`): `Promise`<`QueuedArrival`[]\>
#### Parameters
| Name | Type |
| :-------------- | :---------------------------------------- |
| `planetsToLoad` | `LocationId`[] |
| `onProgress?` | (`fractionCompleted`: `number`) => `void` |
#### Returns
`Promise`<`QueuedArrival`[]\>
---
### getArrival
▸ **getArrival**(`arrivalId`): `Promise`<`undefined` \| `QueuedArrival`\>
#### Parameters
| Name | Type |
| :---------- | :------- |
| `arrivalId` | `number` |
#### Returns
`Promise`<`undefined` \| `QueuedArrival`\>
---
### getArrivalsForPlanet
▸ **getArrivalsForPlanet**(`planetId`): `Promise`<`QueuedArrival`[]\>
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`Promise`<`QueuedArrival`[]\>
---
### getArtifactById
▸ **getArtifactById**(`artifactId`): `Promise`<`undefined` \| `Artifact`\>
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `artifactId` | `ArtifactId` |
#### Returns
`Promise`<`undefined` \| `Artifact`\>
---
### getConstants
▸ **getConstants**(): `Promise`<[`ContractConstants`](../interfaces/types_darkforest_api_ContractsAPITypes.ContractConstants.md)\>
#### Returns
`Promise`<[`ContractConstants`](../interfaces/types_darkforest_api_ContractsAPITypes.ContractConstants.md)\>
---
### getContractAddress
▸ **getContractAddress**(): `EthAddress`
#### Returns
`EthAddress`
---
### getGasFeeForTransaction
▸ `Private` **getGasFeeForTransaction**(`tx`): `string` \| `AutoGasSetting`
We pass this function into {@link TxExecutor} to calculate what gas fee we should use for the
given transaction. The result is either a number, measured in gwei, represented as a string, or
a string representing that we want to use an auto gas setting.
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`string` \| `AutoGasSetting`
---
### getIsPaused
▸ **getIsPaused**(): `Promise`<`boolean`\>
#### Returns
`Promise`<`boolean`\>
---
### getPlanetById
▸ **getPlanetById**(`planetId`): `Promise`<`undefined` \| `Planet`\>
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`Promise`<`undefined` \| `Planet`\>
---
### getPlayerArtifacts
▸ **getPlayerArtifacts**(`playerId?`, `onProgress?`): `Promise`<`Artifact`[]\>
#### Parameters
| Name | Type |
| :------------ | :------------------------------ |
| `playerId?` | `EthAddress` |
| `onProgress?` | (`percent`: `number`) => `void` |
#### Returns
`Promise`<`Artifact`[]\>
---
### getPlayerById
▸ **getPlayerById**(`playerId`): `Promise`<`undefined` \| `Player`\>
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `playerId` | `EthAddress` |
#### Returns
`Promise`<`undefined` \| `Player`\>
---
### getPlayers
▸ **getPlayers**(`onProgress?`): `Promise`<`Map`<`string`, `Player`\>\>
#### Parameters
| Name | Type |
| :------------ | :---------------------------------------- |
| `onProgress?` | (`fractionCompleted`: `number`) => `void` |
#### Returns
`Promise`<`Map`<`string`, `Player`\>\>
---
### getRevealedCoordsByIdIfExists
▸ **getRevealedCoordsByIdIfExists**(`planetId`): `Promise`<`undefined` \| `RevealedCoords`\>
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`Promise`<`undefined` \| `RevealedCoords`\>
---
### getRevealedPlanetsCoords
▸ **getRevealedPlanetsCoords**(`startingAt`, `onProgressIds?`, `onProgressCoords?`): `Promise`<`RevealedCoords`[]\>
#### Parameters
| Name | Type |
| :------------------ | :---------------------------------------- |
| `startingAt` | `number` |
| `onProgressIds?` | (`fractionCompleted`: `number`) => `void` |
| `onProgressCoords?` | (`fractionCompleted`: `number`) => `void` |
#### Returns
`Promise`<`RevealedCoords`[]\>
---
### getTokenMintEndTimestamp
▸ **getTokenMintEndTimestamp**(): `Promise`<`number`\>
#### Returns
`Promise`<`number`\>
---
### getTouchedPlanetIds
▸ **getTouchedPlanetIds**(`startingAt`, `onProgress?`): `Promise`<`LocationId`[]\>
#### Parameters
| Name | Type |
| :------------ | :---------------------------------------- |
| `startingAt` | `number` |
| `onProgress?` | (`fractionCompleted`: `number`) => `void` |
#### Returns
`Promise`<`LocationId`[]\>
---
### getWorldRadius
▸ **getWorldRadius**(): `Promise`<`number`\>
#### Returns
`Promise`<`number`\>
---
### makeCall
▸ `Private` **makeCall**<`T`\>(`contractViewFunction`, `args?`): `Promise`<`T`\>
#### Type parameters
| Name |
| :--- |
| `T` |
#### Parameters
| Name | Type | Default value |
| :--------------------- | :----------------------- | :------------ |
| `contractViewFunction` | `ContractFunction`<`T`\> | `undefined` |
| `args` | `unknown`[] | `[]` |
#### Returns
`Promise`<`T`\>
---
### prioritizeTransaction
▸ **prioritizeTransaction**(`tx`): `void`
Make sure this transaction is the next to be executed.
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`void`
---
### removeEventListeners
▸ **removeEventListeners**(): `void`
#### Returns
`void`
---
### setDiagnosticUpdater
▸ **setDiagnosticUpdater**(`diagnosticUpdater?`): `void`
#### Parameters
| Name | Type |
| :------------------- | :------------------ |
| `diagnosticUpdater?` | `DiagnosticUpdater` |
#### Returns
`void`
---
### setupEventListeners
▸ **setupEventListeners**(): `Promise`<`void`\>
#### Returns
`Promise`<`void`\>
---
### submitTransaction
▸ **submitTransaction**<`T`\>(`txIntent`, `overrides?`): `Promise`<`Transaction`<`T`\>\>
#### Type parameters
| Name | Type |
| :--- | :----------------- |
| `T` | extends `TxIntent` |
#### Parameters
| Name | Type |
| :----------- | :------------------- |
| `txIntent` | `T` |
| `overrides?` | `TransactionRequest` |
#### Returns
`Promise`<`Transaction`<`T`\>\>
================================================
FILE: docs/classes/Backend_GameLogic_GameManager.default.md
================================================
# Class: default
[Backend/GameLogic/GameManager](../modules/Backend_GameLogic_GameManager.md).default
## Hierarchy
- `EventEmitter`
↳ **`default`**
## Table of contents
### Constructors
- [constructor](Backend_GameLogic_GameManager.default.md#constructor)
### Properties
- [account](Backend_GameLogic_GameManager.default.md#account)
- [captureZoneGenerator](Backend_GameLogic_GameManager.default.md#capturezonegenerator)
- [contractConstants](Backend_GameLogic_GameManager.default.md#contractconstants)
- [contractsAPI](Backend_GameLogic_GameManager.default.md#contractsapi)
- [diagnostics](Backend_GameLogic_GameManager.default.md#diagnostics)
- [diagnosticsInterval](Backend_GameLogic_GameManager.default.md#diagnosticsinterval)
- [endTimeSeconds](Backend_GameLogic_GameManager.default.md#endtimeseconds)
- [entityStore](Backend_GameLogic_GameManager.default.md#entitystore)
- [ethConnection](Backend_GameLogic_GameManager.default.md#ethconnection)
- [hashConfig](Backend_GameLogic_GameManager.default.md#hashconfig)
- [hashRate](Backend_GameLogic_GameManager.default.md#hashrate)
- [homeLocation](Backend_GameLogic_GameManager.default.md#homelocation)
- [minerManager](Backend_GameLogic_GameManager.default.md#minermanager)
- [networkHealth$](Backend_GameLogic_GameManager.default.md#networkhealth$)
- [networkHealthInterval](Backend_GameLogic_GameManager.default.md#networkhealthinterval)
- [paused](Backend_GameLogic_GameManager.default.md#paused)
- [paused$](Backend_GameLogic_GameManager.default.md#paused$)
- [persistentChunkStore](Backend_GameLogic_GameManager.default.md#persistentchunkstore)
- [planetHashMimc](Backend_GameLogic_GameManager.default.md#planethashmimc)
- [playerInterval](Backend_GameLogic_GameManager.default.md#playerinterval)
- [players](Backend_GameLogic_GameManager.default.md#players)
- [playersUpdated$](Backend_GameLogic_GameManager.default.md#playersupdated$)
- [safeMode](Backend_GameLogic_GameManager.default.md#safemode)
- [scoreboardInterval](Backend_GameLogic_GameManager.default.md#scoreboardinterval)
- [settingsSubscription](Backend_GameLogic_GameManager.default.md#settingssubscription)
- [snarkHelper](Backend_GameLogic_GameManager.default.md#snarkhelper)
- [terminal](Backend_GameLogic_GameManager.default.md#terminal)
- [useMockHash](Backend_GameLogic_GameManager.default.md#usemockhash)
- [worldRadius](Backend_GameLogic_GameManager.default.md#worldradius)
### Accessors
- [captureZoneGeneratedEmitter](Backend_GameLogic_GameManager.default.md#capturezonegeneratedemitter)
- [planetRarity](Backend_GameLogic_GameManager.default.md#planetrarity)
### Methods
- [activateArtifact](Backend_GameLogic_GameManager.default.md#activateartifact)
- [addAccount](Backend_GameLogic_GameManager.default.md#addaccount)
- [addNewChunk](Backend_GameLogic_GameManager.default.md#addnewchunk)
- [biomebasePerlin](Backend_GameLogic_GameManager.default.md#biomebaseperlin)
- [bulkAddNewChunks](Backend_GameLogic_GameManager.default.md#bulkaddnewchunks)
- [bulkHardRefreshPlanets](Backend_GameLogic_GameManager.default.md#bulkhardrefreshplanets)
- [buyHat](Backend_GameLogic_GameManager.default.md#buyhat)
- [capturePlanet](Backend_GameLogic_GameManager.default.md#captureplanet)
- [checkGameHasEnded](Backend_GameLogic_GameManager.default.md#checkgamehasended)
- [clearEmoji](Backend_GameLogic_GameManager.default.md#clearemoji)
- [deactivateArtifact](Backend_GameLogic_GameManager.default.md#deactivateartifact)
- [depositArtifact](Backend_GameLogic_GameManager.default.md#depositartifact)
- [destroy](Backend_GameLogic_GameManager.default.md#destroy)
- [findArtifact](Backend_GameLogic_GameManager.default.md#findartifact)
- [findRandomHomePlanet](Backend_GameLogic_GameManager.default.md#findrandomhomeplanet)
- [forceTick](Backend_GameLogic_GameManager.default.md#forcetick)
- [getAccount](Backend_GameLogic_GameManager.default.md#getaccount)
- [getActiveArtifact](Backend_GameLogic_GameManager.default.md#getactiveartifact)
- [getAddress](Backend_GameLogic_GameManager.default.md#getaddress)
- [getAllOwnedPlanets](Backend_GameLogic_GameManager.default.md#getallownedplanets)
- [getAllPlanets](Backend_GameLogic_GameManager.default.md#getallplanets)
- [getAllPlayers](Backend_GameLogic_GameManager.default.md#getallplayers)
- [getAllVoyages](Backend_GameLogic_GameManager.default.md#getallvoyages)
- [getArtifactMap](Backend_GameLogic_GameManager.default.md#getartifactmap)
- [getArtifactUpdated$](Backend_GameLogic_GameManager.default.md#getartifactupdated$)
- [getArtifactWithId](Backend_GameLogic_GameManager.default.md#getartifactwithid)
- [getArtifactsWithIds](Backend_GameLogic_GameManager.default.md#getartifactswithids)
- [getCaptureZoneGenerator](Backend_GameLogic_GameManager.default.md#getcapturezonegenerator)
- [getCaptureZones](Backend_GameLogic_GameManager.default.md#getcapturezones)
- [getChunk](Backend_GameLogic_GameManager.default.md#getchunk)
- [getChunkStore](Backend_GameLogic_GameManager.default.md#getchunkstore)
- [getClaimedLocations](Backend_GameLogic_GameManager.default.md#getclaimedlocations)
- [getConstructors](Backend_GameLogic_GameManager.default.md#getconstructors)
- [getContract](Backend_GameLogic_GameManager.default.md#getcontract)
- [getContractAPI](Backend_GameLogic_GameManager.default.md#getcontractapi)
- [getContractAddress](Backend_GameLogic_GameManager.default.md#getcontractaddress)
- [getContractConstants](Backend_GameLogic_GameManager.default.md#getcontractconstants)
- [getCurrentlyExploringChunk](Backend_GameLogic_GameManager.default.md#getcurrentlyexploringchunk)
- [getDefaultSpaceJunkForPlanetLevel](Backend_GameLogic_GameManager.default.md#getdefaultspacejunkforplanetlevel)
- [getDiagnostics](Backend_GameLogic_GameManager.default.md#getdiagnostics)
- [getDist](Backend_GameLogic_GameManager.default.md#getdist)
- [getDistCoords](Backend_GameLogic_GameManager.default.md#getdistcoords)
- [getEndTimeSeconds](Backend_GameLogic_GameManager.default.md#getendtimeseconds)
- [getEnergyArrivingForMove](Backend_GameLogic_GameManager.default.md#getenergyarrivingformove)
- [getEnergyCurveAtPercent](Backend_GameLogic_GameManager.default.md#getenergycurveatpercent)
- [getEnergyNeededForMove](Backend_GameLogic_GameManager.default.md#getenergyneededformove)
- [getEnergyOfPlayer](Backend_GameLogic_GameManager.default.md#getenergyofplayer)
- [getEthConnection](Backend_GameLogic_GameManager.default.md#getethconnection)
- [getExploredChunks](Backend_GameLogic_GameManager.default.md#getexploredchunks)
- [getGameObjects](Backend_GameLogic_GameManager.default.md#getgameobjects)
- [getHashConfig](Backend_GameLogic_GameManager.default.md#gethashconfig)
- [getHashesPerSec](Backend_GameLogic_GameManager.default.md#gethashespersec)
- [getHomeCoords](Backend_GameLogic_GameManager.default.md#gethomecoords)
- [getHomeHash](Backend_GameLogic_GameManager.default.md#gethomehash)
- [getLocationOfPlanet](Backend_GameLogic_GameManager.default.md#getlocationofplanet)
- [getMaxMoveDist](Backend_GameLogic_GameManager.default.md#getmaxmovedist)
- [getMiningPattern](Backend_GameLogic_GameManager.default.md#getminingpattern)
- [getMyArtifactMap](Backend_GameLogic_GameManager.default.md#getmyartifactmap)
- [getMyArtifacts](Backend_GameLogic_GameManager.default.md#getmyartifacts)
- [getMyArtifactsUpdated$](Backend_GameLogic_GameManager.default.md#getmyartifactsupdated$)
- [getMyBalance](Backend_GameLogic_GameManager.default.md#getmybalance)
- [getMyBalance$](Backend_GameLogic_GameManager.default.md#getmybalance$)
- [getMyBalanceEth](Backend_GameLogic_GameManager.default.md#getmybalanceeth)
- [getMyPlanetMap](Backend_GameLogic_GameManager.default.md#getmyplanetmap)
- [getMyPlanets](Backend_GameLogic_GameManager.default.md#getmyplanets)
- [getMyPlanetsUpdated$](Backend_GameLogic_GameManager.default.md#getmyplanetsupdated$)
- [getMyScore](Backend_GameLogic_GameManager.default.md#getmyscore)
- [getNextBroadcastAvailableTimestamp](Backend_GameLogic_GameManager.default.md#getnextbroadcastavailabletimestamp)
- [getNextClaimAvailableTimestamp](Backend_GameLogic_GameManager.default.md#getnextclaimavailabletimestamp)
- [getNextRevealCountdownInfo](Backend_GameLogic_GameManager.default.md#getnextrevealcountdowninfo)
- [getNotificationsManager](Backend_GameLogic_GameManager.default.md#getnotificationsmanager)
- [getPaused](Backend_GameLogic_GameManager.default.md#getpaused)
- [getPaused$](Backend_GameLogic_GameManager.default.md#getpaused$)
- [getPerlinThresholds](Backend_GameLogic_GameManager.default.md#getperlinthresholds)
- [getPlanetLevel](Backend_GameLogic_GameManager.default.md#getplanetlevel)
- [getPlanetMap](Backend_GameLogic_GameManager.default.md#getplanetmap)
- [getPlanetRarity](Backend_GameLogic_GameManager.default.md#getplanetrarity)
- [getPlanetUpdated$](Backend_GameLogic_GameManager.default.md#getplanetupdated$)
- [getPlanetWithCoords](Backend_GameLogic_GameManager.default.md#getplanetwithcoords)
- [getPlanetWithId](Backend_GameLogic_GameManager.default.md#getplanetwithid)
- [getPlanetsInRange](Backend_GameLogic_GameManager.default.md#getplanetsinrange)
- [getPlanetsInWorldRectangle](Backend_GameLogic_GameManager.default.md#getplanetsinworldrectangle)
- [getPlanetsWithIds](Backend_GameLogic_GameManager.default.md#getplanetswithids)
- [getPlayer](Backend_GameLogic_GameManager.default.md#getplayer)
- [getPlayerScore](Backend_GameLogic_GameManager.default.md#getplayerscore)
- [getPlayerSpaceJunk](Backend_GameLogic_GameManager.default.md#getplayerspacejunk)
- [getPlayerSpaceJunkLimit](Backend_GameLogic_GameManager.default.md#getplayerspacejunklimit)
- [getPrivateKey](Backend_GameLogic_GameManager.default.md#getprivatekey)
- [getRangeBuff](Backend_GameLogic_GameManager.default.md#getrangebuff)
- [getRevealedLocations](Backend_GameLogic_GameManager.default.md#getrevealedlocations)
- [getSafeMode](Backend_GameLogic_GameManager.default.md#getsafemode)
- [getSignedTwitter](Backend_GameLogic_GameManager.default.md#getsignedtwitter)
- [getSilverCurveAtPercent](Backend_GameLogic_GameManager.default.md#getsilvercurveatpercent)
- [getSilverOfPlayer](Backend_GameLogic_GameManager.default.md#getsilverofplayer)
- [getSnarkHelper](Backend_GameLogic_GameManager.default.md#getsnarkhelper)
- [getSpaceships](Backend_GameLogic_GameManager.default.md#getspaceships)
- [getSpeedBuff](Backend_GameLogic_GameManager.default.md#getspeedbuff)
- [getStalePlanetWithId](Backend_GameLogic_GameManager.default.md#getstaleplanetwithid)
- [getTemperature](Backend_GameLogic_GameManager.default.md#gettemperature)
- [getTimeForMove](Backend_GameLogic_GameManager.default.md#gettimeformove)
- [getTokenMintEndTimeSeconds](Backend_GameLogic_GameManager.default.md#gettokenmintendtimeseconds)
- [getTwitter](Backend_GameLogic_GameManager.default.md#gettwitter)
- [getUIEventEmitter](Backend_GameLogic_GameManager.default.md#getuieventemitter)
- [getUnconfirmedMoves](Backend_GameLogic_GameManager.default.md#getunconfirmedmoves)
- [getUnconfirmedUpgrades](Backend_GameLogic_GameManager.default.md#getunconfirmedupgrades)
- [getUnconfirmedWormholeActivations](Backend_GameLogic_GameManager.default.md#getunconfirmedwormholeactivations)
- [getUniverseTotalEnergy](Backend_GameLogic_GameManager.default.md#getuniversetotalenergy)
- [getUpgrade](Backend_GameLogic_GameManager.default.md#getupgrade)
- [getWorldRadius](Backend_GameLogic_GameManager.default.md#getworldradius)
- [getWorldSilver](Backend_GameLogic_GameManager.default.md#getworldsilver)
- [getWormholeFactors](Backend_GameLogic_GameManager.default.md#getwormholefactors)
- [getWormholes](Backend_GameLogic_GameManager.default.md#getwormholes)
- [hardRefreshArtifact](Backend_GameLogic_GameManager.default.md#hardrefreshartifact)
- [hardRefreshPlanet](Backend_GameLogic_GameManager.default.md#hardrefreshplanet)
- [hardRefreshPlayer](Backend_GameLogic_GameManager.default.md#hardrefreshplayer)
- [hasJoinedGame](Backend_GameLogic_GameManager.default.md#hasjoinedgame)
- [hasMinedChunk](Backend_GameLogic_GameManager.default.md#hasminedchunk)
- [initMiningManager](Backend_GameLogic_GameManager.default.md#initminingmanager)
- [invadePlanet](Backend_GameLogic_GameManager.default.md#invadeplanet)
- [isAdmin](Backend_GameLogic_GameManager.default.md#isadmin)
- [isMining](Backend_GameLogic_GameManager.default.md#ismining)
- [isPlanetMineable](Backend_GameLogic_GameManager.default.md#isplanetmineable)
- [isRoundOver](Backend_GameLogic_GameManager.default.md#isroundover)
- [joinGame](Backend_GameLogic_GameManager.default.md#joingame)
- [listenForNewBlock](Backend_GameLogic_GameManager.default.md#listenfornewblock)
- [loadContract](Backend_GameLogic_GameManager.default.md#loadcontract)
- [loadPlugins](Backend_GameLogic_GameManager.default.md#loadplugins)
- [locationBigIntFromCoords](Backend_GameLogic_GameManager.default.md#locationbigintfromcoords)
- [locationFromCoords](Backend_GameLogic_GameManager.default.md#locationfromcoords)
- [move](Backend_GameLogic_GameManager.default.md#move)
- [onTxCancelled](Backend_GameLogic_GameManager.default.md#ontxcancelled)
- [onTxConfirmed](Backend_GameLogic_GameManager.default.md#ontxconfirmed)
- [onTxReverted](Backend_GameLogic_GameManager.default.md#ontxreverted)
- [onTxSubmit](Backend_GameLogic_GameManager.default.md#ontxsubmit)
- [prospectPlanet](Backend_GameLogic_GameManager.default.md#prospectplanet)
- [refreshNetworkHealth](Backend_GameLogic_GameManager.default.md#refreshnetworkhealth)
- [refreshScoreboard](Backend_GameLogic_GameManager.default.md#refreshscoreboard)
- [refreshServerPlanetStates](Backend_GameLogic_GameManager.default.md#refreshserverplanetstates)
- [refreshTwitters](Backend_GameLogic_GameManager.default.md#refreshtwitters)
- [revealLocation](Backend_GameLogic_GameManager.default.md#reveallocation)
- [savePlugins](Backend_GameLogic_GameManager.default.md#saveplugins)
- [setMinerCores](Backend_GameLogic_GameManager.default.md#setminercores)
- [setMiningPattern](Backend_GameLogic_GameManager.default.md#setminingpattern)
- [setPlanetEmoji](Backend_GameLogic_GameManager.default.md#setplanetemoji)
- [setPlayerTwitters](Backend_GameLogic_GameManager.default.md#setplayertwitters)
- [setRadius](Backend_GameLogic_GameManager.default.md#setradius)
- [setSafeMode](Backend_GameLogic_GameManager.default.md#setsafemode)
- [setSnarkCacheSize](Backend_GameLogic_GameManager.default.md#setsnarkcachesize)
- [softRefreshPlanet](Backend_GameLogic_GameManager.default.md#softrefreshplanet)
- [spaceTypeFromPerlin](Backend_GameLogic_GameManager.default.md#spacetypefromperlin)
- [spaceTypePerlin](Backend_GameLogic_GameManager.default.md#spacetypeperlin)
- [startExplore](Backend_GameLogic_GameManager.default.md#startexplore)
- [stopExplore](Backend_GameLogic_GameManager.default.md#stopexplore)
- [submitDisconnectTwitter](Backend_GameLogic_GameManager.default.md#submitdisconnecttwitter)
- [submitPlanetMessage](Backend_GameLogic_GameManager.default.md#submitplanetmessage)
- [submitTransaction](Backend_GameLogic_GameManager.default.md#submittransaction)
- [submitVerifyTwitter](Backend_GameLogic_GameManager.default.md#submitverifytwitter)
- [testNotification](Backend_GameLogic_GameManager.default.md#testnotification)
- [timeUntilNextBroadcastAvailable](Backend_GameLogic_GameManager.default.md#timeuntilnextbroadcastavailable)
- [transferOwnership](Backend_GameLogic_GameManager.default.md#transferownership)
- [updateDiagnostics](Backend_GameLogic_GameManager.default.md#updatediagnostics)
- [upgrade](Backend_GameLogic_GameManager.default.md#upgrade)
- [uploadDiagnostics](Backend_GameLogic_GameManager.default.md#uploaddiagnostics)
- [verifyMessage](Backend_GameLogic_GameManager.default.md#verifymessage)
- [waitForPlanet](Backend_GameLogic_GameManager.default.md#waitforplanet)
- [withdrawArtifact](Backend_GameLogic_GameManager.default.md#withdrawartifact)
- [withdrawSilver](Backend_GameLogic_GameManager.default.md#withdrawsilver)
- [create](Backend_GameLogic_GameManager.default.md#create)
## Constructors
### constructor
• `Private` **new default**(`terminal`, `account`, `players`, `touchedPlanets`, `allTouchedPlanetIds`, `revealedCoords`, `claimedCoords`, `worldRadius`, `unprocessedArrivals`, `unprocessedPlanetArrivalIds`, `contractsAPI`, `contractConstants`, `persistentChunkStore`, `snarkHelper`, `homeLocation`, `useMockHash`, `artifacts`, `ethConnection`, `paused`)
#### Parameters
| Name | Type |
| :---------------------------- | :-------------------------------------------------------------------------------------------------------------- |
| `terminal` | `MutableRefObject`<`undefined` \| [`TerminalHandle`](../interfaces/Frontend_Views_Terminal.TerminalHandle.md)\> |
| `account` | `undefined` \| `EthAddress` |
| `players` | `Map`<`string`, `Player`\> |
| `touchedPlanets` | `Map`<`LocationId`, `Planet`\> |
| `allTouchedPlanetIds` | `Set`<`LocationId`\> |
| `revealedCoords` | `Map`<`LocationId`, `RevealedCoords`\> |
| `claimedCoords` | `Map`<`LocationId`, `ClaimedCoords`\> |
| `worldRadius` | `number` |
| `unprocessedArrivals` | `Map`<`VoyageId`, `QueuedArrival`\> |
| `unprocessedPlanetArrivalIds` | `Map`<`LocationId`, `VoyageId`[]\> |
| `contractsAPI` | [`ContractsAPI`](Backend_GameLogic_ContractsAPI.ContractsAPI.md) |
| `contractConstants` | [`ContractConstants`](../interfaces/types_darkforest_api_ContractsAPITypes.ContractConstants.md) |
| `persistentChunkStore` | [`default`](Backend_Storage_PersistentChunkStore.default.md) |
| `snarkHelper` | [`default`](Backend_Utils_SnarkArgsHelper.default.md) |
| `homeLocation` | `undefined` \| `WorldLocation` |
| `useMockHash` | `boolean` |
| `artifacts` | `Map`<`ArtifactId`, `Artifact`\> |
| `ethConnection` | `EthConnection` |
| `paused` | `boolean` |
#### Overrides
EventEmitter.constructor
## Properties
### account
• `Private` `Readonly` **account**: `undefined` \| `EthAddress`
The ethereum address of the player who is currently logged in. We support 'no account',
represented by `undefined` in the case when you want to simply load the game state from the
contract and view it without be able to make any moves.
---
### captureZoneGenerator
• `Private` **captureZoneGenerator**: `undefined` \| [`CaptureZoneGenerator`](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md)
Generates capture zones.
---
### contractConstants
• `Private` `Readonly` **contractConstants**: [`ContractConstants`](../interfaces/types_darkforest_api_ContractsAPITypes.ContractConstants.md)
Game parameters set by the contract. Stuff like perlin keys, which are important for mining the
correct universe, or the time multiplier, which allows us to tune how quickly voyages go.
**`todo`** move this into a separate `GameConfiguration` class.
---
### contractsAPI
• `Private` `Readonly` **contractsAPI**: [`ContractsAPI`](Backend_GameLogic_ContractsAPI.ContractsAPI.md)
Allows us to make contract calls, and execute transactions. Be careful about how you use this
guy. You don't want to cause your client to send an excessive amount of traffic to whatever
node you're connected to.
Interacting with the blockchain isn't free, and we need to be mindful about about the way our
application interacts with the blockchain. The current rate limiting strategy consists of three
points:
- data that needs to be fetched often should be fetched in bulk.
- rate limit smart contract calls (reads from the blockchain), implemented by
{@link ContractCaller} and transactions (writes to the blockchain on behalf of the player),
implemented by {@link TxExecutor} via two separately tuned {@link ThrottledConcurrentQueue}s.
---
### diagnostics
• `Private` **diagnostics**: `Diagnostics`
Diagnostic information about the game.
---
### diagnosticsInterval
• `Private` **diagnosticsInterval**: `Timer`
Handle to an interval that periodically uploads diagnostic information from this client.
---
### endTimeSeconds
• `Private` `Readonly` **endTimeSeconds**: `number` = `1948939200`
**`todo`** change this to the correct timestamp each round.
---
### entityStore
• `Private` `Readonly` **entityStore**: [`GameObjects`](Backend_GameLogic_GameObjects.GameObjects.md)
This variable contains the internal state of objects that live in the game world.
---
### ethConnection
• `Private` `Readonly` **ethConnection**: `EthConnection`
An interface to the blockchain that is a little bit lower-level than [ContractsAPI](Backend_GameLogic_ContractsAPI.ContractsAPI.md). It
allows us to do basic operations such as wait for a transaction to complete, check the player's
address and balance, etc.
---
### hashConfig
• `Private` `Readonly` **hashConfig**: [`HashConfig`](../modules/types_global_GlobalTypes.md#hashconfig)
Each round we change the hash configuration of the game. The hash configuration is download
from the blockchain, and essentially acts as a salt, permuting the universe into a unique
configuration for each new round.
**`todo`** deduplicate this and `useMockHash` somehow.
---
### hashRate
• `Private` **hashRate**: `number`
Continuously updated value representing the total hashes per second that the game is currently
mining the universe at.
**`todo`** keep this in {@link MinerManager}
---
### homeLocation
• `Private` **homeLocation**: `undefined` \| `WorldLocation`
The spawn location of the current player.
**`todo,`** make this smarter somehow. It's really annoying to have to import world coordinates, and
get them wrong or something. Maybe we need to mark a planet, once it's been initialized
contract-side, as the homeworld of the user who initialized on it. That way, when you import a
new account into the game, and you import map data that contains your home planet, the client
would be able to automatically detect which planet is the player's home planet.
**`todo`** move this into a new `PlayerState` class.
---
### minerManager
• `Private` `Optional` **minerManager**: [`default`](Backend_Miner_MinerManager.default.md)
Manages the process of mining new space territory.
---
### networkHealth$
• **networkHealth$**: `Monomitter`<`NetworkHealthSummary`\>
Emits whenever we load the network health summary from the webserver, which is derived from
diagnostics that the client sends up to the webserver as well.
---
### networkHealthInterval
• `Private` **networkHealthInterval**: `Timer`
Handle to an interval that periodically refreshes the network's health from our webserver.
---
### paused
• `Private` **paused**: `boolean`
---
### paused$
• **paused$**: `Monomitter`<`boolean`\>
---
### persistentChunkStore
• `Private` `Readonly` **persistentChunkStore**: [`default`](Backend_Storage_PersistentChunkStore.default.md)
An object that syncs any newly added or deleted chunks to the player's IndexedDB.
**`todo`** it also persists other game data to IndexedDB. This class needs to be renamed `GameSaver`
or something like that.
---
### planetHashMimc
• `Private` `Readonly` **planetHashMimc**: (...`inputs`: `number`[]) => `BigInteger`
#### Type declaration
▸ (...`inputs`): `BigInteger`
The aforementioned hash function. In debug mode where `DISABLE_ZK_CHECKS` is on, we use a
faster hash function. Othewise, in production mode, use MiMC hash (https://byt3bit.github.io/primesym/).
##### Parameters
| Name | Type |
| :---------- | :--------- |
| `...inputs` | `number`[] |
##### Returns
`BigInteger`
---
### playerInterval
• `Private` **playerInterval**: `Timer`
Handle to an interval that periodically refreshes some information about the player from the
blockchain.
**`todo`** move this into a new `PlayerState` class.
---
### players
• `Private` `Readonly` **players**: `Map`<`string`, `Player`\>
Map from ethereum addresses to player objects. This isn't stored in [GameObjects](Backend_GameLogic_GameObjects.GameObjects.md),
because it's not techincally an entity that exists in the world. A player just controls planets
and artifacts that do exist in the world.
**`todo`** move this into a new `Players` class.
---
### playersUpdated$
• `Readonly` **playersUpdated$**: `Monomitter`<`void`\>
Whenever we refresh the players twitter accounts or scores, we publish an event here.
---
### safeMode
• `Private` **safeMode**: `boolean`
Setting to allow players to start game without plugins that were running during the previous
run of the game client. By default, the game launches plugins that were running that were
running when the game was last closed.
---
### scoreboardInterval
• `Private` **scoreboardInterval**: `Timer`
Handle to an interval that periodically refreshes the scoreboard from our webserver.
---
### settingsSubscription
• `Private` **settingsSubscription**: `undefined` \| `Subscription`
Subscription to act on setting changes
---
### snarkHelper
• `Private` `Readonly` **snarkHelper**: [`default`](Backend_Utils_SnarkArgsHelper.default.md)
Responsible for generating snark proofs.
---
### terminal
• `Private` `Readonly` **terminal**: `MutableRefObject`<`undefined` \| [`TerminalHandle`](../interfaces/Frontend_Views_Terminal.TerminalHandle.md)\>
Kind of hacky, but we store a reference to the terminal that the player sees when the initially
load into the game. This is the same exact terminal that appears inside the collapsable right
bar of the game.
---
### useMockHash
• `Private` `Readonly` **useMockHash**: `boolean`
In debug builds of the game, we can connect to a set of contracts deployed to a local
blockchain, which are tweaked to not verify planet hashes, meaning we can use a faster hash
function with similar properties to mimc. This allows us to mine the map faster in debug mode.
**`todo`** move this into a separate `GameConfiguration` class.
---
### worldRadius
• `Private` **worldRadius**: `number`
Sometimes the universe gets bigger... Sometimes it doesn't.
**`todo`** move this into a new `GameConfiguration` class.
## Accessors
### captureZoneGeneratedEmitter
• `get` **captureZoneGeneratedEmitter**(): `undefined` \| `Monomitter`<[`CaptureZonesGeneratedEvent`](../modules/Backend_GameLogic_CaptureZoneGenerator.md#capturezonesgeneratedevent)\>
Emits when new capture zones are generated.
#### Returns
`undefined` \| `Monomitter`<[`CaptureZonesGeneratedEvent`](../modules/Backend_GameLogic_CaptureZoneGenerator.md#capturezonesgeneratedevent)\>
---
### planetRarity
• `get` **planetRarity**(): `number`
#### Returns
`number`
## Methods
### activateArtifact
▸ **activateArtifact**(`locationId`, `artifactId`, `wormholeTo`, `bypassChecks?`): `Promise`<`Transaction`<`UnconfirmedActivateArtifact`\>\>
#### Parameters
| Name | Type | Default value |
| :------------- | :-------------------------- | :------------ |
| `locationId` | `LocationId` | `undefined` |
| `artifactId` | `ArtifactId` | `undefined` |
| `wormholeTo` | `undefined` \| `LocationId` | `undefined` |
| `bypassChecks` | `boolean` | `false` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedActivateArtifact`\>\>
---
### addAccount
▸ **addAccount**(`coords`): `Promise`<`boolean`\>
Initializes a new player's game to start at the given home planet. Must have already
initialized the player on the contract.
#### Parameters
| Name | Type |
| :------- | :------------ |
| `coords` | `WorldCoords` |
#### Returns
`Promise`<`boolean`\>
---
### addNewChunk
▸ **addNewChunk**(`chunk`): [`default`](Backend_GameLogic_GameManager.default.md)
Makes this game manager aware of a new chunk - which includes its location, size,
as well as all of the planets contained in that chunk. Causes the client to load
all of the information about those planets from the blockchain.
#### Parameters
| Name | Type |
| :------ | :------ |
| `chunk` | `Chunk` |
#### Returns
[`default`](Backend_GameLogic_GameManager.default.md)
---
### biomebasePerlin
▸ **biomebasePerlin**(`coords`, `floor`): `number`
Gets the biome perlin valie at the given location in the world.
#### Parameters
| Name | Type |
| :------- | :------------ |
| `coords` | `WorldCoords` |
| `floor` | `boolean` |
#### Returns
`number`
---
### bulkAddNewChunks
▸ **bulkAddNewChunks**(`chunks`): `Promise`<`void`\>
To add multiple chunks at once, use this function rather than `addNewChunk`, in order
to load all of the associated planet data in an efficient manner.
#### Parameters
| Name | Type |
| :------- | :-------- |
| `chunks` | `Chunk`[] |
#### Returns
`Promise`<`void`\>
---
### bulkHardRefreshPlanets
▸ `Private` **bulkHardRefreshPlanets**(`planetIds`): `Promise`<`void`\>
#### Parameters
| Name | Type |
| :---------- | :------------- |
| `planetIds` | `LocationId`[] |
#### Returns
`Promise`<`void`\>
---
### buyHat
▸ **buyHat**(`planetId`, `_bypassChecks?`): `Promise`<`Transaction`<`UnconfirmedBuyHat`\>\>
Submits a transaction to the blockchain to buy a hat for the given planet. You must own the
planet. Warning costs real xdai. Hats are permanently locked to a planet. They are purely
cosmetic and a great way to BM your opponents or just look your best. Just like in the real
world, more money means more hat.
#### Parameters
| Name | Type | Default value |
| :-------------- | :----------- | :------------ |
| `planetId` | `LocationId` | `undefined` |
| `_bypassChecks` | `boolean` | `false` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedBuyHat`\>\>
---
### capturePlanet
▸ **capturePlanet**(`locationId`): `Promise`<`Transaction`<`UnconfirmedCapturePlanet`\>\>
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `locationId` | `LocationId` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedCapturePlanet`\>\>
---
### checkGameHasEnded
▸ `Private` **checkGameHasEnded**(): `boolean`
#### Returns
`boolean`
---
### clearEmoji
▸ **clearEmoji**(`locationId`): `Promise`<`void`\>
If you are the owner of this planet, you can delete the emoji that is hovering above the
planet.
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `locationId` | `LocationId` |
#### Returns
`Promise`<`void`\>
---
### deactivateArtifact
▸ **deactivateArtifact**(`locationId`, `artifactId`, `bypassChecks?`): `Promise`<`Transaction`<`UnconfirmedDeactivateArtifact`\>\>
#### Parameters
| Name | Type | Default value |
| :------------- | :----------- | :------------ |
| `locationId` | `LocationId` | `undefined` |
| `artifactId` | `ArtifactId` | `undefined` |
| `bypassChecks` | `boolean` | `false` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedDeactivateArtifact`\>\>
---
### depositArtifact
▸ **depositArtifact**(`locationId`, `artifactId`): `Promise`<`Transaction`<`UnconfirmedDepositArtifact`\>\>
Submits a transaction to the blockchain to deposit an artifact on a given planet.
You must own the planet and you must own the artifact directly (can't be locked in contract)
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `locationId` | `LocationId` |
| `artifactId` | `ArtifactId` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedDepositArtifact`\>\>
---
### destroy
▸ **destroy**(): `void`
#### Returns
`void`
---
### findArtifact
▸ **findArtifact**(`planetId`, `bypassChecks?`): `Promise`<`Transaction`<`UnconfirmedFindArtifact`\>\>
Calls the contract to find an artifact on the given planet.
#### Parameters
| Name | Type | Default value |
| :------------- | :----------- | :------------ |
| `planetId` | `LocationId` | `undefined` |
| `bypassChecks` | `boolean` | `false` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedFindArtifact`\>\>
---
### findRandomHomePlanet
▸ `Private` **findRandomHomePlanet**(): `Promise`<`LocatablePlanet`\>
#### Returns
`Promise`<`LocatablePlanet`\>
---
### forceTick
▸ **forceTick**(`locationId`): `void`
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `locationId` | `LocationId` |
#### Returns
`void`
---
### getAccount
▸ **getAccount**(): `undefined` \| `EthAddress`
Gets the address of the player logged into this game manager.
#### Returns
`undefined` \| `EthAddress`
---
### getActiveArtifact
▸ **getActiveArtifact**(`planet`): `undefined` \| `Artifact`
Gets the active artifact on this planet, if one exists.
#### Parameters
| Name | Type |
| :------- | :------- |
| `planet` | `Planet` |
#### Returns
`undefined` \| `Artifact`
---
### getAddress
▸ **getAddress**(): `undefined` \| `EthAddress`
#### Returns
`undefined` \| `EthAddress`
---
### getAllOwnedPlanets
▸ **getAllOwnedPlanets**(): `Planet`[]
Gets a list of planets that have an owner.
#### Returns
`Planet`[]
---
### getAllPlanets
▸ **getAllPlanets**(): `Iterable`<`Planet`\>
Gets all planets. This means all planets that are in the contract, and also all
planets that have been mined locally. Does not update planets if they are stale.
NOT PERFORMANT - for scripting only.
#### Returns
`Iterable`<`Planet`\>
---
### getAllPlayers
▸ **getAllPlayers**(): `Player`[]
Gets a list of all the players in the game (not just the ones you've
encounterd)
#### Returns
`Player`[]
---
### getAllVoyages
▸ **getAllVoyages**(): `QueuedArrival`[]
Gets all voyages that have not completed.
#### Returns
`QueuedArrival`[]
---
### getArtifactMap
▸ **getArtifactMap**(): `Map`<`ArtifactId`, `Artifact`\>
Return a reference to the artifact map
#### Returns
`Map`<`ArtifactId`, `Artifact`\>
---
### getArtifactUpdated$
▸ **getArtifactUpdated$**(): `Monomitter`<`ArtifactId`\>
#### Returns
`Monomitter`<`ArtifactId`\>
---
### getArtifactWithId
▸ **getArtifactWithId**(`artifactId?`): `undefined` \| `Artifact`
Gets the artifact with the given id. Null if no artifact with id exists.
#### Parameters
| Name | Type |
| :------------ | :----------- |
| `artifactId?` | `ArtifactId` |
#### Returns
`undefined` \| `Artifact`
---
### getArtifactsWithIds
▸ **getArtifactsWithIds**(`artifactIds?`): (`undefined` \| `Artifact`)[]
Gets the artifacts with the given ids, including ones we know exist but haven't been loaded,
represented by `undefined`.
#### Parameters
| Name | Type | Default value |
| :------------ | :------------- | :------------ |
| `artifactIds` | `ArtifactId`[] | `[]` |
#### Returns
(`undefined` \| `Artifact`)[]
---
### getCaptureZoneGenerator
▸ **getCaptureZoneGenerator**(): `undefined` \| [`CaptureZoneGenerator`](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md)
#### Returns
`undefined` \| [`CaptureZoneGenerator`](Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md)
---
### getCaptureZones
▸ **getCaptureZones**(): `Set`<`CaptureZone`\>
#### Returns
`Set`<`CaptureZone`\>
---
### getChunk
▸ **getChunk**(`chunkFootprint`): `undefined` \| `Chunk`
#### Parameters
| Name | Type |
| :--------------- | :---------- |
| `chunkFootprint` | `Rectangle` |
#### Returns
`undefined` \| `Chunk`
---
### getChunkStore
▸ **getChunkStore**(): [`default`](Backend_Storage_PersistentChunkStore.default.md)
#### Returns
[`default`](Backend_Storage_PersistentChunkStore.default.md)
---
### getClaimedLocations
▸ **getClaimedLocations**(): `Map`<`LocationId`, `ClaimedLocation`\>
Gets a map of all location IDs which have been claimed.
#### Returns
`Map`<`LocationId`, `ClaimedLocation`\>
---
### getConstructors
▸ **getConstructors**(): `Object`
Returns constructors of classes that may be useful for developing plugins.
#### Returns
`Object`
| Name | Type |
| :----------------------- | :---------------------------------------------------------------------------------------- |
| `MinerManager` | typeof [`default`](Backend_Miner_MinerManager.default.md) |
| `SpiralPattern` | typeof [`SpiralPattern`](Backend_Miner_MiningPatterns.SpiralPattern.md) |
| `SwissCheesePattern` | typeof [`SwissCheesePattern`](Backend_Miner_MiningPatterns.SwissCheesePattern.md) |
| `TowardsCenterPattern` | typeof [`TowardsCenterPattern`](Backend_Miner_MiningPatterns.TowardsCenterPattern.md) |
| `TowardsCenterPatternV2` | typeof [`TowardsCenterPatternV2`](Backend_Miner_MiningPatterns.TowardsCenterPatternV2.md) |
---
### getContract
▸ **getContract**(): `DarkForest`
#### Returns
`DarkForest`
---
### getContractAPI
▸ **getContractAPI**(): [`ContractsAPI`](Backend_GameLogic_ContractsAPI.ContractsAPI.md)
Get the thing that handles contract interaction.
#### Returns
[`ContractsAPI`](Backend_GameLogic_ContractsAPI.ContractsAPI.md)
---
### getContractAddress
▸ **getContractAddress**(): `EthAddress`
Gets the address of the `DarkForest` contract, which is the 'backend' of the game.
#### Returns
`EthAddress`
---
### getContractConstants
▸ **getContractConstants**(): [`ContractConstants`](../interfaces/types_darkforest_api_ContractsAPITypes.ContractConstants.md)
#### Returns
[`ContractConstants`](../interfaces/types_darkforest_api_ContractsAPITypes.ContractConstants.md)
---
### getCurrentlyExploringChunk
▸ **getCurrentlyExploringChunk**(): `undefined` \| `Rectangle`
Gets the rectangle bounding the chunk that the miner is currently in the process
of hashing.
#### Returns
`undefined` \| `Rectangle`
---
### getDefaultSpaceJunkForPlanetLevel
▸ **getDefaultSpaceJunkForPlanetLevel**(`level`): `number`
#### Parameters
| Name | Type |
| :------ | :------- |
| `level` | `number` |
#### Returns
`number`
---
### getDiagnostics
▸ **getDiagnostics**(): `Diagnostics`
Gets some diagnostic information about the game. Returns a copy, you can't modify it.
#### Returns
`Diagnostics`
---
### getDist
▸ **getDist**(`fromId`, `toId`): `number`
Gets the distance between two planets. Throws an exception if you don't
know the location of either planet. Takes into account wormholes.
#### Parameters
| Name | Type |
| :------- | :----------- |
| `fromId` | `LocationId` |
| `toId` | `LocationId` |
#### Returns
`number`
---
### getDistCoords
▸ **getDistCoords**(`fromCoords`, `toCoords`): `number`
Gets the distance between two coordinates in space.
#### Parameters
| Name | Type |
| :----------- | :------------ |
| `fromCoords` | `WorldCoords` |
| `toCoords` | `WorldCoords` |
#### Returns
`number`
---
### getEndTimeSeconds
▸ **getEndTimeSeconds**(): `number`
The game ends at a particular time in the future - get this time measured
in seconds from the epoch.
#### Returns
`number`
---
### getEnergyArrivingForMove
▸ **getEnergyArrivingForMove**(`fromId`, `toId`, `distance`, `sentEnergy`, `abandoning`): `number`
Gets the amount of energy that would arrive if a voyage with the given parameters
was to occur. The toPlanet is optional, in case you want an estimate that doesn't include
wormhole speedups.
#### Parameters
| Name | Type |
| :----------- | :-------------------------- |
| `fromId` | `LocationId` |
| `toId` | `undefined` \| `LocationId` |
| `distance` | `undefined` \| `number` |
| `sentEnergy` | `number` |
| `abandoning` | `boolean` |
#### Returns
`number`
---
### getEnergyCurveAtPercent
▸ **getEnergyCurveAtPercent**(`planet`, `percent`): `number`
returns timestamp (seconds) that planet will reach percent% of energycap
time may be in the past
#### Parameters
| Name | Type |
| :-------- | :------- |
| `planet` | `Planet` |
| `percent` | `number` |
#### Returns
`number`
---
### getEnergyNeededForMove
▸ **getEnergyNeededForMove**(`fromId`, `toId`, `arrivingEnergy`, `abandoning?`): `number`
Gets the amount of energy needed in order for a voyage from the given to the given
planet to arrive with your desired amount of energy.
#### Parameters
| Name | Type | Default value |
| :--------------- | :----------- | :------------ |
| `fromId` | `LocationId` | `undefined` |
| `toId` | `LocationId` | `undefined` |
| `arrivingEnergy` | `number` | `undefined` |
| `abandoning` | `boolean` | `false` |
#### Returns
`number`
---
### getEnergyOfPlayer
▸ **getEnergyOfPlayer**(`player`): `number`
Gets the total amount of energy that lives on planets that the given player owns.
#### Parameters
| Name | Type |
| :------- | :----------- |
| `player` | `EthAddress` |
#### Returns
`number`
---
### getEthConnection
▸ **getEthConnection**(): `EthConnection`
#### Returns
`EthConnection`
---
### getExploredChunks
▸ **getExploredChunks**(): `Iterable`<`Chunk`\>
Gets all the map chunks that this client is aware of. Chunks may have come from
mining, or from importing map data.
#### Returns
`Iterable`<`Chunk`\>
---
### getGameObjects
▸ **getGameObjects**(): [`GameObjects`](Backend_GameLogic_GameObjects.GameObjects.md)
Gets a reference to the game's internal representation of the world state. This includes
voyages, planets, artifacts, and active wormholes,
#### Returns
[`GameObjects`](Backend_GameLogic_GameObjects.GameObjects.md)
---
### getHashConfig
▸ **getHashConfig**(): [`HashConfig`](../modules/types_global_GlobalTypes.md#hashconfig)
Gets the HASH CONFIG
#### Returns
[`HashConfig`](../modules/types_global_GlobalTypes.md#hashconfig)
---
### getHashesPerSec
▸ **getHashesPerSec**(): `number`
Gets the amount of hashes per second that the miner manager is calculating.
#### Returns
`number`
---
### getHomeCoords
▸ **getHomeCoords**(): `undefined` \| `WorldCoords`
Gets the location of your home planet.
#### Returns
`undefined` \| `WorldCoords`
---
### getHomeHash
▸ **getHomeHash**(): `undefined` \| `LocationId`
Gets the hash of the location of your home planet.
#### Returns
`undefined` \| `LocationId`
---
### getLocationOfPlanet
▸ **getLocationOfPlanet**(`planetId`): `undefined` \| `WorldLocation`
Gets the location of the given planet. Returns undefined if the planet does not exist, or if
we do not know the location of this planet NOT update the planet if the planet is stale,
which means this function is fast.
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`undefined` \| `WorldLocation`
---
### getMaxMoveDist
▸ **getMaxMoveDist**(`planetId`, `sendingPercent`, `abandoning`): `number`
Gets the maximuim distance that you can send your energy from the given planet,
using the given percentage of that planet's current silver.
#### Parameters
| Name | Type |
| :--------------- | :----------- |
| `planetId` | `LocationId` |
| `sendingPercent` | `number` |
| `abandoning` | `boolean` |
#### Returns
`number`
---
### getMiningPattern
▸ **getMiningPattern**(): `undefined` \| [`MiningPattern`](../interfaces/Backend_Miner_MiningPatterns.MiningPattern.md)
Gets the mining pattern that the miner is currently using.
#### Returns
`undefined` \| [`MiningPattern`](../interfaces/Backend_Miner_MiningPatterns.MiningPattern.md)
---
### getMyArtifactMap
▸ **getMyArtifactMap**(): `Map`<`ArtifactId`, `Artifact`\>
Return a reference to the map of my artifacts
#### Returns
`Map`<`ArtifactId`, `Artifact`\>
---
### getMyArtifacts
▸ **getMyArtifacts**(): `Artifact`[]
gets both deposited artifacts that are on planets i own as well as artifacts i own
#### Returns
`Artifact`[]
---
### getMyArtifactsUpdated$
▸ **getMyArtifactsUpdated$**(): `Monomitter`<`Map`<`ArtifactId`, `Artifact`\>\>
#### Returns
`Monomitter`<`Map`<`ArtifactId`, `Artifact`\>\>
---
### getMyBalance
▸ **getMyBalance**(): `BigNumber`
Gets the balance of the account
#### Returns
`BigNumber`
---
### getMyBalance$
▸ **getMyBalance$**(): `Monomitter`<`BigNumber`\>
Returns the monomitter which publishes events whenever the player's balance changes.
#### Returns
`Monomitter`<`BigNumber`\>
---
### getMyBalanceEth
▸ **getMyBalanceEth**(): `number`
Gets the balance of the account measured in Eth (i.e. in full units of the chain).
#### Returns
`number`
---
### getMyPlanetMap
▸ **getMyPlanetMap**(): `Map`<`LocationId`, `Planet`\>
Return a reference to the map of my planets
#### Returns
`Map`<`LocationId`, `Planet`\>
---
### getMyPlanets
▸ **getMyPlanets**(): `Planet`[]
Gets a list of the planets that the player logged into this `GameManager` owns.
#### Returns
`Planet`[]
---
### getMyPlanetsUpdated$
▸ **getMyPlanetsUpdated$**(): `Monomitter`<`Map`<`LocationId`, `Planet`\>\>
#### Returns
`Monomitter`<`Map`<`LocationId`, `Planet`\>\>
---
### getMyScore
▸ **getMyScore**(): `undefined` \| `number`
Get the score of the currently logged-in account.
#### Returns
`undefined` \| `number`
---
### getNextBroadcastAvailableTimestamp
▸ **getNextBroadcastAvailableTimestamp**(): `number`
Gets the timestamp (ms) of the next time that we can broadcast the coordinates of a planet.
#### Returns
`number`
---
### getNextClaimAvailableTimestamp
▸ **getNextClaimAvailableTimestamp**(): `number`
Gets the timestamp (ms) of the next time that we can claim a planet.
#### Returns
`number`
---
### getNextRevealCountdownInfo
▸ **getNextRevealCountdownInfo**(): [`RevealCountdownInfo`](../interfaces/types_global_GlobalTypes.RevealCountdownInfo.md)
Returns info about the next time you can broadcast coordinates
#### Returns
[`RevealCountdownInfo`](../interfaces/types_global_GlobalTypes.RevealCountdownInfo.md)
---
### getNotificationsManager
▸ **getNotificationsManager**(): [`default`](Frontend_Game_NotificationManager.default.md)
#### Returns
[`default`](Frontend_Game_NotificationManager.default.md)
---
### getPaused
▸ **getPaused**(): `boolean`
#### Returns
`boolean`
---
### getPaused$
▸ **getPaused$**(): `Monomitter`<`boolean`\>
#### Returns
`Monomitter`<`boolean`\>
---
### getPerlinThresholds
▸ **getPerlinThresholds**(): [`number`, `number`, `number`]
The perlin value at each coordinate determines the space type. There are four space
types, which means there are four ranges on the number line that correspond to
each space type. This function returns the boundary values between each of these
four ranges: `PERLIN_THRESHOLD_1`, `PERLIN_THRESHOLD_2`, `PERLIN_THRESHOLD_3`.
#### Returns
[`number`, `number`, `number`]
---
### getPlanetLevel
▸ **getPlanetLevel**(`planetId`): `undefined` \| `PlanetLevel`
Gets the level of the given planet. Returns undefined if the planet does not exist. Does
NOT update the planet if the planet is stale, which means this function is fast.
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`undefined` \| `PlanetLevel`
---
### getPlanetMap
▸ **getPlanetMap**(): `Map`<`LocationId`, `Planet`\>
Return a reference to the planet map
#### Returns
`Map`<`LocationId`, `Planet`\>
---
### getPlanetRarity
▸ **getPlanetRarity**(): `number`
Gets the rarity of planets in the universe
#### Returns
`number`
---
### getPlanetUpdated$
▸ **getPlanetUpdated$**(): `Monomitter`<`LocationId`\>
#### Returns
`Monomitter`<`LocationId`\>
---
### getPlanetWithCoords
▸ **getPlanetWithCoords**(`coords`): `undefined` \| `LocatablePlanet`
Gets the planet that is located at the given coordinates. Returns undefined if not a valid
location or if no planet exists at location. If the planet needs to be updated (because
some time has passed since we last updated the planet), then updates that planet first.
#### Parameters
| Name | Type |
| :------- | :------------ |
| `coords` | `WorldCoords` |
#### Returns
`undefined` \| `LocatablePlanet`
---
### getPlanetWithId
▸ **getPlanetWithId**(`planetId`): `undefined` \| `Planet`
Gets the planet with the given hash. Returns undefined if the planet is neither in the contract
nor has been discovered locally. If the planet needs to be updated (because some time has
passed since we last updated the planet), then updates that planet first.
#### Parameters
| Name | Type |
| :--------- | :-------------------------- |
| `planetId` | `undefined` \| `LocationId` |
#### Returns
`undefined` \| `Planet`
---
### getPlanetsInRange
▸ **getPlanetsInRange**(`planetId`, `sendingPercent`, `abandoning`): `Planet`[]
Gets all the planets that you can reach with at least 1 energy from
the given planet. Does not take into account wormholes.
#### Parameters
| Name | Type |
| :--------------- | :----------- |
| `planetId` | `LocationId` |
| `sendingPercent` | `number` |
| `abandoning` | `boolean` |
#### Returns
`Planet`[]
---
### getPlanetsInWorldRectangle
▸ **getPlanetsInWorldRectangle**(`worldX`, `worldY`, `worldWidth`, `worldHeight`, `levels`, `planetLevelToRadii`, `updateIfStale?`): `LocatablePlanet`[]
Gets the ids of all the planets that are both within the given bounding box (defined by its bottom
left coordinate, width, and height) in the world and of a level that was passed in via the
`planetLevels` parameter.
#### Parameters
| Name | Type | Default value |
| :------------------- | :------------------------ | :------------ |
| `worldX` | `number` | `undefined` |
| `worldY` | `number` | `undefined` |
| `worldWidth` | `number` | `undefined` |
| `worldHeight` | `number` | `undefined` |
| `levels` | `number`[] | `undefined` |
| `planetLevelToRadii` | `Map`<`number`, `Radii`\> | `undefined` |
| `updateIfStale` | `boolean` | `true` |
#### Returns
`LocatablePlanet`[]
---
### getPlanetsWithIds
▸ **getPlanetsWithIds**(`planetId`): `Planet`[]
Gets a list of planets in the client's memory with the given ids. If a planet with the given id
doesn't exist, no entry for that planet will be returned in the result.
#### Parameters
| Name | Type |
| :--------- | :------------- |
| `planetId` | `LocationId`[] |
#### Returns
`Planet`[]
---
### getPlayer
▸ **getPlayer**(`address?`): `undefined` \| `Player`
Gets either the given player, or if no address was provided, gets the player that is logged
this client.
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `address?` | `EthAddress` |
#### Returns
`undefined` \| `Player`
---
### getPlayerScore
▸ **getPlayerScore**(`addr`): `undefined` \| `number`
#### Parameters
| Name | Type |
| :----- | :----------- |
| `addr` | `EthAddress` |
#### Returns
`undefined` \| `number`
---
### getPlayerSpaceJunk
▸ **getPlayerSpaceJunk**(`addr`): `undefined` \| `number`
#### Parameters
| Name | Type |
| :----- | :----------- |
| `addr` | `EthAddress` |
#### Returns
`undefined` \| `number`
---
### getPlayerSpaceJunkLimit
▸ **getPlayerSpaceJunkLimit**(`addr`): `undefined` \| `number`
#### Parameters
| Name | Type |
| :----- | :----------- |
| `addr` | `EthAddress` |
#### Returns
`undefined` \| `number`
---
### getPrivateKey
▸ **getPrivateKey**(): `undefined` \| `string`
Gets the private key of the burner wallet used by this account.
#### Returns
`undefined` \| `string`
---
### getRangeBuff
▸ **getRangeBuff**(`abandoning`): `number`
#### Parameters
| Name | Type |
| :----------- | :-------- |
| `abandoning` | `boolean` |
#### Returns
`number`
---
### getRevealedLocations
▸ **getRevealedLocations**(): `Map`<`LocationId`, `RevealedLocation`\>
Gets a map of all location IDs whose coords have been publically revealed
#### Returns
`Map`<`LocationId`, `RevealedLocation`\>
---
### getSafeMode
▸ **getSafeMode**(): `boolean`
#### Returns
`boolean`
---
### getSignedTwitter
▸ **getSignedTwitter**(`twitter`): `Promise`<`string`\>
Signs the given twitter handle with the private key of the current user. Used to
verify that the person who owns the Dark Forest account was the one that attempted
to link a twitter to their account.
#### Parameters
| Name | Type |
| :-------- | :------- |
| `twitter` | `string` |
#### Returns
`Promise`<`string`\>
---
### getSilverCurveAtPercent
▸ **getSilverCurveAtPercent**(`planet`, `percent`): `undefined` \| `number`
returns timestamp (seconds) that planet will reach percent% of silcap if
doesn't produce silver, returns undefined if already over percent% of silcap,
#### Parameters
| Name | Type |
| :-------- | :------- |
| `planet` | `Planet` |
| `percent` | `number` |
#### Returns
`undefined` \| `number`
---
### getSilverOfPlayer
▸ **getSilverOfPlayer**(`player`): `number`
Gets the total amount of silver that lives on planets that the given player owns.
#### Parameters
| Name | Type |
| :------- | :----------- |
| `player` | `EthAddress` |
#### Returns
`number`
---
### getSnarkHelper
▸ **getSnarkHelper**(): [`default`](Backend_Utils_SnarkArgsHelper.default.md)
#### Returns
[`default`](Backend_Utils_SnarkArgsHelper.default.md)
---
### getSpaceships
▸ `Private` **getSpaceships**(): `Promise`<`void`\>
#### Returns
`Promise`<`void`\>
---
### getSpeedBuff
▸ **getSpeedBuff**(`abandoning`): `number`
Right now the only buffs supported in this way are
speed/range buffs from Abandoning a planet.
The abandoning argument is used when interacting with
this function programmatically.
#### Parameters
| Name | Type |
| :----------- | :-------- |
| `abandoning` | `boolean` |
#### Returns
`number`
---
### getStalePlanetWithId
▸ **getStalePlanetWithId**(`planetId`): `undefined` \| `Planet`
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`undefined` \| `Planet`
---
### getTemperature
▸ **getTemperature**(`coords`): `number`
Gets the temperature of a given location.
#### Parameters
| Name | Type |
| :------- | :------------ |
| `coords` | `WorldCoords` |
#### Returns
`number`
---
### getTimeForMove
▸ **getTimeForMove**(`fromId`, `toId`, `abandoning?`): `number`
Gets the amount of time, in seconds that a voyage between from the first to the
second planet would take.
#### Parameters
| Name | Type | Default value |
| :----------- | :----------- | :------------ |
| `fromId` | `LocationId` | `undefined` |
| `toId` | `LocationId` | `undefined` |
| `abandoning` | `boolean` | `false` |
#### Returns
`number`
---
### getTokenMintEndTimeSeconds
▸ **getTokenMintEndTimeSeconds**(): `number`
Dark Forest tokens can only be minted up to a certain time - get this time measured in seconds from epoch.
#### Returns
`number`
---
### getTwitter
▸ **getTwitter**(`address`): `undefined` \| `string`
Gets the twitter handle of the given ethereum account which is associated
with Dark Forest.
#### Parameters
| Name | Type |
| :-------- | :-------------------------- |
| `address` | `undefined` \| `EthAddress` |
#### Returns
`undefined` \| `string`
---
### getUIEventEmitter
▸ **getUIEventEmitter**(): [`default`](Frontend_Utils_UIEmitter.default.md)
Helpful for listening to user input events.
#### Returns
[`default`](Frontend_Utils_UIEmitter.default.md)
---
### getUnconfirmedMoves
▸ **getUnconfirmedMoves**(): `Transaction`<`UnconfirmedMove`\>[]
Gets all moves that this client has queued to be uploaded to the contract, but
have not been successfully confirmed yet.
#### Returns
`Transaction`<`UnconfirmedMove`\>[]
---
### getUnconfirmedUpgrades
▸ **getUnconfirmedUpgrades**(): `Transaction`<`UnconfirmedUpgrade`\>[]
Gets all upgrades that this client has queued to be uploaded to the contract, but
have not been successfully confirmed yet.
#### Returns
`Transaction`<`UnconfirmedUpgrade`\>[]
---
### getUnconfirmedWormholeActivations
▸ **getUnconfirmedWormholeActivations**(): `Transaction`<`UnconfirmedActivateArtifact`\>[]
#### Returns
`Transaction`<`UnconfirmedActivateArtifact`\>[]
---
### getUniverseTotalEnergy
▸ **getUniverseTotalEnergy**(): `number`
Gets the total amount of energy that lives on a planet that somebody owns.
#### Returns
`number`
---
### getUpgrade
▸ **getUpgrade**(`branch`, `level`): `Upgrade`
Returns the upgrade that would be applied to a planet given a particular
upgrade branch (defense, range, speed) and level of upgrade.
#### Parameters
| Name | Type |
| :------- | :------- |
| `branch` | `number` |
| `level` | `number` |
#### Returns
`Upgrade`
---
### getWorldRadius
▸ **getWorldRadius**(): `number`
Gets the radius of the playable area of the universe.
#### Returns
`number`
---
### getWorldSilver
▸ **getWorldSilver**(): `number`
Gets the total amount of silver that lives on a planet that somebody owns.
#### Returns
`number`
---
### getWormholeFactors
▸ **getWormholeFactors**(`fromPlanet`, `toPlanet`): `undefined` \| { `distanceFactor`: `number` ; `speedFactor`: `number` }
If there's an active artifact on either of these planets which happens to be a wormhole which
is active and targetting the other planet, return the wormhole boost which is greater. Values
represent a multiplier.
#### Parameters
| Name | Type |
| :----------- | :------- |
| `fromPlanet` | `Planet` |
| `toPlanet` | `Planet` |
#### Returns
`undefined` \| { `distanceFactor`: `number` ; `speedFactor`: `number` }
---
### getWormholes
▸ **getWormholes**(): `Iterable`<`Wormhole`\>
#### Returns
`Iterable`<`Wormhole`\>
---
### hardRefreshArtifact
▸ **hardRefreshArtifact**(`artifactId`): `Promise`<`void`\>
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `artifactId` | `ArtifactId` |
#### Returns
`Promise`<`void`\>
---
### hardRefreshPlanet
▸ **hardRefreshPlanet**(`planetId`): `Promise`<`void`\>
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`Promise`<`void`\>
---
### hardRefreshPlayer
▸ `Private` **hardRefreshPlayer**(`address?`): `Promise`<`void`\>
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `address?` | `EthAddress` |
#### Returns
`Promise`<`void`\>
---
### hasJoinedGame
▸ **hasJoinedGame**(): `boolean`
Whether or not this client has successfully found and landed on a home planet.
#### Returns
`boolean`
---
### hasMinedChunk
▸ **hasMinedChunk**(`chunkLocation`): `boolean`
Whether or not the given rectangle has been mined.
#### Parameters
| Name | Type |
| :-------------- | :---------- |
| `chunkLocation` | `Rectangle` |
#### Returns
`boolean`
---
### initMiningManager
▸ `Private` **initMiningManager**(`homeCoords`, `cores?`): `void`
#### Parameters
| Name | Type |
| :----------- | :------------ |
| `homeCoords` | `WorldCoords` |
| `cores?` | `number` |
#### Returns
`void`
---
### invadePlanet
▸ **invadePlanet**(`locationId`): `Promise`<`Transaction`<`UnconfirmedInvadePlanet`\>\>
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `locationId` | `LocationId` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedInvadePlanet`\>\>
---
### isAdmin
▸ **isAdmin**(): `boolean`
#### Returns
`boolean`
---
### isMining
▸ **isMining**(): `boolean`
Whether or not the miner is currently exploring space.
#### Returns
`boolean`
---
### isPlanetMineable
▸ **isPlanetMineable**(`p`): `boolean`
Whether or not the given planet is capable of minting an artifact.
#### Parameters
| Name | Type |
| :--- | :------- |
| `p` | `Planet` |
#### Returns
`boolean`
---
### isRoundOver
▸ **isRoundOver**(): `boolean`
Returns whether or not the current round has ended.
#### Returns
`boolean`
---
### joinGame
▸ **joinGame**(`beforeRetry`): `Promise`<`void`\>
Attempts to join the game. Should not be called once you've already joined.
#### Parameters
| Name | Type |
| :------------ | :-------------------------------------- |
| `beforeRetry` | (`e`: `Error`) => `Promise`<`boolean`\> |
#### Returns
`Promise`<`void`\>
---
### listenForNewBlock
▸ **listenForNewBlock**(): `void`
#### Returns
`void`
---
### loadContract
▸ **loadContract**<`T`\>(`contractAddress`, `contractABI`): `Promise`<`T`\>
Returns an instance of a `Contract` from the ethersjs library. This is the library we use to
connect to the blockchain. For documentation about how `Contract` works, see:
https://docs.ethers.io/v5/api/contract/contract/
Also, registers your contract in the system to make calls against it and to reload it when
necessary (such as the RPC endpoint changing).
#### Type parameters
| Name | Type |
| :--- | :----------------------- |
| `T` | extends `Contract`<`T`\> |
#### Parameters
| Name | Type |
| :---------------- | :------------------ |
| `contractAddress` | `string` |
| `contractABI` | `ContractInterface` |
#### Returns
`Promise`<`T`\>
---
### loadPlugins
▸ **loadPlugins**(): `Promise`<[`SerializedPlugin`](../interfaces/Backend_Plugins_SerializedPlugin.SerializedPlugin.md)[]\>
Load the serialized versions of all the plugins that this player has.
#### Returns
`Promise`<[`SerializedPlugin`](../interfaces/Backend_Plugins_SerializedPlugin.SerializedPlugin.md)[]\>
---
### locationBigIntFromCoords
▸ **locationBigIntFromCoords**(`coords`): `BigInteger`
#### Parameters
| Name | Type |
| :------- | :------------ |
| `coords` | `WorldCoords` |
#### Returns
`BigInteger`
---
### locationFromCoords
▸ `Private` **locationFromCoords**(`coords`): `WorldLocation`
computes the WorldLocation object corresponding to a set of coordinates
very slow since it actually calculates the hash; do not use in render loop
#### Parameters
| Name | Type |
| :------- | :------------ |
| `coords` | `WorldCoords` |
#### Returns
`WorldLocation`
---
### move
▸ **move**(`from`, `to`, `forces`, `silver`, `artifactMoved?`, `abandoning?`, `bypassChecks?`): `Promise`<`Transaction`<`UnconfirmedMove`\>\>
Submits a transaction to the blockchain to move the given amount of resources from
the given planet to the given planet.
#### Parameters
| Name | Type | Default value |
| :--------------- | :----------- | :------------ |
| `from` | `LocationId` | `undefined` |
| `to` | `LocationId` | `undefined` |
| `forces` | `number` | `undefined` |
| `silver` | `number` | `undefined` |
| `artifactMoved?` | `ArtifactId` | `undefined` |
| `abandoning` | `boolean` | `false` |
| `bypassChecks` | `boolean` | `false` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedMove`\>\>
---
### onTxCancelled
▸ `Private` **onTxCancelled**(`tx`): `void`
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`void`
---
### onTxConfirmed
▸ `Private` **onTxConfirmed**(`tx`): `void`
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`void`
---
### onTxReverted
▸ `Private` **onTxReverted**(`tx`): `void`
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`void`
---
### onTxSubmit
▸ `Private` **onTxSubmit**(`tx`): `void`
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`void`
---
### prospectPlanet
▸ **prospectPlanet**(`planetId`, `bypassChecks?`): `Promise`<`Transaction`<`UnconfirmedProspectPlanet`\>\>
#### Parameters
| Name | Type | Default value |
| :------------- | :----------- | :------------ |
| `planetId` | `LocationId` | `undefined` |
| `bypassChecks` | `boolean` | `false` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedProspectPlanet`\>\>
---
### refreshNetworkHealth
▸ `Private` **refreshNetworkHealth**(): `Promise`<`void`\>
#### Returns
`Promise`<`void`\>
---
### refreshScoreboard
▸ `Private` **refreshScoreboard**(): `Promise`<`void`\>
#### Returns
`Promise`<`void`\>
---
### refreshServerPlanetStates
▸ **refreshServerPlanetStates**(`planetIds`): `Promise`<`void`\>
We have two locations which planet state can live: on the server, and on the blockchain. We use
the blockchain for the 'physics' of the universe, and the webserver for optional 'add-on'
features, which are cryptographically secure, but live off-chain.
This function loads the planet states which live on the server. Plays nicely with our
notifications system and sets the appropriate loading state values on the planet.
#### Parameters
| Name | Type |
| :---------- | :------------- |
| `planetIds` | `LocationId`[] |
#### Returns
`Promise`<`void`\>
---
### refreshTwitters
▸ `Private` **refreshTwitters**(): `Promise`<`void`\>
#### Returns
`Promise`<`void`\>
---
### revealLocation
▸ **revealLocation**(`planetId`): `Promise`<`Transaction`<`UnconfirmedReveal`\>\>
Reveals a planet's location on-chain.
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedReveal`\>\>
---
### savePlugins
▸ **savePlugins**(`savedPlugins`): `Promise`<`void`\>
Overwrites all the saved plugins to equal the given array of plugins.
#### Parameters
| Name | Type |
| :------------- | :----------------------------------------------------------------------------------------- |
| `savedPlugins` | [`SerializedPlugin`](../interfaces/Backend_Plugins_SerializedPlugin.SerializedPlugin.md)[] |
#### Returns
`Promise`<`void`\>
---
### setMinerCores
▸ **setMinerCores**(`nCores`): `void`
Set the amount of cores to mine the universe with. More cores equals faster!
#### Parameters
| Name | Type |
| :------- | :------- |
| `nCores` | `number` |
#### Returns
`void`
---
### setMiningPattern
▸ **setMiningPattern**(`pattern`): `void`
Sets the mining pattern of the miner. This kills the old miner and starts this one.
#### Parameters
| Name | Type |
| :-------- | :----------------------------------------------------------------------------- |
| `pattern` | [`MiningPattern`](../interfaces/Backend_Miner_MiningPatterns.MiningPattern.md) |
#### Returns
`void`
---
### setPlanetEmoji
▸ **setPlanetEmoji**(`locationId`, `emojiStr`): `Promise`<`void`\>
If you are the owner of this planet, you can set an 'emoji' to hover above the planet.
`emojiStr` must be a string that contains a single emoji, otherwise this function will throw an
error.
The emoji is stored off-chain in a postgres database. We verify planet ownership via a contract
call from the webserver, and by verifying that the request to add (or remove) an emoji from a
planet was signed by the owner.
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `locationId` | `LocationId` |
| `emojiStr` | `string` |
#### Returns
`Promise`<`void`\>
---
### setPlayerTwitters
▸ `Private` **setPlayerTwitters**(`twitters`): `void`
#### Parameters
| Name | Type |
| :--------- | :------------------------------------------------------------------------------------------------ |
| `twitters` | [`AddressTwitterMap`](../modules/types_darkforest_api_UtilityServerAPITypes.md#addresstwittermap) |
#### Returns
`void`
---
### setRadius
▸ `Private` **setRadius**(`worldRadius`): `void`
#### Parameters
| Name | Type |
| :------------ | :------- |
| `worldRadius` | `number` |
#### Returns
`void`
---
### setSafeMode
▸ **setSafeMode**(`safeMode`): `void`
#### Parameters
| Name | Type |
| :--------- | :-------- |
| `safeMode` | `boolean` |
#### Returns
`void`
---
### setSnarkCacheSize
▸ **setSnarkCacheSize**(`size`): `void`
Changes the amount of move snark proofs that are cached.
#### Parameters
| Name | Type |
| :----- | :------- |
| `size` | `number` |
#### Returns
`void`
---
### softRefreshPlanet
▸ `Private` **softRefreshPlanet**(`planetId`): `Promise`<`void`\>
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`Promise`<`void`\>
---
### spaceTypeFromPerlin
▸ **spaceTypeFromPerlin**(`perlin`): `SpaceType`
Each coordinate lives in a particular type of space, determined by a smooth random
function called 'perlin noise.
#### Parameters
| Name | Type |
| :------- | :------- |
| `perlin` | `number` |
#### Returns
`SpaceType`
---
### spaceTypePerlin
▸ **spaceTypePerlin**(`coords`, `floor`): `number`
Gets the perlin value at the given location in the world. SpaceType is based
on this value.
#### Parameters
| Name | Type |
| :------- | :------------ |
| `coords` | `WorldCoords` |
| `floor` | `boolean` |
#### Returns
`number`
---
### startExplore
▸ **startExplore**(): `void`
Starts the miner.
#### Returns
`void`
---
### stopExplore
▸ **stopExplore**(): `void`
Stops the miner.
#### Returns
`void`
---
### submitDisconnectTwitter
▸ **submitDisconnectTwitter**(`twitter`): `Promise`<`void`\>
#### Parameters
| Name | Type |
| :-------- | :------- |
| `twitter` | `string` |
#### Returns
`Promise`<`void`\>
---
### submitPlanetMessage
▸ `Private` **submitPlanetMessage**(`locationId`, `type`, `body`): `Promise`<`void`\>
The planet emoji feature is built on top of a more general 'Planet Message' system, which
allows players to upload pieces of data called 'Message's to planets that they own. Emojis are
just one type of message. Their implementation leaves the door open to more off-chain data.
#### Parameters
| Name | Type |
| :----------- | :------------------ |
| `locationId` | `LocationId` |
| `type` | `PlanetMessageType` |
| `body` | `unknown` |
#### Returns
`Promise`<`void`\>
---
### submitTransaction
▸ **submitTransaction**<`T`\>(`txIntent`, `overrides?`): `Promise`<`Transaction`<`T`\>\>
#### Type parameters
| Name | Type |
| :--- | :----------------- |
| `T` | extends `TxIntent` |
#### Parameters
| Name | Type |
| :----------- | :------------------- |
| `txIntent` | `T` |
| `overrides?` | `TransactionRequest` |
#### Returns
`Promise`<`Transaction`<`T`\>\>
---
### submitVerifyTwitter
▸ **submitVerifyTwitter**(`twitter`): `Promise`<`boolean`\>
Once you have posted the verification tweet - complete the twitter-account-linking
process by telling the Dark Forest webserver to look at that tweet.
#### Parameters
| Name | Type |
| :-------- | :------- |
| `twitter` | `string` |
#### Returns
`Promise`<`boolean`\>
---
### testNotification
▸ **testNotification**(): `void`
#### Returns
`void`
---
### timeUntilNextBroadcastAvailable
▸ **timeUntilNextBroadcastAvailable**(): `number`
Gets the amount of time (ms) until the next time the current player can broadcast a planet.
#### Returns
`number`
---
### transferOwnership
▸ **transferOwnership**(`planetId`, `newOwner`, `bypassChecks?`): `Promise`<`Transaction`<`UnconfirmedPlanetTransfer`\>\>
#### Parameters
| Name | Type | Default value |
| :------------- | :----------- | :------------ |
| `planetId` | `LocationId` | `undefined` |
| `newOwner` | `EthAddress` | `undefined` |
| `bypassChecks` | `boolean` | `false` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedPlanetTransfer`\>\>
---
### updateDiagnostics
▸ **updateDiagnostics**(`updateFn`): `void`
Updates the diagnostic info of the game using the supplied function. Ideally, each spot in the
codebase that would like to record a metric is able to update its specific metric in a
convenient manner.
#### Parameters
| Name | Type |
| :--------- | :----------------------------- |
| `updateFn` | (`d`: `Diagnostics`) => `void` |
#### Returns
`void`
---
### upgrade
▸ **upgrade**(`planetId`, `branch`, `_bypassChecks?`): `Promise`<`Transaction`<`UnconfirmedUpgrade`\>\>
Submits a transaction to the blockchain to upgrade the given planet with the given
upgrade branch. You must own the planet, and have enough silver on it to complete
the upgrade.
#### Parameters
| Name | Type | Default value |
| :-------------- | :----------- | :------------ |
| `planetId` | `LocationId` | `undefined` |
| `branch` | `number` | `undefined` |
| `_bypassChecks` | `boolean` | `false` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedUpgrade`\>\>
---
### uploadDiagnostics
▸ `Private` **uploadDiagnostics**(): `Promise`<`void`\>
#### Returns
`Promise`<`void`\>
---
### verifyMessage
▸ `Private` **verifyMessage**(`message`): `Promise`<`boolean`\>
Checks that a message signed by {@link GameManager#signMessage} was signed by the address that
it claims it was signed by.
#### Parameters
| Name | Type |
| :-------- | :-------------------------- |
| `message` | `SignedMessage`<`unknown`\> |
#### Returns
`Promise`<`boolean`\>
---
### waitForPlanet
▸ **waitForPlanet**<`T`\>(`locationId`, `predicate`): `Promise`<`T`\>
Listen for changes to a planet take action,
eg.
waitForPlanet("yourAsteroidId", ({current}) => current.silverCap / current.silver > 90)
.then(() => {
// Send Silver to nearby planet
})
#### Type parameters
| Name |
| :--- |
| `T` |
#### Parameters
| Name | Type | Description |
| :----------- | :------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------- |
| `locationId` | `LocationId` | A locationId to watch for updates |
| `predicate` | (`__namedParameters`: [`Diff`](../interfaces/Frontend_Utils_EmitterUtils.Diff.md)<`Planet`\>) => `undefined` \| `T` | a function that accepts a Diff and should return a truth-y value, value will be passed to promise.resolve() |
#### Returns
`Promise`<`T`\>
a promise that will resolve with results returned from the predicate function
---
### withdrawArtifact
▸ **withdrawArtifact**(`locationId`, `artifactId`, `bypassChecks?`): `Promise`<`Transaction`<`UnconfirmedWithdrawArtifact`\>\>
Withdraws the artifact that is locked up on the given planet.
#### Parameters
| Name | Type | Default value |
| :------------- | :----------- | :------------ |
| `locationId` | `LocationId` | `undefined` |
| `artifactId` | `ArtifactId` | `undefined` |
| `bypassChecks` | `boolean` | `true` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedWithdrawArtifact`\>\>
---
### withdrawSilver
▸ **withdrawSilver**(`locationId`, `amount`, `bypassChecks?`): `Promise`<`Transaction`<`UnconfirmedWithdrawSilver`\>\>
#### Parameters
| Name | Type | Default value |
| :------------- | :----------- | :------------ |
| `locationId` | `LocationId` | `undefined` |
| `amount` | `number` | `undefined` |
| `bypassChecks` | `boolean` | `false` |
#### Returns
`Promise`<`Transaction`<`UnconfirmedWithdrawSilver`\>\>
---
### create
▸ `Static` **create**(`__namedParameters`): `Promise`<[`default`](Backend_GameLogic_GameManager.default.md)\>
#### Parameters
| Name | Type |
| :---------------------------------- | :-------------------------------------------------------------------------------------------------------------- |
| `__namedParameters` | `Object` |
| `__namedParameters.connection` | `EthConnection` |
| `__namedParameters.contractAddress` | `EthAddress` |
| `__namedParameters.terminal` | `MutableRefObject`<`undefined` \| [`TerminalHandle`](../interfaces/Frontend_Views_Terminal.TerminalHandle.md)\> |
#### Returns
`Promise`<[`default`](Backend_GameLogic_GameManager.default.md)\>
================================================
FILE: docs/classes/Backend_GameLogic_GameObjects.GameObjects.md
================================================
# Class: GameObjects
[Backend/GameLogic/GameObjects](../modules/Backend_GameLogic_GameObjects.md).GameObjects
Representation of the objects which exist in the world.
## Table of contents
### Constructors
- [constructor](Backend_GameLogic_GameObjects.GameObjects.md#constructor)
### Properties
- [address](Backend_GameLogic_GameObjects.GameObjects.md#address)
- [arrivals](Backend_GameLogic_GameObjects.GameObjects.md#arrivals)
- [artifactUpdated$](Backend_GameLogic_GameObjects.GameObjects.md#artifactupdated$)
- [artifacts](Backend_GameLogic_GameObjects.GameObjects.md#artifacts)
- [claimedLocations](Backend_GameLogic_GameObjects.GameObjects.md#claimedlocations)
- [contractConstants](Backend_GameLogic_GameObjects.GameObjects.md#contractconstants)
- [coordsToLocation](Backend_GameLogic_GameObjects.GameObjects.md#coordstolocation)
- [layeredMap](Backend_GameLogic_GameObjects.GameObjects.md#layeredmap)
- [myArtifacts](Backend_GameLogic_GameObjects.GameObjects.md#myartifacts)
- [myArtifactsUpdated$](Backend_GameLogic_GameObjects.GameObjects.md#myartifactsupdated$)
- [myPlanets](Backend_GameLogic_GameObjects.GameObjects.md#myplanets)
- [myPlanetsUpdated$](Backend_GameLogic_GameObjects.GameObjects.md#myplanetsupdated$)
- [planetArrivalIds](Backend_GameLogic_GameObjects.GameObjects.md#planetarrivalids)
- [planetLocationMap](Backend_GameLogic_GameObjects.GameObjects.md#planetlocationmap)
- [planetUpdated$](Backend_GameLogic_GameObjects.GameObjects.md#planetupdated$)
- [planets](Backend_GameLogic_GameObjects.GameObjects.md#planets)
- [revealedLocations](Backend_GameLogic_GameObjects.GameObjects.md#revealedlocations)
- [touchedPlanetIds](Backend_GameLogic_GameObjects.GameObjects.md#touchedplanetids)
- [transactions](Backend_GameLogic_GameObjects.GameObjects.md#transactions)
- [wormholes](Backend_GameLogic_GameObjects.GameObjects.md#wormholes)
### Methods
- [addPlanetLocation](Backend_GameLogic_GameObjects.GameObjects.md#addplanetlocation)
- [clearOldArrivals](Backend_GameLogic_GameObjects.GameObjects.md#clearoldarrivals)
- [clearUnconfirmedTxIntent](Backend_GameLogic_GameObjects.GameObjects.md#clearunconfirmedtxintent)
- [defaultPlanetFromLocation](Backend_GameLogic_GameObjects.GameObjects.md#defaultplanetfromlocation)
- [emitArrivalNotifications](Backend_GameLogic_GameObjects.GameObjects.md#emitarrivalnotifications)
- [forceTick](Backend_GameLogic_GameObjects.GameObjects.md#forcetick)
- [getAllOwnedPlanets](Backend_GameLogic_GameObjects.GameObjects.md#getallownedplanets)
- [getAllPlanets](Backend_GameLogic_GameObjects.GameObjects.md#getallplanets)
- [getAllPlanetsMap](Backend_GameLogic_GameObjects.GameObjects.md#getallplanetsmap)
- [getAllVoyages](Backend_GameLogic_GameObjects.GameObjects.md#getallvoyages)
- [getArrivalIdsForLocation](Backend_GameLogic_GameObjects.GameObjects.md#getarrivalidsforlocation)
- [getArtifactById](Backend_GameLogic_GameObjects.GameObjects.md#getartifactbyid)
- [getArtifactController](Backend_GameLogic_GameObjects.GameObjects.md#getartifactcontroller)
- [getArtifactMap](Backend_GameLogic_GameObjects.GameObjects.md#getartifactmap)
- [getArtifactsOnPlanetsOwnedBy](Backend_GameLogic_GameObjects.GameObjects.md#getartifactsonplanetsownedby)
- [getArtifactsOwnedBy](Backend_GameLogic_GameObjects.GameObjects.md#getartifactsownedby)
- [getBiome](Backend_GameLogic_GameObjects.GameObjects.md#getbiome)
- [getClaimedLocations](Backend_GameLogic_GameObjects.GameObjects.md#getclaimedlocations)
- [getEnergyCurveAtPercent](Backend_GameLogic_GameObjects.GameObjects.md#getenergycurveatpercent)
- [getLocationOfPlanet](Backend_GameLogic_GameObjects.GameObjects.md#getlocationofplanet)
- [getMyArtifactMap](Backend_GameLogic_GameObjects.GameObjects.md#getmyartifactmap)
- [getMyPlanetMap](Backend_GameLogic_GameObjects.GameObjects.md#getmyplanetmap)
- [getPlanetArtifacts](Backend_GameLogic_GameObjects.GameObjects.md#getplanetartifacts)
- [getPlanetDetailLevel](Backend_GameLogic_GameObjects.GameObjects.md#getplanetdetaillevel)
- [getPlanetLevel](Backend_GameLogic_GameObjects.GameObjects.md#getplanetlevel)
- [getPlanetMap](Backend_GameLogic_GameObjects.GameObjects.md#getplanetmap)
- [getPlanetWithCoords](Backend_GameLogic_GameObjects.GameObjects.md#getplanetwithcoords)
- [getPlanetWithId](Backend_GameLogic_GameObjects.GameObjects.md#getplanetwithid)
- [getPlanetWithLocation](Backend_GameLogic_GameObjects.GameObjects.md#getplanetwithlocation)
- [getPlanetsInWorldCircle](Backend_GameLogic_GameObjects.GameObjects.md#getplanetsinworldcircle)
- [getPlanetsInWorldRectangle](Backend_GameLogic_GameObjects.GameObjects.md#getplanetsinworldrectangle)
- [getPlanetsWithIds](Backend_GameLogic_GameObjects.GameObjects.md#getplanetswithids)
- [getRevealedLocations](Backend_GameLogic_GameObjects.GameObjects.md#getrevealedlocations)
- [getSilverCurveAtPercent](Backend_GameLogic_GameObjects.GameObjects.md#getsilvercurveatpercent)
- [getWormholes](Backend_GameLogic_GameObjects.GameObjects.md#getwormholes)
- [isGettingSpaceships](Backend_GameLogic_GameObjects.GameObjects.md#isgettingspaceships)
- [isPlanetInContract](Backend_GameLogic_GameObjects.GameObjects.md#isplanetincontract)
- [markLocationRevealed](Backend_GameLogic_GameObjects.GameObjects.md#marklocationrevealed)
- [onTxIntent](Backend_GameLogic_GameObjects.GameObjects.md#ontxintent)
- [planetLevelFromHexPerlin](Backend_GameLogic_GameObjects.GameObjects.md#planetlevelfromhexperlin)
- [planetTypeFromHexPerlin](Backend_GameLogic_GameObjects.GameObjects.md#planettypefromhexperlin)
- [processArrivalsForPlanet](Backend_GameLogic_GameObjects.GameObjects.md#processarrivalsforplanet)
- [removeArrival](Backend_GameLogic_GameObjects.GameObjects.md#removearrival)
- [replaceArtifactFromContractData](Backend_GameLogic_GameObjects.GameObjects.md#replaceartifactfromcontractdata)
- [replaceArtifactsFromContractData](Backend_GameLogic_GameObjects.GameObjects.md#replaceartifactsfromcontractdata)
- [replacePlanetFromContractData](Backend_GameLogic_GameObjects.GameObjects.md#replaceplanetfromcontractdata)
- [setArtifact](Backend_GameLogic_GameObjects.GameObjects.md#setartifact)
- [setClaimedLocation](Backend_GameLogic_GameObjects.GameObjects.md#setclaimedlocation)
- [setPlanet](Backend_GameLogic_GameObjects.GameObjects.md#setplanet)
- [spaceTypeFromPerlin](Backend_GameLogic_GameObjects.GameObjects.md#spacetypefromperlin)
- [updateArtifact](Backend_GameLogic_GameObjects.GameObjects.md#updateartifact)
- [updatePlanet](Backend_GameLogic_GameObjects.GameObjects.md#updateplanet)
- [updatePlanetIfStale](Backend_GameLogic_GameObjects.GameObjects.md#updateplanetifstale)
- [getSilverNeeded](Backend_GameLogic_GameObjects.GameObjects.md#getsilverneeded)
- [planetCanUpgrade](Backend_GameLogic_GameObjects.GameObjects.md#planetcanupgrade)
## Constructors
### constructor
• **new GameObjects**(`address`, `touchedPlanets`, `allTouchedPlanetIds`, `revealedLocations`, `claimedLocations`, `artifacts`, `allChunks`, `unprocessedArrivals`, `unprocessedPlanetArrivalIds`, `contractConstants`, `worldRadius`)
#### Parameters
| Name | Type |
| :---------------------------- | :----------------------------------------------------------------------------------------------- |
| `address` | `undefined` \| `EthAddress` |
| `touchedPlanets` | `Map`<`LocationId`, `Planet`\> |
| `allTouchedPlanetIds` | `Set`<`LocationId`\> |
| `revealedLocations` | `Map`<`LocationId`, `RevealedLocation`\> |
| `claimedLocations` | `Map`<`LocationId`, `ClaimedLocation`\> |
| `artifacts` | `Map`<`ArtifactId`, `Artifact`\> |
| `allChunks` | `Iterable`<`Chunk`\> |
| `unprocessedArrivals` | `Map`<`VoyageId`, `QueuedArrival`\> |
| `unprocessedPlanetArrivalIds` | `Map`<`LocationId`, `VoyageId`[]\> |
| `contractConstants` | [`ContractConstants`](../interfaces/types_darkforest_api_ContractsAPITypes.ContractConstants.md) |
| `worldRadius` | `number` |
## Properties
### address
• `Private` `Readonly` **address**: `undefined` \| `EthAddress`
This address of the player that is currently logged in.
**`todo`** move this, along with all other objects relating to the currently logged-on player into a
new field: {@code player: PlayerInfo}
---
### arrivals
• `Private` `Readonly` **arrivals**: `Map`<`VoyageId`, `ArrivalWithTimer`\>
Map of arrivals to timers that fire when an arrival arrives, in case that handler needs to be
cancelled for whatever reason.
---
### artifactUpdated$
• `Readonly` **artifactUpdated$**: `Monomitter`<`ArtifactId`\>
Event emitter which publishes whenever an artifact has been updated.
---
### artifacts
• `Private` `Readonly` **artifacts**: `Map`<`ArtifactId`, `Artifact`\>
Cached index of all known artifact data.
**`see`** The same warning applys as the one on [GameObjects.planets](Backend_GameLogic_GameObjects.GameObjects.md#planets)
---
### claimedLocations
• `Private` `Readonly` **claimedLocations**: `Map`<`LocationId`, `ClaimedLocation`\>
Map from location ids to, if that location id has been claimed on-chain, the world coordinates
of that location id, as well as some extra information regarding the circumstances of the
revealing of this planet.
---
### contractConstants
• `Private` `Readonly` **contractConstants**: [`ContractConstants`](../interfaces/types_darkforest_api_ContractsAPITypes.ContractConstants.md)
Some of the game's parameters are downloaded from the blockchain. This allows the client to be
flexible, and connect to any compatible set of Dark Forest contracts, download the parameters,
and join the game, taking into account the unique configuration of those specific Dark Forest
contracts.
---
### coordsToLocation
• `Private` `Readonly` **coordsToLocation**: `Map`<`CoordsString`, `WorldLocation`\>
Map from a stringified representation of an x-y coordinate to an object that contains some more
information about the world at that location.
---
### layeredMap
• `Private` `Readonly` **layeredMap**: [`LayeredMap`](Backend_GameLogic_LayeredMap.LayeredMap.md)
This is a data structure that allows us to efficiently calculate which planets are visible on
the player's screen given the viewport's position and size.
---
### myArtifacts
• `Private` `Readonly` **myArtifacts**: `Map`<`ArtifactId`, `Artifact`\>
Cached index of artifacts owned by the player.
**`see`** The same warning applys as the one on [GameObjects.planets](Backend_GameLogic_GameObjects.GameObjects.md#planets)
---
### myArtifactsUpdated$
• `Readonly` **myArtifactsUpdated$**: `Monomitter`<`Map`<`ArtifactId`, `Artifact`\>\>
Whenever one of the player's artifacts are updated, this event emitter publishes. See
[GameObjects.myPlanetsUpdated$](Backend_GameLogic_GameObjects.GameObjects.md#myplanetsupdated$) for more info.
---
### myPlanets
• `Private` `Readonly` **myPlanets**: `Map`<`LocationId`, `Planet`\>
Cached index of planets owned by the player.
**`see`** The same warning applys as the one on [GameObjects.planets](Backend_GameLogic_GameObjects.GameObjects.md#planets)
---
### myPlanetsUpdated$
• `Readonly` **myPlanetsUpdated$**: `Monomitter`<`Map`<`LocationId`, `Planet`\>\>
Whenever a planet is updated, we publish to this event with a reference to a map from location
id to planet. We need to rethink this event emitter because it currently publishes every time
that any planet is updated, and if a lot of them are updated at once (which i think is the case
once every two minutes) then this event emitter will publish a shitton of events.
TODO: rethink this
---
### planetArrivalIds
• `Private` `Readonly` **planetArrivalIds**: `Map`<`LocationId`, `VoyageId`[]\>
Map from a location id (think of it as the unique id of each planet) to all the ids of the
voyages that are arriving on that planet. These include both the player's own voyages, and also
any potential invader's voyages.
---
### planetLocationMap
• `Private` `Readonly` **planetLocationMap**: `Map`<`LocationId`, `WorldLocation`\>
Map from location id (unique id of each planet) to some information about the location at which
this planet is located, if this client happens to know the coordinates of this planet.
---
### planetUpdated$
• `Readonly` **planetUpdated$**: `Monomitter`<`LocationId`\>
Event emitter which publishes whenever a planet is updated.
---
### planets
• `Private` `Readonly` **planets**: `Map`<`LocationId`, `Planet`\>
Cached index of all known planet data.
Warning!
This should NEVER be set to directly! Any time you want to update a planet, you must call the
{@link GameObjects#setPlanet()} function. Following this rule enables us to reliably notify
other parts of the client when a particular object has been updated. TODO: what is the best way
to do this?
**`todo`** extract the pattern we're using for the field tuples
- {planets, myPlanets, myPlanetsUpdated, planetUpdated$}
- {artifacts, myArtifacts, myArtifactsUpdated, artifactUpdated$}
into some sort of class.
---
### revealedLocations
• `Private` `Readonly` **revealedLocations**: `Map`<`LocationId`, `RevealedLocation`\>
Map from location ids to, if that location id has been revealed on-chain, the world coordinates
of that location id, as well as some extra information regarding the circumstances of the
revealing of this planet.
---
### touchedPlanetIds
• `Private` `Readonly` **touchedPlanetIds**: `Set`<`LocationId`\>
Set of all planet ids that we know have been interacted-with on-chain.
---
### transactions
• `Readonly` **transactions**: `TransactionCollection`
Transactions that are currently in flight.
---
### wormholes
• `Private` `Readonly` **wormholes**: `Map`<`ArtifactId`, `Wormhole`\>
Map from artifact ids to wormholes.
## Methods
### addPlanetLocation
▸ **addPlanetLocation**(`planetLocation`): `void`
Called when we load chunk data into memory (on startup), when we're loading all revealed locations (on startup),
when miner has mined a new chunk while exploring, and when a planet's location is revealed onchain during the course of play
Adds a WorldLocation to the planetLocationMap, making it known to the player locally
Sets an unsynced default planet in the PlanetMap this.planets
IMPORTANT: This is the only way a LocatablePlanet gets constructed
IMPORTANT: Idempotent
#### Parameters
| Name | Type |
| :--------------- | :-------------- |
| `planetLocation` | `WorldLocation` |
#### Returns
`void`
---
### clearOldArrivals
▸ `Private` **clearOldArrivals**(`planet`): `void`
#### Parameters
| Name | Type |
| :------- | :------- |
| `planet` | `Planet` |
#### Returns
`void`
---
### clearUnconfirmedTxIntent
▸ **clearUnconfirmedTxIntent**(`tx`): `void`
Whenever a transaction that the user initiated either succeeds or fails, we need to clear the
fact that it was in progress from the event's corresponding entities. For example, whenever a
transaction that sends a voyage from one planet to another either succeeds or fails, we need to
remove the dashed line that connected them.
Making sure that we never miss something here is very tedious.
**`todo`** Make this less tedious.
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`void`
---
### defaultPlanetFromLocation
▸ `Private` **defaultPlanetFromLocation**(`location`): `LocatablePlanet`
returns the data for an unowned, untouched planet at location
most planets in the game are untouched and not stored in the contract,
so we need to generate their data optimistically in the client
#### Parameters
| Name | Type |
| :--------- | :-------------- |
| `location` | `WorldLocation` |
#### Returns
`LocatablePlanet`
---
### emitArrivalNotifications
▸ `Private` **emitArrivalNotifications**(`__namedParameters`): `void`
Emit notifications based on a planet's state change
#### Parameters
| Name | Type |
| :------------------ | :------------------------------------------------------------------------- |
| `__namedParameters` | [`PlanetDiff`](../interfaces/Backend_GameLogic_ArrivalUtils.PlanetDiff.md) |
#### Returns
`void`
---
### forceTick
▸ **forceTick**(`locationId`): `void`
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `locationId` | `LocationId` |
#### Returns
`void`
---
### getAllOwnedPlanets
▸ **getAllOwnedPlanets**(): `Planet`[]
Returns all the planets in the game which this client is aware of that have an owner, as a map
from their id to the planet
**`tutorial`** For plugin developers!
**`see`** Warning in {@link GameObjects.getAllPlanets()}
#### Returns
`Planet`[]
---
### getAllPlanets
▸ **getAllPlanets**(): `Iterable`<`Planet`\>
Returns all planets in the game.
Warning! Simply iterating over this is not performant, and is meant for scripting.
**`tutorial`** For plugin developers!
#### Returns
`Iterable`<`Planet`\>
---
### getAllPlanetsMap
▸ **getAllPlanetsMap**(): `Map`<`LocationId`, `Planet`\>
Returns all planets in the game, as a map from their location id to the planet.
**`tutorial`** For plugin developers!
**`see`** Warning in {@link GameObjects.getAllPlanets()}
#### Returns
`Map`<`LocationId`, `Planet`\>
---
### getAllVoyages
▸ **getAllVoyages**(): `QueuedArrival`[]
Returns all voyages that are scheduled to arrive at some point in the future.
**`tutorial`** For plugin developers!
**`see`** Warning in {@link GameObjects.getAllPlanets()}
#### Returns
`QueuedArrival`[]
---
### getArrivalIdsForLocation
▸ **getArrivalIdsForLocation**(`location`): `undefined` \| `VoyageId`[]
Get all of the incoming voyages for a given location.
#### Parameters
| Name | Type |
| :--------- | :-------------------------- |
| `location` | `undefined` \| `LocationId` |
#### Returns
`undefined` \| `VoyageId`[]
---
### getArtifactById
▸ **getArtifactById**(`artifactId?`): `undefined` \| `Artifact`
#### Parameters
| Name | Type |
| :------------ | :----------- |
| `artifactId?` | `ArtifactId` |
#### Returns
`undefined` \| `Artifact`
---
### getArtifactController
▸ **getArtifactController**(`artifactId`): `undefined` \| `EthAddress`
Returns the EthAddress of the player who can control the owner:
if the artifact is on a planet, this is the owner of the planet
if the artifact is on a voyage, this is the initiator of the voyage
if the artifact is not on either, then it is the owner of the artifact NFT
#### Parameters
| Name | Type |
| :----------- | :----------- |
| `artifactId` | `ArtifactId` |
#### Returns
`undefined` \| `EthAddress`
---
### getArtifactMap
▸ **getArtifactMap**(): `Map`<`ArtifactId`, `Artifact`\>
#### Returns
`Map`<`ArtifactId`, `Artifact`\>
---
### getArtifactsOnPlanetsOwnedBy
▸ **getArtifactsOnPlanetsOwnedBy**(`addr`): `Artifact`[]
#### Parameters
| Name | Type |
| :----- | :----------- |
| `addr` | `EthAddress` |
#### Returns
`Artifact`[]
---
### getArtifactsOwnedBy
▸ **getArtifactsOwnedBy**(`addr`): `Artifact`[]
#### Parameters
| Name | Type |
| :----- | :----------- |
| `addr` | `EthAddress` |
#### Returns
`Artifact`[]
---
### getBiome
▸ `Private` **getBiome**(`loc`): `Biome`
#### Parameters
| Name | Type |
| :---- | :-------------- |
| `loc` | `WorldLocation` |
#### Returns
`Biome`
---
### getClaimedLocations
▸ **getClaimedLocations**(): `Map`<`LocationId`, `ClaimedLocation`\>
#### Returns
`Map`<`LocationId`, `ClaimedLocation`\>
---
### getEnergyCurveAtPercent
▸ **getEnergyCurveAtPercent**(`planet`, `percent`): `number`
returns timestamp (seconds) that planet will reach percent% of energycap
time may be in the past
#### Parameters
| Name | Type |
| :-------- | :------- |
| `planet` | `Planet` |
| `percent` | `number` |
#### Returns
`number`
---
### getLocationOfPlanet
▸ **getLocationOfPlanet**(`planetId`): `undefined` \| `WorldLocation`
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`undefined` \| `WorldLocation`
---
### getMyArtifactMap
▸ **getMyArtifactMap**(): `Map`<`ArtifactId`, `Artifact`\>
#### Returns
`Map`<`ArtifactId`, `Artifact`\>
---
### getMyPlanetMap
▸ **getMyPlanetMap**(): `Map`<`LocationId`, `Planet`\>
#### Returns
`Map`<`LocationId`, `Planet`\>
---
### getPlanetArtifacts
▸ **getPlanetArtifacts**(`planetId`): `Artifact`[]
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`Artifact`[]
---
### getPlanetDetailLevel
▸ **getPlanetDetailLevel**(`planetId`): `undefined` \| `number`
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`undefined` \| `number`
---
### getPlanetLevel
▸ **getPlanetLevel**(`planetId`): `undefined` \| `PlanetLevel`
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`undefined` \| `PlanetLevel`
---
### getPlanetMap
▸ **getPlanetMap**(): `Map`<`LocationId`, `Planet`\>
#### Returns
`Map`<`LocationId`, `Planet`\>
---
### getPlanetWithCoords
▸ **getPlanetWithCoords**(`coords`): `undefined` \| `LocatablePlanet`
#### Parameters
| Name | Type |
| :------- | :------------ |
| `coords` | `WorldCoords` |
#### Returns
`undefined` \| `LocatablePlanet`
---
### getPlanetWithId
▸ **getPlanetWithId**(`planetId`, `updateIfStale?`): `undefined` \| `Planet`
#### Parameters
| Name | Type | Default value |
| :-------------- | :----------- | :------------ |
| `planetId` | `LocationId` | `undefined` |
| `updateIfStale` | `boolean` | `true` |
#### Returns
`undefined` \| `Planet`
---
### getPlanetWithLocation
▸ **getPlanetWithLocation**(`location`): `undefined` \| `Planet`
#### Parameters
| Name | Type |
| :--------- | :----------------------------- |
| `location` | `undefined` \| `WorldLocation` |
#### Returns
`undefined` \| `Planet`
---
### getPlanetsInWorldCircle
▸ **getPlanetsInWorldCircle**(`coords`, `radius`): `LocatablePlanet`[]
Gets all the planets that are within {@code radius} world units from the given coordinate. Fast
because it uses [LayeredMap](Backend_GameLogic_LayeredMap.LayeredMap.md).
#### Parameters
| Name | Type |
| :------- | :------------ |
| `coords` | `WorldCoords` |
| `radius` | `number` |
#### Returns
`LocatablePlanet`[]
---
### getPlanetsInWorldRectangle
▸ **getPlanetsInWorldRectangle**(`worldX`, `worldY`, `worldWidth`, `worldHeight`, `levels`, `planetLevelToRadii`, `updateIfStale?`): `LocatablePlanet`[]
Gets the ids of all the planets that are both within the given bounding box (defined by its
bottom left coordinate, width, and height) in the world and of a level that was passed in via
the `planetLevels` parameter. Fast because it uses [LayeredMap](Backend_GameLogic_LayeredMap.LayeredMap.md).
#### Parameters
| Name | Type | Default value |
| :------------------- | :------------------------ | :------------ |
| `worldX` | `number` | `undefined` |
| `worldY` | `number` | `undefined` |
| `worldWidth` | `number` | `undefined` |
| `worldHeight` | `number` | `undefined` |
| `levels` | `number`[] | `undefined` |
| `planetLevelToRadii` | `Map`<`number`, `Radii`\> | `undefined` |
| `updateIfStale` | `boolean` | `true` |
#### Returns
`LocatablePlanet`[]
---
### getPlanetsWithIds
▸ **getPlanetsWithIds**(`locationIds`, `updateIfStale?`): `Planet`[]
Gets all the planets with the given ids, giltering out the ones that we don't have.
#### Parameters
| Name | Type | Default value |
| :-------------- | :------------- | :------------ |
| `locationIds` | `LocationId`[] | `undefined` |
| `updateIfStale` | `boolean` | `true` |
#### Returns
`Planet`[]
---
### getRevealedLocations
▸ **getRevealedLocations**(): `Map`<`LocationId`, `RevealedLocation`\>
#### Returns
`Map`<`LocationId`, `RevealedLocation`\>
---
### getSilverCurveAtPercent
▸ **getSilverCurveAtPercent**(`planet`, `percent`): `undefined` \| `number`
returns timestamp (seconds) that planet will reach percent% of silcap if
doesn't produce silver, returns undefined if already over percent% of silcap,
returns undefined
#### Parameters
| Name | Type |
| :-------- | :------- |
| `planet` | `Planet` |
| `percent` | `number` |
#### Returns
`undefined` \| `number`
---
### getWormholes
▸ **getWormholes**(): `Iterable`<`Wormhole`\>
#### Returns
`Iterable`<`Wormhole`\>
---
### isGettingSpaceships
▸ **isGettingSpaceships**(): `boolean`
Whether or not we're already asking the game to give us spaceships.
#### Returns
`boolean`
---
### isPlanetInContract
▸ **isPlanetInContract**(`planetId`): `boolean`
#### Parameters
| Name | Type |
| :--------- | :----------- |
| `planetId` | `LocationId` |
#### Returns
`boolean`
---
### markLocationRevealed
▸ **markLocationRevealed**(`revealedLocation`): `void`
#### Parameters
| Name | Type |
| :----------------- | :----------------- |
| `revealedLocation` | `RevealedLocation` |
#### Returns
`void`
---
### onTxIntent
▸ **onTxIntent**(`tx`): `void`
We call this function whenever the user requests that we send a transaction to the blockchain
with their localstorage wallet. You can think of it as one of the hubs which connects
`GameObjects` to the rest of the world.
Inside this function, we update the relevant internal game objects to reflect that the user has
requested a particular action. Additionally, we publish the appropriate events to the relevant
{@link Monomitter} instances that are stored in this class.
In the case of something like prospecting for an artifact, this allows us to display a spinner
text which says "Prospecting..."
In the case of the user sending energy from one planet to another planet, this allows us to
display a dashed line between the two planets in their new voyage.
Whenever we update an entity, we must do it via that entity's type's corresponding
`set<EntityType>` function, in order for us to publish these events.
**`todo:`** this entire function could be automated by implementing a new interface called
{@code TxFilter}.
#### Parameters
| Name | Type |
| :--- | :------------------------- |
| `tx` | `Transaction`<`TxIntent`\> |
#### Returns
`void`
---
### planetLevelFromHexPerlin
▸ **planetLevelFromHexPerlin**(`hex`, `perlin`): `PlanetLevel`
#### Parameters
| Name | Type |
| :------- | :----------- |
| `hex` | `LocationId` |
| `perlin` | `number` |
#### Returns
`PlanetLevel`
---
### planetTypeFromHexPerlin
▸ **planetTypeFromHexPerlin**(`hex`, `perlin`): `PlanetType`
#### Parameters
| Name | Type |
| :------- | :----------- |
| `hex` | `LocationId` |
| `perlin` | `number` |
#### Returns
`PlanetType`
---
### processArrivalsForPlanet
▸ `Private` **processArrivalsForPlanet**(`planetId`, `arrivals`): `ArrivalWithTimer`[]
#### Parameters
| Name | Type |
| :--------- | :---------------- |
| `planetId` | `LocationId` |
| `arrivals` | `QueuedArrival`[] |
#### Returns
`ArrivalWithTimer`[]
---
### removeArrival
▸ `Private` **removeArrival**(`planetId`, `arrivalId`): `void`
#### Parameters
| Name | Type |
| :---------- | :----------- |
| `planetId` | `LocationId` |
| `arrivalId` | `VoyageId` |
#### Returns
`void`
---
### replaceArtifactFromContractData
▸ **replaceArtifactFromContractData**(`artifact`): `void`
received some artifact data from the contract. update our stores
#### Parameters
| Name | Type |
| :--------- | :--------- |
| `artifact` | `Artifact` |
#### Returns
`void`
---
### replaceArtifactsFromContractData
▸ **replaceArtifactsFromContractData**(`artifacts`): `void`
#### Parameters
| Name | Type |
| :---------- | :---------------------- |
| `artifacts` | `Iterable`<`Artifact`\> |
#### Returns
`void`
---
### replacePlanetFromContractData
▸ **replacePlanetFromContractData**(`planet`, `updatedArrivals?`, `updatedArtifactsOnPlanet?`, `revealedLocation?`, `claimerEthAddress?`): `void`
received some planet data from the contract. update our stores
#### Parameters
| Name | Type |
| :-------------------------- | :----------------- |
| `planet` | `Planet` |
| `updatedArrivals?` | `QueuedArrival`[] |
| `updatedArtifactsOnPlanet?` | `ArtifactId`[] |
| `revealedLocation?` | `RevealedLocation` |
| `claimerEthAddress?` | `EthAddress` |
#### Returns
`void`
---
### setArtifact
▸ `Private` **setArtifact**(`artifact`): `void`
Set an artifact into our cached store. Should ALWAYS call this when setting an artifact.
`this.artifacts` and `this.myArtifacts` should NEVER be accessed directly!
This function also handles managing artifact update messages and indexing the map of owned artifacts.
#### Parameters
| Name | Type | Description |
| :--------- | :--------- | :------------------ |
| `artifact` | `Artifact` | the artifact to set |
#### Returns
`void`
---
### setClaimedLocation
▸ **setClaimedLocation**(`claimedLocation`): `void`
#### Parameters
| Name | Type |
| :---------------- | :---------------- |
| `claimedLocation` | `ClaimedLocation` |
#### Returns
`void`
---
### setPlanet
▸ `Private` **setPlanet**(`planet`): `void`
Set a planet into our cached store. Should ALWAYS call this when setting a planet.
`this.planets` and `this.myPlanets` should NEVER be accessed directly!
This function also handles managing planet update messages and indexing the map of owned planets.
#### Parameters
| Name | Type | Description |
| :------- | :------- | :---------------- |
| `planet` | `Planet` | the planet to set |
#### Returns
`void`
---
### spaceTypeFromPerlin
▸ **spaceTypeFromPerlin**(`perlin`): `SpaceType`
#### Parameters
| Name | Type |
| :------- | :------- |
| `perlin` | `number` |
#### Returns
`SpaceType`
---
### updateArtifact
▸ **updateArtifact**(`id`, `updateFn`): `void`
Given a planet id, update the state of the given planet by calling the given update function.
If the planet was updated, then also publish the appropriate event.
#### Parameters
| Name | Type |
| :--------- | :-------------------------- |
| `id` | `undefined` \| `ArtifactId` |
| `updateFn` | (`p`: `Artifact`) => `void` |
#### Returns
`void`
---
### updatePlanet
▸ **updatePlanet**(`id`, `updateFn`): `void`
Given a planet id, update the state of the given planet by calling the given update function.
If the planet was updated, then also publish the appropriate event.
#### Parameters
| Name | Type |
| :--------- | :------------------------ |
| `id` | `LocationId` |
| `updateFn` | (`p`: `Planet`) => `void` |
#### Returns
`void`
---
### updatePlanetIfStale
▸ `Private` **updatePlanetIfStale**(`planet`): `void`
#### Parameters
| Name | Type |
| :------- | :------- |
| `planet` | `Planet` |
#### Returns
`void`
---
### getSilverNeeded
▸ `Static` **getSilverNeeded**(`planet`): `number`
#### Parameters
| Name | Type |
| :------- | :------- |
| `planet` | `Planet` |
#### Returns
`number`
---
### planetCanUpgrade
▸ `Static` **planetCanUpgrade**(`planet`): `boolean`
#### Parameters
| Name | Type |
| :------- | :------- |
| `planet` | `Planet` |
#### Returns
`boolean`
================================================
FILE: docs/classes/Backend_GameLogic_GameUIManager.default.md
================================================
# Class: default
[Backend/GameLogic/GameUIManager](../modules/Backend_GameLogic_GameUIManager.md).default
## Hierarchy
- `EventEmitter`
↳ **`default`**
## Table of contents
### Constructors
- [constructor](Backend_GameLogic_GameUIManager.default.md#constructor)
### Properties
- [abandoning](Backend_GameLogic_GameUIManager.default.md#abandoning)
- [artifactSending](Backend_GameLogic_GameUIManager.default.md#artifactsending)
- [extraMinerLocations](Backend_GameLogic_GameUIManager.default.md#extraminerlocations)
- [forcesSending](Backend_GameLogic_GameUIManager.default.md#forcessending)
- [gameManager](Backend_GameLogic_GameUIManager.default.md#gamemanager)
- [hoverArtifact$](Backend_GameLogic_GameUIManager.default.md#hoverartifact$)
- [hoverArtifactId$](Backend_GameLogic_GameUIManager.default.md#hoverartifactid$)
- [hoverPlanet$](Backend_GameLogic_GameUIManager.default.md#hoverplanet$)
- [hoverPlanetId$](Backend_GameLogic_GameUIManager.default.md#hoverplanetid$)
- [isAbandoning$](Backend_GameLogic_GameUIManager.default.md#isabandoning$)
- [isChoosingTargetPlanet](Backend_GameLogic_GameUIManager.default.md#ischoosingtargetplanet)
- [isSending](Backend_GameLogic_GameUIManager.default.md#issending)
- [isSending$](Backend_GameLogic_GameUIManager.default.md#issending$)
- [minerLocation](Backend_GameLogic_GameUIManager.default.md#minerlocation)
- [modalManager](Backend_GameLogic_GameUIManager.default.md#modalmanager)
- [mouseDownOverCoords](Backend_GameLogic_GameUIManager.default.md#mousedownovercoords)
- [mouseDownOverPlanet](Backend_GameLogic_GameUIManager.default.md#mousedownoverplanet)
- [mouseHoveringOverCoords](Backend_GameLogic_GameUIManager.default.md#mousehoveringovercoords)
- [mouseHoveringOverPlanet](Backend_GameLogic_GameUIManager.default.md#mousehoveringoverplanet)
- [myArtifacts$](Backend_GameLogic_GameUIManager.default.md#myartifacts$)
- [onChooseTargetPlanet](Backend_GameLogic_GameUIManager.default.md#onchoosetargetplanet)
- [overlayContainer](Backend_GameLogic_GameUIManager.default.md#overlaycontainer)
- [planetHoveringInRenderer](Backend_GameLogic_GameUIManager.default.md#planethoveringinrenderer)
- [plugins](Backend_GameLogic_GameUIManager.default.md#plugins)
- [previousSelectedPlanetId](Backend_GameLogic_GameUIManager.default.md#previousselectedplanetid)
- [radiusMap](Backend_GameLogic_GameUIManager.default.md#radiusmap)
- [selectedCoords](Backend_GameLogic_GameUIManager.default.md#selectedcoords)
- [selectedPlanetId](Backend_GameLogic_GameUIManager.default.md#selectedplanetid)
- [selectedPlanetId$](Backend_GameLogic_GameUIManager.default.md#selectedplanetid$)
- [sendingCoords](Backend_GameLogic_GameUIManager.default.md#sendingcoords)
- [sendingPlanet](Backend_GameLogic_GameUIManager.default.md#sendingplanet)
- [silverSending](Backend_GameLogic_GameUIManager.default.md#silversending)
- [terminal](Backend_GameLogic_GameUIManager.default.md#terminal)
- [viewportEntities](Backend_GameLogic_GameUIManager.default.md#viewportentities)
### Accessors
- [captureZonesEnabled](Backend_GameLogic_GameUIManager.default.md#capturezonesenabled)
- [contractConstants](Backend_GameLogic_GameUIManager.default.md#contractconstants)
### Methods
- [activateArtifact](Backend_GameLogic_GameUIManager.default.md#activateartifact)
- [addAccount](Backend_GameLogic_GameUIManager.default.md#addaccount)
- [addNewChunk](Backend_GameLogic_GameUIManager.default.md#addnewchunk)
- [bulkAddNewChunks](Backend_GameLogic_GameUIManager.default.md#bulkaddnewchunks)
- [buyHat](Backend_GameLogic_GameUIManager.default.md#buyhat)
- [centerCoords](Backend_GameLogic_GameUIManager.default.md#centercoords)
- [centerLocationId](Backend_GameLogic_GameUIManager.default.md#centerlocationid)
- [centerPlanet](Backend_GameLogic_GameUIManager.default.md#centerplanet)
- [deactivateArtifact](Backend_GameLogic_GameUIManager.default.md#deactivateartifact)
- [depositArtifact](Backend_GameLogic_GameUIManager.default.md#depositartifact)
- [destroy](Backend_GameLogic_GameUIManager.default.md#destroy)
- [disableCustomRenderer](Backend_GameLogic_GameUIManager.default.md#disablecustomrenderer)
- [disconnectTwitter](Backend_GameLogic_GameUIManager.default.md#disconnecttwitter)
- [discoverBiome](Backend_GameLogic_GameUIManager.default.md#discoverbiome)
- [drawAllRunningPlugins](Backend_GameLogic_GameUIManager.default.md#drawallrunningplugins)
- [findArtifact](Backend_GameLogic_GameUIManager.default.md#findartifact)
- [generateVerificationTweet](Backend_GameLogic_GameUIManager.default.md#generateverificationtweet)
- [get2dRenderer](Backend_GameLogic_GameUIManager.default.md#get2drenderer)
- [getAbandonRangeChangePercent](Backend_GameLogic_GameUIManager.default.md#getabandonrangechangepercent)
- [getAbandonSpeedChangePercent](Backend_GameLogic_GameUIManager.default.md#getabandonspeedchangepercent)
- [getAccount](Backend_GameLogic_GameUIManager.default.md#getaccount)
- [getAllMinerLocations](Backend_GameLogic_GameUIManager.default.md#getallminerlocations)
- [getAllOwnedPlanets](Backend_GameLogic_GameUIManager.default.md#getallownedplanets)
- [getAllPlayers](Backend_GameLogic_GameUIManager.default.md#getallplayers)
- [getAllVoyages](Backend_GameLogic_GameUIManager.default.md#getallvoyages)
- [getArtifactMap](Backend_GameLogic_GameUIManager.default.md#getartifactmap)
- [getArtifactPlanet](Backend_GameLogic_GameUIManager.default.md#getartifactplanet)
- [getArtifactPointValues](Backend_GameLogic_GameUIManager.default.md#getartifactpointvalues)
- [getArtifactSending](Backend_GameLogic_GameUIManager.default.md#getartifactsending)
- [getArtifactUpdated$](Backend_GameLogic_GameUIManager.default.md#getartifactupdated$)
- [getArtifactWithId](Backend_GameLogic_GameUIManager.default.md#getartifactwithid)
- [getArtifactsWithIds](Backend_GameLogic_GameUIManager.default.md#getartifactswithids)
- [getBiomeKey](Backend_GameLogic_GameUIManager.default.md#getbiomekey)
- [getBiomePerlin](Backend_GameLogic_GameUIManager.default.md#getbiomeperlin)
- [getBooleanSetting](Backend_GameLogic_GameUIManager.default.md#getbooleansetting)
- [getCaptureZoneGenerator](Backend_GameLogic_GameUIManager.default.md#getcapturezonegenerator)
- [getCaptureZonePointValues](Backend_GameLogic_GameUIManager.default.md#getcapturezonepointvalues)
- [getCaptureZones](Backend_GameLogic_GameUIManager.default.md#getcapturezones)
- [getChunk](Backend_GameLogic_GameUIManager.default.md#getchunk)
- [getContractAddress](Backend_GameLogic_GameUIManager.default.md#getcontractaddress)
- [getDefaultSpaceJunkForPlanetLevel](Backend_GameLogic_GameUIManager.default.md#getdefaultspacejunkforplanetlevel)
- [getDiagnostics](Backend_GameLogic_GameUIManager.default.md#getdiagnostics)
- [getDiscoverBiomeName](Backend_GameLogic_GameUIManager.default.md#getdiscoverbiomename)
- [getDistCoords](Backend_GameLogic_GameUIManager.default.md#getdistcoords)
- [getEndTimeSeconds](Backend_GameLogic_GameUIManager.default.md#getendtimeseconds)
- [getEnergyArrivingForMove](Backend_GameLogic_GameUIManager.default.md#getenergyarrivingformove)
- [getEnergyCurveAtPercent](Backend_GameLogic_GameUIManager.default.md#getenergycurveatpercent)
- [getEnergyOfPlayer](Backend_GameLogic_GameUIManager.default.md#getenergyofplayer)
- [getEthConnection](Backend_GameLogic_GameUIManager.default.md#getethconnection)
- [getExploredChunks](Backend_GameLogic_GameUIManager.default.md#getexploredchunks)
- [getForcesSending](Backend_GameLogic_GameUIManager.default.md#getforcessending)
- [getGameManager](Backend_GameLogic_GameUIManager.default.md#getgamemanager)
- [getGameObjects](Backend_GameLogic_GameUIManager.default.md#getgameobjects)
- [getGlManager](Backend_GameLogic_GameUIManager.default.md#getglmanager)
- [getHashConfig](Backend_GameLogic_GameUIManager.default.md#gethashconfig)
- [getHashesPerSec](Backend_GameLogic_GameUIManager.default.md#gethashespersec)
- [getHomeCoords](Backend_GameLogic_GameUIManager.default.md#gethomecoords)
- [getHomeHash](Backend_GameLogic_GameUIManager.default.md#gethomehash)
- [getHomePlanet](Backend_GameLogic_GameUIManager.default.md#gethomeplanet)
- [getHoveringOverCoords](Backend_GameLogic_GameUIManager.default.md#gethoveringovercoords)
- [getHoveringOverPlanet](Backend_GameLogic_GameUIManager.default.md#gethoveringoverplanet)
- [getIsChoosingTargetPlanet](Backend_GameLogic_GameUIManager.default.md#getischoosingtargetplanet)
- [getIsHighPerfMode](Backend_GameLogic_GameUIManager.default.md#getishighperfmode)
- [getLocationOfPlanet](Backend_GameLogic_GameUIManager.default.md#getlocationofplanet)
- [getLocationsAndChunks](Backend_GameLogic_GameUIManager.default.md#getlocationsandchunks)
- [getMinerLocation](Backend_GameLogic_GameUIManager.default.md#getminerlocation)
- [getMiningPattern](Backend_GameLogic_GameUIManager.default.md#getminingpattern)
- [getModalManager](Backend_GameLogic_GameUIManager.default.md#getmodalmanager)
- [getMouseDownCoords](Backend_GameLogic_GameUIManager.default.md#getmousedowncoords)
- [getMouseDownPlanet](Backend_GameLogic_GameUIManager.default.md#getmousedownplanet)
- [getMyArtifactMap](Backend_GameLogic_GameUIManager.default.md#getmyartifactmap)
- [getMyArtifacts](Backend_GameLogic_GameUIManager.default.md#getmyartifacts)
- [getMyArtifactsNotOnPlanet](Backend_GameLogic_GameUIManager.default.md#getmyartifactsnotonplanet)
- [getMyBalance](Backend_GameLogic_GameUIManager.default.md#getmybalance)
- [getMyBalance$](Backend_GameLogic_GameUIManager.default.md#getmybalance$)
- [getMyBalanceBn](Backend_GameLogic_GameUIManager.default.md#getmybalancebn)
- [getMyPlanetMap](Backend_GameLogic_GameUIManager.default.md#getmyplanetmap)
- [getMyScore](Backend_GameLogic_GameUIManager.default.md#getmyscore)
- [getNextBroadcastAvailableTimestamp](Backend_GameLogic_GameUIManager.default.md#getnextbroadcastavailabletimestamp)
- [getOverlayContainer](Backend_GameLogic_GameUIManager.default.md#getoverlaycontainer)
- [getPaused](Backend_GameLogic_GameUIManager.default.md#getpaused)
- [getPaused$](Backend_GameLogic_GameUIManager.default.md#getpaused$)
- [getPerlinConfig](Backend_GameLogic_GameUIManager.default.md#getperlinconfig)
- [getPerlinThresholds](Backend_GameLogic_GameUIManager.default.md#getperlinthresholds)
- [getPlanetHoveringInRenderer](Backend_GameLogic_GameUIManager.default.md#getplanethoveringinrenderer)
- [getPlanetLevel](Backend_GameLogic_GameUIManager.default.md#getplanetlevel)
- [getPlanetMap](Backend_GameLogic_GameUIManager.default.md#getplanetmap)
- [getPlanetWithCoords](Backend_GameLogic_GameUIManager.default.md#getplanetwithcoords)
- [getPlanetWithId](Backend_GameLogic_GameUIManager.default.md#getplanetwithid)
- [getPlanetsInViewport](Backend_GameLogic_GameUIManager.default.md#getplanetsinviewport)
- [getPlayer](Backend_GameLogic_GameUIManager.default.md#getplayer)
- [getPlayerScore](Backend_GameLogic_GameUIManager.default.md#getplayerscore)
- [getPluginManager](Backend_GameLogic_GameUIManager.default.md#getpluginmanager)
- [getPreviousSelectedPlanet](Backend_GameLogic_GameUIManager.default.md#getpreviousselectedplanet)
- [getPrivateKey](Backend_GameLogic_GameUIManager.default.md#getprivatekey)
- [getRadiusOfPlanetLevel](Backend_GameLogic_GameUIManager.default.md#getradiusofplanetlevel)
- [getRangeBuff](B
gitextract_e9nah5ci/ ├── .babelrc ├── .dockerignore ├── .eslintignore ├── .gitignore ├── .nvmrc ├── .prettierignore ├── LICENSE ├── README.md ├── docs/ │ ├── README.md │ ├── classes/ │ │ ├── Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md │ │ ├── Backend_GameLogic_ContractsAPI.ContractsAPI.md │ │ ├── Backend_GameLogic_GameManager.default.md │ │ ├── Backend_GameLogic_GameObjects.GameObjects.md │ │ ├── Backend_GameLogic_GameUIManager.default.md │ │ ├── Backend_GameLogic_InitialGameStateDownloader.InitialGameStateDownloader.md │ │ ├── Backend_GameLogic_LayeredMap.LayeredMap.md │ │ ├── Backend_GameLogic_PluginManager.PluginManager.md │ │ ├── Backend_GameLogic_PluginManager.ProcessInfo.md │ │ ├── Backend_GameLogic_TutorialManager.default.md │ │ ├── Backend_GameLogic_ViewportEntities.ViewportEntities.md │ │ ├── Backend_Miner_MinerManager.HomePlanetMinerChunkStore.md │ │ ├── Backend_Miner_MinerManager.default.md │ │ ├── Backend_Miner_MiningPatterns.SpiralPattern.md │ │ ├── Backend_Miner_MiningPatterns.SwissCheesePattern.md │ │ ├── Backend_Miner_MiningPatterns.TowardsCenterPattern.md │ │ ├── Backend_Miner_MiningPatterns.TowardsCenterPatternV2.md │ │ ├── Backend_Network_EventLogger.EventLogger.md │ │ ├── Backend_Storage_PersistentChunkStore.default.md │ │ ├── Backend_Storage_ReaderDataStore.default.md │ │ ├── Backend_Utils_SnarkArgsHelper.default.md │ │ ├── Backend_Utils_Wrapper.Wrapper.md │ │ ├── Frontend_Components_Btn.DarkForestButton.md │ │ ├── Frontend_Components_Btn.DarkForestShortcutButton.md │ │ ├── Frontend_Components_Btn.ShortcutPressedEvent.md │ │ ├── Frontend_Components_Input.DarkForestCheckbox.md │ │ ├── Frontend_Components_Input.DarkForestColorInput.md │ │ ├── Frontend_Components_Input.DarkForestNumberInput.md │ │ ├── Frontend_Components_Input.DarkForestTextInput.md │ │ ├── Frontend_Components_Modal.DarkForestModal.md │ │ ├── Frontend_Components_Modal.PositionChangedEvent.md │ │ ├── Frontend_Components_Slider.DarkForestSlider.md │ │ ├── Frontend_Components_Slider.DarkForestSliderHandle.md │ │ ├── Frontend_Game_ModalManager.default.md │ │ ├── Frontend_Game_NotificationManager.default.md │ │ ├── Frontend_Game_Viewport.default.md │ │ ├── Frontend_Panes_Lobbies_Reducer.InvalidConfigError.md │ │ ├── Frontend_Renderers_Artifacts_ArtifactRenderer.ArtifactRenderer.md │ │ ├── Frontend_Renderers_GifRenderer.GifRenderer.md │ │ ├── Frontend_Utils_UIEmitter.default.md │ │ ├── Frontend_Views_DFErrorBoundary.DFErrorBoundary.md │ │ └── Frontend_Views_GenericErrorBoundary.GenericErrorBoundary.md │ ├── enums/ │ │ ├── Backend_GameLogic_GameManager.GameManagerEvent.md │ │ ├── Backend_GameLogic_GameUIManager.GameUIManagerEvent.md │ │ ├── Backend_GameLogic_TutorialManager.TutorialManagerEvent.md │ │ ├── Backend_GameLogic_TutorialManager.TutorialState.md │ │ ├── Backend_Miner_MinerManager.MinerManagerEvent.md │ │ ├── Backend_Miner_MiningPatterns.MiningPatternType.md │ │ ├── Backend_Network_EventLogger.EventType.md │ │ ├── Backend_Network_UtilityServerAPI.EmailResponse.md │ │ ├── Backend_Storage_ReaderDataStore.SinglePlanetDataStoreEvent.md │ │ ├── Frontend_Components_Email.EmailCTAMode.md │ │ ├── Frontend_Components_GameLandingPageComponents.InitRenderState.md │ │ ├── Frontend_Game_NotificationManager.NotificationManagerEvent.md │ │ ├── Frontend_Game_NotificationManager.NotificationType.md │ │ ├── Frontend_Pages_LandingPage.LandingPageZIndex.md │ │ ├── Frontend_Pages_UnsubscribePage.LandingPageZIndex.md │ │ ├── Frontend_Utils_BrowserChecks.Incompatibility.md │ │ ├── Frontend_Utils_TerminalTypes.TerminalTextStyle.md │ │ ├── Frontend_Utils_UIEmitter.UIEmitterEvent.md │ │ ├── Frontend_Utils_constants.DFZIndex.md │ │ ├── Frontend_Views_PlanetNotifications.PlanetNotifType.md │ │ ├── types_darkforest_api_ContractsAPITypes.ContractEvent.md │ │ ├── types_darkforest_api_ContractsAPITypes.ContractsAPIEvent.md │ │ ├── types_darkforest_api_ContractsAPITypes.InitArgIdxs.md │ │ ├── types_darkforest_api_ContractsAPITypes.MoveArgIdxs.md │ │ ├── types_darkforest_api_ContractsAPITypes.PlanetEventType.md │ │ ├── types_darkforest_api_ContractsAPITypes.UpgradeArgIdxs.md │ │ ├── types_darkforest_api_ContractsAPITypes.ZKArgIdx.md │ │ └── types_global_GlobalTypes.StatIdx.md │ ├── interfaces/ │ │ ├── Backend_GameLogic_ArrivalUtils.PlanetDiff.md │ │ ├── Backend_GameLogic_InitialGameStateDownloader.InitialGameState.md │ │ ├── Backend_Miner_MiningPatterns.MiningPattern.md │ │ ├── Backend_Network_AccountManager.Account.md │ │ ├── Backend_Plugins_EmbeddedPluginLoader.EmbeddedPlugin.md │ │ ├── Backend_Plugins_PluginProcess.PluginProcess.md │ │ ├── Backend_Plugins_SerializedPlugin.SerializedPlugin.md │ │ ├── Frontend_Components_TextLoadingBar.LoadingBarHandle.md │ │ ├── Frontend_Panes_Lobbies_LobbiesUtils.LobbiesPaneProps.md │ │ ├── Frontend_Panes_Tooltip.TooltipProps.md │ │ ├── Frontend_Panes_Tooltip.TooltipTriggerProps.md │ │ ├── Frontend_Utils_EmitterUtils.Diff.md │ │ ├── Frontend_Views_ModalPane.ModalFrame.md │ │ ├── Frontend_Views_ModalPane.ModalHandle.md │ │ ├── Frontend_Views_Share.ShareProps.md │ │ ├── Frontend_Views_Terminal.TerminalHandle.md │ │ ├── Frontend_Views_Terminal.TerminalProps.md │ │ ├── types_darkforest_api_ChunkStoreTypes.ChunkStore.md │ │ ├── types_darkforest_api_ChunkStoreTypes.PersistedChunk.md │ │ ├── types_darkforest_api_ChunkStoreTypes.PersistedLocation.md │ │ ├── types_darkforest_api_ContractsAPITypes.ContractConstants.md │ │ ├── types_global_GlobalTypes.ClaimCountdownInfo.md │ │ ├── types_global_GlobalTypes.MinerWorkerMessage.md │ │ └── types_global_GlobalTypes.RevealCountdownInfo.md │ └── modules/ │ ├── Backend_GameLogic_ArrivalUtils.md │ ├── Backend_GameLogic_CaptureZoneGenerator.md │ ├── Backend_GameLogic_ContractsAPI.md │ ├── Backend_GameLogic_GameManager.md │ ├── Backend_GameLogic_GameObjects.md │ ├── Backend_GameLogic_GameUIManager.md │ ├── Backend_GameLogic_InitialGameStateDownloader.md │ ├── Backend_GameLogic_LayeredMap.md │ ├── Backend_GameLogic_PluginManager.md │ ├── Backend_GameLogic_TutorialManager.md │ ├── Backend_GameLogic_ViewportEntities.md │ ├── Backend_Miner_ChunkUtils.md │ ├── Backend_Miner_MinerManager.md │ ├── Backend_Miner_MiningPatterns.md │ ├── Backend_Miner_permutation.md │ ├── Backend_Network_AccountManager.md │ ├── Backend_Network_Blockchain.md │ ├── Backend_Network_EventLogger.md │ ├── Backend_Network_LeaderboardApi.md │ ├── Backend_Network_MessageAPI.md │ ├── Backend_Network_NetworkHealthApi.md │ ├── Backend_Network_UtilityServerAPI.md │ ├── Backend_Plugins_EmbeddedPluginLoader.md │ ├── Backend_Plugins_PluginProcess.md │ ├── Backend_Plugins_PluginTemplate.md │ ├── Backend_Plugins_SerializedPlugin.md │ ├── Backend_Storage_PersistentChunkStore.md │ ├── Backend_Storage_ReaderDataStore.md │ ├── Backend_Utils_Animation.md │ ├── Backend_Utils_Coordinates.md │ ├── Backend_Utils_SnarkArgsHelper.md │ ├── Backend_Utils_Utils.md │ ├── Backend_Utils_WhitelistSnarkArgsHelper.md │ ├── Backend_Utils_Wrapper.md │ ├── Frontend_Components_AncientLabel.md │ ├── Frontend_Components_ArtifactImage.md │ ├── Frontend_Components_BiomeAnims.md │ ├── Frontend_Components_Btn.md │ ├── Frontend_Components_Button.md │ ├── Frontend_Components_CapturePlanetButton.md │ ├── Frontend_Components_CoreUI.md │ ├── Frontend_Components_Corner.md │ ├── Frontend_Components_DisplayGasPrices.md │ ├── Frontend_Components_Email.md │ ├── Frontend_Components_GameLandingPageComponents.md │ ├── Frontend_Components_GameWindowComponents.md │ ├── Frontend_Components_Icons.md │ ├── Frontend_Components_Input.md │ ├── Frontend_Components_Labels_ArtifactLabels.md │ ├── Frontend_Components_Labels_BiomeLabels.md │ ├── Frontend_Components_Labels_KeywordLabels.md │ ├── Frontend_Components_Labels_Labels.md │ ├── Frontend_Components_Labels_LavaLabel.md │ ├── Frontend_Components_Labels_LegendaryLabel.md │ ├── Frontend_Components_Labels_MythicLabel.md │ ├── Frontend_Components_Labels_PlanetLabels.md │ ├── Frontend_Components_Labels_SpacetimeRipLabel.md │ ├── Frontend_Components_Labels_WastelandLabel.md │ ├── Frontend_Components_LoadingSpinner.md │ ├── Frontend_Components_MaybeShortcutButton.md │ ├── Frontend_Components_MineArtifactButton.md │ ├── Frontend_Components_Modal.md │ ├── Frontend_Components_OpenPaneButtons.md │ ├── Frontend_Components_PluginModal.md │ ├── Frontend_Components_ReadMore.md │ ├── Frontend_Components_RemoteModal.md │ ├── Frontend_Components_Row.md │ ├── Frontend_Components_Slider.md │ ├── Frontend_Components_Text.md │ ├── Frontend_Components_TextLoadingBar.md │ ├── Frontend_Components_TextPreview.md │ ├── Frontend_Components_Theme.md │ ├── Frontend_Components_TimeUntil.md │ ├── Frontend_Game_ControllableCanvas.md │ ├── Frontend_Game_ModalManager.md │ ├── Frontend_Game_NotificationManager.md │ ├── Frontend_Game_Popups.md │ ├── Frontend_Game_Viewport.md │ ├── Frontend_Pages_App.md │ ├── Frontend_Pages_CreateLobby.md │ ├── Frontend_Pages_EventsPage.md │ ├── Frontend_Pages_GameLandingPage.md │ ├── Frontend_Pages_GifMaker.md │ ├── Frontend_Pages_LandingPage.md │ ├── Frontend_Pages_LoadingPage.md │ ├── Frontend_Pages_LobbyLandingPage.md │ ├── Frontend_Pages_NotFoundPage.md │ ├── Frontend_Pages_ShareArtifact.md │ ├── Frontend_Pages_SharePlanet.md │ ├── Frontend_Pages_TestArtifactImages.md │ ├── Frontend_Pages_TxConfirmPopup.md │ ├── Frontend_Pages_UnsubscribePage.md │ ├── Frontend_Pages_ValhallaPage.md │ ├── Frontend_Panes_ArtifactCard.md │ ├── Frontend_Panes_ArtifactDetailsPane.md │ ├── Frontend_Panes_ArtifactHoverPane.md │ ├── Frontend_Panes_ArtifactsList.md │ ├── Frontend_Panes_BroadcastPane.md │ ├── Frontend_Panes_CoordsPane.md │ ├── Frontend_Panes_DiagnosticsPane.md │ ├── Frontend_Panes_ExplorePane.md │ ├── Frontend_Panes_HatPane.md │ ├── Frontend_Panes_HelpPane.md │ ├── Frontend_Panes_HoverPane.md │ ├── Frontend_Panes_HoverPlanetPane.md │ ├── Frontend_Panes_Lobbies_AdminPermissionsPane.md │ ├── Frontend_Panes_Lobbies_ArtifactSettingsPane.md │ ├── Frontend_Panes_Lobbies_CaptureZonesPane.md │ ├── Frontend_Panes_Lobbies_ConfigurationPane.md │ ├── Frontend_Panes_Lobbies_GameSettingsPane.md │ ├── Frontend_Panes_Lobbies_LobbiesUtils.md │ ├── Frontend_Panes_Lobbies_MinimapPane.md │ ├── Frontend_Panes_Lobbies_MinimapUtils.md │ ├── Frontend_Panes_Lobbies_PlanetPane.md │ ├── Frontend_Panes_Lobbies_PlayerSpawnPane.md │ ├── Frontend_Panes_Lobbies_Reducer.md │ ├── Frontend_Panes_Lobbies_SnarkPane.md │ ├── Frontend_Panes_Lobbies_SpaceJunkPane.md │ ├── Frontend_Panes_Lobbies_SpaceTypeBiomePane.md │ ├── Frontend_Panes_Lobbies_WorldSizePane.md │ ├── Frontend_Panes_ManagePlanetArtifacts_ArtifactActions.md │ ├── Frontend_Panes_ManagePlanetArtifacts_ManageArtifacts.md │ ├── Frontend_Panes_ManagePlanetArtifacts_ManagePlanetArtifactsPane.md │ ├── Frontend_Panes_ManagePlanetArtifacts_SortBy.md │ ├── Frontend_Panes_ManagePlanetArtifacts_UpgradeStatsView.md │ ├── Frontend_Panes_OnboardingPane.md │ ├── Frontend_Panes_PlanetContextPane.md │ ├── Frontend_Panes_PlanetDexPane.md │ ├── Frontend_Panes_PlanetInfoPane.md │ ├── Frontend_Panes_PlayerArtifactsPane.md │ ├── Frontend_Panes_PluginEditorPane.md │ ├── Frontend_Panes_PluginLibraryPane.md │ ├── Frontend_Panes_PrivatePane.md │ ├── Frontend_Panes_SettingsPane.md │ ├── Frontend_Panes_Tooltip.md │ ├── Frontend_Panes_TooltipPanes.md │ ├── Frontend_Panes_TransactionLogPane.md │ ├── Frontend_Panes_TutorialPane.md │ ├── Frontend_Panes_TwitterVerifyPane.md │ ├── Frontend_Panes_UpgradeDetailsPane.md │ ├── Frontend_Panes_WikiPane.md │ ├── Frontend_Panes_ZoomPane.md │ ├── Frontend_Renderers_Artifacts_ArtifactRenderer.md │ ├── Frontend_Renderers_GifRenderer.md │ ├── Frontend_Renderers_LandingPageCanvas.md │ ├── Frontend_Renderers_PlanetscapeRenderer_PlanetIcons.md │ ├── Frontend_Styles_Colors.md │ ├── Frontend_Styles_Mixins.md │ ├── Frontend_Styles_dfstyles.md │ ├── Frontend_Utils_AppHooks.md │ ├── Frontend_Utils_BrowserChecks.md │ ├── Frontend_Utils_EmitterHooks.md │ ├── Frontend_Utils_EmitterUtils.md │ ├── Frontend_Utils_Hooks.md │ ├── Frontend_Utils_KeyEmitters.md │ ├── Frontend_Utils_SettingsHooks.md │ ├── Frontend_Utils_ShortcutConstants.md │ ├── Frontend_Utils_TerminalTypes.md │ ├── Frontend_Utils_TimeUtils.md │ ├── Frontend_Utils_UIEmitter.md │ ├── Frontend_Utils_constants.md │ ├── Frontend_Utils_createDefinedContext.md │ ├── Frontend_Views_ArtifactLink.md │ ├── Frontend_Views_ArtifactRow.md │ ├── Frontend_Views_CadetWormhole.md │ ├── Frontend_Views_DFErrorBoundary.md │ ├── Frontend_Views_DarkForestTips.md │ ├── Frontend_Views_EmojiPicker.md │ ├── Frontend_Views_EmojiPlanetNotification.md │ ├── Frontend_Views_GameWindowLayout.md │ ├── Frontend_Views_GenericErrorBoundary.md │ ├── Frontend_Views_LandingPageRoundArt.md │ ├── Frontend_Views_Leaderboard.md │ ├── Frontend_Views_ModalIcon.md │ ├── Frontend_Views_ModalPane.md │ ├── Frontend_Views_NetworkHealth.md │ ├── Frontend_Views_Notifications.md │ ├── Frontend_Views_Paused.md │ ├── Frontend_Views_PlanetCard.md │ ├── Frontend_Views_PlanetCardComponents.md │ ├── Frontend_Views_PlanetLink.md │ ├── Frontend_Views_PlanetNotifications.md │ ├── Frontend_Views_SendResources.md │ ├── Frontend_Views_Share.md │ ├── Frontend_Views_SidebarPane.md │ ├── Frontend_Views_SortableTable.md │ ├── Frontend_Views_TabbedView.md │ ├── Frontend_Views_Table.md │ ├── Frontend_Views_Terminal.md │ ├── Frontend_Views_TopBar.md │ ├── Frontend_Views_UpgradePreview.md │ ├── Frontend_Views_WithdrawSilver.md │ ├── types_darkforest_api_ChunkStoreTypes.md │ ├── types_darkforest_api_ContractsAPITypes.md │ ├── types_darkforest_api_UtilityServerAPITypes.md │ ├── types_file_loader_FileWorkerTypes.__darkforest_eth_contracts_abis___json_.md │ ├── types_file_loader_FileWorkerTypes.__darkforest_eth_snarks___wasm_.md │ ├── types_file_loader_FileWorkerTypes.__darkforest_eth_snarks___zkey_.md │ ├── types_file_loader_FileWorkerTypes.md │ └── types_global_GlobalTypes.md ├── embedded_plugins/ │ ├── Admin-Controls.ts │ ├── Getting-Started.ts │ ├── Locate-Artifacts.ts │ ├── Rage-Cage.ts │ ├── Remote-Explorer.ts │ └── Renderer-Showcase.ts ├── index.html ├── last_updated.txt ├── netlify.toml ├── package.json ├── plugins/ │ ├── PluginTemplate.ts │ ├── README.md │ └── RendererPlugin.md ├── public/ │ ├── manifest.json │ └── robots.txt ├── src/ │ ├── Backend/ │ │ ├── GameLogic/ │ │ │ ├── ArrivalUtils.ts │ │ │ ├── CaptureZoneGenerator.ts │ │ │ ├── ContractsAPI.ts │ │ │ ├── GameManager.ts │ │ │ ├── GameObjects.ts │ │ │ ├── GameUIManager.ts │ │ │ ├── InitialGameStateDownloader.tsx │ │ │ ├── LayeredMap.ts │ │ │ ├── PluginManager.tsx │ │ │ ├── TutorialManager.ts │ │ │ └── ViewportEntities.ts │ │ ├── Miner/ │ │ │ ├── ChunkUtils.ts │ │ │ ├── MinerManager.ts │ │ │ ├── MiningPatterns.ts │ │ │ ├── miner.worker.ts │ │ │ └── permutation.ts │ │ ├── Network/ │ │ │ ├── AccountManager.ts │ │ │ ├── Blockchain.ts │ │ │ ├── EventLogger.ts │ │ │ ├── LeaderboardApi.ts │ │ │ ├── MessageAPI.ts │ │ │ ├── NetworkHealthApi.ts │ │ │ └── UtilityServerAPI.ts │ │ ├── Plugins/ │ │ │ ├── EmbeddedPluginLoader.ts │ │ │ ├── PluginProcess.ts │ │ │ ├── PluginTemplate.ts │ │ │ └── SerializedPlugin.ts │ │ ├── Storage/ │ │ │ ├── PersistentChunkStore.ts │ │ │ └── ReaderDataStore.ts │ │ └── Utils/ │ │ ├── Animation.ts │ │ ├── Coordinates.ts │ │ ├── SnarkArgsHelper.ts │ │ ├── Utils.ts │ │ ├── WhitelistSnarkArgsHelper.ts │ │ └── Wrapper.ts │ ├── Frontend/ │ │ ├── Components/ │ │ │ ├── AncientLabel.tsx │ │ │ ├── ArtifactImage.tsx │ │ │ ├── BiomeAnims.tsx │ │ │ ├── Btn.tsx │ │ │ ├── Button.tsx │ │ │ ├── CapturePlanetButton.tsx │ │ │ ├── CoreUI.tsx │ │ │ ├── Corner.tsx │ │ │ ├── DisplayGasPrices.tsx │ │ │ ├── Email.tsx │ │ │ ├── GameLandingPageComponents.tsx │ │ │ ├── GameWindowComponents.tsx │ │ │ ├── Icons.tsx │ │ │ ├── Input.tsx │ │ │ ├── Labels/ │ │ │ │ ├── ArtifactLabels.tsx │ │ │ │ ├── BiomeLabels.tsx │ │ │ │ ├── KeywordLabels.tsx │ │ │ │ ├── Labels.tsx │ │ │ │ ├── LavaLabel.tsx │ │ │ │ ├── LegendaryLabel.tsx │ │ │ │ ├── MythicLabel.tsx │ │ │ │ ├── PlanetLabels.tsx │ │ │ │ ├── SpacetimeRipLabel.tsx │ │ │ │ └── WastelandLabel.tsx │ │ │ ├── LoadingSpinner.tsx │ │ │ ├── MaybeShortcutButton.tsx │ │ │ ├── MineArtifactButton.tsx │ │ │ ├── Modal.tsx │ │ │ ├── OpenPaneButtons.tsx │ │ │ ├── PluginModal.tsx │ │ │ ├── ReadMore.tsx │ │ │ ├── RemoteModal.tsx │ │ │ ├── Row.tsx │ │ │ ├── Slider.tsx │ │ │ ├── Text.tsx │ │ │ ├── TextLoadingBar.tsx │ │ │ ├── TextPreview.tsx │ │ │ ├── Theme.tsx │ │ │ └── TimeUntil.tsx │ │ ├── EntryPoints/ │ │ │ └── index.tsx │ │ ├── Game/ │ │ │ ├── ControllableCanvas.tsx │ │ │ ├── ModalManager.ts │ │ │ ├── NotificationManager.tsx │ │ │ ├── Popups.ts │ │ │ └── Viewport.ts │ │ ├── Pages/ │ │ │ ├── App.tsx │ │ │ ├── CreateLobby.tsx │ │ │ ├── EventsPage.tsx │ │ │ ├── GameLandingPage.tsx │ │ │ ├── GifMaker.tsx │ │ │ ├── LandingPage.tsx │ │ │ ├── LoadingPage.tsx │ │ │ ├── LobbyLandingPage.tsx │ │ │ ├── NotFoundPage.tsx │ │ │ ├── ShareArtifact.tsx │ │ │ ├── SharePlanet.tsx │ │ │ ├── TestArtifactImages.tsx │ │ │ ├── TxConfirmPopup.tsx │ │ │ ├── UnsubscribePage.tsx │ │ │ └── ValhallaPage.tsx │ │ ├── Panes/ │ │ │ ├── ArtifactCard.tsx │ │ │ ├── ArtifactDetailsPane.tsx │ │ │ ├── ArtifactHoverPane.tsx │ │ │ ├── ArtifactsList.tsx │ │ │ ├── BroadcastPane.tsx │ │ │ ├── CoordsPane.tsx │ │ │ ├── DiagnosticsPane.tsx │ │ │ ├── ExplorePane.tsx │ │ │ ├── HatPane.tsx │ │ │ ├── HelpPane.tsx │ │ │ ├── HoverPane.tsx │ │ │ ├── HoverPlanetPane.tsx │ │ │ ├── Lobbies/ │ │ │ │ ├── AdminPermissionsPane.tsx │ │ │ │ ├── ArtifactSettingsPane.tsx │ │ │ │ ├── CaptureZonesPane.tsx │ │ │ │ ├── ConfigurationPane.tsx │ │ │ │ ├── GameSettingsPane.tsx │ │ │ │ ├── LobbiesUtils.tsx │ │ │ │ ├── MinimapPane.tsx │ │ │ │ ├── MinimapUtils.ts │ │ │ │ ├── PlanetPane.tsx │ │ │ │ ├── PlayerSpawnPane.tsx │ │ │ │ ├── Reducer.ts │ │ │ │ ├── SnarkPane.tsx │ │ │ │ ├── SpaceJunkPane.tsx │ │ │ │ ├── SpaceTypeBiomePane.tsx │ │ │ │ ├── WorldSizePane.tsx │ │ │ │ └── minimap.worker.ts │ │ │ ├── ManagePlanetArtifacts/ │ │ │ │ ├── ArtifactActions.tsx │ │ │ │ ├── ManageArtifacts.tsx │ │ │ │ ├── ManagePlanetArtifactsPane.tsx │ │ │ │ ├── SortBy.tsx │ │ │ │ └── UpgradeStatsView.tsx │ │ │ ├── OnboardingPane.tsx │ │ │ ├── PlanetContextPane.tsx │ │ │ ├── PlanetDexPane.tsx │ │ │ ├── PlanetInfoPane.tsx │ │ │ ├── PlayerArtifactsPane.tsx │ │ │ ├── PluginEditorPane.tsx │ │ │ ├── PluginLibraryPane.tsx │ │ │ ├── PrivatePane.tsx │ │ │ ├── SettingsPane.tsx │ │ │ ├── Tooltip.tsx │ │ │ ├── TooltipPanes.tsx │ │ │ ├── TransactionLogPane.tsx │ │ │ ├── TutorialPane.tsx │ │ │ ├── TwitterVerifyPane.tsx │ │ │ ├── UpgradeDetailsPane.tsx │ │ │ ├── WikiPane.tsx │ │ │ └── ZoomPane.tsx │ │ ├── Renderers/ │ │ │ ├── Artifacts/ │ │ │ │ └── ArtifactRenderer.ts │ │ │ ├── GifRenderer.ts │ │ │ ├── LandingPageCanvas.tsx │ │ │ └── PlanetscapeRenderer/ │ │ │ └── PlanetIcons.tsx │ │ ├── Styles/ │ │ │ ├── Colors.tsx │ │ │ ├── Mixins.tsx │ │ │ ├── dfstyles.ts │ │ │ ├── font/ │ │ │ │ ├── generator_config.txt │ │ │ │ ├── perfect_dos_vga_437-demo.html │ │ │ │ ├── specimen_files/ │ │ │ │ │ ├── grid_12-825-55-15.css │ │ │ │ │ └── specimen_stylesheet.css │ │ │ │ └── stylesheet.css │ │ │ ├── icomoon/ │ │ │ │ └── style.css │ │ │ ├── preflight.css │ │ │ └── style.css │ │ ├── Utils/ │ │ │ ├── AppHooks.ts │ │ │ ├── BrowserChecks.ts │ │ │ ├── EmitterHooks.ts │ │ │ ├── EmitterUtils.ts │ │ │ ├── Hooks.tsx │ │ │ ├── KeyEmitters.ts │ │ │ ├── SettingsHooks.tsx │ │ │ ├── ShortcutConstants.ts │ │ │ ├── TerminalTypes.ts │ │ │ ├── TimeUtils.ts │ │ │ ├── UIEmitter.ts │ │ │ ├── constants.ts │ │ │ └── createDefinedContext.ts │ │ └── Views/ │ │ ├── ArtifactLink.tsx │ │ ├── ArtifactRow.tsx │ │ ├── CadetWormhole.tsx │ │ ├── DFErrorBoundary.tsx │ │ ├── DarkForestTips.tsx │ │ ├── EmojiPicker.tsx │ │ ├── EmojiPlanetNotification.tsx │ │ ├── GameWindowLayout.tsx │ │ ├── GenericErrorBoundary.tsx │ │ ├── LandingPageRoundArt.tsx │ │ ├── Leaderboard.tsx │ │ ├── ModalIcon.tsx │ │ ├── ModalPane.tsx │ │ ├── NetworkHealth.tsx │ │ ├── Notifications.tsx │ │ ├── Paused.tsx │ │ ├── PlanetCard.tsx │ │ ├── PlanetCardComponents.tsx │ │ ├── PlanetLink.tsx │ │ ├── PlanetNotifications.tsx │ │ ├── SendResources.tsx │ │ ├── Share.tsx │ │ ├── SidebarPane.tsx │ │ ├── SortableTable.tsx │ │ ├── TabbedView.tsx │ │ ├── Table.tsx │ │ ├── Terminal.tsx │ │ ├── TopBar.tsx │ │ ├── UpgradePreview.tsx │ │ └── WithdrawSilver.tsx │ └── _types/ │ ├── darkforest/ │ │ └── api/ │ │ ├── ChunkStoreTypes.ts │ │ ├── ContractsAPITypes.ts │ │ └── UtilityServerAPITypes.ts │ ├── file-loader/ │ │ └── FileWorkerTypes.ts │ └── global/ │ ├── GlobalTypes.ts │ └── global.d.ts ├── tsconfig.decs.json ├── tsconfig.json ├── tsconfig.ref.json └── webpack.config.js
SYMBOL INDEX (1490 symbols across 193 files)
FILE: embedded_plugins/Admin-Controls.ts
function random256Id (line 41) | function random256Id() {
function createArtifact (line 50) | async function createArtifact(
function initPlanet (line 90) | async function initPlanet(planet: LocatablePlanet) {
function spawnSpaceship (line 106) | async function spawnSpaceship(
function takeOwnership (line 136) | async function takeOwnership(
function pauseGame (line 171) | async function pauseGame() {
function unpauseGame (line 181) | async function unpauseGame() {
function addAddressToWhitelist (line 191) | async function addAddressToWhitelist(address: EthAddress) {
function createPlanet (line 203) | async function createPlanet(coords: WorldCoords, level: number, type: Pl...
function PlanetLink (line 242) | function PlanetLink({ planetId }: { planetId?: LocationId }) {
function Heading (line 255) | function Heading({ title }: { title: string }) {
function shipOptions (line 259) | function shipOptions() {
function artifactOptions (line 267) | function artifactOptions() {
function artifactRarityOptions (line 275) | function artifactRarityOptions() {
function artifactBiomeOptions (line 283) | function artifactBiomeOptions() {
function accountOptions (line 291) | function accountOptions(players: Player[]) {
function planetTypeOptions (line 300) | function planetTypeOptions() {
function Select (line 308) | function Select({
function PlanetCreator (line 352) | function PlanetCreator() {
function App (line 432) | function App() {
class Plugin (line 602) | class Plugin implements DFPlugin {
method render (line 603) | async render(container: HTMLDivElement) {
FILE: embedded_plugins/Getting-Started.ts
class Readme (line 25) | class Readme implements DFPlugin {
method constructor (line 31) | constructor() {
method render (line 42) | async render(div: HTMLDivElement) {
method destroy (line 80) | destroy() {
FILE: embedded_plugins/Locate-Artifacts.ts
class ArtifactsFinder (line 10) | class ArtifactsFinder implements DFPlugin {
method render (line 57) | async render(container: HTMLDivElement) {
FILE: embedded_plugins/Rage-Cage.ts
class RageCage (line 1) | class RageCage implements DFPlugin {
method render (line 9) | async render(div: HTMLDivElement) {
method draw (line 52) | draw(ctx: CanvasRenderingContext2D) {
FILE: embedded_plugins/Remote-Explorer.ts
type ExtendedMinerManager (line 15) | type ExtendedMinerManager = MinerManager & {
constant NEW_CHUNK (line 30) | const NEW_CHUNK = 'DiscoveredNewChunk';
function getPattern (line 32) | function getPattern(coords: WorldCoords, patternType: string, chunkSize:...
class RemoteWorker (line 44) | class RemoteWorker implements Worker {
method constructor (line 47) | constructor(url: string) {
method postMessage (line 51) | async postMessage(msg: string) {
method onmessage (line 86) | onmessage(_a: { data: string }) {
method terminate (line 89) | terminate() {
method onmessageerror (line 92) | onmessageerror() {
method addEventListener (line 95) | addEventListener() {
method removeEventListener (line 98) | removeEventListener() {
method dispatchEvent (line 101) | dispatchEvent(_event: Event): boolean {
method onerror (line 104) | onerror() {
function Target (line 109) | function Target() {
function MinerUI (line 146) | function MinerUI({
function App (line 240) | function App({
class RemoteExplorerPlugin (line 314) | class RemoteExplorerPlugin implements DFPlugin {
method constructor (line 318) | constructor() {
method render (line 365) | async render(container: HTMLDivElement) {
method destroy (line 381) | destroy() {
FILE: embedded_plugins/Renderer-Showcase.ts
class PlanetRenderer (line 74) | class PlanetRenderer implements PlanetRendererType {
method queuePlanetBody (line 76) | queuePlanetBody(planet: Planet, centerW: WorldCoords, radiusW: number)...
method flush (line 77) | flush(): void {}
class MineRenderer (line 80) | class MineRenderer implements MineRendererType {
method queueMine (line 82) | queueMine(planet: Planet, centerW: WorldCoords, radiusW: number): void {}
method flush (line 83) | flush(): void {}
class SpacetimeRipRenderer (line 86) | class SpacetimeRipRenderer implements SpacetimeRipRendererType {
method queueRip (line 88) | queueRip(planet: Planet, centerW: WorldCoords, radiusW: number): void {}
method flush (line 89) | flush(): void {}
class QuasarRenderer (line 92) | class QuasarRenderer implements QuasarRendererType {
method queueQuasar (line 95) | queueQuasar(planet: Planet, centerW: WorldCoords, radiusW: number): vo...
method flush (line 96) | flush(): void {}
class RuinsRenderer (line 99) | class RuinsRenderer implements RuinsRendererType {
method queueRuins (line 101) | queueRuins(planet: Planet, centerW: WorldCoords, radiusW: number): voi...
method flush (line 102) | flush(): void {}
class AsteroidRenderer (line 104) | class AsteroidRenderer implements AsteroidRendererType {
method queueAsteroid (line 106) | queueAsteroid(planet: Planet, centerW: CanvasCoords, radiusW: number, ...
method flush (line 107) | flush(): void {}
class RingRenderer (line 110) | class RingRenderer implements RingRendererType {
method queueRingAtIdx (line 112) | queueRingAtIdx(
method flush (line 120) | flush(): void {}
class SpriteRenderer (line 123) | class SpriteRenderer implements SpriteRendererType {
method queueArtifactWorld (line 126) | queueArtifactWorld(
method queueArtifact (line 137) | queueArtifact(
method flush (line 146) | flush(): void {}
class BlackDomainRenderer (line 149) | class BlackDomainRenderer implements BlackDomainRendererType {
method queueBlackDomain (line 151) | queueBlackDomain(planet: Planet, centerW: WorldCoords, radiusW: number...
method flush (line 152) | flush(): void {}
class TextRenderer (line 155) | class TextRenderer implements TextRendererType {
method queueTextWorld (line 157) | queueTextWorld(
method flush (line 166) | flush(): void {}
class VoyageRenderer (line 169) | class VoyageRenderer implements VoyageRendererType {
method queueVoyages (line 171) | queueVoyages(): void {}
method flush (line 172) | flush(): void {}
class WormholeRenderer (line 175) | class WormholeRenderer implements WormholeRendererType {
method queueWormholes (line 177) | queueWormholes(): void {}
method flush (line 178) | flush(): void {}
class MineBodyRenderer (line 181) | class MineBodyRenderer implements MineBodyRendererType {
method queueMineScreen (line 183) | queueMineScreen(planet: Planet, center: WorldCoords, radius: number, z...
method flush (line 184) | flush(): void {}
method setUniforms (line 185) | setUniforms(): void {}
class BeltRenderer (line 188) | class BeltRenderer implements BeltRendererType {
method queueBeltAtIdx (line 190) | queueBeltAtIdx(
method flush (line 199) | flush(): void {}
method setUniforms (line 200) | setUniforms(): void {}
class BackgroundRenderer (line 203) | class BackgroundRenderer implements BackgroundRendererType {
method queueChunks (line 205) | queueChunks(
method flush (line 216) | flush(): void {}
class SpaceRenderer (line 219) | class SpaceRenderer implements SpaceRendererType {
method queueChunk (line 221) | queueChunk(chunk: Chunk): void {}
method setColorConfiguration (line 222) | setColorConfiguration(
method flush (line 229) | flush(): void {}
class UnminedRenderer (line 232) | class UnminedRenderer implements UnminedRendererType {
method queueRect (line 234) | queueRect(
method flush (line 241) | flush(): void {}
class PerlinRenderer (line 244) | class PerlinRenderer implements PerlinRendererType {
method queueChunk (line 246) | queueChunk(chunk: Chunk): void {}
method flush (line 247) | flush(): void {}
class LineRenderer (line 250) | class LineRenderer implements LineRendererType {
method queueLineWorld (line 252) | queueLineWorld(
method flush (line 260) | flush(): void {}
class RectRenderer (line 263) | class RectRenderer implements RectRendererType {
method queueRectCenterWorld (line 265) | queueRectCenterWorld(
method flush (line 273) | flush(): void {}
class CircleRenderer (line 276) | class CircleRenderer implements CircleRendererType {
method queueCircleWorld (line 278) | queueCircleWorld(
method queueCircleWorldCenterOnly (line 286) | queueCircleWorldCenterOnly(
method flush (line 291) | flush(): void {}
class UIRenderer (line 294) | class UIRenderer implements UIRendererType {
method queueBorders (line 296) | queueBorders(): void {}
method queueSelectedRangeRing (line 297) | queueSelectedRangeRing(): void {}
method queueSelectedRect (line 298) | queueSelectedRect(): void {}
method queueHoveringRect (line 299) | queueHoveringRect(): void {}
method queueMousePath (line 300) | queueMousePath(): void {}
method drawMiner (line 301) | drawMiner(): void {}
method flush (line 302) | flush(): void {}
class PlanetRenderManager (line 305) | class PlanetRenderManager implements PlanetRenderManagerType {
method queueRangeRings (line 307) | queueRangeRings(planet: LocatablePlanet): void {}
method queuePlanets (line 308) | queuePlanets(
method flush (line 315) | flush(): void {}
class QuasarBodyRenderer (line 318) | class QuasarBodyRenderer implements QuasarBodyRendererType {
method queueQuasarBody (line 320) | queueQuasarBody(
method flush (line 327) | flush(): void {}
class QuasarRayRenderer (line 330) | class QuasarRayRenderer implements QuasarRayRendererType {
method queueQuasarRay (line 332) | queueQuasarRay(
method flush (line 340) | flush(): void {}
class CaptureZoneRenderer (line 343) | class CaptureZoneRenderer implements CaptureZoneRendererType{
method queueCaptureZones (line 346) | queueCaptureZones(): void {}
method flush (line 348) | flush(): void {}
constant GENERIC_PLANET_PROGRAM_DEFINITION (line 373) | const GENERIC_PLANET_PROGRAM_DEFINITION = {
class CirclePlanetRenderer (line 507) | class CirclePlanetRenderer extends GenericRenderer<
method constructor (line 521) | constructor(glManager: GameGLManager, n: number) {
method queuePlanet (line 535) | public queuePlanet(
method queueGenericPlanet (line 595) | public queueGenericPlanet(
method setUniforms (line 608) | public setUniforms() {
method queuePlanetBody (line 613) | public queuePlanetBody(planet: Planet, centerW: WorldCoords, radiusW: ...
method queueMine (line 616) | public queueMine(planet: Planet, centerW: WorldCoords, radiusW: number...
method queueRip (line 619) | public queueRip(planet: Planet, centerW: WorldCoords, radiusW: number)...
method queueQuasar (line 623) | public queueQuasar(planet: Planet, centerW: WorldCoords, radiusW: numb...
method queueRuins (line 627) | public queueRuins(planet: Planet, centerW: WorldCoords, radiusW: numbe...
method queueAsteroid (line 631) | public queueAsteroid(planet: Planet, centerW: CanvasCoords, radiusW: n...
class EmbeddedRendererShowcase (line 640) | class EmbeddedRendererShowcase implements DFPlugin {
method constructor (line 645) | constructor() {
method render (line 662) | async render(div: HTMLDivElement) {
method destroy (line 815) | destroy(): void {
function disable (line 882) | function disable() {
FILE: plugins/PluginTemplate.ts
class PluginTemplate (line 10) | class PluginTemplate implements DFPlugin {
method constructor (line 11) | constructor() {}
method render (line 16) | async render(container: HTMLDivElement) {}
method destroy (line 21) | destroy() {}
FILE: src/Backend/GameLogic/ArrivalUtils.ts
type PlanetDiff (line 138) | interface PlanetDiff {
function getEmojiMessage (line 231) | function getEmojiMessage(
FILE: src/Backend/GameLogic/CaptureZoneGenerator.ts
type CaptureZonesGeneratedEvent (line 7) | type CaptureZonesGeneratedEvent = {
class CaptureZoneGenerator (line 16) | class CaptureZoneGenerator {
method constructor (line 28) | constructor(gameManager: GameManager, gameStartBlock: number, changeIn...
method generate (line 43) | async generate(blockNumber: number) {
method setNextGenerationBlock (line 56) | private setNextGenerationBlock(blockNumber: number) {
method _generate (line 64) | private async _generate(blockNumber: number) {
method updateCapturablePlanets (line 121) | private updateCapturablePlanets() {
method gameObjects (line 132) | private get gameObjects() {
method onNewChunk (line 136) | private onNewChunk(chunk: Chunk) {
method isInZone (line 153) | public isInZone(locationId: LocationId) {
method getNextChangeBlock (line 160) | public getNextChangeBlock() {
method getZones (line 164) | public getZones() {
FILE: src/Backend/GameLogic/ContractsAPI.ts
type ContractsApiConfig (line 59) | interface ContractsApiConfig {
class ContractsAPI (line 70) | class ContractsAPI extends EventEmitter {
method contract (line 97) | get contract() {
method constructor (line 101) | public constructor({ connection, contractAddress }: ContractsApiConfig) {
method getGasFeeForTransaction (line 122) | private getGasFeeForTransaction(tx: Transaction): AutoGasSetting | str...
method beforeQueued (line 145) | private async beforeQueued(
method beforeTransaction (line 179) | private async beforeTransaction(tx: Transaction): Promise<void> {
method afterTransaction (line 183) | private async afterTransaction(_txRequest: Transaction, txDiagnosticIn...
method destroy (line 187) | public destroy(): void {
method makeCall (line 191) | private makeCall<T>(contractViewFunction: ContractFunction<T>, args: u...
method setupEventListeners (line 195) | public async setupEventListeners(): Promise<void> {
method removeEventListeners (line 369) | public removeEventListeners(): void {
method getContractAddress (line 388) | public getContractAddress(): EthAddress {
method getConstants (line 392) | async getConstants(): Promise<ContractConstants> {
method getPlayers (line 564) | public async getPlayers(
method getPlayerById (line 584) | public async getPlayerById(playerId: EthAddress): Promise<Player | und...
method getWorldRadius (line 592) | public async getWorldRadius(): Promise<number> {
method getTokenMintEndTimestamp (line 598) | public async getTokenMintEndTimestamp(): Promise<number> {
method getArrival (line 605) | public async getArrival(arrivalId: number): Promise<QueuedArrival | un...
method getArrivalsForPlanet (line 610) | public async getArrivalsForPlanet(planetId: LocationId): Promise<Queue...
method getAllArrivals (line 618) | public async getAllArrivals(
method getTouchedPlanetIds (line 638) | public async getTouchedPlanetIds(
method getRevealedCoordsByIdIfExists (line 654) | public async getRevealedCoordsByIdIfExists(
method getIsPaused (line 666) | public async getIsPaused(): Promise<boolean> {
method getRevealedPlanetsCoords (line 670) | public async getRevealedPlanetsCoords(
method bulkGetPlanets (line 703) | public async bulkGetPlanets(
method getPlanetById (line 761) | public async getPlanetById(planetId: LocationId): Promise<Planet | und...
method getArtifactById (line 772) | public async getArtifactById(artifactId: ArtifactId): Promise<Artifact...
method bulkGetArtifactsOnPlanets (line 786) | public async bulkGetArtifactsOnPlanets(
method bulkGetArtifacts (line 805) | public async bulkGetArtifacts(
method getPlayerArtifacts (line 825) | public async getPlayerArtifacts(
method setDiagnosticUpdater (line 837) | public setDiagnosticUpdater(diagnosticUpdater?: DiagnosticUpdater) {
method submitTransaction (line 843) | public async submitTransaction<T extends TxIntent>(
method cancelTransaction (line 859) | public cancelTransaction(tx: Transaction): void {
method prioritizeTransaction (line 867) | public prioritizeTransaction(tx: Transaction): void {
method emitTransactionEvents (line 877) | public emitTransactionEvents(tx: Transaction): void {
method getAddress (line 895) | public getAddress() {
function makeContractsAPI (line 900) | async function makeContractsAPI({
FILE: src/Backend/GameLogic/GameManager.ts
type GameManagerEvent (line 149) | enum GameManagerEvent {
class GameManager (line 158) | class GameManager extends EventEmitter {
method planetRarity (line 348) | public get planetRarity(): number {
method constructor (line 357) | private constructor(
method uploadDiagnostics (line 515) | private async uploadDiagnostics() {
method refreshNetworkHealth (line 519) | private async refreshNetworkHealth() {
method refreshScoreboard (line 527) | private async refreshScoreboard() {
method getEthConnection (line 548) | public getEthConnection() {
method destroy (line 552) | public destroy(): void {
method create (line 567) | static async create({
method hardRefreshPlayer (line 871) | private async hardRefreshPlayer(address?: EthAddress): Promise<void> {
method softRefreshPlanet (line 887) | private async softRefreshPlanet(planetId: LocationId): Promise<void> {
method hardRefreshPlanet (line 893) | public async hardRefreshPlanet(planetId: LocationId): Promise<void> {
method bulkHardRefreshPlanets (line 926) | private async bulkHardRefreshPlanets(planetIds: LocationId[]): Promise...
method hardRefreshArtifact (line 970) | public async hardRefreshArtifact(artifactId: ArtifactId): Promise<void> {
method onTxSubmit (line 976) | private onTxSubmit(tx: Transaction): void {
method onTxConfirmed (line 988) | private onTxConfirmed(tx: Transaction) {
method onTxReverted (line 1000) | private onTxReverted(tx: Transaction) {
method onTxCancelled (line 1013) | private onTxCancelled(tx: Transaction) {
method getAccount (line 1030) | public getAccount(): EthAddress | undefined {
method getContractAPI (line 1037) | public getContractAPI(): ContractsAPI {
method getContractAddress (line 1044) | public getContractAddress(): EthAddress {
method getTwitter (line 1052) | public getTwitter(address: EthAddress | undefined): string | undefined {
method getEndTimeSeconds (line 1068) | public getEndTimeSeconds(): number {
method getTokenMintEndTimeSeconds (line 1075) | public getTokenMintEndTimeSeconds(): number {
method getPlanetRarity (line 1082) | public getPlanetRarity(): number {
method getEnergyCurveAtPercent (line 1090) | public getEnergyCurveAtPercent(planet: Planet, percent: number): number {
method getSilverCurveAtPercent (line 1098) | public getSilverCurveAtPercent(planet: Planet, percent: number): numbe...
method getUpgrade (line 1106) | public getUpgrade(branch: number, level: number): Upgrade {
method getAllPlayers (line 1114) | public getAllPlayers(): Player[] {
method getPlayer (line 1122) | public getPlayer(address?: EthAddress): Player | undefined {
method getExploredChunks (line 1136) | public getExploredChunks(): Iterable<Chunk> {
method getPlanetsInWorldRectangle (line 1145) | public getPlanetsInWorldRectangle(
method isRoundOver (line 1168) | public isRoundOver(): boolean {
method getWorldRadius (line 1175) | public getWorldRadius(): number {
method getWorldSilver (line 1182) | public getWorldSilver(): number {
method getUniverseTotalEnergy (line 1192) | public getUniverseTotalEnergy(): number {
method getSilverOfPlayer (line 1202) | public getSilverOfPlayer(player: EthAddress): number {
method getEnergyOfPlayer (line 1211) | public getEnergyOfPlayer(player: EthAddress): number {
method getPlayerScore (line 1217) | public getPlayerScore(addr: EthAddress): number | undefined {
method getPlayerSpaceJunk (line 1222) | public getPlayerSpaceJunk(addr: EthAddress): number | undefined {
method getPlayerSpaceJunkLimit (line 1227) | public getPlayerSpaceJunkLimit(addr: EthAddress): number | undefined {
method getDefaultSpaceJunkForPlanetLevel (line 1232) | public getDefaultSpaceJunkForPlanetLevel(level: number) {
method initMiningManager (line 1236) | private initMiningManager(homeCoords: WorldCoords, cores?: number): vo...
method setMiningPattern (line 1275) | setMiningPattern(pattern: MiningPattern): void {
method getMiningPattern (line 1284) | getMiningPattern(): MiningPattern | undefined {
method setMinerCores (line 1292) | setMinerCores(nCores: number): void {
method isMining (line 1303) | isMining(): boolean {
method setSnarkCacheSize (line 1310) | setSnarkCacheSize(size: number): void {
method getCurrentlyExploringChunk (line 1318) | getCurrentlyExploringChunk(): Rectangle | undefined {
method hasJoinedGame (line 1328) | hasJoinedGame(): boolean {
method getNextRevealCountdownInfo (line 1335) | getNextRevealCountdownInfo(): RevealCountdownInfo {
method getMyArtifacts (line 1350) | getMyArtifacts(): Artifact[] {
method getPlanetWithCoords (line 1367) | getPlanetWithCoords(coords: WorldCoords): LocatablePlanet | undefined {
method getPlanetWithId (line 1376) | getPlanetWithId(planetId: LocationId | undefined): Planet | undefined {
method getPlanetsWithIds (line 1384) | getPlanetsWithIds(planetId: LocationId[]): Planet[] {
method getStalePlanetWithId (line 1388) | getStalePlanetWithId(planetId: LocationId): Planet | undefined {
method getMyScore (line 1395) | getMyScore(): number | undefined {
method getArtifactWithId (line 1406) | getArtifactWithId(artifactId?: ArtifactId): Artifact | undefined {
method getArtifactsWithIds (line 1414) | getArtifactsWithIds(artifactIds: ArtifactId[] = []): Array<Artifact | ...
method getPlanetLevel (line 1422) | getPlanetLevel(planetId: LocationId): PlanetLevel | undefined {
method getLocationOfPlanet (line 1431) | getLocationOfPlanet(planetId: LocationId): WorldLocation | undefined {
method getAllVoyages (line 1438) | getAllVoyages(): QueuedArrival[] {
method getAllPlanets (line 1447) | getAllPlanets(): Iterable<Planet> {
method getAllOwnedPlanets (line 1454) | getAllOwnedPlanets(): Planet[] {
method getMyPlanets (line 1461) | getMyPlanets(): Planet[] {
method getRevealedLocations (line 1468) | getRevealedLocations(): Map<LocationId, RevealedLocation> {
method getClaimedLocations (line 1475) | getClaimedLocations(): Map<LocationId, ClaimedLocation> {
method spaceTypeFromPerlin (line 1483) | spaceTypeFromPerlin(perlin: number): SpaceType {
method getHashesPerSec (line 1490) | getHashesPerSec(): number {
method getSignedTwitter (line 1499) | async getSignedTwitter(twitter: string): Promise<string> {
method getPrivateKey (line 1506) | getPrivateKey(): string | undefined {
method getMyBalanceEth (line 1513) | getMyBalanceEth(): number {
method getMyBalance (line 1521) | getMyBalance(): BigNumber {
method getMyBalance$ (line 1528) | getMyBalance$(): Monomitter<BigNumber> {
method getUnconfirmedMoves (line 1536) | getUnconfirmedMoves(): Transaction<UnconfirmedMove>[] {
method getUnconfirmedUpgrades (line 1544) | getUnconfirmedUpgrades(): Transaction<UnconfirmedUpgrade>[] {
method getUnconfirmedWormholeActivations (line 1548) | getUnconfirmedWormholeActivations(): Transaction<UnconfirmedActivateAr...
method getHomeCoords (line 1557) | getHomeCoords(): WorldCoords | undefined {
method getHomeHash (line 1568) | getHomeHash(): LocationId | undefined {
method getHashConfig (line 1575) | getHashConfig(): HashConfig {
method hasMinedChunk (line 1582) | hasMinedChunk(chunkLocation: Rectangle): boolean {
method getChunk (line 1586) | getChunk(chunkFootprint: Rectangle): Chunk | undefined {
method getChunkStore (line 1590) | getChunkStore(): PersistentChunkStore {
method getPerlinThresholds (line 1600) | getPerlinThresholds(): [number, number, number] {
method startExplore (line 1611) | startExplore(): void {
method stopExplore (line 1625) | stopExplore(): void {
method setRadius (line 1637) | private setRadius(worldRadius: number) {
method refreshTwitters (line 1645) | private async refreshTwitters(): Promise<void> {
method setPlayerTwitters (line 1650) | private setPlayerTwitters(twitters: AddressTwitterMap): void {
method submitVerifyTwitter (line 1662) | async submitVerifyTwitter(twitter: string): Promise<boolean> {
method checkGameHasEnded (line 1671) | private checkGameHasEnded(): boolean {
method getNextBroadcastAvailableTimestamp (line 1682) | public getNextBroadcastAvailableTimestamp() {
method timeUntilNextBroadcastAvailable (line 1689) | public timeUntilNextBroadcastAvailable() {
method getNextClaimAvailableTimestamp (line 1705) | public getNextClaimAvailableTimestamp() {
method getCaptureZones (line 1722) | public getCaptureZones(): Set<CaptureZone> {
method revealLocation (line 1729) | public async revealLocation(planetId: LocationId): Promise<Transaction...
method invadePlanet (line 1802) | public async invadePlanet(locationId: LocationId) {
method capturePlanet (line 1866) | public async capturePlanet(locationId: LocationId) {
method joinGame (line 1920) | public async joinGame(beforeRetry: (e: Error) => Promise<boolean>): Pr...
method getSpaceships (line 1994) | private async getSpaceships() {
method locationFromCoords (line 2016) | private locationFromCoords(coords: WorldCoords): WorldLocation {
method addAccount (line 2029) | async addAccount(coords: WorldCoords): Promise<boolean> {
method findRandomHomePlanet (line 2037) | private async findRandomHomePlanet(): Promise<LocatablePlanet> {
method prospectPlanet (line 2175) | public async prospectPlanet(
method findArtifact (line 2239) | public async findArtifact(
method getContractConstants (line 2313) | getContractConstants(): ContractConstants {
method depositArtifact (line 2321) | public async depositArtifact(
method withdrawArtifact (line 2359) | public async withdrawArtifact(
method activateArtifact (line 2409) | public async activateArtifact(
method deactivateArtifact (line 2459) | public async deactivateArtifact(
method withdrawSilver (line 2493) | public async withdrawSilver(
method refreshServerPlanetStates (line 2556) | public async refreshServerPlanetStates(planetIds: LocationId[]) {
method setPlanetEmoji (line 2599) | public setPlanetEmoji(locationId: LocationId, emojiStr: string) {
method clearEmoji (line 2609) | public async clearEmoji(locationId: LocationId) {
method submitDisconnectTwitter (line 2641) | public async submitDisconnectTwitter(twitter: string) {
method submitPlanetMessage (line 2651) | private async submitPlanetMessage(
method verifyMessage (line 2693) | private async verifyMessage(message: SignedMessage<unknown>): Promise<...
method move (line 2703) | public async move(
method upgrade (line 2841) | public async upgrade(
method buyHat (line 2875) | public async buyHat(
method transferOwnership (line 2921) | public async transferOwnership(
method addNewChunk (line 2969) | addNewChunk(chunk: Chunk): GameManager {
method listenForNewBlock (line 2981) | listenForNewBlock() {
method bulkAddNewChunks (line 2993) | async bulkAddNewChunks(chunks: Chunk[]): Promise<void> {
method getMaxMoveDist (line 3022) | getMaxMoveDist(planetId: LocationId, sendingPercent: number, abandonin...
method getDist (line 3032) | getDist(fromId: LocationId, toId: LocationId): number {
method getDistCoords (line 3055) | getDistCoords(fromCoords: WorldCoords, toCoords: WorldCoords) {
method getPlanetsInRange (line 3063) | getPlanetsInRange(planetId: LocationId, sendingPercent: number, abando...
method getEnergyNeededForMove (line 3088) | getEnergyNeededForMove(
method getEnergyArrivingForMove (line 3110) | getEnergyArrivingForMove(
method getActiveArtifact (line 3146) | getActiveArtifact(planet: Planet): Artifact | undefined {
method getWormholeFactors (line 3158) | getWormholeFactors(
method getTimeForMove (line 3202) | getTimeForMove(fromId: LocationId, toId: LocationId, abandoning = fals...
method getTemperature (line 3214) | getTemperature(coords: WorldCoords): number {
method loadPlugins (line 3222) | public async loadPlugins(): Promise<SerializedPlugin[]> {
method savePlugins (line 3229) | public async savePlugins(savedPlugins: SerializedPlugin[]): Promise<vo...
method isPlanetMineable (line 3236) | public isPlanetMineable(p: Planet): boolean {
method getConstructors (line 3244) | public getConstructors() {
method spaceTypePerlin (line 3258) | public spaceTypePerlin(coords: WorldCoords, floor: boolean): number {
method biomebasePerlin (line 3271) | public biomebasePerlin(coords: WorldCoords, floor: boolean): number {
method locationBigIntFromCoords (line 3281) | public locationBigIntFromCoords(coords: WorldCoords): BigInteger {
method getUIEventEmitter (line 3288) | public getUIEventEmitter() {
method getCaptureZoneGenerator (line 3292) | public getCaptureZoneGenerator() {
method captureZoneGeneratedEmitter (line 3299) | public get captureZoneGeneratedEmitter(): Monomitter<CaptureZonesGener...
method getNotificationsManager (line 3303) | public getNotificationsManager() {
method getWormholes (line 3307) | getWormholes(): Iterable<Wormhole> {
method getPlanetMap (line 3312) | public getPlanetMap(): Map<LocationId, Planet> {
method getArtifactMap (line 3317) | public getArtifactMap(): Map<ArtifactId, Artifact> {
method getMyPlanetMap (line 3322) | public getMyPlanetMap(): Map<LocationId, Planet> {
method getMyArtifactMap (line 3327) | public getMyArtifactMap(): Map<ArtifactId, Artifact> {
method getPlanetUpdated$ (line 3331) | public getPlanetUpdated$(): Monomitter<LocationId> {
method getArtifactUpdated$ (line 3335) | public getArtifactUpdated$(): Monomitter<ArtifactId> {
method getMyPlanetsUpdated$ (line 3339) | public getMyPlanetsUpdated$(): Monomitter<Map<LocationId, Planet>> {
method getMyArtifactsUpdated$ (line 3343) | public getMyArtifactsUpdated$(): Monomitter<Map<ArtifactId, Artifact>> {
method loadContract (line 3355) | public loadContract<T extends Contract>(
method testNotification (line 3364) | public testNotification() {
method getGameObjects (line 3372) | public getGameObjects(): GameObjects {
method forceTick (line 3376) | public forceTick(locationId: LocationId) {
method getDiagnostics (line 3383) | public getDiagnostics(): Diagnostics {
method updateDiagnostics (line 3392) | public updateDiagnostics(updateFn: (d: Diagnostics) => void): void {
method waitForPlanet (line 3408) | public waitForPlanet<T>(
method getSafeMode (line 3436) | public getSafeMode() {
method setSafeMode (line 3440) | public setSafeMode(safeMode: boolean) {
method getAddress (line 3444) | public getAddress() {
method isAdmin (line 3448) | public isAdmin(): boolean {
method getSpeedBuff (line 3459) | public getSpeedBuff(abandoning: boolean): number {
method getRangeBuff (line 3468) | public getRangeBuff(abandoning: boolean): number {
method getSnarkHelper (line 3477) | public getSnarkHelper(): SnarkArgsHelper {
method submitTransaction (line 3481) | public async submitTransaction<T extends TxIntent>(
method getContract (line 3488) | public getContract(): DarkForest {
method getPaused (line 3492) | public getPaused(): boolean {
method getPaused$ (line 3496) | public getPaused$(): Monomitter<boolean> {
FILE: src/Backend/GameLogic/GameObjects.ts
type CoordsString (line 77) | type CoordsString = Abstract<string, 'CoordString'>;
class GameObjects (line 86) | class GameObjects {
method constructor (line 227) | constructor(
method getWormholes (line 339) | public getWormholes(): Iterable<Wormhole> {
method getArtifactById (line 343) | public getArtifactById(artifactId?: ArtifactId): Artifact | undefined {
method getArtifactsOwnedBy (line 347) | public getArtifactsOwnedBy(addr: EthAddress): Artifact[] {
method getPlanetArtifacts (line 357) | public getPlanetArtifacts(planetId: LocationId): Artifact[] {
method getArtifactsOnPlanetsOwnedBy (line 363) | public getArtifactsOnPlanetsOwnedBy(addr: EthAddress): Artifact[] {
method getPlanetWithId (line 377) | public getPlanetWithId(planetId: LocationId, updateIfStale = true): Pl...
method getPlanetLevel (line 392) | public getPlanetLevel(planetId: LocationId): PlanetLevel | undefined {
method getPlanetDetailLevel (line 402) | public getPlanetDetailLevel(planetId: LocationId): number | undefined {
method replaceArtifactFromContractData (line 418) | public replaceArtifactFromContractData(artifact: Artifact): void {
method replaceArtifactsFromContractData (line 428) | public replaceArtifactsFromContractData(artifacts: Iterable<Artifact>) {
method updatePlanet (line 438) | public updatePlanet(id: LocationId, updateFn: (p: Planet) => void) {
method updateArtifact (line 451) | public updateArtifact(id: ArtifactId | undefined, updateFn: (p: Artifa...
method replacePlanetFromContractData (line 463) | public replacePlanetFromContractData(
method getPlanetWithCoords (line 540) | public getPlanetWithCoords(coords: WorldCoords): LocatablePlanet | und...
method getPlanetWithLocation (line 554) | public getPlanetWithLocation(location: WorldLocation | undefined): Pla...
method isPlanetInContract (line 570) | public isPlanetInContract(planetId: LocationId): boolean {
method addPlanetLocation (line 582) | public addPlanetLocation(planetLocation: WorldLocation): void {
method markLocationRevealed (line 609) | public markLocationRevealed(revealedLocation: RevealedLocation): void {
method getLocationOfPlanet (line 613) | public getLocationOfPlanet(planetId: LocationId): WorldLocation | unde...
method getAllPlanets (line 624) | public getAllPlanets(): Iterable<Planet> {
method getAllPlanetsMap (line 634) | public getAllPlanetsMap(): Map<LocationId, Planet> {
method getAllOwnedPlanets (line 645) | public getAllOwnedPlanets(): Planet[] {
method getAllVoyages (line 655) | public getAllVoyages(): QueuedArrival[] {
method onTxIntent (line 680) | public onTxIntent(tx: Transaction) {
method clearUnconfirmedTxIntent (line 807) | public clearUnconfirmedTxIntent(tx: Transaction) {
method getPlanetMap (line 928) | public getPlanetMap(): Map<LocationId, Planet> {
method getArtifactMap (line 932) | public getArtifactMap(): Map<ArtifactId, Artifact> {
method getMyPlanetMap (line 936) | public getMyPlanetMap(): Map<LocationId, Planet> {
method getMyArtifactMap (line 940) | public getMyArtifactMap(): Map<ArtifactId, Artifact> {
method getRevealedLocations (line 944) | public getRevealedLocations(): Map<LocationId, RevealedLocation> {
method getClaimedLocations (line 948) | public getClaimedLocations(): Map<LocationId, ClaimedLocation> {
method setClaimedLocation (line 952) | public setClaimedLocation(claimedLocation: ClaimedLocation) {
method getPlanetsWithIds (line 959) | public getPlanetsWithIds(locationIds: LocationId[], updateIfStale = tr...
method getPlanetsInWorldCircle (line 969) | public getPlanetsInWorldCircle(coords: WorldCoords, radius: number): L...
method getPlanetsInWorldRectangle (line 979) | public getPlanetsInWorldRectangle(
method forceTick (line 999) | public forceTick(locationId: LocationId) {
method setPlanet (line 1012) | private setPlanet(planet: Planet) {
method setArtifact (line 1035) | private setArtifact(artifact: Artifact) {
method emitArrivalNotifications (line 1061) | private emitArrivalNotifications({ previous, current, arrival }: Plane...
method removeArrival (line 1089) | private removeArrival(planetId: LocationId, arrivalId: VoyageId) {
method processArrivalsForPlanet (line 1095) | private processArrivalsForPlanet(
method clearOldArrivals (line 1152) | private clearOldArrivals(planet: Planet): void {
method planetLevelFromHexPerlin (line 1171) | public planetLevelFromHexPerlin(hex: LocationId, perlin: number): Plan...
method spaceTypeFromPerlin (line 1198) | public spaceTypeFromPerlin(perlin: number): SpaceType {
method getSilverNeeded (line 1210) | public static getSilverNeeded(planet: Planet): number {
method planetCanUpgrade (line 1215) | public static planetCanUpgrade(planet: Planet): boolean {
method planetTypeFromHexPerlin (line 1228) | public planetTypeFromHexPerlin(hex: LocationId, perlin: number): Plane...
method getBiome (line 1250) | private getBiome(loc: WorldLocation): Biome {
method defaultPlanetFromLocation (line 1269) | private defaultPlanetFromLocation(location: WorldLocation): LocatableP...
method updatePlanetIfStale (line 1414) | private updatePlanetIfStale(planet: Planet): void {
method getEnergyCurveAtPercent (line 1431) | public getEnergyCurveAtPercent(planet: Planet, percent: number): number {
method getSilverCurveAtPercent (line 1448) | public getSilverCurveAtPercent(planet: Planet, percent: number): numbe...
method getArtifactController (line 1468) | public getArtifactController(artifactId: ArtifactId): EthAddress | und...
method getArrivalIdsForLocation (line 1491) | public getArrivalIdsForLocation(location: LocationId | undefined): Voy...
method isGettingSpaceships (line 1500) | public isGettingSpaceships(): boolean {
FILE: src/Backend/GameLogic/GameUIManager.ts
type GameUIManagerEvent (line 65) | const enum GameUIManagerEvent {
class GameUIManager (line 70) | class GameUIManager extends EventEmitter {
method constructor (line 127) | private constructor(
method setOverlayContainer (line 184) | public setOverlayContainer(randomContainer?: HTMLDivElement) {
method getOverlayContainer (line 192) | public getOverlayContainer(): HTMLDivElement | undefined {
method create (line 196) | public static async create(
method destroy (line 224) | public destroy(): void {
method getStringSetting (line 254) | public getStringSetting(setting: Setting): string | undefined {
method getBooleanSetting (line 264) | public getBooleanSetting(setting: Setting): boolean {
method getDiagnostics (line 276) | public getDiagnostics(): Diagnostics {
method updateDiagnostics (line 280) | public updateDiagnostics(updateFn: (d: Diagnostics) => void) {
method getEthConnection (line 284) | public getEthConnection(): EthConnection {
method getContractAddress (line 288) | public getContractAddress(): EthAddress {
method centerPlanet (line 294) | public centerPlanet(planet: LocatablePlanet | undefined) {
method centerCoords (line 301) | public centerCoords(coords: WorldCoords) {
method centerLocationId (line 310) | public centerLocationId(planetId: LocationId) {
method joinGame (line 317) | public joinGame(beforeRetry: (e: Error) => Promise<boolean>): Promise<...
method addAccount (line 321) | public addAccount(coords: WorldCoords): Promise<boolean> {
method verifyTwitter (line 325) | public verifyTwitter(twitter: string): Promise<boolean> {
method disconnectTwitter (line 329) | public disconnectTwitter(twitter: string) {
method getPluginManager (line 333) | public getPluginManager(): PluginManager {
method getPrivateKey (line 337) | public getPrivateKey(): string | undefined {
method getMyBalance (line 341) | public getMyBalance(): number {
method getMyBalanceBn (line 345) | public getMyBalanceBn(): BigNumber {
method getMyBalance$ (line 349) | public getMyBalance$(): Monomitter<BigNumber> {
method findArtifact (line 353) | public findArtifact(planetId: LocationId) {
method prospectPlanet (line 361) | public prospectPlanet(planetId: LocationId) {
method withdrawArtifact (line 369) | public withdrawArtifact(locationId: LocationId, artifactId: ArtifactId) {
method depositArtifact (line 373) | public depositArtifact(locationId: LocationId, artifactId: ArtifactId) {
method drawAllRunningPlugins (line 377) | public drawAllRunningPlugins(ctx: CanvasRenderingContext2D) {
method activateArtifact (line 381) | public activateArtifact(locationId: LocationId, id: ArtifactId, wormho...
method deactivateArtifact (line 393) | public deactivateArtifact(locationId: LocationId, artifactId: Artifact...
method withdrawSilver (line 404) | public withdrawSilver(locationId: LocationId, amount: number) {
method startWormholeFrom (line 418) | public startWormholeFrom(planet: LocatablePlanet): Promise<LocatablePl...
method revealLocation (line 430) | public revealLocation(locationId: LocationId) {
method getNextBroadcastAvailableTimestamp (line 434) | public getNextBroadcastAvailableTimestamp() {
method timeUntilNextBroadcastAvailable (line 438) | public timeUntilNextBroadcastAvailable() {
method getEnergyArrivingForMove (line 442) | public getEnergyArrivingForMove(
method getIsChoosingTargetPlanet (line 451) | getIsChoosingTargetPlanet() {
method onMouseDown (line 455) | public onMouseDown(coords: WorldCoords) {
method onMouseClick (line 474) | public onMouseClick(_coords: WorldCoords) {
method onMouseMove (line 481) | public onMouseMove(coords: WorldCoords) {
method onMouseUp (line 485) | public onMouseUp(coords: WorldCoords) {
method onMouseOut (line 585) | public onMouseOut() {
method startExplore (line 592) | public startExplore() {
method stopExplore (line 596) | public stopExplore() {
method toggleExplore (line 601) | public toggleExplore() {
method toggleTargettingExplorer (line 610) | public toggleTargettingExplorer() {
method setForcesSending (line 617) | public setForcesSending(planetId: LocationId, percentage: number) {
method setSilverSending (line 624) | public setSilverSending(planetId: LocationId, percentage: number) {
method setSending (line 631) | public setSending(sending: boolean): void {
method setAbandoning (line 636) | public setAbandoning(abandoning: boolean): void {
method setArtifactSending (line 650) | public setArtifactSending(planetId: LocationId, artifact?: Artifact) {
method isOwnedByMe (line 659) | public isOwnedByMe(planet: Planet): boolean {
method addNewChunk (line 663) | public addNewChunk(chunk: Chunk) {
method bulkAddNewChunks (line 667) | public bulkAddNewChunks(chunks: Chunk[]): Promise<void> {
method setMiningPattern (line 672) | public setMiningPattern(pattern: MiningPattern) {
method getMiningPattern (line 676) | public getMiningPattern(): MiningPattern | undefined {
method isMining (line 680) | public isMining(): boolean {
method getAccount (line 686) | public getAccount(): EthAddress | undefined {
method isAdmin (line 690) | public isAdmin(): boolean {
method getTwitter (line 694) | public getTwitter(address: EthAddress | undefined): string | undefined {
method getEndTimeSeconds (line 698) | public getEndTimeSeconds(): number {
method isRoundOver (line 702) | public isRoundOver(): boolean {
method getUpgrade (line 706) | public getUpgrade(branch: UpgradeBranchName, level: number): Upgrade {
method getBiomeKey (line 710) | private getBiomeKey(biome: Biome) {
method getDiscoverBiomeName (line 714) | public getDiscoverBiomeName(biome: Biome): string {
method getDistCoords (line 722) | public getDistCoords(from: WorldCoords, to: WorldCoords) {
method discoverBiome (line 726) | public discoverBiome(planet: LocatablePlanet): void {
method getAllPlayers (line 736) | public getAllPlayers(): Player[] {
method getSelectedPlanet (line 740) | public getSelectedPlanet(): LocatablePlanet | undefined {
method getPreviousSelectedPlanet (line 750) | public getPreviousSelectedPlanet(): Planet | undefined {
method setSelectedId (line 754) | public setSelectedId(id: LocationId): void {
method setSelectedPlanet (line 759) | public setSelectedPlanet(planet: LocatablePlanet | undefined): void {
method getSelectedCoords (line 789) | public getSelectedCoords(): WorldCoords | undefined {
method getMouseDownPlanet (line 793) | public getMouseDownPlanet(): LocatablePlanet | undefined {
method onSendInit (line 798) | public onSendInit(planet: LocatablePlanet | undefined): void {
method onSendComplete (line 806) | public onSendComplete(locationId: LocationId): void {
method onSendCancel (line 818) | public onSendCancel(): void {
method hasMinedChunk (line 828) | public hasMinedChunk(chunkLocation: Rectangle): boolean {
method getChunk (line 832) | public getChunk(chunkFootprint: Rectangle): Chunk | undefined {
method spaceTypeFromPerlin (line 836) | public spaceTypeFromPerlin(perlin: number): SpaceType {
method getSpaceTypePerlin (line 840) | public getSpaceTypePerlin(coords: WorldCoords, floor: boolean): number {
method getBiomePerlin (line 844) | public getBiomePerlin(coords: WorldCoords, floor: boolean): number {
method onDiscoveredChunk (line 848) | public onDiscoveredChunk(chunk: Chunk): void {
method getMinerLocation (line 961) | public getMinerLocation(): WorldCoords | undefined {
method setExtraMinerLocation (line 965) | public setExtraMinerLocation(idx: number, coords: WorldCoords): void {
method removeExtraMinerLocation (line 969) | public removeExtraMinerLocation(idx: number): void {
method getAllMinerLocations (line 973) | public getAllMinerLocations(): WorldCoords[] {
method getMouseDownCoords (line 981) | public getMouseDownCoords(): WorldCoords | undefined {
method setHoveringOverPlanet (line 986) | public setHoveringOverPlanet(planet: LocatablePlanet | undefined, inRe...
method setHoveringOverArtifact (line 997) | public setHoveringOverArtifact(artifactId?: ArtifactId) {
method getHoveringOverPlanet (line 1002) | public getHoveringOverPlanet(): Planet | undefined {
method getHoveringOverCoords (line 1006) | public getHoveringOverCoords(): WorldCoords | undefined {
method isSendingForces (line 1010) | public isSendingForces(): boolean {
method getForcesSending (line 1017) | public getForcesSending(planetId?: LocationId): number {
method getSilverSending (line 1031) | public getSilverSending(planetId?: LocationId): number {
method isAbandoning (line 1041) | public isAbandoning(): boolean {
method getArtifactSending (line 1045) | public getArtifactSending(planetId?: LocationId): Artifact | undefined {
method getAbandonSpeedChangePercent (line 1050) | public getAbandonSpeedChangePercent(): number {
method getAbandonRangeChangePercent (line 1059) | public getAbandonRangeChangePercent(): number {
method isSendingShip (line 1068) | public isSendingShip(planetId?: LocationId): boolean {
method isOverOwnPlanet (line 1073) | public isOverOwnPlanet(coords: WorldCoords): Planet | undefined {
method getMyArtifacts (line 1082) | public getMyArtifacts(): Artifact[] {
method getMyArtifactsNotOnPlanet (line 1086) | public getMyArtifactsNotOnPlanet(): Artifact[] {
method getPlanetWithId (line 1090) | public getPlanetWithId(planetId: LocationId | undefined): Planet | und...
method getMyScore (line 1094) | public getMyScore(): number | undefined {
method getPlayer (line 1098) | public getPlayer(address?: EthAddress): Player | undefined {
method getArtifactWithId (line 1102) | public getArtifactWithId(artifactId: ArtifactId | undefined): Artifact...
method getPlanetWithCoords (line 1106) | public getPlanetWithCoords(coords: WorldCoords | undefined): Planet | ...
method getArtifactsWithIds (line 1110) | public getArtifactsWithIds(artifactIds?: ArtifactId[]): Array<Artifact...
method getArtifactPlanet (line 1114) | public getArtifactPlanet(artifact: Artifact): Planet | undefined {
method getPlanetLevel (line 1119) | public getPlanetLevel(planetId: LocationId): PlanetLevel | undefined {
method getAllOwnedPlanets (line 1123) | public getAllOwnedPlanets(): Planet[] {
method getAllVoyages (line 1127) | public getAllVoyages(): QueuedArrival[] {
method getSpeedBuff (line 1131) | public getSpeedBuff(): number {
method getRangeBuff (line 1135) | public getRangeBuff(): number {
method getUnconfirmedMoves (line 1145) | public getUnconfirmedMoves(): Transaction<UnconfirmedMove>[] {
method getUnconfirmedUpgrades (line 1149) | public getUnconfirmedUpgrades(): Transaction<UnconfirmedUpgrade>[] {
method isCurrentlyRevealing (line 1153) | public isCurrentlyRevealing(): boolean {
method getUnconfirmedWormholeActivations (line 1157) | public getUnconfirmedWormholeActivations(): Transaction<UnconfirmedAct...
method getWormholes (line 1161) | public getWormholes(): Iterable<Wormhole> {
method getLocationOfPlanet (line 1165) | public getLocationOfPlanet(planetId: LocationId): WorldLocation | unde...
method getExploredChunks (line 1169) | public getExploredChunks(): Iterable<Chunk> {
method getLocationsAndChunks (line 1173) | public getLocationsAndChunks() {
method getCaptureZones (line 1177) | public getCaptureZones() {
method getCaptureZoneGenerator (line 1181) | public getCaptureZoneGenerator() {
method getIsHighPerfMode (line 1185) | public getIsHighPerfMode(): boolean {
method getPlanetsInViewport (line 1195) | public getPlanetsInViewport(): Planet[] {
method getWorldRadius (line 1201) | public getWorldRadius(): number {
method getWorldSilver (line 1205) | public getWorldSilver(): number {
method getUniverseTotalEnergy (line 1209) | public getUniverseTotalEnergy(): number {
method getSilverOfPlayer (line 1213) | public getSilverOfPlayer(player: EthAddress): number {
method getEnergyOfPlayer (line 1217) | public getEnergyOfPlayer(player: EthAddress): number {
method getPlayerScore (line 1221) | public getPlayerScore(player: EthAddress): number | undefined {
method upgrade (line 1225) | public upgrade(planet: Planet, branch: number): void {
method buyHat (line 1231) | public buyHat(planet: Planet): void {
method getHomeCoords (line 1238) | public getHomeCoords(): WorldCoords {
method getHomeHash (line 1242) | public getHomeHash(): LocationId | undefined {
method getHomePlanet (line 1246) | public getHomePlanet(): Planet | undefined {
method getRadiusOfPlanetLevel (line 1252) | public getRadiusOfPlanetLevel(planetRarity: PlanetLevel): number {
method getEnergyCurveAtPercent (line 1256) | public getEnergyCurveAtPercent(planet: Planet, percent: number): number {
method getSilverCurveAtPercent (line 1260) | public getSilverCurveAtPercent(planet: Planet, percent: number): numbe...
method getHashesPerSec (line 1264) | public getHashesPerSec(): number {
method generateVerificationTweet (line 1268) | public generateVerificationTweet(twitter: string): Promise<string> {
method getPerlinThresholds (line 1272) | public getPerlinThresholds(): [number, number, number] {
method getHashConfig (line 1276) | public getHashConfig(): HashConfig {
method getViewport (line 1280) | public getViewport(): Viewport {
method getPlanetMap (line 1284) | public getPlanetMap(): Map<LocationId, Planet> {
method getArtifactMap (line 1288) | public getArtifactMap(): Map<ArtifactId, Artifact> {
method getMyPlanetMap (line 1292) | public getMyPlanetMap(): Map<LocationId, Planet> {
method getMyArtifactMap (line 1296) | public getMyArtifactMap(): Map<ArtifactId, Artifact> {
method getTerminal (line 1300) | public getTerminal(): TerminalHandle | undefined {
method contractConstants (line 1304) | public get contractConstants(): ContractConstants {
method getSpaceJunkEnabled (line 1308) | public getSpaceJunkEnabled(): boolean {
method captureZonesEnabled (line 1312) | public get captureZonesEnabled(): boolean {
method potentialCaptureScore (line 1316) | public potentialCaptureScore(planetLevel: number): number {
method getDefaultSpaceJunkForPlanetLevel (line 1320) | public getDefaultSpaceJunkForPlanetLevel(level: number): number {
method getPerlinConfig (line 1324) | public getPerlinConfig(isBiome = false): PerlinConfig {
method getGameObjects (line 1342) | public getGameObjects(): GameObjects {
method updatePlanets (line 1348) | private updatePlanets() {
method updateMouseHoveringOverCoords (line 1364) | private updateMouseHoveringOverCoords(coords: WorldCoords): WorldCoords {
method onEmitInitializedPlayer (line 1384) | private onEmitInitializedPlayer() {
method onEmitInitializedPlayerError (line 1388) | private onEmitInitializedPlayerError(err: React.ReactNode) {
method getGameManager (line 1392) | public getGameManager(): GameManager {
method setModalManager (line 1396) | private setModalManager(modalManager: ModalManager) {
method getModalManager (line 1400) | public getModalManager(): ModalManager {
method getPlanetHoveringInRenderer (line 1408) | public getPlanetHoveringInRenderer() {
method getRenderer (line 1412) | public getRenderer(): Renderer | null {
method getPaused (line 1416) | getPaused(): boolean {
method getPaused$ (line 1420) | getPaused$(): Monomitter<boolean> {
method getSilverScoreValue (line 1424) | public getSilverScoreValue(): number {
method getArtifactPointValues (line 1428) | public getArtifactPointValues() {
method getCaptureZonePointValues (line 1432) | public getCaptureZonePointValues() {
method getArtifactUpdated$ (line 1436) | public getArtifactUpdated$() {
method getUIEmitter (line 1440) | public getUIEmitter() {
method getGlManager (line 1447) | public getGlManager(): GameGLManager | null {
method get2dRenderer (line 1456) | public get2dRenderer(): CanvasRenderingContext2D | null {
method setCustomRenderer (line 1468) | public setCustomRenderer(customRenderer: BaseRenderer) {
method disableCustomRenderer (line 1478) | public disableCustomRenderer(customRenderer: BaseRenderer) {
FILE: src/Backend/GameLogic/InitialGameStateDownloader.tsx
type InitialGameState (line 24) | interface InitialGameState {
class InitialGameStateDownloader (line 45) | class InitialGameStateDownloader {
method constructor (line 48) | public constructor(terminal: TerminalHandle) {
method makeProgressListener (line 52) | private makeProgressListener(prettyEntityName: string) {
method download (line 62) | async download(
FILE: src/Backend/GameLogic/LayeredMap.ts
type PlanetPointData (line 8) | interface PlanetPointData {
class LayeredMap (line 17) | class LayeredMap {
method constructor (line 21) | public constructor(worldRadius: number) {
method insertPlanet (line 43) | public insertPlanet(location: WorldLocation, planetLevel: number) {
method getPlanetsInCircle (line 56) | public getPlanetsInCircle(coords: WorldCoords, worldRadius: number): L...
method getPlanets (line 71) | public getPlanets(
method getPointLocationId (line 101) | private getPointLocationId(point: Point): LocationId {
FILE: src/Backend/GameLogic/PluginManager.tsx
class ProcessInfo (line 13) | class ProcessInfo {
class PluginManager (line 28) | class PluginManager {
method constructor (line 57) | public constructor(gameManager: GameManager) {
method destroy (line 69) | public destroy(id: PluginId): void {
method load (line 95) | public async load(isAdmin: boolean, overwriteEmbeddedPlugins: boolean)...
method deletePlugin (line 107) | public async deletePlugin(pluginId: PluginId): Promise<void> {
method getPluginFromLibrary (line 119) | public getPluginFromLibrary(id?: PluginId): SerializedPlugin | undefin...
method overwritePlugin (line 128) | public overwritePlugin(newName: string, pluginCode: string, id: Plugin...
method reorderPlugins (line 147) | public reorderPlugins(newPluginIdOrder: string[]) {
method addPluginToLibrary (line 165) | public addPluginToLibrary(id: PluginId, name: string, code: string): S...
method spawn (line 186) | public async spawn(id: PluginId): Promise<PluginProcess | undefined> {
method render (line 225) | public async render(id: PluginId, element: HTMLDivElement): Promise<vo...
method getLibrary (line 245) | public getLibrary(): SerializedPlugin[] {
method getProcessInfo (line 252) | public getProcessInfo(id: PluginId): ProcessInfo {
method getAllProcessInfos (line 259) | public getAllProcessInfos(): Map<PluginId, ProcessInfo> {
method drawAllRunningPlugins (line 273) | public drawAllRunningPlugins(ctx: CanvasRenderingContext2D) {
method hasPlugin (line 289) | private hasPlugin(plugin: EmbeddedPlugin): boolean {
method onNewEmbeddedPlugins (line 293) | private onNewEmbeddedPlugins(newPlugins: EmbeddedPlugin[], overwriteEm...
method notifyPluginLibraryUpdated (line 303) | private notifyPluginLibraryUpdated() {
method copy (line 313) | private static copy<T>(plugin: T): T {
FILE: src/Backend/GameLogic/TutorialManager.ts
type TutorialManagerEvent (line 7) | const enum TutorialManagerEvent {
type TutorialState (line 11) | const enum TutorialState {
class TutorialManager (line 31) | class TutorialManager extends EventEmitter {
method constructor (line 37) | private constructor(uiManager: GameUIManager) {
method getInstance (line 42) | static getInstance(uiManager: GameUIManager) {
method setTutorialState (line 50) | private setTutorialState(newState: TutorialState) {
method advance (line 60) | private advance() {
method shouldSkipState (line 67) | private shouldSkipState(state: TutorialState) {
method reset (line 71) | reset() {
method complete (line 80) | complete() {
method acceptInput (line 89) | acceptInput(state: TutorialState) {
FILE: src/Backend/GameLogic/ViewportEntities.ts
class ViewportEntities (line 21) | class ViewportEntities {
method constructor (line 28) | public constructor(gameManager: GameManager, gameUIManager: GameUIMana...
method startRefreshing (line 34) | public startRefreshing() {
method getPlanetsAndChunks (line 40) | public getPlanetsAndChunks() {
method updateLocationsAndChunks (line 54) | private updateLocationsAndChunks() {
method recalculateViewportChunks (line 66) | private recalculateViewportChunks(viewport: Viewport) {
method loadPlanetMessages (line 85) | private async loadPlanetMessages() {
method recalculateViewportPlanets (line 98) | private recalculateViewportPlanets(viewport: Viewport) {
method replacePlanets (line 120) | private replacePlanets(newPlanetsInViewport: LocatablePlanet[]) {
method getNearestVisiblePlanet (line 159) | public getNearestVisiblePlanet(coords: WorldCoords): LocatablePlanet |...
method getPlanetRadii (line 184) | private getPlanetRadii(viewport: Viewport): Map<PlanetLevel, Radii> {
method getVisiblePlanetLevels (line 201) | private getVisiblePlanetLevels(viewport: Viewport) {
FILE: src/Backend/Miner/ChunkUtils.ts
function getBucket (line 9) | function getBucket(chunk: Rectangle): BucketId {
function getChunkKey (line 23) | function getChunkKey(chunkLoc: Rectangle): ChunkId {
function toPersistedChunk (line 33) | function toPersistedChunk(chunk: Chunk): PersistedChunk {
function getChunkOfSideLengthContainingPoint (line 120) | function getChunkOfSideLengthContainingPoint(
function addToChunkMap (line 152) | function addToChunkMap(
FILE: src/Backend/Miner/MinerManager.ts
type MinerManagerEvent (line 10) | const enum MinerManagerEvent {
type workerFactory (line 14) | type workerFactory = () => Worker;
function defaultWorker (line 16) | function defaultWorker() {
class HomePlanetMinerChunkStore (line 20) | class HomePlanetMinerChunkStore implements ChunkStore {
method constructor (line 26) | constructor(initPerlinMin: number, initPerlinMax: number, hashConfig: ...
method addChunk (line 39) | addChunk(exploredChunk: Chunk) {
method hasMinedChunk (line 43) | hasMinedChunk(chunkFootprint: Rectangle) {
class MinerManager (line 56) | class MinerManager extends EventEmitter {
method constructor (line 76) | private constructor(
method setMiningPattern (line 103) | setMiningPattern(pattern: MiningPattern): void {
method getMiningPattern (line 112) | getMiningPattern(): MiningPattern {
method destroy (line 116) | destroy(): void {
method create (line 120) | static create(
method initWorker (line 143) | private initWorker(index: number): void {
method onDiscovered (line 158) | private async onDiscovered(exploredChunk: Chunk, jobId: number): Promi...
method exploreNext (line 172) | private exploreNext(fromChunk: Rectangle, jobId: number) {
method setCores (line 193) | public setCores(nCores: number): void {
method startExplore (line 213) | public startExplore(): void {
method stopExplore (line 223) | public stopExplore(): void {
method isMining (line 227) | public isMining(): boolean {
method getCurrentlyExploringChunk (line 231) | public getCurrentlyExploringChunk(): Rectangle | undefined {
method setRadius (line 248) | public setRadius(radius: number): void {
method nextValidExploreTarget (line 252) | private async nextValidExploreTarget(
method isValidExploreTarget (line 284) | private isValidExploreTarget(chunkLocation: Rectangle): boolean {
method sendMessageToWorkers (line 297) | private sendMessageToWorkers(chunkToExplore: Rectangle, jobId: number)...
method chunkLocationToKey (line 311) | private chunkLocationToKey(chunkLocation: Rectangle, jobId: number) {
method chunkKeyToLocation (line 318) | private chunkKeyToLocation(chunkKey: string): [Rectangle, number] | un...
FILE: src/Backend/Miner/MiningPatterns.ts
type MiningPatternType (line 3) | const enum MiningPatternType {
type MiningPattern (line 15) | interface MiningPattern {
class SpiralPattern (line 21) | class SpiralPattern implements MiningPattern {
method constructor (line 26) | constructor(center: WorldCoords, chunkSize: number) {
method nextChunk (line 37) | nextChunk(chunk: Rectangle): Rectangle {
class SwissCheesePattern (line 70) | class SwissCheesePattern implements MiningPattern {
method constructor (line 75) | constructor(center: WorldCoords, chunkSize: number) {
method nextChunk (line 86) | nextChunk(chunk: Rectangle): Rectangle {
class TowardsCenterPattern (line 119) | class TowardsCenterPattern implements MiningPattern {
method constructor (line 127) | constructor(center: WorldCoords, chunkSize: number) {
method nextChunk (line 148) | nextChunk(chunk: Rectangle): Rectangle {
class TowardsCenterPatternV2 (line 253) | class TowardsCenterPatternV2 implements MiningPattern {
method constructor (line 261) | constructor(center: WorldCoords, chunkSize: number) {
method toChunk (line 275) | toChunk(coord: number): number {
method nextChunk (line 279) | nextChunk(chunk: Rectangle): Rectangle {
FILE: src/Backend/Miner/permutation.ts
type IdxWithRand (line 5) | type IdxWithRand = {
constant SIZE (line 10) | const SIZE = 65536;
FILE: src/Backend/Network/AccountManager.ts
type Account (line 9) | interface Account {
constant ADDRESS_LOCAL_STORAGE_KEY (line 18) | const ADDRESS_LOCAL_STORAGE_KEY = 'KNOWN_ADDRESSES';
function save (line 28) | function save() {
function load (line 42) | function load(): Account[] {
function getAccounts (line 73) | function getAccounts(): Account[] {
function addAccount (line 80) | function addAccount(privateKey: string) {
FILE: src/Backend/Network/Blockchain.ts
function loadDiamondContract (line 9) | async function loadDiamondContract<T extends Contract>(
function getEthConnection (line 19) | function getEthConnection(): Promise<EthConnection> {
FILE: src/Backend/Network/EventLogger.ts
type EventType (line 1) | const enum EventType {
class EventLogger (line 6) | class EventLogger {
method augmentEvent (line 7) | private static augmentEvent(event: unknown, eventType: EventType) {
method logEvent (line 11) | logEvent(eventType: EventType, event: unknown) {
FILE: src/Backend/Network/LeaderboardApi.ts
function loadLeaderboard (line 3) | async function loadLeaderboard(): Promise<Leaderboard> {
FILE: src/Backend/Network/MessageAPI.ts
function getMessagesOnPlanets (line 9) | async function getMessagesOnPlanets(
function addMessage (line 34) | async function addMessage(
function deleteMessages (line 59) | async function deleteMessages(request: SignedMessage<DeleteMessagesReque...
FILE: src/Backend/Network/NetworkHealthApi.ts
function loadNetworkHealth (line 7) | async function loadNetworkHealth(): Promise<NetworkHealthSummary> {
FILE: src/Backend/Network/UtilityServerAPI.ts
type EmailResponse (line 12) | const enum EmailResponse {
function sleep (line 78) | async function sleep(timeoutMs: number) {
type RegisterConfirmationResponse (line 84) | type RegisterConfirmationResponse = {
function callRegisterAndWaitForConfirmation (line 108) | async function callRegisterAndWaitForConfirmation(
FILE: src/Backend/Plugins/EmbeddedPluginLoader.ts
type EmbeddedPlugin (line 6) | interface EmbeddedPlugin {
function cleanFilename (line 18) | function cleanFilename(filename: string) {
function getEmbeddedPlugins (line 25) | function getEmbeddedPlugins(isAdmin: boolean) {
FILE: src/Backend/Plugins/PluginProcess.ts
type PluginProcess (line 6) | interface PluginProcess {
FILE: src/Backend/Plugins/PluginTemplate.ts
constant PLUGIN_TEMPLATE (line 3) | const PLUGIN_TEMPLATE = dedent`
FILE: src/Backend/Plugins/SerializedPlugin.ts
type SerializedPlugin (line 7) | interface SerializedPlugin {
FILE: src/Backend/Storage/PersistentChunkStore.ts
type ObjectStore (line 29) | const enum ObjectStore {
type DBActionType (line 40) | const enum DBActionType {
type DBAction (line 45) | interface DBAction<T extends string> {
type DBTx (line 51) | type DBTx = DBAction<ChunkId | string>[];
type DebouncedFunc (line 53) | interface DebouncedFunc<T extends () => void> {
type PersistentChunkStoreConfig (line 58) | interface PersistentChunkStoreConfig {
constant MODAL_POSITIONS_KEY (line 64) | const MODAL_POSITIONS_KEY = 'modal_positions';
class PersistentChunkStore (line 66) | class PersistentChunkStore implements ChunkStore {
method constructor (line 77) | constructor({ db, account, contractAddress }: PersistentChunkStoreConf...
method destroy (line 90) | destroy(): void {
method create (line 100) | static async create({
method setDiagnosticUpdater (line 121) | public setDiagnosticUpdater(diagnosticUpdater?: DiagnosticUpdater) {
method getKey (line 131) | private async getKey(
method setKey (line 144) | private async setKey(
method removeKey (line 152) | private async removeKey(key: string, objStore: ObjectStore = ObjectSto...
method bulkSetKeyInCollection (line 156) | private async bulkSetKeyInCollection(
method loadChunks (line 176) | private async loadChunks(): Promise<void> {
method persistQueuedChunks (line 206) | private async persistQueuedChunks() {
method getHomeLocations (line 222) | public async getHomeLocations(): Promise<WorldLocation[]> {
method addHomeLocation (line 232) | public async addHomeLocation(location: WorldLocation): Promise<void> {
method confirmHomeLocation (line 243) | public async confirmHomeLocation(location: WorldLocation): Promise<voi...
method getSavedTouchedPlanetIds (line 247) | public async getSavedTouchedPlanetIds(): Promise<LocationId[]> {
method getSavedRevealedCoords (line 258) | public async getSavedRevealedCoords(): Promise<RevealedCoords[]> {
method getSavedClaimedCoords (line 273) | public async getSavedClaimedCoords(): Promise<ClaimedCoords[]> {
method saveTouchedPlanetIds (line 289) | public async saveTouchedPlanetIds(ids: LocationId[]) {
method saveRevealedCoords (line 293) | public async saveRevealedCoords(revealedCoordTups: RevealedCoords[]) {
method saveClaimedCoords (line 297) | public async saveClaimedCoords(claimedCoordTupps: ClaimedCoords[]) {
method getChunkByFootprint (line 307) | public getChunkByFootprint(chunkLoc: Rectangle): Chunk | undefined {
method hasMinedChunk (line 322) | public hasMinedChunk(chunkLoc: Rectangle): boolean {
method getChunkById (line 326) | private getChunkById(chunkId: ChunkId): Chunk | undefined {
method addChunk (line 337) | public addChunk(chunk: Chunk, persistChunk = true): void {
method getMinedSubChunks (line 409) | private getMinedSubChunks(chunk: Chunk): Chunk[] {
method recomputeSaveThrottleAfterUpdate (line 436) | private recomputeSaveThrottleAfterUpdate() {
method allChunks (line 451) | public allChunks(): Iterable<Chunk> {
method onEthTxSubmit (line 461) | public async onEthTxSubmit(tx: Transaction): Promise<void> {
method onEthTxComplete (line 471) | public async onEthTxComplete(txHash: string): Promise<void> {
method getUnconfirmedSubmittedEthTxs (line 476) | public async getUnconfirmedSubmittedEthTxs(): Promise<PersistedTransac...
method loadPlugins (line 481) | public async loadPlugins(): Promise<SerializedPlugin[]> {
method savePlugins (line 491) | public async savePlugins(plugins: SerializedPlugin[]): Promise<void> {
method saveModalPositions (line 495) | public async saveModalPositions(modalPositions: Map<ModalId, ModalPosi...
method loadModalPositions (line 501) | public async loadModalPositions(): Promise<Map<ModalId, ModalPosition>> {
FILE: src/Backend/Storage/ReaderDataStore.ts
type SinglePlanetDataStoreEvent (line 20) | const enum SinglePlanetDataStoreEvent {
type ReaderDataStoreConfig (line 25) | interface ReaderDataStoreConfig {
class ReaderDataStore (line 39) | class ReaderDataStore {
method constructor (line 46) | private constructor({
method destroy (line 60) | public destroy(): void {
method create (line 65) | public static async create({
method getViewer (line 92) | public getViewer(): EthAddress | undefined {
method getTwitter (line 96) | public getTwitter(owner: EthAddress | undefined): string | undefined {
method setPlanetLocationIfKnown (line 102) | private setPlanetLocationIfKnown(planet: Planet): void {
method loadPlanetFromContract (line 131) | public async loadPlanetFromContract(planetId: LocationId): Promise<Pla...
method loadArtifactFromContract (line 155) | public async loadArtifactFromContract(artifactId: ArtifactId) {
method spaceTypeFromPerlin (line 166) | private spaceTypeFromPerlin(perlin: number): SpaceType {
method getBiome (line 179) | private getBiome(loc: WorldLocation): Biome {
FILE: src/Backend/Utils/Animation.ts
function sinusoidalAnimation (line 4) | function sinusoidalAnimation(rps: number): DFAnimation {
function easeInAnimation (line 13) | function easeInAnimation(durationMs: number, delayMs?: number): DFAnimat...
function emojiEaseOutAnimation (line 36) | function emojiEaseOutAnimation(durationMs: number, emoji: string) {
function constantAnimation (line 54) | function constantAnimation(constant: number): DFAnimation {
function planetLevelToAnimationSpeed (line 58) | function planetLevelToAnimationSpeed(level: PlanetLevel): number {
FILE: src/Backend/Utils/SnarkArgsHelper.ts
type ZKPTask (line 32) | type ZKPTask = {
type SnarkInput (line 42) | type SnarkInput = RevealSnarkInput | InitSnarkInput | MoveSnarkInput | B...
class SnarkProverQueue (line 44) | class SnarkProverQueue {
method constructor (line 48) | constructor() {
method doProof (line 53) | public doProof(
method execute (line 77) | private async execute(
class SnarkArgsHelper (line 94) | class SnarkArgsHelper {
method constructor (line 108) | private constructor(
method create (line 139) | static create(
method setSnarkCacheSize (line 148) | setSnarkCacheSize(size: number) {
method getRevealArgs (line 164) | async getRevealArgs(x: number, y: number): Promise<RevealSnarkContract...
method getInitArgs (line 197) | async getInitArgs(x: number, y: number, r: number): Promise<InitSnarkC...
method getMoveArgs (line 228) | async getMoveArgs(
method getFindArtifactArgs (line 278) | async getFindArtifactArgs(x: number, y: number): Promise<BiomebaseSnar...
method fakeRevealProof (line 312) | private fakeRevealProof(x: number, y: number) {
method fakeInitProof (line 329) | private fakeInitProof(x: number, y: number, r: number) {
method fakeMoveProof (line 345) | private fakeMoveProof(
method fakeBiomebaseProof (line 371) | private fakeBiomebaseProof(x: number, y: number) {
FILE: src/Backend/Utils/Utils.ts
constant ONE_DAY (line 7) | const ONE_DAY = 24 * 60 * 60 * 1000;
type NestedBigIntArray (line 9) | type NestedBigIntArray = (BigInteger | string | NestedBigIntArray)[];
type NestedStringArray (line 10) | type NestedStringArray = (string | NestedStringArray)[];
function hashToHue (line 45) | function hashToHue(hash: string): number {
FILE: src/Backend/Utils/Wrapper.ts
class Wrapper (line 6) | class Wrapper<T> {
method constructor (line 9) | public constructor(value: T) {
FILE: src/Frontend/Components/ArtifactImage.tsx
constant ARTIFACT_URL (line 7) | const ARTIFACT_URL = 'https://d2wspbczt15cqu.cloudfront.net/v0.6.0-artif...
function getArtifactUrl (line 10) | function getArtifactUrl(thumb: boolean, artifact: Artifact, color: Artif...
function ArtifactImage (line 15) | function ArtifactImage({
FILE: src/Frontend/Components/Button.tsx
type ButtonProps (line 3) | interface ButtonProps {
function Button (line 10) | function Button({
FILE: src/Frontend/Components/CapturePlanetButton.tsx
function CapturePlanetButton (line 24) | function CapturePlanetButton({
FILE: src/Frontend/Components/CoreUI.tsx
function Link (line 179) | function Link(
function SelectFrom (line 317) | function SelectFrom({
FILE: src/Frontend/Components/Corner.tsx
type CornerProps (line 3) | interface CornerProps {
function Corner (line 17) | function Corner({
FILE: src/Frontend/Components/DisplayGasPrices.tsx
function DisplayGasPrices (line 4) | function DisplayGasPrices({ gasPrices }: { gasPrices?: GasPrices }) {
FILE: src/Frontend/Components/Email.tsx
type EmailCTAMode (line 11) | const enum EmailCTAMode {
FILE: src/Frontend/Components/GameLandingPageComponents.tsx
type InitRenderState (line 6) | const enum InitRenderState {
type LandingWrapperProps (line 12) | type LandingWrapperProps = {
function Wrapper (line 32) | function Wrapper({ children, initRender }: LandingWrapperProps) {
function TerminalWrapper (line 77) | function TerminalWrapper({ children, initRender, terminalEnabled }: Land...
function TerminalToggler (line 115) | function TerminalToggler({
function GameWindowWrapper (line 153) | function GameWindowWrapper({ children, initRender, terminalEnabled }: La...
FILE: src/Frontend/Components/GameWindowComponents.tsx
type PaneProps (line 50) | type PaneProps = {
FILE: src/Frontend/Components/Icons.tsx
type AlertIcon (line 55) | interface AlertIcon {
FILE: src/Frontend/Components/Labels/Labels.tsx
function AccountLabel (line 11) | function AccountLabel({
function TwitterLink (line 60) | function TwitterLink({ twitter, color }: { twitter: string; color?: stri...
FILE: src/Frontend/Components/Labels/LavaLabel.tsx
function LavaLabelRaw (line 40) | function LavaLabelRaw() {
FILE: src/Frontend/Components/Labels/LegendaryLabel.tsx
function LegendaryLabelRaw (line 27) | function LegendaryLabelRaw() {
FILE: src/Frontend/Components/Labels/MythicLabel.tsx
function MythicLabelText (line 27) | function MythicLabelText({ text, style }: { text: string; style?: React....
function MythicLabelRaw (line 39) | function MythicLabelRaw() {
FILE: src/Frontend/Components/Labels/PlanetLabels.tsx
function StatText (line 21) | function StatText({
function GrowthText (line 50) | function GrowthText({
function PlanetEnergyLabel (line 85) | function PlanetEnergyLabel({ planet }: { planet: Planet | undefined }) {
function PlanetSilverLabel (line 93) | function PlanetSilverLabel({ planet }: { planet: Planet | undefined }) {
function PlanetOwnerLabel (line 215) | function PlanetOwnerLabel({
FILE: src/Frontend/Components/Labels/SpacetimeRipLabel.tsx
function SpacetimeRipLabelRaw (line 41) | function SpacetimeRipLabelRaw() {
FILE: src/Frontend/Components/Labels/WastelandLabel.tsx
function WastelandLabelRaw (line 34) | function WastelandLabelRaw() {
FILE: src/Frontend/Components/LoadingSpinner.tsx
function LoadingSpinner (line 3) | function LoadingSpinner({ initialText, rate }: { initialText?: string; r...
FILE: src/Frontend/Components/MaybeShortcutButton.tsx
function MaybeShortcutButton (line 12) | function MaybeShortcutButton(
FILE: src/Frontend/Components/MineArtifactButton.tsx
function MineArtifactButton (line 25) | function MineArtifactButton({
FILE: src/Frontend/Components/OpenPaneButtons.tsx
function OpenPaneButton (line 22) | function OpenPaneButton({
function OpenHatPaneButton (line 56) | function OpenHatPaneButton({
function OpenBroadcastPaneButton (line 73) | function OpenBroadcastPaneButton({
function OpenUpgradeDetailsPaneButton (line 91) | function OpenUpgradeDetailsPaneButton({
function OpenManagePlanetArtifactsButton (line 108) | function OpenManagePlanetArtifactsButton({
function OpenPlanetInfoButton (line 126) | function OpenPlanetInfoButton({
FILE: src/Frontend/Components/PluginModal.tsx
function PluginModal (line 9) | function PluginModal({
FILE: src/Frontend/Components/ReadMore.tsx
function ReadMore (line 5) | function ReadMore({
FILE: src/Frontend/Components/RemoteModal.tsx
function RemoteModal (line 11) | function RemoteModal({
FILE: src/Frontend/Components/Text.tsx
function BlinkCursor (line 20) | function BlinkCursor() {
function TxLink (line 78) | function TxLink({ tx }: { tx: Transaction }) {
function CenterPlanetLink (line 94) | function CenterPlanetLink({
function ArtifactNameLink (line 117) | function ArtifactNameLink({ id }: { id: ArtifactId }) {
function PlanetNameLink (line 128) | function PlanetNameLink({ planet }: { planet: Planet }) {
function CenterChunkLink (line 132) | function CenterChunkLink({ chunk, children }: { chunk: Chunk; children: ...
function FAQ04Link (line 136) | function FAQ04Link({ children }: { children: React.ReactNode }) {
FILE: src/Frontend/Components/TextLoadingBar.tsx
type LoadingBarHandle (line 6) | interface LoadingBarHandle {
type LoadingBarProps (line 10) | interface LoadingBarProps {
function TextLoadingBarImpl (line 18) | function TextLoadingBarImpl(
FILE: src/Frontend/Components/TextPreview.tsx
constant DEFAULT_UNFOCUSED_WIDTH (line 5) | const DEFAULT_UNFOCUSED_WIDTH = '50px';
constant DEFAULT_FOCUSED_WIDTH (line 6) | const DEFAULT_FOCUSED_WIDTH = '150px';
function TextPreview (line 8) | function TextPreview({
FILE: src/Frontend/Components/TimeUntil.tsx
function TimeUntil (line 7) | function TimeUntil({ timestamp, ifPassed }: { timestamp: number; ifPasse...
function formatDuration (line 32) | function formatDuration(msDuration: number): string {
FILE: src/Frontend/Game/ControllableCanvas.tsx
function ControllableCanvas (line 37) | function ControllableCanvas() {
FILE: src/Frontend/Game/ModalManager.ts
class ModalManager (line 12) | class ModalManager extends EventEmitter {
method constructor (line 23) | private constructor(
method create (line 35) | public static async create(persistentChunkStore: PersistentChunkStore)...
method getIndex (line 40) | public getIndex(): number {
method getCursorState (line 45) | public getCursorState(): CursorState {
method setCursorState (line 49) | public setCursorState(newstate: CursorState): void {
method acceptInputForTarget (line 54) | public acceptInputForTarget(input: WorldCoords): void {
method getModalPosition (line 60) | public getModalPosition(modalId: ModalId): ModalPosition | undefined {
method getModalPositions (line 64) | public getModalPositions(modalIds: ModalId[] = []): Map<ModalId, Modal...
method clearModalPosition (line 73) | public clearModalPosition(modalId: ModalId): void {
method setModalPosition (line 79) | public setModalPosition(modalId: ModalId, pos: ModalPosition): void {
method setModalState (line 85) | public setModalState(modalId: ModalId, state: ModalPosition['state']):...
FILE: src/Frontend/Game/NotificationManager.tsx
type NotificationType (line 50) | const enum NotificationType {
function getNotificationTypeFromPlanetBiome (line 97) | function getNotificationTypeFromPlanetBiome(biome: Biome): NotificationT...
type NotificationInfo (line 102) | type NotificationInfo = {
type NotificationManagerEvent (line 112) | const enum NotificationManagerEvent {
class NotificationManager (line 117) | class NotificationManager extends EventEmitter {
method constructor (line 120) | private constructor() {
method getInstance (line 124) | static getInstance(): NotificationManager {
method getIcon (line 132) | private getIcon(type: NotificationType) {
method reallyLongNotification (line 211) | reallyLongNotification() {
method clearNotification (line 226) | clearNotification(id: string) {
method notify (line 230) | notify(type: NotificationType, message: React.ReactNode): void {
method welcomePlayer (line 239) | welcomePlayer(): void {
method foundSpace (line 250) | foundSpace(chunk: Chunk): void {
method foundDeepSpace (line 261) | foundDeepSpace(chunk: Chunk): void {
method foundDeadSpace (line 272) | foundDeadSpace(chunk: Chunk): void {
method foundSilver (line 283) | foundSilver(planet: Planet): void {
method foundSilverBank (line 293) | foundSilverBank(planet: Planet): void {
method foundTradingPost (line 303) | foundTradingPost(planet: Planet): void {
method foundPirates (line 313) | foundPirates(planet: Planet): void {
method foundComet (line 324) | foundComet(planet: Planet): void {
method foundBiome (line 334) | foundBiome(planet: LocatablePlanet): void {
method foundFoundry (line 344) | foundFoundry(planet: LocatablePlanet): void {
method artifactProspected (line 354) | artifactProspected(planet: LocatablePlanet): void {
method artifactFound (line 365) | artifactFound(planet: LocatablePlanet, artifact: Artifact): void {
method planetConquered (line 377) | planetConquered(planet: LocatablePlanet): void {
method planetLost (line 385) | planetLost(planet: LocatablePlanet): void {
method planetAttacked (line 393) | planetAttacked(planet: LocatablePlanet): void {
method planetCanUpgrade (line 402) | planetCanUpgrade(planet: Planet): void {
method balanceEmpty (line 411) | balanceEmpty(): void {
method receivedPlanet (line 422) | receivedPlanet(planet: Planet) {
method txInitError (line 432) | txInitError(methodName: ContractMethodName, failureReason: string) {
FILE: src/Frontend/Game/Popups.ts
constant POPUP_TIMEOUT (line 7) | const POPUP_TIMEOUT = 20000;
type OpenConfirmationConfig (line 9) | interface OpenConfirmationConfig {
function openConfirmationWindowForTransaction (line 19) | async function openConfirmationWindowForTransaction({
FILE: src/Frontend/Game/Viewport.ts
type ViewportData (line 13) | type ViewportData = {
constant BASE_VEL (line 19) | const BASE_VEL = 1;
constant VEL_THRESHOLD (line 21) | const VEL_THRESHOLD = 0.05;
class Viewport (line 23) | class Viewport {
method constructor (line 61) | private constructor(
method setDiagnosticUpdater (line 97) | public setDiagnosticUpdater(diagnosticUpdater: DiagnosticUpdater) {
method onSendInit (line 101) | onSendInit() {
method onSendComplete (line 105) | onSendComplete() {
method minWorldWidth (line 109) | get minWorldWidth(): number {
method maxWorldWidth (line 114) | get maxWorldWidth(): number {
method getViewportPosition (line 118) | public getViewportPosition() {
method getBottomBound (line 122) | public getBottomBound() {
method getLeftBound (line 126) | public getLeftBound() {
method getTopBound (line 130) | public getTopBound() {
method getRightBound (line 134) | public getRightBound() {
method getViewportWorldWidth (line 138) | public getViewportWorldWidth() {
method getViewportWorldHeight (line 142) | public getViewportWorldHeight() {
method setMouseSensitivty (line 146) | public setMouseSensitivty(mouseSensitivity: number) {
method getInstance (line 151) | static getInstance(): Viewport {
method destroyInstance (line 159) | static destroyInstance(): void {
method initialize (line 184) | static initialize(
method onResize (line 233) | onResize() {
method getStorageKey (line 237) | private getStorageKey(): string {
method getStorage (line 244) | getStorage(): ViewportData | undefined {
method setStorage (line 252) | setStorage() {
method setData (line 262) | setData(data: ViewportData) {
method centerPlanet (line 268) | centerPlanet(planet: Planet | undefined): void {
method zoomPlanet (line 275) | zoomPlanet(planet?: Planet, radii?: number): void {
method centerCoords (line 286) | centerCoords(coords: WorldCoords): void {
method centerChunk (line 292) | centerChunk(chunk: Chunk): void {
method zoomIn (line 300) | zoomIn(): void {
method zoomOut (line 304) | zoomOut(): void {
method onMouseDown (line 309) | onMouseDown(canvasCoords: CanvasCoords) {
method onMouseMove (line 328) | onMouseMove(canvasCoords: CanvasCoords) {
method onMouseUp (line 347) | onMouseUp(canvasCoords: CanvasCoords) {
method onMouseOut (line 368) | onMouseOut() {
method onScroll (line 376) | onScroll(deltaY: number, forceZoom = false) {
method onWindowResize (line 407) | onWindowResize() {
method canvasToWorldCoords (line 414) | canvasToWorldCoords(canvasCoords: CanvasCoords): WorldCoords {
method worldToCanvasCoords (line 420) | worldToCanvasCoords(worldCoords: WorldCoords): CanvasCoords {
method worldToCanvasDist (line 426) | public worldToCanvasDist(d: number): number {
method canvasToWorldDist (line 430) | public canvasToWorldDist(d: number): number {
method worldToCanvasX (line 434) | private worldToCanvasX(x: number): number {
method canvasToWorldX (line 438) | private canvasToWorldX(x: number): number {
method worldToCanvasY (line 442) | private worldToCanvasY(y: number): number {
method canvasToWorldY (line 446) | private canvasToWorldY(y: number): number {
method isInOrAroundViewport (line 450) | public isInOrAroundViewport(coords: WorldCoords): boolean {
method isInViewport (line 460) | public isInViewport(coords: WorldCoords) {
method intersectsViewport (line 469) | public intersectsViewport(chunk: Chunk): boolean {
method isValidWorldWidth (line 490) | private isValidWorldWidth(width: number) {
method setWorldWidth (line 494) | private setWorldWidth(width: number): void {
method setWorldHeight (line 503) | public setWorldHeight(height: number): void {
method updateDiagnostics (line 509) | private updateDiagnostics() {
FILE: src/Frontend/Pages/App.tsx
function App (line 26) | function App() {
FILE: src/Frontend/Pages/CreateLobby.tsx
type ErrorState (line 22) | type ErrorState =
function CreateLobby (line 28) | function CreateLobby({ match }: RouteComponentProps<{ contract: string }...
FILE: src/Frontend/Pages/EventsPage.tsx
function EventsPage (line 3) | function EventsPage() {
FILE: src/Frontend/Pages/GameLandingPage.tsx
type TerminalPromptStep (line 43) | const enum TerminalPromptStep {
function GameLandingPage (line 65) | function GameLandingPage({ match, location }: RouteComponentProps<{ cont...
FILE: src/Frontend/Pages/GifMaker.tsx
constant IS_THUMB (line 6) | const IS_THUMB = true;
constant GIF_DIM (line 7) | const GIF_DIM = IS_THUMB ? 90 : 350;
constant GIF_ARTIFACT_COLOR (line 8) | const GIF_ARTIFACT_COLOR = ArtifactFileColor.APP_BACKGROUND;
function GifMaker (line 28) | function GifMaker() {
FILE: src/Frontend/Pages/LandingPage.tsx
type LandingPageZIndex (line 15) | const enum LandingPageZIndex {
function LandingPage (line 50) | function LandingPage() {
function Hiring (line 401) | function Hiring() {
FILE: src/Frontend/Pages/LoadingPage.tsx
function LoadingPage (line 13) | function LoadingPage() {
FILE: src/Frontend/Pages/LobbyLandingPage.tsx
class LobbyPageTerminal (line 15) | class LobbyPageTerminal {
method constructor (line 21) | public constructor(
method loadBalances (line 31) | private async loadBalances(addresses: EthAddress[]) {
method chooseAccount (line 44) | public async chooseAccount() {
method displayAccounts (line 96) | private async displayAccounts() {
method generateAccount (line 135) | private async generateAccount() {
method importAccount (line 168) | private async importAccount() {
function LobbyLandingPage (line 197) | function LobbyLandingPage({ onReady }: { onReady: (connection: EthConnec...
FILE: src/Frontend/Pages/NotFoundPage.tsx
function NotFoundPage (line 4) | function NotFoundPage() {
FILE: src/Frontend/Pages/ShareArtifact.tsx
function ShareArtifact (line 7) | function ShareArtifact({ match }: RouteComponentProps<{ artifactId: Arti...
FILE: src/Frontend/Pages/SharePlanet.tsx
type SharePlanetData (line 36) | interface SharePlanetData {
function SharePlanet (line 42) | function SharePlanet({ match }: RouteComponentProps<{ locationId: Locati...
FILE: src/Frontend/Pages/TestArtifactImages.tsx
function ArtifactPreviewer (line 33) | function ArtifactPreviewer({
constant THUMB (line 70) | const THUMB = false;
function TestArtifactImages (line 71) | function TestArtifactImages() {
FILE: src/Frontend/Pages/TxConfirmPopup.tsx
function TxConfirmPopup (line 112) | function TxConfirmPopup({
FILE: src/Frontend/Pages/UnsubscribePage.tsx
type LandingPageZIndex (line 11) | const enum LandingPageZIndex {
function UnsubscribePage (line 135) | function UnsubscribePage() {
function _GamesTable (line 208) | function _GamesTable() {
FILE: src/Frontend/Pages/ValhallaPage.tsx
function ValhallaPage (line 14) | function ValhallaPage() {
FILE: src/Frontend/Panes/ArtifactCard.tsx
function ArtifactCard (line 7) | function ArtifactCard({ artifactId }: { artifactId?: ArtifactId }) {
FILE: src/Frontend/Panes/ArtifactDetailsPane.tsx
function UpgradeStatInfo (line 67) | function UpgradeStatInfo({
function ArtifactDetailsHelpContent (line 141) | function ArtifactDetailsHelpContent() {
function ArtifactDetailsBody (line 153) | function ArtifactDetailsBody({
function ArtifactDetailsPane (line 325) | function ArtifactDetailsPane({
function ArtifactDescription (line 347) | function ArtifactDescription({
FILE: src/Frontend/Panes/ArtifactHoverPane.tsx
function ArtifactHoverPane (line 6) | function ArtifactHoverPane() {
FILE: src/Frontend/Panes/ArtifactsList.tsx
function ArtifactsList (line 37) | function ArtifactsList({
function ShipList (line 125) | function ShipList({
function AllArtifacts (line 206) | function AllArtifacts({
FILE: src/Frontend/Panes/BroadcastPane.tsx
function BroadcastPaneHelpContent (line 40) | function BroadcastPaneHelpContent() {
function BroadcastPane (line 51) | function BroadcastPane({
FILE: src/Frontend/Panes/CoordsPane.tsx
class CoordsText (line 8) | class CoordsText extends React.Component<
method componentDidMount (line 18) | componentDidMount() {
method componentWillUnmount (line 22) | componentWillUnmount() {
method setCoords (line 31) | setCoords(coords: WorldCoords) {
method setSpacetype (line 39) | setSpacetype(coords: WorldCoords) {
method render (line 60) | render() {
function CoordsPane (line 85) | function CoordsPane() {
FILE: src/Frontend/Panes/DiagnosticsPane.tsx
function DiagnosticsPane (line 13) | function DiagnosticsPane({ visible, onClose }: { visible: boolean; onClo...
function DiagnosticsTabs (line 40) | function DiagnosticsTabs({ diagnostics }: { diagnostics: Wrapper<Diagnos...
function RenderingTab (line 56) | function RenderingTab({ diagnostics }: { diagnostics: Wrapper<Diagnostic...
function NetworkingTab (line 124) | function NetworkingTab({ diagnostics }: { diagnostics: Wrapper<Diagnosti...
FILE: src/Frontend/Panes/ExplorePane.tsx
function Cores (line 43) | function Cores() {
function HashesPerSec (line 75) | function HashesPerSec() {
function ExplorePane (line 109) | function ExplorePane() {
FILE: src/Frontend/Panes/HatPane.tsx
function HatPane (line 37) | function HatPane({
FILE: src/Frontend/Panes/HelpPane.tsx
function HelpPane (line 21) | function HelpPane({ visible, onClose }: { visible: boolean; onClose: () ...
FILE: src/Frontend/Panes/HoverPane.tsx
function HoverPane (line 16) | function HoverPane({
FILE: src/Frontend/Panes/HoverPlanetPane.tsx
function HoverPlanetPane (line 11) | function HoverPlanetPane() {
FILE: src/Frontend/Panes/Lobbies/AdminPermissionsPane.tsx
function AdminPermissionsPane (line 6) | function AdminPermissionsPane({ config, onUpdate }: LobbiesPaneProps) {
FILE: src/Frontend/Panes/Lobbies/ArtifactSettingsPane.tsx
function ArtifactPointsPerRarity (line 8) | function ArtifactPointsPerRarity({
function ArtifactSettingsPane (line 35) | function ArtifactSettingsPane({ config, onUpdate }: LobbiesPaneProps) {
FILE: src/Frontend/Panes/Lobbies/CaptureZonesPane.tsx
function CaptureZoneScorePerLevel (line 13) | function CaptureZoneScorePerLevel({
function CaptureZonesPane (line 35) | function CaptureZonesPane({ config, onUpdate }: LobbiesPaneProps) {
FILE: src/Frontend/Panes/Lobbies/ConfigurationPane.tsx
type PaneConfig (line 41) | interface PaneConfig {
type Status (line 111) | type Status = 'creating' | 'created' | 'errored' | undefined;
function ConfigurationNavigation (line 113) | function ConfigurationNavigation({
function ConfigurationPane (line 202) | function ConfigurationPane({
FILE: src/Frontend/Panes/Lobbies/GameSettingsPane.tsx
function GameSettingsPane (line 12) | function GameSettingsPane({ config, onUpdate }: LobbiesPaneProps) {
FILE: src/Frontend/Panes/Lobbies/LobbiesUtils.tsx
type LobbiesPaneProps (line 13) | interface LobbiesPaneProps {
function LinkButton (line 26) | function LinkButton({
function NavigationTitle (line 53) | function NavigationTitle({ children }: React.PropsWithChildren<unknown>) {
function Warning (line 79) | function Warning({ children }: React.PropsWithChildren<unknown>) {
function ConfigDownload (line 91) | function ConfigDownload({
function ConfigUpload (line 125) | function ConfigUpload({
FILE: src/Frontend/Panes/Lobbies/MinimapPane.tsx
function getWorker (line 6) | function getWorker() {
function drawOnCanvas (line 10) | function drawOnCanvas(canvas: HTMLCanvasElement | null, msg: DrawMessage) {
function Minimap (line 59) | function Minimap({
FILE: src/Frontend/Panes/Lobbies/MinimapUtils.ts
type MinimapConfig (line 3) | type MinimapConfig = {
type DrawMessage (line 15) | type DrawMessage = {
FILE: src/Frontend/Panes/Lobbies/PlanetPane.tsx
function ThresholdByPlanetLevel (line 14) | function ThresholdByPlanetLevel({
function PlanetPane (line 45) | function PlanetPane({ config, onUpdate }: LobbiesPaneProps) {
FILE: src/Frontend/Panes/Lobbies/PlayerSpawnPane.tsx
function PlayerSpawnPane (line 7) | function PlayerSpawnPane({ config, onUpdate }: LobbiesPaneProps) {
FILE: src/Frontend/Panes/Lobbies/Reducer.ts
constant SAFE_UPPER_BOUNDS (line 3) | const SAFE_UPPER_BOUNDS = Number.MAX_SAFE_INTEGER - 1;
class InvalidConfigError (line 5) | class InvalidConfigError extends Error {
method constructor (line 9) | constructor(msg: string, key: string, value: unknown) {
function toInitializers (line 21) | function toInitializers(obj: LobbyConfigState) {
type LobbyConfigAction (line 34) | type LobbyConfigAction =
type LobbyInitializers (line 118) | type LobbyInitializers = Initializers & { WHITELIST_ENABLED: boolean | u...
type LobbyConfigState (line 120) | type LobbyConfigState = {
type LobbyAction (line 129) | type LobbyAction = { type: 'RESET'; value: LobbyConfigState } | LobbyCon...
function lobbyConfigReducer (line 131) | function lobbyConfigReducer(state: LobbyConfigState, action: LobbyAction) {
function lobbyConfigInit (line 334) | function lobbyConfigInit(startingConfig: LobbyInitializers) {
function ofNoop (line 792) | function ofNoop({ type }: LobbyConfigAction, state: LobbyConfigState) {
function ofAny (line 798) | function ofAny({ type, value }: LobbyConfigAction, state: LobbyConfigSta...
function ofBoolean (line 807) | function ofBoolean(
function ofPositiveInteger (line 827) | function ofPositiveInteger(
function ofPositiveFloat (line 879) | function ofPositiveFloat(
function ofPositivePercent (line 923) | function ofPositivePercent(
function ofWorldRadiusMin (line 974) | function ofWorldRadiusMin(
function ofPerlinLengthScale (line 1034) | function ofPerlinLengthScale(
function ofMaxNaturalPlanetLevel (line 1062) | function ofMaxNaturalPlanetLevel(
function ofTimeFactorHundredths (line 1114) | function ofTimeFactorHundredths(
function ofPlanetRarity (line 1158) | function ofPlanetRarity(
function ofSpawnRimArea (line 1210) | function ofSpawnRimArea(
function ofSpaceJunkLimit (line 1267) | function ofSpaceJunkLimit(
function ofPlanetLevelJunk (line 1338) | function ofPlanetLevelJunk(
function ofArtifactPointValues (line 1407) | function ofArtifactPointValues(
function ofCaptureZoneRadius (line 1467) | function ofCaptureZoneRadius(
function ofCaptureZonesPer5000WorldRadius (line 1519) | function ofCaptureZonesPer5000WorldRadius(
function ofCaptureZoneChangeBlockInterval (line 1571) | function ofCaptureZoneChangeBlockInterval(
function ofCaptureZonePlanetLevelScore (line 1623) | function ofCaptureZonePlanetLevelScore(
function ofPlanetLevelThresholds (line 1683) | function ofPlanetLevelThresholds(
FILE: src/Frontend/Panes/Lobbies/SnarkPane.tsx
function SnarkPane (line 11) | function SnarkPane({ config, onUpdate }: LobbiesPaneProps) {
FILE: src/Frontend/Panes/Lobbies/SpaceJunkPane.tsx
function JunkPerLevel (line 13) | function JunkPerLevel({
function SpaceJunkPane (line 35) | function SpaceJunkPane({ config, onUpdate }: LobbiesPaneProps) {
FILE: src/Frontend/Panes/Lobbies/SpaceTypeBiomePane.tsx
function SpaceTypeBiomePane (line 12) | function SpaceTypeBiomePane({ config, onUpdate }: LobbiesPaneProps) {
FILE: src/Frontend/Panes/Lobbies/WorldSizePane.tsx
function WorldSizePane (line 11) | function WorldSizePane({ config, onUpdate }: LobbiesPaneProps) {
FILE: src/Frontend/Panes/Lobbies/minimap.worker.ts
function spaceTypePerlin (line 7) | function spaceTypePerlin(coords: WorldCoords, config: MinimapConfig): nu...
function spaceTypeFromPerlin (line 11) | function spaceTypeFromPerlin(perlin: number, config: MinimapConfig): Spa...
function generate (line 25) | function generate(config: MinimapConfig): DrawMessage {
FILE: src/Frontend/Panes/ManagePlanetArtifacts/ArtifactActions.tsx
function ArtifactActions (line 32) | function ArtifactActions({
FILE: src/Frontend/Panes/ManagePlanetArtifacts/ManageArtifacts.tsx
function ManageArtifactsPane (line 8) | function ManageArtifactsPane({
FILE: src/Frontend/Panes/ManagePlanetArtifacts/ManagePlanetArtifactsPane.tsx
function PlanetInfoHelpContent (line 10) | function PlanetInfoHelpContent() {
function ManagePlanetArtifactsHelpContent (line 18) | function ManagePlanetArtifactsHelpContent() {
function ManagePlanetArtifactsPane (line 41) | function ManagePlanetArtifactsPane({
FILE: src/Frontend/Panes/ManagePlanetArtifacts/SortBy.tsx
type IconConfig (line 9) | type IconConfig = {
function SortBy (line 43) | function SortBy({
FILE: src/Frontend/Panes/ManagePlanetArtifacts/UpgradeStatsView.tsx
function upgradeValue (line 10) | function upgradeValue(value: number) {
function SingleUpgrade (line 20) | function SingleUpgrade({
function UpgradeStatsView (line 50) | function UpgradeStatsView({
FILE: src/Frontend/Panes/OnboardingPane.tsx
type OnboardState (line 40) | const enum OnboardState {
function OnboardMoney (line 48) | function OnboardMoney({ advance }: { advance: () => void }) {
function OnboardStorage (line 95) | function OnboardStorage({ advance }: { advance: () => void }) {
function OnboardKeys (line 125) | function OnboardKeys({ advance }: { advance: () => void }) {
function OnboardHelp (line 163) | function OnboardHelp({ advance }: { advance: () => void }) {
function OnboardFinished (line 180) | function OnboardFinished({ advance }: { advance: () => void }) {
function OnboardingPane (line 198) | function OnboardingPane({
FILE: src/Frontend/Panes/PlanetContextPane.tsx
function PlanetContextPaneContent (line 27) | function PlanetContextPaneContent({
function SelectedPlanetHelpContent (line 103) | function SelectedPlanetHelpContent() {
function PlanetContextPane (line 114) | function PlanetContextPane({ visible, onClose }: { visible: boolean; onC...
FILE: src/Frontend/Panes/PlanetDexPane.tsx
function PlanetThumb (line 56) | function PlanetThumb({ planet }: { planet: Planet }) {
function HelpContent (line 123) | function HelpContent() {
function PlanetDexPane (line 138) | function PlanetDexPane({ visible, onClose }: { visible: boolean; onClose...
FILE: src/Frontend/Panes/PlanetInfoPane.tsx
function PlanetInfoPane (line 15) | function PlanetInfoPane({ initialPlanetId }: { initialPlanetId: Location...
FILE: src/Frontend/Panes/PlayerArtifactsPane.tsx
function HelpContent (line 9) | function HelpContent() {
function PlayerArtifactsPane (line 23) | function PlayerArtifactsPane({
FILE: src/Frontend/Panes/PluginEditorPane.tsx
function PluginEditorPane (line 37) | function PluginEditorPane({
FILE: src/Frontend/Panes/PluginLibraryPane.tsx
function HelpContent (line 20) | function HelpContent() {
function PluginLibraryPane (line 65) | function PluginLibraryPane({
FILE: src/Frontend/Panes/PrivatePane.tsx
function PrivatePane (line 18) | function PrivatePane({ visible, onClose }: { visible: boolean; onClose: ...
FILE: src/Frontend/Panes/SettingsPane.tsx
constant SCROLL_MIN (line 22) | const SCROLL_MIN = 0.0001 * 10000;
constant SCROLL_MAX (line 23) | const SCROLL_MAX = 0.01 * 10000;
constant DEFAULT_SCROLL (line 24) | const DEFAULT_SCROLL = Math.round(10000 * (getDefaultScroll() - 1));
function SettingsPane (line 47) | function SettingsPane({
FILE: src/Frontend/Panes/Tooltip.tsx
type TooltipTriggerProps (line 14) | interface TooltipTriggerProps {
type TooltipProps (line 38) | interface TooltipProps extends TooltipTriggerProps {
function TooltipTrigger (line 47) | function TooltipTrigger(props: TooltipTriggerProps) {
function Tooltip (line 90) | function Tooltip(props: TooltipProps) {
FILE: src/Frontend/Panes/TooltipPanes.tsx
function NetworkHealthPane (line 8) | function NetworkHealthPane() {
function WithdrawSilverButton (line 20) | function WithdrawSilverButton() {
function DefenseMultiplierPane (line 28) | function DefenseMultiplierPane() {
function EnergyCapMultiplierPane (line 32) | function EnergyCapMultiplierPane() {
function EnergyGrowthMultiplierPane (line 36) | function EnergyGrowthMultiplierPane() {
function RangeMultiplierPane (line 40) | function RangeMultiplierPane() {
function SpeedMultiplierPane (line 44) | function SpeedMultiplierPane() {
function DepositArtifactPane (line 48) | function DepositArtifactPane() {
function DeactivateArtifactPane (line 52) | function DeactivateArtifactPane() {
function WithdrawArtifactPane (line 56) | function WithdrawArtifactPane() {
function ActivateArtifactPane (line 60) | function ActivateArtifactPane() {
function TimeUntilActivationPossiblePane (line 64) | function TimeUntilActivationPossiblePane() {
function TwitterHandleTooltipPane (line 68) | function TwitterHandleTooltipPane() {
function RankTooltipPane (line 78) | function RankTooltipPane() {
function ScoreTooltipPane (line 86) | function ScoreTooltipPane() {
function MiningPauseTooltipPane (line 95) | function MiningPauseTooltipPane() {
function MiningTargetTooltipPane (line 104) | function MiningTargetTooltipPane() {
function CurrentMiningTooltipPane (line 114) | function CurrentMiningTooltipPane() {
function BonusTooltipPane (line 122) | function BonusTooltipPane() {
function SilverTooltipPane (line 130) | function SilverTooltipPane() {
function EnergyTooltipPane (line 139) | function EnergyTooltipPane() {
function PlanetRankTooltipPane (line 148) | function PlanetRankTooltipPane() {
function MaxLevelTooltipPane (line 160) | function MaxLevelTooltipPane() {
function SilverProdTooltipPane (line 169) | function SilverProdTooltipPane() {
function SelectedSilverTooltipPane (line 177) | function SelectedSilverTooltipPane() {
function RangeTooltipPane (line 211) | function RangeTooltipPane() {
function MinEnergyTooltipPane (line 221) | function MinEnergyTooltipPane() {
function Time50TooltipPane (line 230) | function Time50TooltipPane() {
function Time90TooltipPane (line 238) | function Time90TooltipPane() {
function EnergyGrowthTooltipPane (line 247) | function EnergyGrowthTooltipPane() {
function SilverGrowthTooltipPane (line 256) | function SilverGrowthTooltipPane() {
function SilverCapTooltipPane (line 264) | function SilverCapTooltipPane() {
function PiratesTooltipPane (line 272) | function PiratesTooltipPane() {
function UpgradesTooltipPane (line 280) | function UpgradesTooltipPane() {
function ModalHelpTooltipPane (line 288) | function ModalHelpTooltipPane() {
function ModalPlanetDetailsTooltipPane (line 292) | function ModalPlanetDetailsTooltipPane() {
function ModalLeaderboardTooltipPane (line 296) | function ModalLeaderboardTooltipPane() {
function ModalPlanetDexTooltipPane (line 300) | function ModalPlanetDexTooltipPane() {
function ModalUpgradeDetailsTooltipPane (line 304) | function ModalUpgradeDetailsTooltipPane() {
function ModalTwitterVerificationTooltipPane (line 308) | function ModalTwitterVerificationTooltipPane() {
function ModalBroadcastTooltipPane (line 312) | function ModalBroadcastTooltipPane() {
function BonusEnergyCapTooltipPane (line 316) | function BonusEnergyCapTooltipPane() {
function BonusEnergyGroTooltipPane (line 326) | function BonusEnergyGroTooltipPane() {
function BonusRangeTooltipPane (line 336) | function BonusRangeTooltipPane() {
function BonusSpeedTooltipPane (line 346) | function BonusSpeedTooltipPane() {
function BonusDefenseTooltipPane (line 356) | function BonusDefenseTooltipPane() {
function BonusSpaceJunkTooltipPane (line 366) | function BonusSpaceJunkTooltipPane() {
function ClowntownTooltipPane (line 376) | function ClowntownTooltipPane() {
function DefenseTooltipPane (line 392) | function DefenseTooltipPane() {
function SpaceJunkTooltipPane (line 401) | function SpaceJunkTooltipPane() {
function AbandonTooltipPane (line 412) | function AbandonTooltipPane() {
function SpeedTooltipPane (line 429) | function SpeedTooltipPane() {
function RetryTransactionPane (line 438) | function RetryTransactionPane() {
function CancelTransactionPane (line 442) | function CancelTransactionPane() {
function PrioritizeTransactionPane (line 446) | function PrioritizeTransactionPane() {
function ArtifactBuffPane (line 450) | function ArtifactBuffPane() {
function PluginsTooltipPane (line 454) | function PluginsTooltipPane() {
function SettingsPane (line 458) | function SettingsPane() {
function YourArtifacts (line 462) | function YourArtifacts() {
function InvadablePane (line 466) | function InvadablePane() {
function CapturablePane (line 470) | function CapturablePane() {
function TooltipContent (line 488) | function TooltipContent({ name }: { name: TooltipName | undefined }) {
FILE: src/Frontend/Panes/TransactionLogPane.tsx
function TransactionState (line 55) | function TransactionState({ tx }: { tx: Transaction }) {
function QueuedTransactionsTable (line 219) | function QueuedTransactionsTable({ transactions }: { transactions: Wrapp...
function TransactionLogPane (line 387) | function TransactionLogPane({
FILE: src/Frontend/Panes/TutorialPane.tsx
function TutorialPaneContent (line 17) | function TutorialPaneContent({ tutorialState }: { tutorialState: Tutoria...
function TutorialPane (line 244) | function TutorialPane({ tutorialHook }: { tutorialHook: Hook<boolean> }) {
FILE: src/Frontend/Panes/TwitterVerifyPane.tsx
function TwitterVerifyPane (line 14) | function TwitterVerifyPane({ visible, onClose }: { visible: boolean; onC...
FILE: src/Frontend/Panes/UpgradeDetailsPane.tsx
constant SECTION_MARGIN (line 21) | const SECTION_MARGIN = '0.75em';
function UpgradeDetailsPaneHelpContent (line 31) | function UpgradeDetailsPaneHelpContent() {
function SilverRequired (line 47) | function SilverRequired({ planet }: { planet: Planet }) {
function UpgradeDetailsPane (line 67) | function UpgradeDetailsPane({
FILE: src/Frontend/Panes/WikiPane.tsx
function WikiPane (line 5) | function WikiPane({ children }: { children: React.ReactNode }) {
FILE: src/Frontend/Panes/ZoomPane.tsx
function ZoomPane (line 33) | function ZoomPane() {
FILE: src/Frontend/Renderers/Artifacts/ArtifactRenderer.ts
constant NUM_BIOMES (line 7) | const NUM_BIOMES = MAX_BIOME;
class ArtifactRenderer (line 22) | class ArtifactRenderer extends WebGLManager {
method constructor (line 32) | constructor(canvas: HTMLCanvasElement, isDex = true) {
method setIsDex (line 44) | public setIsDex(isDex: boolean) {
method setScroll (line 48) | public setScroll(scroll: number) {
method setVisible (line 52) | public setVisible(visible: boolean): void {
method setArtifacts (line 56) | public setArtifacts(artifacts: Artifact[]): void {
method queueRarityColumn (line 60) | private queueRarityColumn(rarity: ArtifactRarity, startX: number) {
method containsArtifact (line 68) | private containsArtifact(biome: Biome, rarity: ArtifactRarity, type: A...
method queueArtifactColumn (line 82) | private queueArtifactColumn(type: ArtifactType, rarity: ArtifactRarity...
method drawDex (line 99) | private drawDex() {
method drawList (line 105) | private drawList() {
method draw (line 114) | private draw() {
method loop (line 121) | private loop() {
method destroy (line 131) | public destroy() {
FILE: src/Frontend/Renderers/GifRenderer.ts
type Window (line 21) | interface Window {
constant COLORS (line 27) | const COLORS: Record<ArtifactFileColor, readonly [number, number, number...
class GifRenderer (line 32) | class GifRenderer extends WebGLManager {
method constructor (line 42) | constructor(canvas: HTMLCanvasElement, dim: number, isThumb: boolean) {
method setDim (line 51) | private setDim(dim: number) {
method drawSprite (line 65) | private drawSprite(artifact: Artifact, atFrame: number | undefined = u...
method getBase64 (line 77) | private getBase64(): string {
method getFileName (line 83) | private getFileName(
method addSprite (line 99) | private addSprite(
method addVideo (line 112) | private async addVideo(
method addBiomes (line 143) | private async addBiomes(videoMode: boolean, dir: JSZip) {
method addAncient (line 155) | private async addAncient(videoMode: boolean, dir: JSZip) {
method getAll (line 165) | private async getAll(videoMode = false) {
method getAllSprites (line 183) | getAllSprites() {
method getAllVideos (line 187) | getAllVideos() {
method clear (line 191) | clear() {
FILE: src/Frontend/Renderers/LandingPageCanvas.tsx
type Position (line 12) | type Position = { x: number; y: number };
type Point (line 13) | type Point = {
type Edge (line 20) | type Edge = [number, number];
class LandingPageCanvasRenderer (line 22) | class LandingPageCanvasRenderer {
method constructor (line 36) | private constructor(canvas: HTMLCanvasElement) {
method makeConstellation (line 55) | private makeConstellation(center: Position): void {
method setupDraw (line 102) | private setupDraw() {
method allowMouse (line 136) | private allowMouse(): boolean {
method frame (line 140) | private frame(): void {
method mouseMove (line 233) | private mouseMove(e: MouseEvent) {
method _mouseMove (line 238) | private _mouseMove(e: MouseEvent) {
method initialize (line 275) | static initialize(canvas: HTMLCanvasElement) {
method destroyInstance (line 284) | static destroyInstance(): void {
function LandingPageCanvas (line 294) | function LandingPageCanvas() {
function LandingPageBackground (line 319) | function LandingPageBackground() {
FILE: src/Frontend/Renderers/PlanetscapeRenderer/PlanetIcons.tsx
function PlanetIcons (line 49) | function PlanetIcons({ planet }: { planet: Planet | undefined }) {
FILE: src/Frontend/Styles/Colors.tsx
constant ANCIENT_PURPLE (line 34) | const ANCIENT_PURPLE = '#d23191';
constant ANCIENT_BLUE (line 35) | const ANCIENT_BLUE = '#b2fffc';
FILE: src/Frontend/Styles/Mixins.tsx
function planetBackground (line 15) | function planetBackground({ planet }: { planet: Planet | undefined }) {
FILE: src/Frontend/Styles/dfstyles.ts
constant ARTIFACT_ROW_H (line 6) | const ARTIFACT_ROW_H = 48;
constant SPACE_TYPE_COLORS (line 8) | const SPACE_TYPE_COLORS = {
FILE: src/Frontend/Utils/AppHooks.ts
function useOverlayContainer (line 29) | function useOverlayContainer(): HTMLDivElement | null {
function useAccount (line 37) | function useAccount(uiManager: GameUIManager): EthAddress | undefined {
function usePlayer (line 46) | function usePlayer(
function useSelectedPlanet (line 69) | function useSelectedPlanet(uiManager: GameUIManager): Wrapper<Planet | u...
function useSelectedPlanetId (line 74) | function useSelectedPlanetId(uiManager: GameUIManager, defaultId?: Locat...
function usePlanet (line 78) | function usePlanet(
function useHoverPlanet (line 107) | function useHoverPlanet(uiManager: GameUIManager): Wrapper<Planet | unde...
function useHoverArtifact (line 111) | function useHoverArtifact(uiManager: GameUIManager): Wrapper<Artifact | ...
function useHoverArtifactId (line 115) | function useHoverArtifactId(uiManager: GameUIManager): Wrapper<ArtifactI...
function useMyArtifactsList (line 119) | function useMyArtifactsList(uiManager: GameUIManager) {
function usePlanetArtifacts (line 132) | function usePlanetArtifacts(
function usePlanetInactiveArtifacts (line 144) | function usePlanetInactiveArtifacts(
function useActiveArtifact (line 154) | function useActiveArtifact(
function useSelectedArtifact (line 166) | function useSelectedArtifact(uiManager: GameUIManager): Wrapper<Artifact...
function useArtifact (line 170) | function useArtifact(uiManager: GameUIManager, artifactId: ArtifactId) {
function useLeaderboard (line 195) | function useLeaderboard(poll: number | undefined = undefined): {
function usePopAllOnSelectedPlanetChanged (line 216) | function usePopAllOnSelectedPlanetChanged(
type TransactionRecord (line 229) | type TransactionRecord = Record<TransactionId, Transaction>;
function useTransactionLog (line 235) | function useTransactionLog() {
function usePaused (line 281) | function usePaused() {
FILE: src/Frontend/Utils/BrowserChecks.ts
type Incompatibility (line 3) | const enum Incompatibility {
type FeatureList (line 40) | type FeatureList = Partial<Record<Incompatibility, boolean>>;
FILE: src/Frontend/Utils/EmitterHooks.ts
function useEmitterSubscribe (line 10) | function useEmitterSubscribe<T>(
function useEmitterValue (line 34) | function useEmitterValue<T>(emitter: Monomitter<T>, initialVal: T) {
function useWrappedEmitter (line 51) | function useWrappedEmitter<T>(
FILE: src/Frontend/Utils/EmitterUtils.ts
function getObjectWithIdFromMap (line 12) | function getObjectWithIdFromMap<Obj, Id>(
function getDisposableEmitter (line 46) | function getDisposableEmitter<Obj, Id>(
function setObjectSyncState (line 75) | function setObjectSyncState<Obj, Id>(
type Diff (line 108) | interface Diff<Type> {
function generateDiffEmitter (line 117) | function generateDiffEmitter<Obj>(
FILE: src/Frontend/Utils/Hooks.tsx
function usePoll (line 9) | function usePoll(
FILE: src/Frontend/Utils/KeyEmitters.ts
function listenForKeyboardEvents (line 23) | function listenForKeyboardEvents() {
function unlinkKeyboardEvents (line 28) | function unlinkKeyboardEvents() {
function shouldIgnoreShortcutKeypress (line 37) | function shouldIgnoreShortcutKeypress(e: KeyboardEvent): boolean {
function getSpecialKeyFromEvent (line 44) | function getSpecialKeyFromEvent(e: KeyboardEvent): string | undefined {
function useIsDown (line 50) | function useIsDown(key?: string) {
function useOnUp (line 63) | function useOnUp(key: string, onUp: () => void, deps: React.DependencyLi...
FILE: src/Frontend/Utils/SettingsHooks.tsx
constant ALL_AUTO_GAS_SETTINGS (line 23) | const ALL_AUTO_GAS_SETTINGS = [
function onlyInProduction (line 29) | function onlyInProduction(): string {
function onlyInDevelopment (line 33) | function onlyInDevelopment(): string {
type SettingStorageConfig (line 76) | interface SettingStorageConfig {
function getLocalStorageSettingKey (line 84) | function getLocalStorageSettingKey(
function getSetting (line 98) | function getSetting(config: SettingStorageConfig, setting: Setting): str...
function setSetting (line 113) | function setSetting(
function getBooleanSetting (line 131) | function getBooleanSetting(config: SettingStorageConfig, setting: Settin...
function setBooleanSetting (line 139) | function setBooleanSetting(config: SettingStorageConfig, setting: Settin...
function getNumberSetting (line 146) | function getNumberSetting(config: SettingStorageConfig, setting: Setting...
function setNumberSetting (line 160) | function setNumberSetting(config: SettingStorageConfig, setting: Setting...
function useSetting (line 167) | function useSetting(
function StringSetting (line 194) | function StringSetting({
function ColorSetting (line 219) | function ColorSetting({
function useNumberSetting (line 248) | function useNumberSetting(
function useBooleanSetting (line 271) | function useBooleanSetting(
function BooleanSetting (line 292) | function BooleanSetting({
function NumberSetting (line 314) | function NumberSetting({
function MultiSelectSetting (line 340) | function MultiSelectSetting({
function pollSetting (line 375) | function pollSetting(
FILE: src/Frontend/Utils/ShortcutConstants.ts
constant MODAL_BACK_SHORTCUT (line 4) | const MODAL_BACK_SHORTCUT = 't';
constant CLOSE_MODAL (line 5) | const CLOSE_MODAL = 't';
constant TOGGLE_SETTINGS_PANE (line 6) | const TOGGLE_SETTINGS_PANE = 'h';
constant TOGGLE_HELP_PANE (line 7) | const TOGGLE_HELP_PANE = 'j';
constant TOGGLE_PLUGINS_PANE (line 8) | const TOGGLE_PLUGINS_PANE = 'k';
constant TOGGLE_YOUR_ARTIFACTS_PANE (line 9) | const TOGGLE_YOUR_ARTIFACTS_PANE = 'l';
constant TOGGLE_YOUR_PLANETS_DEX_PANE (line 10) | const TOGGLE_YOUR_PLANETS_DEX_PANE = ';';
constant TOGGLE_TRANSACTIONS_PANE (line 11) | const TOGGLE_TRANSACTIONS_PANE = "'";
constant TOGGLE_PLANET_ARTIFACTS_PANE (line 14) | const TOGGLE_PLANET_ARTIFACTS_PANE = 's';
constant TOGGLE_HAT_PANE (line 15) | const TOGGLE_HAT_PANE = 'x';
constant TOGGLE_ABANDON (line 16) | const TOGGLE_ABANDON = 'r';
constant INVADE (line 17) | const INVADE = 'y';
constant MINE_ARTIFACT (line 18) | const MINE_ARTIFACT = 'f';
constant TOGGLE_BROADCAST_PANE (line 19) | const TOGGLE_BROADCAST_PANE = 'z';
constant TOGGLE_UPGRADES_PANE (line 20) | const TOGGLE_UPGRADES_PANE = 'a';
constant TOGGLE_SEND (line 21) | const TOGGLE_SEND = 'q';
constant TOGGLE_PLANET_INFO_PANE (line 22) | const TOGGLE_PLANET_INFO_PANE = 'c';
constant EXIT_PANE (line 23) | const EXIT_PANE = SpecialKey.Escape;
constant TOGGLE_DIAGNOSTICS_PANE (line 26) | const TOGGLE_DIAGNOSTICS_PANE = 'i';
constant TOGGLE_EXPLORE (line 27) | const TOGGLE_EXPLORE = SpecialKey.Space;
constant TOGGLE_TARGETTING (line 28) | const TOGGLE_TARGETTING = '`';
FILE: src/Frontend/Utils/TerminalTypes.ts
type TerminalTextStyle (line 1) | const enum TerminalTextStyle {
FILE: src/Frontend/Utils/TimeUtils.ts
function formatDuration (line 1) | function formatDuration(durationMs: number) {
function timestampSection (line 15) | function timestampSection(value: number) {
FILE: src/Frontend/Utils/UIEmitter.ts
type UIEmitterEvent (line 3) | const enum UIEmitterEvent {
class UIEmitter (line 36) | class UIEmitter extends EventEmitter {
method constructor (line 39) | private constructor() {
method getInstance (line 43) | static getInstance(): UIEmitter {
method initialize (line 51) | static initialize(): UIEmitter {
FILE: src/Frontend/Utils/constants.ts
constant MIN_CHUNK_SIZE (line 6) | const MIN_CHUNK_SIZE = 16;
constant MAX_CHUNK_SIZE (line 15) | const MAX_CHUNK_SIZE = 2 ** 14;
constant LOCATION_ID_UB (line 17) | const LOCATION_ID_UB = bigInt(
type DFZIndex (line 23) | const enum DFZIndex {
FILE: src/Frontend/Utils/createDefinedContext.ts
type ContextHookWithProvider (line 3) | type ContextHookWithProvider<T> = {
function createDefinedContext (line 14) | function createDefinedContext<T>(): ContextHookWithProvider<T> {
FILE: src/Frontend/Views/ArtifactLink.tsx
function ArtifactLink (line 10) | function ArtifactLink({
FILE: src/Frontend/Views/ArtifactRow.tsx
function ArtifactThumb (line 56) | function ArtifactThumb({
function SelectArtifactRow (line 103) | function SelectArtifactRow({
FILE: src/Frontend/Views/CadetWormhole.tsx
function CadetWormhole (line 22) | function CadetWormhole({ imgUrl }: { imgUrl: string }) {
FILE: src/Frontend/Views/DFErrorBoundary.tsx
class DFErrorBoundary (line 6) | class DFErrorBoundary extends React.Component<unknown, { hasError: boole...
method constructor (line 7) | constructor(props: unknown) {
method getDerivedStateFromError (line 12) | static getDerivedStateFromError(_error: Error) {
method componentDidCatch (line 16) | componentDidCatch(error: Error, _errorInfo: React.ErrorInfo) {
method render (line 21) | render() {
FILE: src/Frontend/Views/DarkForestTips.tsx
constant CYCLE_TIPS_INTERVAL (line 13) | const CYCLE_TIPS_INTERVAL = 10 * 1000;
function DarkForestTips (line 15) | function DarkForestTips({
function MakeDarkForestTips (line 62) | function MakeDarkForestTips(tips: string[]) {
FILE: src/Frontend/Views/EmojiPicker.tsx
function EmojiPicker (line 6) | function EmojiPicker({
FILE: src/Frontend/Views/EmojiPlanetNotification.tsx
function EmojiPlanetNotification (line 21) | function EmojiPlanetNotification({ wrapper }: { wrapper: Wrapper<Planet ...
FILE: src/Frontend/Views/GameWindowLayout.tsx
function GameWindowLayout (line 38) | function GameWindowLayout({
FILE: src/Frontend/Views/GenericErrorBoundary.tsx
type GenericErrorBoundaryProps (line 5) | interface GenericErrorBoundaryProps {
class GenericErrorBoundary (line 9) | class GenericErrorBoundary extends React.Component<
method constructor (line 13) | constructor(props: GenericErrorBoundaryProps) {
method getDerivedStateFromError (line 18) | static getDerivedStateFromError(_error: Error) {
method componentDidCatch (line 22) | componentDidCatch(error: Error, _errorInfo: React.ErrorInfo) {
method render (line 27) | render() {
FILE: src/Frontend/Views/LandingPageRoundArt.tsx
function LandingPageRoundArt (line 6) | function LandingPageRoundArt() {
FILE: src/Frontend/Views/Leaderboard.tsx
function LeadboardDisplay (line 16) | function LeadboardDisplay() {
function scoreToString (line 30) | function scoreToString(score?: number | null) {
function playerToEntry (line 44) | function playerToEntry(playerStr: string, color: string) {
function getRankColor (line 53) | function getRankColor([rank, score]: [number, number | undefined]) {
function LeaderboardTable (line 85) | function LeaderboardTable({ rows }: { rows: Array<[string, number | unde...
function CountDown (line 121) | function CountDown() {
function LeaderboardBody (line 146) | function LeaderboardBody({ leaderboard }: { leaderboard: Leaderboard }) {
FILE: src/Frontend/Views/ModalIcon.tsx
function ModalToggleButton (line 40) | function ModalToggleButton({
FILE: src/Frontend/Views/ModalPane.tsx
function InformationSection (line 15) | function InformationSection({ children, hide }: { children: React.ReactN...
type ModalProps (line 38) | type ModalProps = PaneProps & {
type ModalFrame (line 56) | interface ModalFrame {
type ModalHandle (line 65) | interface ModalHandle {
function ModalPane (line 73) | function ModalPane({
FILE: src/Frontend/Views/NetworkHealth.tsx
function NetworkHealth (line 9) | function NetworkHealth() {
function NetworkHealthForGasSetting (line 47) | function NetworkHealthForGasSetting({
FILE: src/Frontend/Views/Notifications.tsx
function Notification (line 18) | function Notification({
function NotificationsPane (line 48) | function NotificationsPane() {
constant NOTIF_SIZE (line 114) | const NOTIF_SIZE = '4em';
constant MARGIN (line 115) | const MARGIN = '8px';
FILE: src/Frontend/Views/Paused.tsx
function Paused (line 7) | function Paused() {
FILE: src/Frontend/Views/PlanetCard.tsx
function PlanetCardTitle (line 32) | function PlanetCardTitle({
function PlanetCard (line 61) | function PlanetCard({
FILE: src/Frontend/Views/PlanetCardComponents.tsx
function PlanetActiveArtifact (line 51) | function PlanetActiveArtifact({
FILE: src/Frontend/Views/PlanetLink.tsx
function PlanetLink (line 9) | function PlanetLink({ planet, children }: { planet: Planet; children: Re...
FILE: src/Frontend/Views/PlanetNotifications.tsx
type PlanetNotifType (line 13) | const enum PlanetNotifType {
function getNotifsForPlanet (line 24) | function getNotifsForPlanet(
function EmojiRow (line 39) | function EmojiRow({ wrapper }: { wrapper: Wrapper<Planet | undefined> }) {
function renderNotification (line 77) | function renderNotification(notif: PlanetNotifType, planet: Wrapper<Plan...
function PlanetNotifications (line 92) | function PlanetNotifications({
FILE: src/Frontend/Views/SendResources.tsx
function ShowPercent (line 52) | function ShowPercent({ value, setValue }: { value: number; setValue: (x:...
function ResourceBar (line 72) | function ResourceBar({
function AbandonButton (line 120) | function AbandonButton({
function SendRow (line 154) | function SendRow({
function SendResources (line 196) | function SendResources({
FILE: src/Frontend/Views/Share.tsx
type ShareProps (line 56) | interface ShareProps<T> {
function Share (line 70) | function Share<T>(props: ShareProps<T>) {
FILE: src/Frontend/Views/SidebarPane.tsx
function SidebarPane (line 17) | function SidebarPane({
FILE: src/Frontend/Views/SortableTable.tsx
function SortableTable (line 27) | function SortableTable<T>({
FILE: src/Frontend/Views/TabbedView.tsx
function TabbedView (line 11) | function TabbedView({
FILE: src/Frontend/Views/Table.tsx
function Table (line 41) | function Table<T>({
FILE: src/Frontend/Views/Terminal.tsx
constant ENTER_KEY_CODE (line 13) | const ENTER_KEY_CODE = 13;
constant UP_ARROW_KEY_CODE (line 14) | const UP_ARROW_KEY_CODE = 38;
constant ON_INPUT (line 15) | const ON_INPUT = 'ON_INPUT';
type TerminalHandle (line 17) | interface TerminalHandle {
type TerminalProps (line 34) | interface TerminalProps {
function TerminalImpl (line 42) | function TerminalImpl({ promptCharacter }: TerminalProps, ref: React.Ref...
FILE: src/Frontend/Views/TopBar.tsx
function BoardPlacement (line 29) | function BoardPlacement({ account }: { account: EthAddress | undefined }) {
function SpaceJunk (line 55) | function SpaceJunk({ account }: { account: EthAddress | undefined }) {
function CaptureZoneExplanation (line 94) | function CaptureZoneExplanation() {
function CaptureZones (line 137) | function CaptureZones({
function TopBar (line 171) | function TopBar({ twitterVerifyHook }: { twitterVerifyHook: Hook<boolean...
FILE: src/Frontend/Views/UpgradePreview.tsx
function UpgradePreview (line 139) | function UpgradePreview({
FILE: src/Frontend/Views/WithdrawSilver.tsx
function SilverInput (line 38) | function SilverInput({
function WithdrawSilver (line 70) | function WithdrawSilver({ wrapper }: { wrapper: Wrapper<Planet | undefin...
FILE: src/_types/darkforest/api/ChunkStoreTypes.ts
type BucketId (line 6) | type BucketId = Abstract<string, 'BucketId'>;
type ChunkId (line 11) | type ChunkId = Abstract<string, 'ChunkId'>;
type PersistedChunk (line 18) | interface PersistedChunk {
type PersistedLocation (line 30) | interface PersistedLocation {
type ChunkStore (line 42) | interface ChunkStore {
FILE: src/_types/darkforest/api/ContractsAPITypes.ts
type ZKArgIdx (line 4) | const enum ZKArgIdx {
type InitArgIdxs (line 11) | const enum InitArgIdxs {
type MoveArgIdxs (line 22) | const enum MoveArgIdxs {
type UpgradeArgIdxs (line 38) | const enum UpgradeArgIdxs {
type ContractEvent (line 43) | const enum ContractEvent {
type ContractsAPIEvent (line 64) | const enum ContractsAPIEvent {
type UpgradeArgs (line 112) | type UpgradeArgs = [string, string];
type MoveArgs (line 114) | type MoveArgs = [
type ClaimArgs (line 141) | type ClaimArgs = [
type DepositArtifactArgs (line 148) | type DepositArtifactArgs = [string, string];
type WithdrawArtifactArgs (line 149) | type WithdrawArtifactArgs = [string, string];
type WhitelistArgs (line 150) | type WhitelistArgs = [string, string];
type PlanetTypeWeights (line 152) | type PlanetTypeWeights = [number, number, number, number, number];
type PlanetTypeWeightsByLevel (line 153) | type PlanetTypeWeightsByLevel = [
type PlanetTypeWeightsBySpaceType (line 165) | type PlanetTypeWeightsBySpaceType = [
type ContractConstants (line 172) | interface ContractConstants {
type ClientMockchainData (line 313) | type ClientMockchainData =
type PlanetEventType (line 325) | const enum PlanetEventType {
FILE: src/_types/darkforest/api/UtilityServerAPITypes.ts
type AddressTwitterMap (line 1) | type AddressTwitterMap = {
FILE: src/_types/global/GlobalTypes.ts
type Hook (line 6) | type Hook<T> = [T, Dispatch<SetStateAction<T>>];
type Window (line 9) | interface Window {
type HashConfig (line 24) | type HashConfig = {
type StatIdx (line 34) | const enum StatIdx {
type MinerWorkerMessage (line 43) | interface MinerWorkerMessage {
type RevealCountdownInfo (line 59) | interface RevealCountdownInfo {
type ClaimCountdownInfo (line 65) | interface ClaimCountdownInfo {
FILE: src/_types/global/global.d.ts
type DFPlugin (line 18) | interface DFPlugin {
FILE: webpack.config.js
function findScopeDirectory (line 14) | function findScopeDirectory() {
method filterSourceMappingUrl (line 91) | filterSourceMappingUrl(url, resourcePath) {
Condensed preview — 531 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,296K chars).
[
{
"path": ".babelrc",
"chars": 221,
"preview": "{\n \"presets\": [\n \"@babel/preset-env\",\n \"@babel/preset-react\",\n [\n \"@babel/preset-typescript\",\n {\n "
},
{
"path": ".dockerignore",
"chars": 13,
"preview": "node_modules\n"
},
{
"path": ".eslintignore",
"chars": 37,
"preview": "public/\ndeclarations/\ndist/\nplugins/\n"
},
{
"path": ".gitignore",
"chars": 380,
"preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n\n# p"
},
{
"path": ".nvmrc",
"chars": 3,
"preview": "16\n"
},
{
"path": ".prettierignore",
"chars": 176,
"preview": "dist/\ndeclarations/\nplugins/dist/\nembedded_plugins/dist/\npublic/\nsrc/styles/font/\nsrc/styles/icomoon/\nembedded_plugins/R"
},
{
"path": "LICENSE",
"chars": 35149,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "README.md",
"chars": 2317,
"preview": "# Dark Forest Client\n\n## Development Guide\n\n### Installing Core Dependencies\n\n- Node (v14.x OR v16.x)\n- Yarn (Javascript"
},
{
"path": "docs/README.md",
"chars": 15659,
"preview": "# client\n\n## Table of contents\n\n### Modules\n\n- [Backend/GameLogic/ArrivalUtils](modules/Backend_GameLogic_ArrivalUtils.m"
},
{
"path": "docs/classes/Backend_GameLogic_CaptureZoneGenerator.CaptureZoneGenerator.md",
"chars": 4940,
"preview": "# Class: CaptureZoneGenerator\n\n[Backend/GameLogic/CaptureZoneGenerator](../modules/Backend_GameLogic_CaptureZoneGenerato"
},
{
"path": "docs/classes/Backend_GameLogic_ContractsAPI.ContractsAPI.md",
"chars": 15577,
"preview": "# Class: ContractsAPI\n\n[Backend/GameLogic/ContractsAPI](../modules/Backend_GameLogic_ContractsAPI.md).ContractsAPI\n\nRoug"
},
{
"path": "docs/classes/Backend_GameLogic_GameManager.default.md",
"chars": 79479,
"preview": "# Class: default\n\n[Backend/GameLogic/GameManager](../modules/Backend_GameLogic_GameManager.md).default\n\n## Hierarchy\n\n- "
},
{
"path": "docs/classes/Backend_GameLogic_GameObjects.GameObjects.md",
"chars": 32933,
"preview": "# Class: GameObjects\n\n[Backend/GameLogic/GameObjects](../modules/Backend_GameLogic_GameObjects.md).GameObjects\n\nRepresen"
},
{
"path": "docs/classes/Backend_GameLogic_GameUIManager.default.md",
"chars": 55981,
"preview": "# Class: default\n\n[Backend/GameLogic/GameUIManager](../modules/Backend_GameLogic_GameUIManager.md).default\n\n## Hierarchy"
},
{
"path": "docs/classes/Backend_GameLogic_InitialGameStateDownloader.InitialGameStateDownloader.md",
"chars": 2298,
"preview": "# Class: InitialGameStateDownloader\n\n[Backend/GameLogic/InitialGameStateDownloader](../modules/Backend_GameLogic_Initial"
},
{
"path": "docs/classes/Backend_GameLogic_LayeredMap.LayeredMap.md",
"chars": 3074,
"preview": "# Class: LayeredMap\n\n[Backend/GameLogic/LayeredMap](../modules/Backend_GameLogic_LayeredMap.md).LayeredMap\n\nData structu"
},
{
"path": "docs/classes/Backend_GameLogic_PluginManager.PluginManager.md",
"chars": 11269,
"preview": "# Class: PluginManager\n\n[Backend/GameLogic/PluginManager](../modules/Backend_GameLogic_PluginManager.md).PluginManager\n\n"
},
{
"path": "docs/classes/Backend_GameLogic_PluginManager.ProcessInfo.md",
"chars": 743,
"preview": "# Class: ProcessInfo\n\n[Backend/GameLogic/PluginManager](../modules/Backend_GameLogic_PluginManager.md).ProcessInfo\n\nRepr"
},
{
"path": "docs/classes/Backend_GameLogic_TutorialManager.default.md",
"chars": 3599,
"preview": "# Class: default\n\n[Backend/GameLogic/TutorialManager](../modules/Backend_GameLogic_TutorialManager.md).default\n\n## Hiera"
},
{
"path": "docs/classes/Backend_GameLogic_ViewportEntities.ViewportEntities.md",
"chars": 5881,
"preview": "# Class: ViewportEntities\n\n[Backend/GameLogic/ViewportEntities](../modules/Backend_GameLogic_ViewportEntities.md).Viewpo"
},
{
"path": "docs/classes/Backend_Miner_MinerManager.HomePlanetMinerChunkStore.md",
"chars": 2397,
"preview": "# Class: HomePlanetMinerChunkStore\n\n[Backend/Miner/MinerManager](../modules/Backend_Miner_MinerManager.md).HomePlanetMin"
},
{
"path": "docs/classes/Backend_Miner_MinerManager.default.md",
"chars": 10163,
"preview": "# Class: default\n\n[Backend/Miner/MinerManager](../modules/Backend_Miner_MinerManager.md).default\n\n## Hierarchy\n\n- `Event"
},
{
"path": "docs/classes/Backend_Miner_MiningPatterns.SpiralPattern.md",
"chars": 1863,
"preview": "# Class: SpiralPattern\n\n[Backend/Miner/MiningPatterns](../modules/Backend_Miner_MiningPatterns.md).SpiralPattern\n\n## Imp"
},
{
"path": "docs/classes/Backend_Miner_MiningPatterns.SwissCheesePattern.md",
"chars": 1908,
"preview": "# Class: SwissCheesePattern\n\n[Backend/Miner/MiningPatterns](../modules/Backend_Miner_MiningPatterns.md).SwissCheesePatte"
},
{
"path": "docs/classes/Backend_Miner_MiningPatterns.TowardsCenterPattern.md",
"chars": 2296,
"preview": "# Class: TowardsCenterPattern\n\n[Backend/Miner/MiningPatterns](../modules/Backend_Miner_MiningPatterns.md).TowardsCenterP"
},
{
"path": "docs/classes/Backend_Miner_MiningPatterns.TowardsCenterPatternV2.md",
"chars": 2611,
"preview": "# Class: TowardsCenterPatternV2\n\n[Backend/Miner/MiningPatterns](../modules/Backend_Miner_MiningPatterns.md).TowardsCente"
},
{
"path": "docs/classes/Backend_Network_EventLogger.EventLogger.md",
"chars": 1607,
"preview": "# Class: EventLogger\n\n[Backend/Network/EventLogger](../modules/Backend_Network_EventLogger.md).EventLogger\n\n## Table of "
},
{
"path": "docs/classes/Backend_Storage_PersistentChunkStore.default.md",
"chars": 15568,
"preview": "# Class: default\n\n[Backend/Storage/PersistentChunkStore](../modules/Backend_Storage_PersistentChunkStore.md).default\n\n##"
},
{
"path": "docs/classes/Backend_Storage_ReaderDataStore.default.md",
"chars": 4705,
"preview": "# Class: default\n\n[Backend/Storage/ReaderDataStore](../modules/Backend_Storage_ReaderDataStore.md).default\n\nA data store"
},
{
"path": "docs/classes/Backend_Utils_SnarkArgsHelper.default.md",
"chars": 7132,
"preview": "# Class: default\n\n[Backend/Utils/SnarkArgsHelper](../modules/Backend_Utils_SnarkArgsHelper.md).default\n\n## Table of cont"
},
{
"path": "docs/classes/Backend_Utils_Wrapper.Wrapper.md",
"chars": 768,
"preview": "# Class: Wrapper<T\\>\n\n[Backend/Utils/Wrapper](../modules/Backend_Utils_Wrapper.md).Wrapper\n\nReact uses referential ident"
},
{
"path": "docs/classes/Frontend_Components_Btn.DarkForestButton.md",
"chars": 2475,
"preview": "# Class: DarkForestButton\n\n[Frontend/Components/Btn](../modules/Frontend_Components_Btn.md).DarkForestButton\n\n## Hierarc"
},
{
"path": "docs/classes/Frontend_Components_Btn.DarkForestShortcutButton.md",
"chars": 6047,
"preview": "# Class: DarkForestShortcutButton\n\n[Frontend/Components/Btn](../modules/Frontend_Components_Btn.md).DarkForestShortcutBu"
},
{
"path": "docs/classes/Frontend_Components_Btn.ShortcutPressedEvent.md",
"chars": 395,
"preview": "# Class: ShortcutPressedEvent\n\n[Frontend/Components/Btn](../modules/Frontend_Components_Btn.md).ShortcutPressedEvent\n\n##"
},
{
"path": "docs/classes/Frontend_Components_Input.DarkForestCheckbox.md",
"chars": 3195,
"preview": "# Class: DarkForestCheckbox\n\n[Frontend/Components/Input](../modules/Frontend_Components_Input.md).DarkForestCheckbox\n\n##"
},
{
"path": "docs/classes/Frontend_Components_Input.DarkForestColorInput.md",
"chars": 3228,
"preview": "# Class: DarkForestColorInput\n\n[Frontend/Components/Input](../modules/Frontend_Components_Input.md).DarkForestColorInput"
},
{
"path": "docs/classes/Frontend_Components_Input.DarkForestNumberInput.md",
"chars": 4150,
"preview": "# Class: DarkForestNumberInput\n\n[Frontend/Components/Input](../modules/Frontend_Components_Input.md).DarkForestNumberInp"
},
{
"path": "docs/classes/Frontend_Components_Input.DarkForestTextInput.md",
"chars": 3483,
"preview": "# Class: DarkForestTextInput\n\n[Frontend/Components/Input](../modules/Frontend_Components_Input.md).DarkForestTextInput\n\n"
},
{
"path": "docs/classes/Frontend_Components_Modal.DarkForestModal.md",
"chars": 5737,
"preview": "# Class: DarkForestModal\n\n[Frontend/Components/Modal](../modules/Frontend_Components_Modal.md).DarkForestModal\n\n## Hiera"
},
{
"path": "docs/classes/Frontend_Components_Modal.PositionChangedEvent.md",
"chars": 644,
"preview": "# Class: PositionChangedEvent\n\n[Frontend/Components/Modal](../modules/Frontend_Components_Modal.md).PositionChangedEvent"
},
{
"path": "docs/classes/Frontend_Components_Slider.DarkForestSlider.md",
"chars": 2485,
"preview": "# Class: DarkForestSlider\n\n[Frontend/Components/Slider](../modules/Frontend_Components_Slider.md).DarkForestSlider\n\n## H"
},
{
"path": "docs/classes/Frontend_Components_Slider.DarkForestSliderHandle.md",
"chars": 1227,
"preview": "# Class: DarkForestSliderHandle\n\n[Frontend/Components/Slider](../modules/Frontend_Components_Slider.md).DarkForestSlider"
},
{
"path": "docs/classes/Frontend_Game_ModalManager.default.md",
"chars": 5244,
"preview": "# Class: default\n\n[Frontend/Game/ModalManager](../modules/Frontend_Game_ModalManager.md).default\n\n## Hierarchy\n\n- `Event"
},
{
"path": "docs/classes/Frontend_Game_NotificationManager.default.md",
"chars": 7542,
"preview": "# Class: default\n\n[Frontend/Game/NotificationManager](../modules/Frontend_Game_NotificationManager.md).default\n\n## Hiera"
},
{
"path": "docs/classes/Frontend_Game_Viewport.default.md",
"chars": 14646,
"preview": "# Class: default\n\n[Frontend/Game/Viewport](../modules/Frontend_Game_Viewport.md).default\n\n## Table of contents\n\n### Cons"
},
{
"path": "docs/classes/Frontend_Panes_Lobbies_Reducer.InvalidConfigError.md",
"chars": 803,
"preview": "# Class: InvalidConfigError\n\n[Frontend/Panes/Lobbies/Reducer](../modules/Frontend_Panes_Lobbies_Reducer.md).InvalidConfi"
},
{
"path": "docs/classes/Frontend_Renderers_Artifacts_ArtifactRenderer.ArtifactRenderer.md",
"chars": 6049,
"preview": "# Class: ArtifactRenderer\n\n[Frontend/Renderers/Artifacts/ArtifactRenderer](../modules/Frontend_Renderers_Artifacts_Artif"
},
{
"path": "docs/classes/Frontend_Renderers_GifRenderer.GifRenderer.md",
"chars": 6182,
"preview": "# Class: GifRenderer\n\n[Frontend/Renderers/GifRenderer](../modules/Frontend_Renderers_GifRenderer.md).GifRenderer\n\n## Hie"
},
{
"path": "docs/classes/Frontend_Utils_UIEmitter.default.md",
"chars": 1016,
"preview": "# Class: default\n\n[Frontend/Utils/UIEmitter](../modules/Frontend_Utils_UIEmitter.md).default\n\n## Hierarchy\n\n- `EventEmit"
},
{
"path": "docs/classes/Frontend_Views_DFErrorBoundary.DFErrorBoundary.md",
"chars": 1567,
"preview": "# Class: DFErrorBoundary\n\n[Frontend/Views/DFErrorBoundary](../modules/Frontend_Views_DFErrorBoundary.md).DFErrorBoundary"
},
{
"path": "docs/classes/Frontend_Views_GenericErrorBoundary.GenericErrorBoundary.md",
"chars": 1729,
"preview": "# Class: GenericErrorBoundary\n\n[Frontend/Views/GenericErrorBoundary](../modules/Frontend_Views_GenericErrorBoundary.md)."
},
{
"path": "docs/enums/Backend_GameLogic_GameManager.GameManagerEvent.md",
"chars": 1132,
"preview": "# Enumeration: GameManagerEvent\n\n[Backend/GameLogic/GameManager](../modules/Backend_GameLogic_GameManager.md).GameManage"
},
{
"path": "docs/enums/Backend_GameLogic_GameUIManager.GameUIManagerEvent.md",
"chars": 571,
"preview": "# Enumeration: GameUIManagerEvent\n\n[Backend/GameLogic/GameUIManager](../modules/Backend_GameLogic_GameUIManager.md).Game"
},
{
"path": "docs/enums/Backend_GameLogic_TutorialManager.TutorialManagerEvent.md",
"chars": 361,
"preview": "# Enumeration: TutorialManagerEvent\n\n[Backend/GameLogic/TutorialManager](../modules/Backend_GameLogic_TutorialManager.md"
},
{
"path": "docs/enums/Backend_GameLogic_TutorialManager.TutorialState.md",
"chars": 2014,
"preview": "# Enumeration: TutorialState\n\n[Backend/GameLogic/TutorialManager](../modules/Backend_GameLogic_TutorialManager.md).Tutor"
},
{
"path": "docs/enums/Backend_Miner_MinerManager.MinerManagerEvent.md",
"chars": 361,
"preview": "# Enumeration: MinerManagerEvent\n\n[Backend/Miner/MinerManager](../modules/Backend_Miner_MinerManager.md).MinerManagerEve"
},
{
"path": "docs/enums/Backend_Miner_MiningPatterns.MiningPatternType.md",
"chars": 1196,
"preview": "# Enumeration: MiningPatternType\n\n[Backend/Miner/MiningPatterns](../modules/Backend_Miner_MiningPatterns.md).MiningPatte"
},
{
"path": "docs/enums/Backend_Network_EventLogger.EventType.md",
"chars": 434,
"preview": "# Enumeration: EventType\n\n[Backend/Network/EventLogger](../modules/Backend_Network_EventLogger.md).EventType\n\n## Table o"
},
{
"path": "docs/enums/Backend_Network_UtilityServerAPI.EmailResponse.md",
"chars": 540,
"preview": "# Enumeration: EmailResponse\n\n[Backend/Network/UtilityServerAPI](../modules/Backend_Network_UtilityServerAPI.md).EmailRe"
},
{
"path": "docs/enums/Backend_Storage_ReaderDataStore.SinglePlanetDataStoreEvent.md",
"chars": 578,
"preview": "# Enumeration: SinglePlanetDataStoreEvent\n\n[Backend/Storage/ReaderDataStore](../modules/Backend_Storage_ReaderDataStore."
},
{
"path": "docs/enums/Frontend_Components_Email.EmailCTAMode.md",
"chars": 406,
"preview": "# Enumeration: EmailCTAMode\n\n[Frontend/Components/Email](../modules/Frontend_Components_Email.md).EmailCTAMode\n\n## Table"
},
{
"path": "docs/enums/Frontend_Components_GameLandingPageComponents.InitRenderState.md",
"chars": 591,
"preview": "# Enumeration: InitRenderState\n\n[Frontend/Components/GameLandingPageComponents](../modules/Frontend_Components_GameLandi"
},
{
"path": "docs/enums/Frontend_Game_NotificationManager.NotificationManagerEvent.md",
"chars": 523,
"preview": "# Enumeration: NotificationManagerEvent\n\n[Frontend/Game/NotificationManager](../modules/Frontend_Game_NotificationManage"
},
{
"path": "docs/enums/Frontend_Game_NotificationManager.NotificationType.md",
"chars": 4652,
"preview": "# Enumeration: NotificationType\n\n[Frontend/Game/NotificationManager](../modules/Frontend_Game_NotificationManager.md).No"
},
{
"path": "docs/enums/Frontend_Pages_LandingPage.LandingPageZIndex.md",
"chars": 526,
"preview": "# Enumeration: LandingPageZIndex\n\n[Frontend/Pages/LandingPage](../modules/Frontend_Pages_LandingPage.md).LandingPageZInd"
},
{
"path": "docs/enums/Frontend_Pages_UnsubscribePage.LandingPageZIndex.md",
"chars": 546,
"preview": "# Enumeration: LandingPageZIndex\n\n[Frontend/Pages/UnsubscribePage](../modules/Frontend_Pages_UnsubscribePage.md).Landing"
},
{
"path": "docs/enums/Frontend_Utils_BrowserChecks.Incompatibility.md",
"chars": 1096,
"preview": "# Enumeration: Incompatibility\n\n[Frontend/Utils/BrowserChecks](../modules/Frontend_Utils_BrowserChecks.md).Incompatibili"
},
{
"path": "docs/enums/Frontend_Utils_TerminalTypes.TerminalTextStyle.md",
"chars": 1230,
"preview": "# Enumeration: TerminalTextStyle\n\n[Frontend/Utils/TerminalTypes](../modules/Frontend_Utils_TerminalTypes.md).TerminalTex"
},
{
"path": "docs/enums/Frontend_Utils_UIEmitter.UIEmitterEvent.md",
"chars": 3403,
"preview": "# Enumeration: UIEmitterEvent\n\n[Frontend/Utils/UIEmitter](../modules/Frontend_Utils_UIEmitter.md).UIEmitterEvent\n\n## Tab"
},
{
"path": "docs/enums/Frontend_Utils_constants.DFZIndex.md",
"chars": 697,
"preview": "# Enumeration: DFZIndex\n\n[Frontend/Utils/constants](../modules/Frontend_Utils_constants.md).DFZIndex\n\n## Table of conten"
},
{
"path": "docs/enums/Frontend_Views_PlanetNotifications.PlanetNotifType.md",
"chars": 754,
"preview": "# Enumeration: PlanetNotifType\n\n[Frontend/Views/PlanetNotifications](../modules/Frontend_Views_PlanetNotifications.md).P"
},
{
"path": "docs/enums/types_darkforest_api_ContractsAPITypes.ContractEvent.md",
"chars": 3265,
"preview": "# Enumeration: ContractEvent\n\n[\\_types/darkforest/api/ContractsAPITypes](../modules/types_darkforest_api_ContractsAPITyp"
},
{
"path": "docs/enums/types_darkforest_api_ContractsAPITypes.ContractsAPIEvent.md",
"chars": 3485,
"preview": "# Enumeration: ContractsAPIEvent\n\n[\\_types/darkforest/api/ContractsAPITypes](../modules/types_darkforest_api_ContractsAP"
},
{
"path": "docs/enums/types_darkforest_api_ContractsAPITypes.InitArgIdxs.md",
"chars": 1288,
"preview": "# Enumeration: InitArgIdxs\n\n[\\_types/darkforest/api/ContractsAPITypes](../modules/types_darkforest_api_ContractsAPITypes"
},
{
"path": "docs/enums/types_darkforest_api_ContractsAPITypes.MoveArgIdxs.md",
"chars": 1917,
"preview": "# Enumeration: MoveArgIdxs\n\n[\\_types/darkforest/api/ContractsAPITypes](../modules/types_darkforest_api_ContractsAPITypes"
},
{
"path": "docs/enums/types_darkforest_api_ContractsAPITypes.PlanetEventType.md",
"chars": 330,
"preview": "# Enumeration: PlanetEventType\n\n[\\_types/darkforest/api/ContractsAPITypes](../modules/types_darkforest_api_ContractsAPIT"
},
{
"path": "docs/enums/types_darkforest_api_ContractsAPITypes.UpgradeArgIdxs.md",
"chars": 488,
"preview": "# Enumeration: UpgradeArgIdxs\n\n[\\_types/darkforest/api/ContractsAPITypes](../modules/types_darkforest_api_ContractsAPITy"
},
{
"path": "docs/enums/types_darkforest_api_ContractsAPITypes.ZKArgIdx.md",
"chars": 630,
"preview": "# Enumeration: ZKArgIdx\n\n[\\_types/darkforest/api/ContractsAPITypes](../modules/types_darkforest_api_ContractsAPITypes.md"
},
{
"path": "docs/enums/types_global_GlobalTypes.StatIdx.md",
"chars": 752,
"preview": "# Enumeration: StatIdx\n\n[\\_types/global/GlobalTypes](../modules/types_global_GlobalTypes.md).StatIdx\n\n## Table of conten"
},
{
"path": "docs/interfaces/Backend_GameLogic_ArrivalUtils.PlanetDiff.md",
"chars": 669,
"preview": "# Interface: PlanetDiff\n\n[Backend/GameLogic/ArrivalUtils](../modules/Backend_GameLogic_ArrivalUtils.md).PlanetDiff\n\n**`p"
},
{
"path": "docs/interfaces/Backend_GameLogic_InitialGameStateDownloader.InitialGameState.md",
"chars": 3414,
"preview": "# Interface: InitialGameState\n\n[Backend/GameLogic/InitialGameStateDownloader](../modules/Backend_GameLogic_InitialGameSt"
},
{
"path": "docs/interfaces/Backend_Miner_MiningPatterns.MiningPattern.md",
"chars": 1114,
"preview": "# Interface: MiningPattern\n\n[Backend/Miner/MiningPatterns](../modules/Backend_Miner_MiningPatterns.md).MiningPattern\n\n##"
},
{
"path": "docs/interfaces/Backend_Network_AccountManager.Account.md",
"chars": 445,
"preview": "# Interface: Account\n\n[Backend/Network/AccountManager](../modules/Backend_Network_AccountManager.md).Account\n\nRepresents"
},
{
"path": "docs/interfaces/Backend_Plugins_EmbeddedPluginLoader.EmbeddedPlugin.md",
"chars": 586,
"preview": "# Interface: EmbeddedPlugin\n\n[Backend/Plugins/EmbeddedPluginLoader](../modules/Backend_Plugins_EmbeddedPluginLoader.md)."
},
{
"path": "docs/interfaces/Backend_Plugins_PluginProcess.PluginProcess.md",
"chars": 1463,
"preview": "# Interface: PluginProcess\n\n[Backend/Plugins/PluginProcess](../modules/Backend_Plugins_PluginProcess.md).PluginProcess\n\n"
},
{
"path": "docs/interfaces/Backend_Plugins_SerializedPlugin.SerializedPlugin.md",
"chars": 1039,
"preview": "# Interface: SerializedPlugin\n\n[Backend/Plugins/SerializedPlugin](../modules/Backend_Plugins_SerializedPlugin.md).Serial"
},
{
"path": "docs/interfaces/Frontend_Components_TextLoadingBar.LoadingBarHandle.md",
"chars": 513,
"preview": "# Interface: LoadingBarHandle\n\n[Frontend/Components/TextLoadingBar](../modules/Frontend_Components_TextLoadingBar.md).Lo"
},
{
"path": "docs/interfaces/Frontend_Panes_Lobbies_LobbiesUtils.LobbiesPaneProps.md",
"chars": 873,
"preview": "# Interface: LobbiesPaneProps\n\n[Frontend/Panes/Lobbies/LobbiesUtils](../modules/Frontend_Panes_Lobbies_LobbiesUtils.md)."
},
{
"path": "docs/interfaces/Frontend_Panes_Tooltip.TooltipProps.md",
"chars": 2045,
"preview": "# Interface: TooltipProps\n\n[Frontend/Panes/Tooltip](../modules/Frontend_Panes_Tooltip.md).TooltipProps\n\n## Hierarchy\n\n- "
},
{
"path": "docs/interfaces/Frontend_Panes_Tooltip.TooltipTriggerProps.md",
"chars": 1339,
"preview": "# Interface: TooltipTriggerProps\n\n[Frontend/Panes/Tooltip](../modules/Frontend_Panes_Tooltip.md).TooltipTriggerProps\n\nEa"
},
{
"path": "docs/interfaces/Frontend_Utils_EmitterUtils.Diff.md",
"chars": 514,
"preview": "# Interface: Diff<Type\\>\n\n[Frontend/Utils/EmitterUtils](../modules/Frontend_Utils_EmitterUtils.md).Diff\n\n**`param`** The"
},
{
"path": "docs/interfaces/Frontend_Views_ModalPane.ModalFrame.md",
"chars": 802,
"preview": "# Interface: ModalFrame\n\n[Frontend/Views/ModalPane](../modules/Frontend_Views_ModalPane.md).ModalFrame\n\nA modal has a {@"
},
{
"path": "docs/interfaces/Frontend_Views_ModalPane.ModalHandle.md",
"chars": 1006,
"preview": "# Interface: ModalHandle\n\n[Frontend/Views/ModalPane](../modules/Frontend_Views_ModalPane.md).ModalHandle\n\n**`todo`** Add"
},
{
"path": "docs/interfaces/Frontend_Views_Share.ShareProps.md",
"chars": 960,
"preview": "# Interface: ShareProps<T\\>\n\n[Frontend/Views/Share](../modules/Frontend_Views_Share.md).ShareProps\n\n## Type parameters\n\n"
},
{
"path": "docs/interfaces/Frontend_Views_Terminal.TerminalHandle.md",
"chars": 4671,
"preview": "# Interface: TerminalHandle\n\n[Frontend/Views/Terminal](../modules/Frontend_Views_Terminal.md).TerminalHandle\n\n## Table o"
},
{
"path": "docs/interfaces/Frontend_Views_Terminal.TerminalProps.md",
"chars": 293,
"preview": "# Interface: TerminalProps\n\n[Frontend/Views/Terminal](../modules/Frontend_Views_Terminal.md).TerminalProps\n\n## Table of "
},
{
"path": "docs/interfaces/types_darkforest_api_ChunkStoreTypes.ChunkStore.md",
"chars": 830,
"preview": "# Interface: ChunkStore\n\n[\\_types/darkforest/api/ChunkStoreTypes](../modules/types_darkforest_api_ChunkStoreTypes.md).Ch"
},
{
"path": "docs/interfaces/types_darkforest_api_ChunkStoreTypes.PersistedChunk.md",
"chars": 999,
"preview": "# Interface: PersistedChunk\n\n[\\_types/darkforest/api/ChunkStoreTypes](../modules/types_darkforest_api_ChunkStoreTypes.md"
},
{
"path": "docs/interfaces/types_darkforest_api_ChunkStoreTypes.PersistedLocation.md",
"chars": 812,
"preview": "# Interface: PersistedLocation\n\n[\\_types/darkforest/api/ChunkStoreTypes](../modules/types_darkforest_api_ChunkStoreTypes"
},
{
"path": "docs/interfaces/types_darkforest_api_ContractsAPITypes.ContractConstants.md",
"chars": 11236,
"preview": "# Interface: ContractConstants\n\n[\\_types/darkforest/api/ContractsAPITypes](../modules/types_darkforest_api_ContractsAPIT"
},
{
"path": "docs/interfaces/types_global_GlobalTypes.ClaimCountdownInfo.md",
"chars": 647,
"preview": "# Interface: ClaimCountdownInfo\n\n[\\_types/global/GlobalTypes](../modules/types_global_GlobalTypes.md).ClaimCountdownInfo"
},
{
"path": "docs/interfaces/types_global_GlobalTypes.MinerWorkerMessage.md",
"chars": 1752,
"preview": "# Interface: MinerWorkerMessage\n\n[\\_types/global/GlobalTypes](../modules/types_global_GlobalTypes.md).MinerWorkerMessage"
},
{
"path": "docs/interfaces/types_global_GlobalTypes.RevealCountdownInfo.md",
"chars": 664,
"preview": "# Interface: RevealCountdownInfo\n\n[\\_types/global/GlobalTypes](../modules/types_global_GlobalTypes.md).RevealCountdownIn"
},
{
"path": "docs/modules/Backend_GameLogic_ArrivalUtils.md",
"chars": 4814,
"preview": "# Module: Backend/GameLogic/ArrivalUtils\n\n## Table of contents\n\n### Interfaces\n\n- [PlanetDiff](../interfaces/Backend_Gam"
},
{
"path": "docs/modules/Backend_GameLogic_CaptureZoneGenerator.md",
"chars": 622,
"preview": "# Module: Backend/GameLogic/CaptureZoneGenerator\n\n## Table of contents\n\n### Classes\n\n- [CaptureZoneGenerator](../classes"
},
{
"path": "docs/modules/Backend_GameLogic_ContractsAPI.md",
"chars": 674,
"preview": "# Module: Backend/GameLogic/ContractsAPI\n\n## Table of contents\n\n### Classes\n\n- [ContractsAPI](../classes/Backend_GameLog"
},
{
"path": "docs/modules/Backend_GameLogic_GameManager.md",
"chars": 241,
"preview": "# Module: Backend/GameLogic/GameManager\n\n## Table of contents\n\n### Enumerations\n\n- [GameManagerEvent](../enums/Backend_G"
},
{
"path": "docs/modules/Backend_GameLogic_GameObjects.md",
"chars": 149,
"preview": "# Module: Backend/GameLogic/GameObjects\n\n## Table of contents\n\n### Classes\n\n- [GameObjects](../classes/Backend_GameLogic"
},
{
"path": "docs/modules/Backend_GameLogic_GameUIManager.md",
"chars": 251,
"preview": "# Module: Backend/GameLogic/GameUIManager\n\n## Table of contents\n\n### Enumerations\n\n- [GameUIManagerEvent](../enums/Backe"
},
{
"path": "docs/modules/Backend_GameLogic_InitialGameStateDownloader.md",
"chars": 327,
"preview": "# Module: Backend/GameLogic/InitialGameStateDownloader\n\n## Table of contents\n\n### Classes\n\n- [InitialGameStateDownloader"
},
{
"path": "docs/modules/Backend_GameLogic_LayeredMap.md",
"chars": 145,
"preview": "# Module: Backend/GameLogic/LayeredMap\n\n## Table of contents\n\n### Classes\n\n- [LayeredMap](../classes/Backend_GameLogic_L"
},
{
"path": "docs/modules/Backend_GameLogic_PluginManager.md",
"chars": 232,
"preview": "# Module: Backend/GameLogic/PluginManager\n\n## Table of contents\n\n### Classes\n\n- [PluginManager](../classes/Backend_GameL"
},
{
"path": "docs/modules/Backend_GameLogic_TutorialManager.md",
"chars": 340,
"preview": "# Module: Backend/GameLogic/TutorialManager\n\n## Table of contents\n\n### Enumerations\n\n- [TutorialManagerEvent](../enums/B"
},
{
"path": "docs/modules/Backend_GameLogic_ViewportEntities.md",
"chars": 169,
"preview": "# Module: Backend/GameLogic/ViewportEntities\n\n## Table of contents\n\n### Classes\n\n- [ViewportEntities](../classes/Backend"
},
{
"path": "docs/modules/Backend_Miner_ChunkUtils.md",
"chars": 6379,
"preview": "# Module: Backend/Miner/ChunkUtils\n\n## Table of contents\n\n### Functions\n\n- [addToChunkMap](Backend_Miner_ChunkUtils.md#a"
},
{
"path": "docs/modules/Backend_Miner_MinerManager.md",
"chars": 551,
"preview": "# Module: Backend/Miner/MinerManager\n\n## Table of contents\n\n### Enumerations\n\n- [MinerManagerEvent](../enums/Backend_Min"
},
{
"path": "docs/modules/Backend_Miner_MiningPatterns.md",
"chars": 618,
"preview": "# Module: Backend/Miner/MiningPatterns\n\n## Table of contents\n\n### Enumerations\n\n- [MiningPatternType](../enums/Backend_M"
},
{
"path": "docs/modules/Backend_Miner_permutation.md",
"chars": 917,
"preview": "# Module: Backend/Miner/permutation\n\n## Table of contents\n\n### Functions\n\n- [getPlanetLocations](Backend_Miner_permutati"
},
{
"path": "docs/modules/Backend_Network_AccountManager.md",
"chars": 800,
"preview": "# Module: Backend/Network/AccountManager\n\n## Table of contents\n\n### Interfaces\n\n- [Account](../interfaces/Backend_Networ"
},
{
"path": "docs/modules/Backend_Network_Blockchain.md",
"chars": 905,
"preview": "# Module: Backend/Network/Blockchain\n\n## Table of contents\n\n### Functions\n\n- [getEthConnection](Backend_Network_Blockcha"
},
{
"path": "docs/modules/Backend_Network_EventLogger.md",
"chars": 435,
"preview": "# Module: Backend/Network/EventLogger\n\n## Table of contents\n\n### Enumerations\n\n- [EventType](../enums/Backend_Network_Ev"
},
{
"path": "docs/modules/Backend_Network_LeaderboardApi.md",
"chars": 278,
"preview": "# Module: Backend/Network/LeaderboardApi\n\n## Table of contents\n\n### Functions\n\n- [loadLeaderboard](Backend_Network_Leade"
},
{
"path": "docs/modules/Backend_Network_MessageAPI.md",
"chars": 1203,
"preview": "# Module: Backend/Network/MessageAPI\n\n## Table of contents\n\n### Functions\n\n- [addMessage](Backend_Network_MessageAPI.md#"
},
{
"path": "docs/modules/Backend_Network_NetworkHealthApi.md",
"chars": 423,
"preview": "# Module: Backend/Network/NetworkHealthApi\n\n## Table of contents\n\n### Functions\n\n- [loadNetworkHealth](Backend_Network_N"
},
{
"path": "docs/modules/Backend_Network_UtilityServerAPI.md",
"chars": 6521,
"preview": "# Module: Backend/Network/UtilityServerAPI\n\n## Table of contents\n\n### Enumerations\n\n- [EmailResponse](../enums/Backend_N"
},
{
"path": "docs/modules/Backend_Plugins_EmbeddedPluginLoader.md",
"chars": 583,
"preview": "# Module: Backend/Plugins/EmbeddedPluginLoader\n\n## Table of contents\n\n### Interfaces\n\n- [EmbeddedPlugin](../interfaces/B"
},
{
"path": "docs/modules/Backend_Plugins_PluginProcess.md",
"chars": 159,
"preview": "# Module: Backend/Plugins/PluginProcess\n\n## Table of contents\n\n### Interfaces\n\n- [PluginProcess](../interfaces/Backend_P"
},
{
"path": "docs/modules/Backend_Plugins_PluginTemplate.md",
"chars": 226,
"preview": "# Module: Backend/Plugins/PluginTemplate\n\n## Table of contents\n\n### Variables\n\n- [PLUGIN_TEMPLATE](Backend_Plugins_Plugi"
},
{
"path": "docs/modules/Backend_Plugins_SerializedPlugin.md",
"chars": 171,
"preview": "# Module: Backend/Plugins/SerializedPlugin\n\n## Table of contents\n\n### Interfaces\n\n- [SerializedPlugin](../interfaces/Bac"
},
{
"path": "docs/modules/Backend_Storage_PersistentChunkStore.md",
"chars": 351,
"preview": "# Module: Backend/Storage/PersistentChunkStore\n\n## Table of contents\n\n### Classes\n\n- [default](../classes/Backend_Storag"
},
{
"path": "docs/modules/Backend_Storage_ReaderDataStore.md",
"chars": 267,
"preview": "# Module: Backend/Storage/ReaderDataStore\n\n## Table of contents\n\n### Enumerations\n\n- [SinglePlanetDataStoreEvent](../enu"
},
{
"path": "docs/modules/Backend_Utils_Animation.md",
"chars": 1606,
"preview": "# Module: Backend/Utils/Animation\n\n## Table of contents\n\n### Functions\n\n- [constantAnimation](Backend_Utils_Animation.md"
},
{
"path": "docs/modules/Backend_Utils_Coordinates.md",
"chars": 1547,
"preview": "# Module: Backend/Utils/Coordinates\n\n## Table of contents\n\n### Functions\n\n- [coordsEqual](Backend_Utils_Coordinates.md#c"
},
{
"path": "docs/modules/Backend_Utils_SnarkArgsHelper.md",
"chars": 141,
"preview": "# Module: Backend/Utils/SnarkArgsHelper\n\n## Table of contents\n\n### Classes\n\n- [default](../classes/Backend_Utils_SnarkAr"
},
{
"path": "docs/modules/Backend_Utils_Utils.md",
"chars": 4097,
"preview": "# Module: Backend/Utils/Utils\n\n## Table of contents\n\n### Variables\n\n- [ONE_DAY](Backend_Utils_Utils.md#one_day)\n\n### Fun"
},
{
"path": "docs/modules/Backend_Utils_WhitelistSnarkArgsHelper.md",
"chars": 1244,
"preview": "# Module: Backend/Utils/WhitelistSnarkArgsHelper\n\n## Table of contents\n\n### Functions\n\n- [getWhitelistArgs](Backend_Util"
},
{
"path": "docs/modules/Backend_Utils_Wrapper.md",
"chars": 125,
"preview": "# Module: Backend/Utils/Wrapper\n\n## Table of contents\n\n### Classes\n\n- [Wrapper](../classes/Backend_Utils_Wrapper.Wrapper"
},
{
"path": "docs/modules/Frontend_Components_AncientLabel.md",
"chars": 571,
"preview": "# Module: Frontend/Components/AncientLabel\n\n## Table of contents\n\n### Variables\n\n- [ancientAnim](Frontend_Components_Anc"
},
{
"path": "docs/modules/Frontend_Components_ArtifactImage.md",
"chars": 871,
"preview": "# Module: Frontend/Components/ArtifactImage\n\n## Table of contents\n\n### Variables\n\n- [ARTIFACT_URL](Frontend_Components_A"
},
{
"path": "docs/modules/Frontend_Components_BiomeAnims.md",
"chars": 583,
"preview": "# Module: Frontend/Components/BiomeAnims\n\n## Table of contents\n\n### Variables\n\n- [burnAnim](Frontend_Components_BiomeAni"
},
{
"path": "docs/modules/Frontend_Components_Btn.md",
"chars": 1439,
"preview": "# Module: Frontend/Components/Btn\n\n## Table of contents\n\n### Classes\n\n- [DarkForestButton](../classes/Frontend_Component"
},
{
"path": "docs/modules/Frontend_Components_Button.md",
"chars": 363,
"preview": "# Module: Frontend/Components/Button\n\n## Table of contents\n\n### Functions\n\n- [default](Frontend_Components_Button.md#def"
},
{
"path": "docs/modules/Frontend_Components_CapturePlanetButton.md",
"chars": 809,
"preview": "# Module: Frontend/Components/CapturePlanetButton\n\n## Table of contents\n\n### Functions\n\n- [CapturePlanetButton](Frontend"
},
{
"path": "docs/modules/Frontend_Components_CoreUI.md",
"chars": 7835,
"preview": "# Module: Frontend/Components/CoreUI\n\n## Table of contents\n\n### Variables\n\n- [AlignCenterHorizontally](Frontend_Componen"
},
{
"path": "docs/modules/Frontend_Components_Corner.md",
"chars": 359,
"preview": "# Module: Frontend/Components/Corner\n\n## Table of contents\n\n### Functions\n\n- [Corner](Frontend_Components_Corner.md#corn"
},
{
"path": "docs/modules/Frontend_Components_DisplayGasPrices.md",
"chars": 495,
"preview": "# Module: Frontend/Components/DisplayGasPrices\n\n## Table of contents\n\n### Functions\n\n- [DisplayGasPrices](Frontend_Compo"
},
{
"path": "docs/modules/Frontend_Components_Email.md",
"chars": 733,
"preview": "# Module: Frontend/Components/Email\n\n## Table of contents\n\n### Enumerations\n\n- [EmailCTAMode](../enums/Frontend_Componen"
},
{
"path": "docs/modules/Frontend_Components_GameLandingPageComponents.md",
"chars": 2081,
"preview": "# Module: Frontend/Components/GameLandingPageComponents\n\n## Table of contents\n\n### Enumerations\n\n- [InitRenderState](../"
},
{
"path": "docs/modules/Frontend_Components_GameWindowComponents.md",
"chars": 1686,
"preview": "# Module: Frontend/Components/GameWindowComponents\n\n## Table of contents\n\n### Type aliases\n\n- [PaneProps](Frontend_Compo"
},
{
"path": "docs/modules/Frontend_Components_Icons.md",
"chars": 14117,
"preview": "# Module: Frontend/Components/Icons\n\n## Table of contents\n\n### Type aliases\n\n- [IconType](Frontend_Components_Icons.md#i"
},
{
"path": "docs/modules/Frontend_Components_Input.md",
"chars": 2402,
"preview": "# Module: Frontend/Components/Input\n\n## Table of contents\n\n### Classes\n\n- [DarkForestCheckbox](../classes/Frontend_Compo"
},
{
"path": "docs/modules/Frontend_Components_Labels_ArtifactLabels.md",
"chars": 2889,
"preview": "# Module: Frontend/Components/Labels/ArtifactLabels\n\n## Table of contents\n\n### Variables\n\n- [StyledArtifactRarityLabel]("
},
{
"path": "docs/modules/Frontend_Components_Labels_BiomeLabels.md",
"chars": 2495,
"preview": "# Module: Frontend/Components/Labels/BiomeLabels\n\n## Table of contents\n\n### Variables\n\n- [BiomeLabel](Frontend_Component"
},
{
"path": "docs/modules/Frontend_Components_Labels_KeywordLabels.md",
"chars": 722,
"preview": "# Module: Frontend/Components/Labels/KeywordLabels\n\n## Table of contents\n\n### Functions\n\n- [ScoreLabel](Frontend_Compone"
},
{
"path": "docs/modules/Frontend_Components_Labels_Labels.md",
"chars": 1192,
"preview": "# Module: Frontend/Components/Labels/Labels\n\n## Table of contents\n\n### Functions\n\n- [AccountLabel](Frontend_Components_L"
},
{
"path": "docs/modules/Frontend_Components_Labels_LavaLabel.md",
"chars": 422,
"preview": "# Module: Frontend/Components/Labels/LavaLabel\n\n## Table of contents\n\n### Variables\n\n- [LavaLabel](Frontend_Components_L"
},
{
"path": "docs/modules/Frontend_Components_Labels_LegendaryLabel.md",
"chars": 275,
"preview": "# Module: Frontend/Components/Labels/LegendaryLabel\n\n## Table of contents\n\n### Variables\n\n- [LegendaryLabel](Frontend_Co"
},
{
"path": "docs/modules/Frontend_Components_Labels_MythicLabel.md",
"chars": 730,
"preview": "# Module: Frontend/Components/Labels/MythicLabel\n\n## Table of contents\n\n### Variables\n\n- [MythicLabel](Frontend_Componen"
},
{
"path": "docs/modules/Frontend_Components_Labels_PlanetLabels.md",
"chars": 10682,
"preview": "# Module: Frontend/Components/Labels/PlanetLabels\n\n## Table of contents\n\n### Functions\n\n- [DefenseText](Frontend_Compone"
},
{
"path": "docs/modules/Frontend_Components_Labels_SpacetimeRipLabel.md",
"chars": 293,
"preview": "# Module: Frontend/Components/Labels/SpacetimeRipLabel\n\n## Table of contents\n\n### Variables\n\n- [SpacetimeRipLabel](Front"
},
{
"path": "docs/modules/Frontend_Components_Labels_WastelandLabel.md",
"chars": 477,
"preview": "# Module: Frontend/Components/Labels/WastelandLabel\n\n## Table of contents\n\n### Variables\n\n- [WastelandLabel](Frontend_Co"
},
{
"path": "docs/modules/Frontend_Components_LoadingSpinner.md",
"chars": 527,
"preview": "# Module: Frontend/Components/LoadingSpinner\n\n## Table of contents\n\n### Functions\n\n- [LoadingSpinner](Frontend_Component"
},
{
"path": "docs/modules/Frontend_Components_MaybeShortcutButton.md",
"chars": 3067,
"preview": "# Module: Frontend/Components/MaybeShortcutButton\n\n## Table of contents\n\n### Functions\n\n- [MaybeShortcutButton](Frontend"
},
{
"path": "docs/modules/Frontend_Components_MineArtifactButton.md",
"chars": 803,
"preview": "# Module: Frontend/Components/MineArtifactButton\n\n## Table of contents\n\n### Functions\n\n- [MineArtifactButton](Frontend_C"
},
{
"path": "docs/modules/Frontend_Components_Modal.md",
"chars": 853,
"preview": "# Module: Frontend/Components/Modal\n\n## Table of contents\n\n### Classes\n\n- [DarkForestModal](../classes/Frontend_Componen"
},
{
"path": "docs/modules/Frontend_Components_OpenPaneButtons.md",
"chars": 5019,
"preview": "# Module: Frontend/Components/OpenPaneButtons\n\n## Table of contents\n\n### Functions\n\n- [OpenBroadcastPaneButton](Frontend"
},
{
"path": "docs/modules/Frontend_Components_PluginModal.md",
"chars": 916,
"preview": "# Module: Frontend/Components/PluginModal\n\n## Table of contents\n\n### Functions\n\n- [PluginModal](Frontend_Components_Plug"
},
{
"path": "docs/modules/Frontend_Components_ReadMore.md",
"chars": 776,
"preview": "# Module: Frontend/Components/ReadMore\n\n## Table of contents\n\n### Functions\n\n- [ReadMore](Frontend_Components_ReadMore.m"
},
{
"path": "docs/modules/Frontend_Components_RemoteModal.md",
"chars": 1044,
"preview": "# Module: Frontend/Components/RemoteModal\n\n## Table of contents\n\n### Functions\n\n- [RemoteModal](Frontend_Components_Remo"
},
{
"path": "docs/modules/Frontend_Components_Row.md",
"chars": 329,
"preview": "# Module: Frontend/Components/Row\n\n## Table of contents\n\n### Variables\n\n- [Row](Frontend_Components_Row.md#row)\n\n## Vari"
},
{
"path": "docs/modules/Frontend_Components_Slider.md",
"chars": 1230,
"preview": "# Module: Frontend/Components/Slider\n\n## Table of contents\n\n### Classes\n\n- [DarkForestSlider](../classes/Frontend_Compon"
},
{
"path": "docs/modules/Frontend_Components_Text.md",
"chars": 4631,
"preview": "# Module: Frontend/Components/Text\n\n## Table of contents\n\n### Variables\n\n- [Blue](Frontend_Components_Text.md#blue)\n- [C"
},
{
"path": "docs/modules/Frontend_Components_TextLoadingBar.md",
"chars": 1246,
"preview": "# Module: Frontend/Components/TextLoadingBar\n\n## Table of contents\n\n### Interfaces\n\n- [LoadingBarHandle](../interfaces/F"
},
{
"path": "docs/modules/Frontend_Components_TextPreview.md",
"chars": 733,
"preview": "# Module: Frontend/Components/TextPreview\n\n## Table of contents\n\n### Functions\n\n- [TextPreview](Frontend_Components_Text"
},
{
"path": "docs/modules/Frontend_Components_Theme.md",
"chars": 343,
"preview": "# Module: Frontend/Components/Theme\n\n## Table of contents\n\n### Variables\n\n- [Theme](Frontend_Components_Theme.md#theme)\n"
},
{
"path": "docs/modules/Frontend_Components_TimeUntil.md",
"chars": 913,
"preview": "# Module: Frontend/Components/TimeUntil\n\n## Table of contents\n\n### Functions\n\n- [TimeUntil](Frontend_Components_TimeUnti"
},
{
"path": "docs/modules/Frontend_Game_ControllableCanvas.md",
"chars": 218,
"preview": "# Module: Frontend/Game/ControllableCanvas\n\n## Table of contents\n\n### Functions\n\n- [default](Frontend_Game_ControllableC"
},
{
"path": "docs/modules/Frontend_Game_ModalManager.md",
"chars": 135,
"preview": "# Module: Frontend/Game/ModalManager\n\n## Table of contents\n\n### Classes\n\n- [default](../classes/Frontend_Game_ModalManag"
},
{
"path": "docs/modules/Frontend_Game_NotificationManager.md",
"chars": 1473,
"preview": "# Module: Frontend/Game/NotificationManager\n\n## Table of contents\n\n### Enumerations\n\n- [NotificationManagerEvent](../enu"
},
{
"path": "docs/modules/Frontend_Game_Popups.md",
"chars": 518,
"preview": "# Module: Frontend/Game/Popups\n\n## Table of contents\n\n### Functions\n\n- [openConfirmationWindowForTransaction](Frontend_G"
},
{
"path": "docs/modules/Frontend_Game_Viewport.md",
"chars": 304,
"preview": "# Module: Frontend/Game/Viewport\n\n## Table of contents\n\n### Classes\n\n- [default](../classes/Frontend_Game_Viewport.defau"
},
{
"path": "docs/modules/Frontend_Pages_App.md",
"chars": 190,
"preview": "# Module: Frontend/Pages/App\n\n## Table of contents\n\n### Functions\n\n- [default](Frontend_Pages_App.md#default)\n\n## Functi"
},
{
"path": "docs/modules/Frontend_Pages_CreateLobby.md",
"chars": 568,
"preview": "# Module: Frontend/Pages/CreateLobby\n\n## Table of contents\n\n### Functions\n\n- [CreateLobby](Frontend_Pages_CreateLobby.md"
},
{
"path": "docs/modules/Frontend_Pages_EventsPage.md",
"chars": 216,
"preview": "# Module: Frontend/Pages/EventsPage\n\n## Table of contents\n\n### Functions\n\n- [EventsPage](Frontend_Pages_EventsPage.md#ev"
},
{
"path": "docs/modules/Frontend_Pages_GameLandingPage.md",
"chars": 592,
"preview": "# Module: Frontend/Pages/GameLandingPage\n\n## Table of contents\n\n### Functions\n\n- [GameLandingPage](Frontend_Pages_GameLa"
},
{
"path": "docs/modules/Frontend_Pages_GifMaker.md",
"chars": 701,
"preview": "# Module: Frontend/Pages/GifMaker\n\n## Table of contents\n\n### Variables\n\n- [GIF_ARTIFACT_COLOR](Frontend_Pages_GifMaker.m"
},
{
"path": "docs/modules/Frontend_Pages_LandingPage.md",
"chars": 495,
"preview": "# Module: Frontend/Pages/LandingPage\n\n## Table of contents\n\n### Enumerations\n\n- [LandingPageZIndex](../enums/Frontend_Pa"
},
{
"path": "docs/modules/Frontend_Pages_LoadingPage.md",
"chars": 206,
"preview": "# Module: Frontend/Pages/LoadingPage\n\n## Table of contents\n\n### Functions\n\n- [default](Frontend_Pages_LoadingPage.md#def"
},
{
"path": "docs/modules/Frontend_Pages_LobbyLandingPage.md",
"chars": 593,
"preview": "# Module: Frontend/Pages/LobbyLandingPage\n\n## Table of contents\n\n### Functions\n\n- [LobbyLandingPage](Frontend_Pages_Lobb"
},
{
"path": "docs/modules/Frontend_Pages_NotFoundPage.md",
"chars": 228,
"preview": "# Module: Frontend/Pages/NotFoundPage\n\n## Table of contents\n\n### Functions\n\n- [NotFoundPage](Frontend_Pages_NotFoundPage"
},
{
"path": "docs/modules/Frontend_Pages_ShareArtifact.md",
"chars": 598,
"preview": "# Module: Frontend/Pages/ShareArtifact\n\n## Table of contents\n\n### Functions\n\n- [ShareArtifact](Frontend_Pages_ShareArtif"
},
{
"path": "docs/modules/Frontend_Pages_SharePlanet.md",
"chars": 586,
"preview": "# Module: Frontend/Pages/SharePlanet\n\n## Table of contents\n\n### Functions\n\n- [SharePlanet](Frontend_Pages_SharePlanet.md"
},
{
"path": "docs/modules/Frontend_Pages_TestArtifactImages.md",
"chars": 264,
"preview": "# Module: Frontend/Pages/TestArtifactImages\n\n## Table of contents\n\n### Functions\n\n- [TestArtifactImages](Frontend_Pages_"
},
{
"path": "docs/modules/Frontend_Pages_TxConfirmPopup.md",
"chars": 841,
"preview": "# Module: Frontend/Pages/TxConfirmPopup\n\n## Table of contents\n\n### Functions\n\n- [TxConfirmPopup](Frontend_Pages_TxConfir"
},
{
"path": "docs/modules/Frontend_Pages_UnsubscribePage.md",
"chars": 317,
"preview": "# Module: Frontend/Pages/UnsubscribePage\n\n## Table of contents\n\n### Enumerations\n\n- [LandingPageZIndex](../enums/Fronten"
},
{
"path": "docs/modules/Frontend_Pages_ValhallaPage.md",
"chars": 228,
"preview": "# Module: Frontend/Pages/ValhallaPage\n\n## Table of contents\n\n### Functions\n\n- [ValhallaPage](Frontend_Pages_ValhallaPage"
},
{
"path": "docs/modules/Frontend_Panes_ArtifactCard.md",
"chars": 489,
"preview": "# Module: Frontend/Panes/ArtifactCard\n\n## Table of contents\n\n### Functions\n\n- [ArtifactCard](Frontend_Panes_ArtifactCard"
},
{
"path": "docs/modules/Frontend_Panes_ArtifactDetailsPane.md",
"chars": 3188,
"preview": "# Module: Frontend/Panes/ArtifactDetailsPane\n\n## Table of contents\n\n### Functions\n\n- [ArtifactDetailsBody](Frontend_Pane"
},
{
"path": "docs/modules/Frontend_Panes_ArtifactHoverPane.md",
"chars": 258,
"preview": "# Module: Frontend/Panes/ArtifactHoverPane\n\n## Table of contents\n\n### Functions\n\n- [ArtifactHoverPane](Frontend_Panes_Ar"
},
{
"path": "docs/modules/Frontend_Panes_ArtifactsList.md",
"chars": 3397,
"preview": "# Module: Frontend/Panes/ArtifactsList\n\n## Table of contents\n\n### Functions\n\n- [AllArtifacts](Frontend_Panes_ArtifactsLi"
}
]
// ... and 331 more files (download for full content)
About this extraction
This page contains the full source code of the darkforest-eth/client GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 531 files (2.1 MB), approximately 572.0k tokens, and a symbol index with 1490 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.