factorization : turn find_effect

This commit is contained in:
2024-05-03 00:37:09 +02:00
parent 8eb6cc3e77
commit 716f3cf018
4 changed files with 42 additions and 42 deletions
+9 -2
View File
@@ -1,6 +1,6 @@
import { type GameObjectRegister } from "."
import type { Card } from "./Card"
import { type Effect } from "./Effect"
import { type Effect, CardEffects } from "./Effect"
import type { GameObjectNetcode } from "./GameObject"
export interface TurnNetcode extends GameObjectNetcode {
cards_locked: Array<string>
@@ -17,9 +17,10 @@ export type Turn = Omit<TurnNetcode, 'cards_locked' | 'effects_availables' | 'ch
cards_locked: { [key: string]: Card }
effects_availables: Array<Effect>
champions_health: Map<string, number>
find_effect: (card_effect: CardEffects) => Effect | undefined
}
export function create_turn(input: TurnNetcode, register: GameObjectRegister) {
return new Proxy<any>(input, {
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)]))
@@ -34,10 +35,16 @@ export function create_turn(input: TurnNetcode, register: GameObjectRegister) {
}
return healths
}
if (prop == "find_effect") {
return (card_effect: CardEffects) => {
return turn.effects_availables.find(e => (e.effect == card_effect) && e.usable)
}
}
return Reflect.get(target, prop, reciever);
},
set(target, prop, val, receiver) {
return Reflect.set(target, prop, val, receiver);
}
}) as Turn
return turn
}