30 lines
840 B
TypeScript
30 lines
840 B
TypeScript
import { type GameObjectRegister } from "."
|
|
import type { GameObjectNetcode } from "./GameObject"
|
|
import { type Player } from "./Player"
|
|
|
|
export interface TeamNetcode extends GameObjectNetcode {
|
|
health: number
|
|
color: string
|
|
name: string
|
|
}
|
|
|
|
export type Team = TeamNetcode & {
|
|
players: Array<Player>
|
|
}
|
|
|
|
export function create_team(input: TeamNetcode, register: GameObjectRegister) {
|
|
const team = new Proxy<any>(input, {
|
|
get(target: TeamNetcode, prop, reciever) {
|
|
if (prop == "players") {
|
|
return Object.values(register.players).filter((p) => p.team == team)
|
|
}
|
|
return Reflect.get(target, prop, reciever);
|
|
},
|
|
set(target, prop, val, receiver) {
|
|
return Reflect.set(target, prop, val, receiver);
|
|
}
|
|
}) as Team
|
|
|
|
return team
|
|
}
|