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,
radius: number
}
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 interface SendMessagePacket {
target: string | null,
content: string
}
export enum MessageType {
Server = "Server",
Error = "Error",
Chat = "Chat",
Direct = "Direct"
}
export interface MessagePacket {
message_type: MessageType,
actor: string,
content: string
}
export enum PacketType {
// serverbound
ClientLogin = "ClientLogin",
SendMessage = "SendMessage",
// clientbound
SpawnPlayer = "SpawnPlayer",
PlayerList = "PlayerList",
PlanetPositions = "PlanetPositions",
PartPositions = "PartPositions",
PlayerLeave = "PlayerLeave",
Message = "Message"
}
export interface Packet {
t: PacketType,
c: ClientLoginPacket | SpawnPlayerPacket | PlayerListPacket | PlanetPositionsPacket | PartPositionsPacket | PlayerLeavePacket | SendMessagePacket | MessagePacket
}
export const SERVERBOUND = [PacketType.ClientLogin, PacketType.SendMessage];
export const CLIENTBOUND = [PacketType.SpawnPlayer, PacketType.PlayerList, PacketType.PlanetPositions, PacketType.PartPositions, PacketType.PlayerLeave, PacketType.Message];
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;
}
}