Feat : Allow granular control over indirectly activated effects
release-tag / release-image (push) Successful in 46s
release-tag / release-image (push) Successful in 46s
Testing probably needs to be done Closes #12
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import { defineStore } from "pinia";
|
||||
import goStore, { useEffect } from "~/netcode";
|
||||
import type { Card } from "~/netcode/Card";
|
||||
import { CardEffects, type Effect } from "~/netcode/Effect";
|
||||
import type { Player } from "~/netcode/Player";
|
||||
|
||||
watch(
|
||||
() => goStore.current_game?.current_turn.uuid,
|
||||
() => {
|
||||
useClientSideStore().activatedClientside = []
|
||||
})
|
||||
|
||||
export const useClientSideStore = defineStore("clientside", {
|
||||
state: () => ({
|
||||
activatedClientside: [] as Effect[],
|
||||
effectsHandled: new Set([
|
||||
CardEffects.MAKE_DISCARD,
|
||||
CardEffects.PLAY_NEXT_CARD_BOUGHT,
|
||||
CardEffects.RESTACK_DISCARDED_CARD,
|
||||
CardEffects.RESTACK_DISCARDED_CHAMPION,
|
||||
CardEffects.SACRIFICE,
|
||||
CardEffects.STACK_NEXT_ACTION_BOUGHT,
|
||||
CardEffects.STACK_NEXT_CARD_BOUGHT,
|
||||
CardEffects.STUN,
|
||||
]),
|
||||
}),
|
||||
getters: {
|
||||
maskedServerEffects(state) {
|
||||
return goStore.self?.turn?.effects_availables.filter(e => !state.activatedClientside.includes(e));
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
activateEffect(effect: Effect) {
|
||||
const amount =
|
||||
goStore.self?.turn?.effects_availables.filter((e) => e == effect)
|
||||
.length ?? 0;
|
||||
for (let i = 0; i < amount; i++) {
|
||||
this.activatedClientside.push(effect);
|
||||
}
|
||||
},
|
||||
useEffect(effect: Effect, target: Player | Card) {
|
||||
const index = this.activatedClientside.indexOf(effect);
|
||||
if (index > -1) {
|
||||
this.activatedClientside.splice(index, 1);
|
||||
useEffect(effect, target);
|
||||
}
|
||||
},
|
||||
findUseEffect(cardEffect: CardEffects, target: Player | Card) {
|
||||
const effect = this.activatedClientside.find(e => (e.effect == cardEffect) && e.usable)
|
||||
if (!effect) { return }
|
||||
this.useEffect(effect, target)
|
||||
}
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user