import { type GameObjectRegister } from "." import { type Team } from "./Team" import { type GameObjectNetcode } from "./GameObject" import type { Card } from "./Card" import type { Player } from "./Player" export interface GameNetcode extends GameObjectNetcode { market_stack: Array market: Array gem_stack: Array started: boolean current_turn: string players: Array ended: boolean } export type Game = Omit & { market_stack: Array market: Array gem_stack: Array current_turn: Team players: Array } export function create_game(input: GameNetcode, register: GameObjectRegister) { return new Proxy(input, { get(target: GameNetcode, prop, reciever) { if (prop == "market_stack") { return target.market_stack.map(e => register.cards.get(e)) } if (prop == "market") { // console.log(target) return target.market.map(e => register.cards.get(e)) } if (prop == "gem_stack") { return target.gem_stack.map(e => register.cards.get(e)) } if (prop == "current_turn") { return register.teams.get(input.current_turn) } if (prop == "players") { return target.players.map(e => register.players.get(e)) } return Reflect.get(target, prop, reciever); }, set(target, prop, val, receiver) { return Reflect.set(target, prop, val, receiver); } }) as Game }