~starkingdoms/starkingdoms

ref: 8cc119056530ee53c22b368d52ce3270f0ae7243 starkingdoms/starkingdoms-client/src/protocol.ts -rw-r--r-- 1.8 KiB
8cc11905 — core packet log 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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;
    }
}