Spaces:
Sleeping
Sleeping
File size: 1,602 Bytes
565f6e7 | 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 | import { Schema, MapSchema, type } from "@colyseus/schema";
import { FlightCommand } from "../../types";
export class NetworkPlayer extends Schema {
@type("string") id: string = "";
@type("string") name: string = "";
@type("uint8") team: number = 1;
@type("string") aircraftId: string = "";
@type("string") skin: string = "default";
@type("uint32") score: number = 0;
@type("uint16") kills: number = 0;
@type("uint16") deaths: number = 0;
@type("boolean") isBot: boolean = false;
@type("uint32") lastProcessedSeq: number = 0;
}
export class MatchState extends Schema {
@type({ map: NetworkPlayer }) players = new MapSchema<NetworkPlayer>();
@type("uint32") team1Score: number = 0;
@type("uint32") team2Score: number = 0;
@type("number") matchTimer: number = 360;
@type("boolean") matchEnded: boolean = false;
}
// Compact client input packet tuple:
// [seq, pitch, roll, yaw, throttleDelta, boost, airbrake, primaryFire, secondaryFire, flaps, gearDeployed]
export type ClientInputTuple = [
number, // seq
number, // pitch
number, // roll
number, // yaw
number, // throttleDelta
number, // boost (0 or 1)
number, // airbrake (0 or 1)
number, // primaryFire (0 or 1)
number, // secondaryFire (0 or 1)
number, // flaps (0 = up, 1 = combat, 2 = landing)
number // gearDeployed (0 or 1)
];
export interface ClientInputState {
seq: number;
command: FlightCommand;
}
export interface HistoricalTransform {
tick: number;
x: number; y: number; z: number;
qx: number; qy: number; qz: number; qw: number;
vx: number; vy: number; vz: number;
}
|