From f4c1d03419ac994adf15e26ff26dd33cb5251122 Mon Sep 17 00:00:00 2001 From: ghostlyzsh Date: Thu, 4 Jan 2024 16:32:34 -0600 Subject: [PATCH] still broken code --- starkingdoms-client/src/hub.ts | 23 +++++++++++++++++++++++ starkingdoms-client/src/protocol.ts | 14 ++++++++++++++ starkingdoms-client/src/textures.ts | 3 +++ 3 files changed, 40 insertions(+) diff --git a/starkingdoms-client/src/hub.ts b/starkingdoms-client/src/hub.ts index 9d8948dc64fd4abc8ea4804b9a0e91ccf5bf3e29..89bcc2673b67ba35fe02c20de78280aaf336abb4 100644 --- a/starkingdoms-client/src/hub.ts +++ b/starkingdoms-client/src/hub.ts @@ -1,11 +1,13 @@ import createDebug from "debug"; import type { + DespawnPartPacket, MessagePacket, Packet, PartPositionsPacket, PlanetPositionsPacket, PlayerLeavePacket, PlayerListPacket, + SpawnPartPacket, SpawnPlayerPacket, } from "./protocol.ts"; import { MessageType, PacketType } from "./protocol.ts"; @@ -14,6 +16,8 @@ import { global } from "./globals.ts"; import { startRender } from "./rendering.ts"; import { ButtonType } from "./protocol.ts"; import type Chatbox from "./components/Chatbox.svelte"; +import {part_texture_url} from "./textures.js"; +import * as PIXI from "pixi.js"; const logger = createDebug("hub"); @@ -257,6 +261,25 @@ export async function hub_connect( ).toString(); } } + } else if (packet.t == PacketType.SpawnPart) { + let p = packet.c; + let id = p.id; + let part = p.part; + global.parts_map.set(id, part); + + logger(`spawn part`); + let part_sprite = PIXI.Sprite.from(part_texture_url(part.part_type)); + global.rendering!.part_sprite_map.set(id, part_sprite); + global.rendering!.app.stage.addChild(part_sprite); + } else if (packet.t == PacketType.DespawnPart) { + let p = packet.c; + let id = p.id; + let part = global.parts_map.get(id); + let part_sprite = PIXI.Sprite.from(part_texture_url(part.part_type)); + logger(`despawned part`); + global.parts_map.delete(id); + global.rendering!.part_sprite_map.delete(id); + global.rendering!.app.stage.removeChild(part_sprite); } else if (packet.t == PacketType.PlayerLeave) { let p = packet.c; let username = global.players_map.get(p.id)!; diff --git a/starkingdoms-client/src/protocol.ts b/starkingdoms-client/src/protocol.ts index 4910533c17cf987b06b0e249dc78e054c4f76830..13edcbd47dc9673769ecde672d1fd0a17d867b2c 100644 --- a/starkingdoms-client/src/protocol.ts +++ b/starkingdoms-client/src/protocol.ts @@ -10,6 +10,7 @@ export enum PlanetType { export enum PartType { Hearty = "Hearty", Cargo = "Cargo", + Hub = "Hub", } export enum ButtonType { Left = "Left", @@ -39,6 +40,13 @@ export interface PlanetPositionsPacket { export interface PartPositionsPacket { parts: [number, Part][]; } +export interface SpawnPartPacket { + id: number; + part: Part; +} +export interface DespawnPartPacket { + id: number; +} export interface PlayerInputPacket { up: boolean; down: boolean; @@ -84,6 +92,8 @@ export enum PacketType { PlayerList = "PlayerList", PlanetPositions = "PlanetPositions", PartPositions = "PartPositions", + SpawnPart = "SpawnPart", + DespawnPart = "DespawnPart", PlayerLeave = "PlayerLeave", Message = "Message", } @@ -96,6 +106,8 @@ export interface Packet { | PlayerListPacket | PlanetPositionsPacket | PartPositionsPacket + | SpawnPartPacket + | DespawnPartPacket | PlayerLeavePacket | SendMessagePacket | MessagePacket @@ -114,6 +126,8 @@ export const CLIENTBOUND = [ PacketType.PlayerList, PacketType.PlanetPositions, PacketType.PartPositions, + PacketType.SpawnPart, + PacketType.DespawnPart, PacketType.PlayerLeave, PacketType.Message, ]; diff --git a/starkingdoms-client/src/textures.ts b/starkingdoms-client/src/textures.ts index 22064192f524265a3c2929e4eb7236faa9094b8c..bd70afec2898249155976cbb10eb5ef87d5d4931 100644 --- a/starkingdoms-client/src/textures.ts +++ b/starkingdoms-client/src/textures.ts @@ -3,6 +3,7 @@ import tex_earth from "./assets/earth.svg"; import tex_moon from "./assets/moon.svg"; import tex_hearty from "./assets/hearty.svg"; import tex_cargo_off from "./assets/cargo_off.svg"; +import tex_hub_off from "./assets/hub_off.svg"; import tex_missing from "./assets/missing.svg"; export function planet_texture_url(type: PlanetType): string { @@ -19,6 +20,8 @@ export function part_texture_url(type: PartType): string { return tex_hearty; } else if (type == PartType.Cargo) { return tex_cargo_off; + } else if (type == PartType.Hub) { + return tex_hub_off; } return tex_missing; }