@@ 180,7 180,27 @@ export async function hub_connect(
} else if (packet.t == PacketType.PartPositions) {
let p = <PartPositionsPacket>packet.c;
for (let i = 0; i < p.parts.length; i++) {
- global.parts_map.set(p.parts[i][0], p.parts[i][1]);
+ let id = p.parts[i][0];
+ let new_part = p.parts[i][1];
+
+ if (global.parts_map.has(id)) {
+ let old_part = global.parts_map.get(id)!;
+ let dx = new_part.transform.x - old_part.transform.x;
+ let dy = new_part.transform.y - old_part.transform.y;
+ let drot = new_part.transform.rot - old_part.transform.rot;
+ const CUTOFF_XY = 0.01;
+ const CUTOFF_ROT = 0.01;
+ if (dx < CUTOFF_XY && dy < CUTOFF_XY && drot < CUTOFF_ROT) {
+ continue; // this packet is under the cutoff, we don't care about it
+ }
+ }
+ global.parts_map.set(id, new_part);
+ if (id === global.me?.part_id) {
+ document.getElementById("pos-val-x")!.innerText =
+ new_part.transform.x.toString();
+ document.getElementById("pos-val-y")!.innerText =
+ new_part.transform.y.toString();
+ }
}
} else if (packet.t == PacketType.PlayerLeave) {
let p = <PlayerLeavePacket>packet.c;
@@ 217,3 237,7 @@ export async function hub_connect(
};
return null;
}
+
+function playerspace(x, y) {
+ // player is center of screen
+}
@@ 2,8 2,8 @@ import * as PIXI from "pixi.js";
import { global, player } from "./main.ts";
import { part_texture_url, planet_texture_url } from "./textures.ts";
-const PART_WIDTH = 25;
-const PART_HEIGHT = 25;
+const PART_WIDTH = 50;
+const PART_HEIGHT = 50;
export function startRender() {
// hide the launch popup
@@ 16,7 16,12 @@ 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);
@@ 31,7 36,7 @@ export function startRender() {
app.ticker.add(() => {
// RENDER STAGE 1: UPDATE POSITION
- app.stage.setTransform(player()?.transform.x!, player()?.transform.y!);
+ app.stage.setTransform(-player()?.transform.x!, -player()?.transform.y!);
// RENDER STAGE 2: UPDATE SPRITES
for (let [id, planet] of global.planets_map) {
let planet_sprite;
@@ 42,7 47,9 @@ export function startRender() {
planet_sprite = PIXI.Sprite.from(
planet_texture_url(planet.planet_type),
);
+ global.rendering!.planet_sprite_map.set(id, planet_sprite);
global.rendering!.app.stage.addChild(planet_sprite);
+ console.log("adding planet sprite");
}
planet_sprite.height = planet.radius * 2;
@@ 59,15 66,16 @@ export function startRender() {
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);
-
- console.log(part.transform);
- 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;
}
+
+ 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;
}
});
}