import * as PIXI from "pixi.js";
import { global, player } from "./routes/ingame/main.ts";
import { part_texture_url, planet_texture_url } from "./textures.ts";
const PART_WIDTH = 50;
const PART_HEIGHT = 50;
export function startRender() {
let app = new PIXI.Application({
width: window.innerWidth,
height: window.innerHeight,
resizeTo: window,
hello: true,
});
(globalThis as any).__PIXI_APP__ = app; // eslint-disable-line
document
.getElementById("gamewindow")!
.appendChild(<HTMLCanvasElement>app.view);
(<HTMLCanvasElement>app.view).classList.add("game");
global.rendering = {
app: app,
player_text_map: new Map(),
planet_sprite_map: new Map(),
part_sprite_map: new Map(),
};
app.ticker.add(() => {
global.rendering!.app.stage.x =
-player()?.transform.x! + window.innerWidth / 2;
global.rendering!.app.stage.y =
-player()?.transform.y! + window.innerHeight / 2;
for (let [id, part] of global.parts_map) {
let part_sprite;
if (global.rendering!.part_sprite_map.has(id)) {
part_sprite = global.rendering!.part_sprite_map.get(id)!;
} else {
part_sprite = PIXI.Sprite.from(part_texture_url(part.part_type));
global.rendering!.part_sprite_map.set(id, part_sprite);
console.log("adding part sprite");
global.rendering!.app.stage.addChild(part_sprite);
}
part_sprite.anchor.set(0.5);
part_sprite.height = PART_HEIGHT;
part_sprite.width = PART_WIDTH;
part_sprite.x = part.transform.x;
part_sprite.y = part.transform.y;
part_sprite.rotation = part.transform.rot;
}
for (let [id, planet] of global.planets_map) {
let planet_sprite;
if (global.rendering!.planet_sprite_map.has(id)) {
planet_sprite = global.rendering!.planet_sprite_map.get(id)!;
} else {
planet_sprite = PIXI.Sprite.from(
planet_texture_url(planet.planet_type),
);
global.rendering!.planet_sprite_map.set(id, planet_sprite);
console.log("adding planet sprite");
global.rendering!.app.stage.addChild(planet_sprite);
}
planet_sprite.anchor.set(0.5);
planet_sprite.height = planet.radius * 2;
planet_sprite.width = planet.radius * 2;
planet_sprite.x = planet.transform.x;
planet_sprite.y = planet.transform.y;
planet_sprite.rotation = planet.transform.rot;
}
});
}