Files
legonzaur b0c00eb5da
release-tag / release-image (push) Has been cancelled
Ugly Workaround: remove turn.findEffect
2024-05-16 23:19:43 +02:00

51 lines
1.9 KiB
TypeScript

import { registerRuntimeCompiler } from "vue"
import { type GameObjectRegister } from "."
import type { Card } from "./Card"
import { type Effect, CardEffects } from "./Effect"
import type { GameObjectNetcode } from "./GameObject"
export interface TurnNetcode extends GameObjectNetcode {
cards_locked: Array<string>
effects_availables: Array<string>
champions_health: { [key: string]: string }
discard_markers: number
discard_marker_card: string
fuck_u_markers: number
damage_reserve: number
gold_reserve: number
}
export type Turn = Omit<TurnNetcode, 'cards_locked' | 'effects_availables' | 'champions_health'|"discard_marker_card"> & {
cards_locked: { [key: string]: Card }
effects_availables: Array<Effect>
champions_health: Map<string, number>
discard_marker_card: Card
}
export function create_turn(input: TurnNetcode, register: GameObjectRegister) {
const turn = new Proxy<any>(input, {
get(target: TurnNetcode, prop, reciever) {
if (prop == "cards_locked") {
return Object.fromEntries(target.cards_locked.map(e => [e, register.cards.get(e)]))
}
if (prop == "effects_availables") {
return target.effects_availables.map(e => register.effects.get(e))
}
if (prop == "champions_health") {
const healths = new Map()
for (const c in target.champions_health) {
healths.set(register.cards.get(c)?.uuid, target.champions_health[c])
}
return healths
}
if(prop == "discard_marker_card"){
return register.cards.get(target.discard_marker_card)
}
return Reflect.get(target, prop, reciever);
},
set(target, prop, val, receiver) {
return Reflect.set(target, prop, val, receiver);
}
}) as Turn
return turn
}