import { ClientHub } from "./hub.ts"; import { Part, Planet } from "./protocol.ts"; import * as PIXI from "pixi.js"; export interface GlobalData { client: ClientHub | null; me: GlobalMe | null; players_map: Map; inverse_players_map: Map; planets_map: Map; parts_map: Map; up: boolean; down: boolean; left: boolean; right: boolean; rendering: GlobalRendering | null; saveEligible: boolean; leaving: boolean; } export interface GlobalRendering { app: PIXI.Application; player_text_map: Map; planet_sprite_map: Map; part_sprite_map: Map; part_sprites_need_texture_change: number[]; starfield: GlobalRenderingStarfield; starfield_near: GlobalRenderingStarfield; } export interface GlobalRenderingStarfield { sprite: PIXI.TilingSprite; off_x: number; off_y: number; } export interface GlobalMe { username: string; part_id: number; } export const global: GlobalData = { client: null, me: null, players_map: new Map(), inverse_players_map: new Map(), planets_map: new Map(), parts_map: new Map(), up: false, down: false, left: false, right: false, rendering: null, saveEligible: true, }; export function player(): Part | undefined { if (global.me !== null) { return global.parts_map.get(global.me!.part_id); } else { return undefined; } }