export interface ProtoTransform {
x: number,
y: number,
rot: number
}
export enum PlanetType {
Earth = "Earth"
}
export enum PartType {
Hearty = "Hearty"
}
export interface Planet {
planet_type: PlanetType,
transform: ProtoTransform
}
export interface Part {
part_type: PartType,
transform: ProtoTransform
}
export interface ClientLoginPacket {
username: string,
jwt: string | null,
}
export interface SpawnPlayerPacket {
id: number,
username: string
}
export interface PlanetPositionsPacket {
planets: [number, Planet][]
}
export interface PartPositionsPacket {
parts: [number, Part][]
}
export interface PlayerListPacket {
players: [number, String][]
}
export interface PlayerLeavePacket {
id: number
}
export enum PacketType {
// serverbound
ClientLogin = "ClientLogin",
// clientbound
SpawnPlayer = "SpawnPlayer",
PlayerList = "PlayerList",
PlanetPositions = "PlanetPositions",
PartPositions = "PartPositions",
PlayerLeave = "PlayerLeave"
}
export interface Packet {
t: PacketType,
c: ClientLoginPacket | SpawnPlayerPacket | PlayerListPacket | PlanetPositionsPacket | PartPositionsPacket | PlayerLeavePacket
}
export const SERVERBOUND = [PacketType.ClientLogin];
export const CLIENTBOUND = [PacketType.SpawnPlayer, PacketType.PlayerList, PacketType.PlanetPositions, PacketType.PartPositions, PacketType.PlayerLeave];
export enum Direction {
Serverbound = "Serverbound",
Clientbound = "Clientbound",
InvalidType = "InvalidType"
}
export function type_direction(type: PacketType): Direction {
if (SERVERBOUND.includes(type)) {
return Direction.Serverbound;
} else if (CLIENTBOUND.includes(type)) {
return Direction.Clientbound;
} else {
return Direction.InvalidType;
}
}