import { Artifact, ArtifactId, AsteroidRendererType, BackgroundRendererType, BaseRenderer, BeltRendererType, BlackDomainRendererType, CaptureZone, CaptureZoneRendererType, Chunk, CircleRendererType, DiagnosticUpdater, EthAddress, GameViewport, IRendererConfig, LineRendererType, LocatablePlanet, LocationId, MineBodyRendererType, MineRendererType, PerlinConfig, PerlinRendererType, Planet, PlanetLevel, PlanetRendererType, PlanetRenderInfo, PlanetRenderManagerType, Player, QuasarBodyRendererType, QuasarRayRendererType, QuasarRendererType, QueuedArrival, RectRendererType, RingRendererType, RuinsRendererType, Setting, SpaceRendererType, SpacetimeRipRendererType, SpaceType, SpriteRendererType, TextRendererType, Transaction, UIRendererType, UnconfirmedActivateArtifact, UnconfirmedMove, UnminedRendererType, VoyageRendererType, WorldCoords, WorldLocation, Wormhole, WormholeRendererType } from '@df0/types'; import { Overlay2DRenderer } from './Overlay2DRenderer'; import { GameGLManager } from './WebGL/GameGLManager'; export interface RendererGameContext extends DiagnosticUpdater { getStringSetting(setting: Setting): string | undefined; getBooleanSetting(setting: Setting): boolean; getIsHighPerfMode(): boolean; getWorldRadius(): number; getMouseDownPlanet(): LocatablePlanet | undefined; getLocationsAndChunks(): { chunks: Set; cachedPlanets: Map; }; getLocationOfPlanet(planetId: LocationId): WorldLocation | undefined; getPlanetWithId(planetId: LocationId | undefined): Planet | undefined; getAccount(): EthAddress | undefined; getAllVoyages(): QueuedArrival[]; getPlayer(address?: EthAddress): Player | undefined; getUnconfirmedMoves(): Transaction[]; spaceTypeFromPerlin(perlin: number): SpaceType; getPerlinConfig(isBiome: boolean): PerlinConfig; getArtifactWithId(artifactId: ArtifactId | undefined): Artifact | undefined; getSpaceTypePerlin(coords: WorldCoords, floor: boolean): number; getPerlinThresholds(): [number, number, number]; isOwnedByMe(planet: Planet): boolean; getArtifactsWithIds(artifactIds: ArtifactId[]): Array; getSelectedPlanet(): LocatablePlanet | undefined; getHoveringOverPlanet(): Planet | undefined; getHoveringOverCoords(): WorldCoords | undefined; getSelectedCoords(): WorldCoords | undefined; getForcesSending(planetId: LocationId): number; getEnergyArrivingForMove(from: LocationId, to: LocationId | undefined, dist: number | undefined, energy: number): number; getIsChoosingTargetPlanet(): boolean; getWormholes(): Iterable; getRadiusOfPlanetLevel(planetRarity: PlanetLevel): number; getDistCoords(from: WorldCoords, to: WorldCoords): number; isOverOwnPlanet(coords: WorldCoords): Planet | undefined; getPlanetWithCoords(coords: WorldCoords | undefined): Planet | undefined; getUnconfirmedWormholeActivations(): Transaction[]; getAllMinerLocations(): WorldCoords[]; drawAllRunningPlugins(ctx: CanvasRenderingContext2D): void; isSendingShip(planetId: LocationId): boolean; isAbandoning(): boolean; getArtifactSending(planetId: LocationId): Artifact | undefined; getAbandonRangeChangePercent(): number; getCaptureZones(): Iterable; } export declare class Renderer { static instance: Renderer | null; private viewport; canvas: HTMLCanvasElement; glCanvas: HTMLCanvasElement; bufferCanvas: HTMLCanvasElement; frameRequestId: number; context: RendererGameContext; frameCount: number; now: number; glManager: GameGLManager; overlay2dRenderer: Overlay2DRenderer; lineRenderer: LineRendererType; circleRenderer: CircleRendererType; textRenderer: TextRendererType; rectRenderer: RectRendererType; bgRenderer: BackgroundRendererType; spaceRenderer: SpaceRendererType; perlinRenderer: PerlinRendererType; unminedRenderer: UnminedRendererType; asteroidRenderer: AsteroidRendererType; ringRenderer: RingRendererType; spriteRenderer: SpriteRendererType; blackDomainRenderer: BlackDomainRendererType; captureZoneRenderer: CaptureZoneRendererType; planetRenderer: PlanetRendererType; mineRenderer: MineRendererType; mineBodyRenderer: MineBodyRendererType; beltRenderer: BeltRendererType; quasarRenderer: QuasarRendererType; quasarBodyRenderer: QuasarBodyRendererType; quasarRayRenderer: QuasarRayRendererType; spacetimeRipRenderer: SpacetimeRipRendererType; ruinsRenderer: RuinsRendererType; uiRenderManager: UIRendererType; planetRenderManager: PlanetRenderManagerType; voyageRenderManager: VoyageRendererType; wormholeRenderManager: WormholeRendererType; private previousRenderTimestamp; rendererStack: BaseRenderer[]; config: IRendererConfig; private constructor(); private setup; static destroy(): void; static initialize(canvas: HTMLCanvasElement, glCanvas: HTMLCanvasElement, bufferCanvas: HTMLCanvasElement, viewport: GameViewport, context: RendererGameContext, config: IRendererConfig): Renderer; private recordRender; private loop; private draw; /** * Determines the type of the passed in renderer and replaces the * current renderer of the same type with the one passed in. * If the renderer is determined to not follow any of the renderer * types it will print a message into the console * @param renderer - an unknown renderer * @returns */ private setRenderer; /** * Called by GameUIManager to add custom renderer into the game. * The function automatically determines what kind of renderer it is based on the type property. * The renderer is then added onto the rendering stack * The renderer stack is a data structure used to determine which renderer to draw with. * The most recently added renderers to the stack will be the ones to be used. * @param renderer */ addCustomRenderer(renderer: BaseRenderer): void; /** * Called by GameUIManager to remove the passed in renderers from the game. * @param renderer - passed in renderer */ removeCustomRenderer(renderer: BaseRenderer): void; get2DRenderer(): CanvasRenderingContext2D; getViewport(): GameViewport; }