import * as PIXI from "pixi.js"; import {Logger, logSetup} from "./logger"; import {gateway_connect, GatewayClient} from "./gateway"; import {Player} from "./protocol/player"; import {Planet} from "./protocol/planet"; logSetup(); const logger = new Logger("client"); export interface GlobalData { client: GatewayClient | null, players: Player[], planets: Planet[], me: Player | null, spritesheet: PIXI.Spritesheet | null, app: PIXI.Application | null } export const global: GlobalData = { client: null, players: [], planets: [], me: null, spritesheet: null, app: null } async function client_main(server: string, username: string, texture_quality: string) { logger.info("StarKingdoms client - starting"); logger.info("Loading textures"); let spritesheet_url = `/assets/dist/spritesheet-${texture_quality}.png`; let spritesheet_data_url = `/assets/dist/spritesheet-${texture_quality}.json`; let load_textures = new Promise(async (resolve) => { const image_promise: Promise = new Promise((resolve, reject) => { const image = document.createElement("img"); image.src = spritesheet_url; image.onload = () => { resolve(image); } image.onerror = err => reject(err); }); const dat_promise: Promise = fetch(spritesheet_data_url).then(res => res.json()); let image = await image_promise; let data = await dat_promise; let texture = PIXI.Texture.from(image); global.spritesheet = new PIXI.Spritesheet(texture, data as any); await global.spritesheet.parse(); resolve(); }); await load_textures; logger.info("Starting the renderer"); global.app = new PIXI.Application({width: window.innerWidth, height: window.innerHeight, resizeTo: window }); // @ts-ignore document.body.appendChild(global.app.view); console.log(global.spritesheet); // @ts-ignore let sprite = PIXI.Sprite.from(global.spritesheet?.textures["hearty.png"]); global.app.stage.addChild(sprite); global.client = await gateway_connect(server, username); } client_main("ws://localhost:3000/ws", "core", "375").then(() => {}); /* let app = new PIXI.Application({width: window.innerWidth, height: window.innerHeight, resizeTo: window }); // @ts-ignore document.body.appendChild(app.view); let sprite = PIXI.Sprite.from("./hearty.png"); app.stage.addChild(sprite); let elapsed = 0.0; app.ticker.add((delta) => { elapsed += delta; sprite.x = 100.0 + Math.cos(elapsed/50.0) * 100.0; }); */